From 09a62e6adb8a7e4fd15cacc491387699fe34d13c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aur=C3=A9lien=20COUDERC?= Date: Wed, 1 Mar 2023 11:58:09 +0100 Subject: [PATCH] Import cantor_22.12.3.orig.tar.xz [dgit import orig cantor_22.12.3.orig.tar.xz] --- .gitignore | 28 + .gitlab-ci.yml | 7 + .kateconfig | 4 + .kde-ci.yml | 25 + .reuse/dep5 | 8 + CHANGELOG.md | 127 + CMakeLists.txt | 175 + CantorConfig.cmake.in | 3 + DESIGN | 143 + FindCantor.cmake | 24 + LICENSES/BSD-3-Clause.txt | 11 + LICENSES/CC0-1.0.txt | 119 + LICENSES/GPL-2.0-only.txt | 311 + LICENSES/GPL-2.0-or-later.txt | 311 + LICENSES/GPL-3.0-only.txt | 604 + LICENSES/LicenseRef-KDE-Accepted-GPL.txt | 12 + README.md | 44 + .../Maxima/Maxima_v5.42/README.md | 11 + .../Maxima/Maxima_v5.42/main.css | 164 + .../Maxima/Maxima_v5.42/qthelp_generator.py | 263 + .../Maxima/Maxima_v5.44/README.md | 7 + .../Maxima/Maxima_v5.44/qthelp_generator.py | 220 + admin/documentation/Octave/README.md | 2 + .../Python/NumPy_v1.19/README.md | 8 + .../Python/NumPy_v1.19/qthelp_generator.py | 136 + .../Python/Python_v3.8.4/README.md | 8 + .../Python/Python_v3.8.4/qthelp_generator.py | 160 + cmake/COPYING-CMAKE-SCRIPTS | 22 + cmake/FindDiscount.cmake | 38 + cmake/FindJulia.cmake | 125 + cmake/FindLibSpectre.cmake | 57 + cmake/FindLuaJIT.cmake | 13 + cmake/FindQalculate.cmake | 80 + cmake/FindR.cmake | 135 + doc/CMakeLists.txt | 4 + doc/create-dlg.png | Bin 0 -> 3053 bytes doc/differentiate-dlg.png | Bin 0 -> 3019 bytes doc/import-dlg.png | Bin 0 -> 2088 bytes doc/index.docbook | 1005 ++ doc/integrate-dlg.png | Bin 0 -> 4674 bytes doc/latex_formula.png | Bin 0 -> 597 bytes doc/matrix-dlg.png | Bin 0 -> 2042 bytes doc/plot-dlg1.png | Bin 0 -> 8505 bytes doc/plot-dlg2.png | Bin 0 -> 9465 bytes doc/plot2d-dlg.png | Bin 0 -> 3645 bytes doc/plot3d-dlg.png | Bin 0 -> 4511 bytes doc/screenshot.png | Bin 0 -> 31151 bytes doc/solve-equations-dlg.png | Bin 0 -> 3394 bytes examples/maxima/maxima_examples_plots.cws | Bin 0 -> 973410 bytes examples/maxima/maxima_klein_plot.cws | Bin 0 -> 292672 bytes examples/maxima/tutorial_for_beginners.cws | Bin 0 -> 1603282 bytes examples/octave/lorenzSystem.cws | Bin 0 -> 57271 bytes examples/octave/octave_examples_2d_plots.cws | Bin 0 -> 229078 bytes examples/octave/octave_examples_3d_plots.cws | Bin 0 -> 2208067 bytes icons/128-apps-cantor.png | Bin 0 -> 4264 bytes icons/150-apps-cantor.png | Bin 0 -> 6091 bytes icons/16-apps-cantor.png | Bin 0 -> 446 bytes icons/22-apps-cantor.png | Bin 0 -> 469 bytes icons/310-apps-cantor.png | Bin 0 -> 13075 bytes icons/32-apps-cantor.png | Bin 0 -> 977 bytes icons/44-apps-cantor.png | Bin 0 -> 1596 bytes icons/48-apps-cantor.png | Bin 0 -> 1356 bytes icons/48-apps-juliabackend.png | Bin 0 -> 3014 bytes icons/48-apps-kalgebrabackend.png | Bin 0 -> 2645 bytes icons/48-apps-luabackend.png | Bin 0 -> 1546 bytes icons/48-apps-maximabackend.png | Bin 0 -> 3516 bytes icons/48-apps-octavebackend.png | Bin 0 -> 1882 bytes icons/48-apps-pythonbackend.png | Bin 0 -> 33166 bytes icons/48-apps-qalculatebackend.png | Bin 0 -> 3793 bytes icons/48-apps-rbackend.png | Bin 0 -> 4716 bytes icons/48-apps-sagebackend.png | Bin 0 -> 1558 bytes icons/48-apps-scilabbackend.png | Bin 0 -> 2620 bytes icons/64-apps-cantor.png | Bin 0 -> 1869 bytes icons/CMakeLists.txt | 19 + icons/hisc-apps-cantor.svgz | Bin 0 -> 2130 bytes org.kde.cantor.appdata.xml | 158 + po/ar/cantor.po | 4540 ++++++++ po/bg/cantor.po | 4513 ++++++++ po/bs/cantor.po | 5071 +++++++++ po/ca/cantor.po | 4803 ++++++++ po/ca/docs/cantor/create-dlg.png | Bin 0 -> 9071 bytes po/ca/docs/cantor/differentiate-dlg.png | Bin 0 -> 9560 bytes po/ca/docs/cantor/import-dlg.png | Bin 0 -> 5219 bytes po/ca/docs/cantor/index.docbook | 1563 +++ po/ca/docs/cantor/integrate-dlg.png | Bin 0 -> 16914 bytes po/ca/docs/cantor/matrix-dlg.png | Bin 0 -> 5337 bytes po/ca/docs/cantor/plot-dlg1.png | Bin 0 -> 31672 bytes po/ca/docs/cantor/plot-dlg2.png | Bin 0 -> 40402 bytes po/ca/docs/cantor/plot2d-dlg.png | Bin 0 -> 11820 bytes po/ca/docs/cantor/plot3d-dlg.png | Bin 0 -> 13361 bytes po/ca/docs/cantor/screenshot.png | Bin 0 -> 136621 bytes po/ca/docs/cantor/solve-equations-dlg.png | Bin 0 -> 10902 bytes po/ca@valencia/cantor.po | 4807 ++++++++ po/cs/cantor.po | 4561 ++++++++ po/da/cantor.po | 5087 +++++++++ po/de/cantor.po | 5223 +++++++++ po/de/docs/cantor/index.docbook | 1577 +++ po/el/cantor.po | 5208 +++++++++ po/en_GB/cantor.po | 5323 +++++++++ po/eo/cantor.po | 4590 ++++++++ po/es/cantor.po | 4927 +++++++++ po/es/docs/cantor/index.docbook | 1573 +++ po/es/docs/cantor/screenshot.png | Bin 0 -> 64562 bytes po/et/cantor.po | 5075 +++++++++ po/et/docs/cantor/index.docbook | 1044 ++ po/eu/cantor.po | 4897 ++++++++ po/fi/cantor.po | 4980 +++++++++ po/fr/cantor.po | 5289 +++++++++ po/fr/docs/cantor/index.docbook | 1013 ++ po/fr/docs/cantor/screenshot.png | Bin 0 -> 101130 bytes po/ga/cantor.po | 4698 ++++++++ po/gl/cantor.po | 5189 +++++++++ po/gl/docs/cantor/index.docbook | 573 + po/hr/cantor.po | 4981 +++++++++ po/hu/cantor.po | 5108 +++++++++ po/ia/cantor.po | 4959 +++++++++ po/it/cantor.po | 5312 +++++++++ po/it/docs/cantor/index.docbook | 1577 +++ po/ja/cantor.po | 4508 ++++++++ po/ka/cantor.po | 4516 ++++++++ po/kk/cantor.po | 5066 +++++++++ po/ko/cantor.po | 4936 +++++++++ po/lt/cantor.po | 4626 ++++++++ po/lv/cantor.po | 5077 +++++++++ po/ml/cantor.po | 4514 ++++++++ po/mr/cantor.po | 4577 ++++++++ po/nb/cantor.po | 4554 ++++++++ po/nds/cantor.po | 5122 +++++++++ po/nl/cantor.po | 5378 +++++++++ po/nl/docs/cantor/index.docbook | 1559 +++ po/nn/cantor.po | 4532 ++++++++ po/pa/cantor.po | 4790 ++++++++ po/pl/cantor.po | 5305 +++++++++ po/pt/cantor.po | 4817 ++++++++ po/pt/docs/cantor/index.docbook | 1410 +++ po/pt_BR/cantor.po | 5048 +++++++++ po/pt_BR/docs/cantor/index.docbook | 1044 ++ po/pt_BR/docs/cantor/screenshot.png | Bin 0 -> 67652 bytes po/ro/cantor.po | 4986 +++++++++ po/ru/cantor.po | 5250 +++++++++ po/ru/docs/cantor/index.docbook | 571 + po/sk/cantor.po | 5077 +++++++++ po/sl/cantor.po | 5146 +++++++++ po/sv/cantor.po | 5355 +++++++++ po/sv/docs/cantor/index.docbook | 1583 +++ po/th/cantor.po | 4955 +++++++++ po/tr/cantor.po | 4762 ++++++++ po/ug/cantor.po | 4655 ++++++++ po/uk/cantor.po | 5411 +++++++++ po/uk/docs/cantor/create-dlg.png | Bin 0 -> 8312 bytes po/uk/docs/cantor/differentiate-dlg.png | Bin 0 -> 7488 bytes po/uk/docs/cantor/import-dlg.png | Bin 0 -> 7155 bytes po/uk/docs/cantor/index.docbook | 1576 +++ po/uk/docs/cantor/integrate-dlg.png | Bin 0 -> 8957 bytes po/uk/docs/cantor/matrix-dlg.png | Bin 0 -> 6900 bytes po/uk/docs/cantor/plot-dlg1.png | Bin 0 -> 14549 bytes po/uk/docs/cantor/plot-dlg2.png | Bin 0 -> 16581 bytes po/uk/docs/cantor/plot2d-dlg.png | Bin 0 -> 8236 bytes po/uk/docs/cantor/plot3d-dlg.png | Bin 0 -> 9322 bytes po/uk/docs/cantor/screenshot.png | Bin 0 -> 65514 bytes po/uk/docs/cantor/solve-equations-dlg.png | Bin 0 -> 7976 bytes po/zh_CN/cantor.po | 4590 ++++++++ po/zh_TW/cantor.po | 4814 ++++++++ src/.emacs-dirvars | 74 + src/CMakeLists.txt | 115 + src/Messages.sh | 6 + src/XmlMessages.sh | 22 + src/actionbar.cpp | 79 + src/actionbar.h | 47 + src/animation.cpp | 94 + src/animation.h | 60 + src/animationresultitem.cpp | 135 + src/animationresultitem.h | 55 + src/assistants/CMakeLists.txt | 21 + src/assistants/advancedplot/CMakeLists.txt | 9 + .../advancedplot/advancedplotassistant.cpp | 100 + .../advancedplot/advancedplotassistant.h | 28 + .../advancedplot/advancedplotassistant.json | 37 + .../advancedplot/advancedplotdialog.ui | 63 + .../cantor_advancedplot_assistant.rc | 8 + .../advancedplot/directivecontainer.ui | 22 + src/assistants/differentiate/CMakeLists.txt | 9 + .../cantor_differentiate_assistant.rc | 8 + .../differentiate/differentiateassistant.cpp | 68 + .../differentiate/differentiateassistant.h | 23 + .../differentiate/differentiateassistant.json | 69 + .../differentiate/differentiatedlg.ui | 78 + src/assistants/importpackage/CMakeLists.txt | 9 + .../cantor_import_package_assistant.rc | 8 + .../importpackage/importpackageassistant.cpp | 67 + .../importpackage/importpackageassistant.h | 23 + .../importpackage/importpackageassistant.json | 66 + .../importpackage/importpackagedlg.ui | 42 + src/assistants/integrate/CMakeLists.txt | 9 + .../integrate/cantor_integrate_assistant.rc | 8 + .../integrate/integrateassistant.cpp | 75 + src/assistants/integrate/integrateassistant.h | 23 + .../integrate/integrateassistant.json | 69 + src/assistants/integrate/integratedlg.ui | 136 + src/assistants/linearalgebra/CMakeLists.txt | 4 + .../linearalgebra/creatematrix/CMakeLists.txt | 10 + .../cantor_create_matrix_assistant.rc | 8 + .../creatematrix/creatematrixassistant.cpp | 58 + .../creatematrix/creatematrixassistant.h | 23 + .../creatematrix/creatematrixassistant.json | 67 + .../creatematrix/creatematrixdlg.cpp | 62 + .../creatematrix/creatematrixdlg.h | 32 + .../creatematrix/creatematrixdlg.ui | 77 + .../linearalgebra/eigenvalues/CMakeLists.txt | 9 + .../cantor_eigenvalues_assistant.rc | 8 + .../eigenvalues/eigenvaluesassistant.cpp | 66 + .../eigenvalues/eigenvaluesassistant.h | 23 + .../eigenvalues/eigenvaluesassistant.json | 67 + .../eigenvalues/eigenvaluesdlg.ui | 42 + .../linearalgebra/eigenvectors/CMakeLists.txt | 9 + .../cantor_eigenvectors_assistant.rc | 8 + .../eigenvectors/eigenvectorsassistant.cpp | 66 + .../eigenvectors/eigenvectorsassistant.h | 23 + .../eigenvectors/eigenvectorsassistant.json | 67 + .../eigenvectors/eigenvectorsdlg.ui | 42 + .../linearalgebra/invertmatrix/CMakeLists.txt | 9 + .../cantor_invert_matrix_assistant.rc | 8 + .../invertmatrix/invertmatrixassistant.cpp | 66 + .../invertmatrix/invertmatrixassistant.h | 23 + .../invertmatrix/invertmatrixassistant.json | 67 + .../invertmatrix/invertmatrixdlg.ui | 42 + src/assistants/plot2d/CMakeLists.txt | 9 + .../plot2d/cantor_plot2d_assistant.rc | 8 + src/assistants/plot2d/plot2dassistant.cpp | 67 + src/assistants/plot2d/plot2dassistant.h | 22 + src/assistants/plot2d/plot2dassistant.json | 68 + src/assistants/plot2d/plot2ddlg.ui | 97 + src/assistants/plot3d/CMakeLists.txt | 9 + .../plot3d/cantor_plot3d_assistant.rc | 8 + src/assistants/plot3d/plot3dassistant.cpp | 77 + src/assistants/plot3d/plot3dassistant.h | 22 + src/assistants/plot3d/plot3dassistant.json | 68 + src/assistants/plot3d/plot3ddlg.ui | 142 + src/assistants/runscript/CMakeLists.txt | 9 + .../runscript/cantor_runscript_assistant.rc | 8 + .../runscript/runscriptassistant.cpp | 51 + src/assistants/runscript/runscriptassistant.h | 23 + .../runscript/runscriptassistant.json | 68 + src/assistants/solve/CMakeLists.txt | 9 + .../solve/cantor_solve_assistant.rc | 8 + src/assistants/solve/solveassistant.cpp | 67 + src/assistants/solve/solveassistant.h | 23 + src/assistants/solve/solveassistant.json | 70 + src/assistants/solve/solvedlg.ui | 60 + src/backendchoosedialog.cpp | 137 + src/backendchoosedialog.h | 31 + src/backendchooser.ui | 55 + src/backends/CMakeLists.txt | 90 + src/backends/R/CMakeLists.txt | 53 + src/backends/R/DESIGN | 24 + src/backends/R/GenLibFile.py | 28 + src/backends/R/cantor_r.knsrc | 7 + src/backends/R/rbackend.cpp | 108 + src/backends/R/rbackend.h | 33 + src/backends/R/rbackend.json | 69 + src/backends/R/rcompletionobject.cpp | 95 + src/backends/R/rcompletionobject.h | 29 + src/backends/R/rexpression.cpp | 142 + src/backends/R/rexpression.h | 32 + src/backends/R/rextensions.cpp | 84 + src/backends/R/rextensions.h | 52 + src/backends/R/rhighlighter.cpp | 64 + src/backends/R/rhighlighter.h | 38 + src/backends/R/rkeywords.cpp | 35 + src/backends/R/rkeywords.h | 23 + src/backends/R/rserver/CMakeLists.txt | 27 + src/backends/R/rserver/main.cpp | 40 + src/backends/R/rserver/org.kde.Cantor.R.xml | 27 + src/backends/R/rserver/rcallbacks.cpp | 127 + src/backends/R/rserver/rcallbacks.h | 32 + src/backends/R/rserver/rserver.cpp | 552 + src/backends/R/rserver/rserver.h | 82 + src/backends/R/rserver/rserver.kcfg | 23 + src/backends/R/rserver/settings.kcfgc | 3 + src/backends/R/rserver/tools/autoloads.r | 29 + src/backends/R/rserver/tools/envvars.r | 17 + src/backends/R/rsession.cpp | 187 + src/backends/R/rsession.h | 51 + src/backends/R/rsettingswidget.cpp | 47 + src/backends/R/rsettingswidget.h | 24 + src/backends/R/rvariablemodel.cpp | 132 + src/backends/R/rvariablemodel.h | 40 + src/backends/R/settings.ui | 120 + src/backends/R/testr.cpp | 332 + src/backends/R/testr.h | 46 + src/backends/backendsettingswidget.cpp | 65 + src/backends/backendsettingswidget.h | 51 + src/backends/julia/CMakeLists.txt | 46 + src/backends/julia/graphic_packages.xml | 56 + src/backends/julia/juliabackend.cpp | 151 + src/backends/julia/juliabackend.h | 76 + src/backends/julia/juliabackend.json | 67 + src/backends/julia/juliabackend.kcfg | 41 + src/backends/julia/juliacompletionobject.cpp | 106 + src/backends/julia/juliacompletionobject.h | 52 + src/backends/julia/juliaexpression.cpp | 88 + src/backends/julia/juliaexpression.h | 54 + src/backends/julia/juliaextensions.cpp | 313 + src/backends/julia/juliaextensions.h | 189 + src/backends/julia/juliahighlighter.cpp | 152 + src/backends/julia/juliahighlighter.h | 41 + src/backends/julia/juliakeywords.cpp | 64 + src/backends/julia/juliakeywords.h | 81 + src/backends/julia/juliascriptloading.h | 32 + src/backends/julia/juliaserver/CMakeLists.txt | 16 + .../julia/juliaserver/juliaserver.cpp | 278 + src/backends/julia/juliaserver/juliaserver.h | 103 + src/backends/julia/juliaserver/main.cpp | 42 + src/backends/julia/juliasession.cpp | 331 + src/backends/julia/juliasession.h | 140 + src/backends/julia/juliasettingswidget.cpp | 33 + src/backends/julia/juliasettingswidget.h | 35 + src/backends/julia/juliavariablemodel.cpp | 82 + src/backends/julia/juliavariablemodel.h | 36 + .../julia/scripts/variables_cleaner.jl | 11 + .../julia/scripts/variables_loader.jl | 8 + src/backends/julia/scripts/variables_saver.jl | 16 + src/backends/julia/settings.kcfgc | 3 + src/backends/julia/settings.ui | 199 + src/backends/julia/testjulia.cpp | 354 + src/backends/julia/testjulia.h | 50 + src/backends/kalgebra/CMakeLists.txt | 22 + src/backends/kalgebra/cantor_kalgebra.knsrc | 7 + src/backends/kalgebra/kalgebrabackend.cpp | 66 + src/backends/kalgebra/kalgebrabackend.h | 30 + src/backends/kalgebra/kalgebrabackend.json | 70 + src/backends/kalgebra/kalgebrabackend.kcfg | 12 + .../kalgebra/kalgebracompletionobject.cpp | 36 + .../kalgebra/kalgebracompletionobject.h | 27 + src/backends/kalgebra/kalgebraexpression.cpp | 50 + src/backends/kalgebra/kalgebraexpression.h | 28 + src/backends/kalgebra/kalgebraextensions.cpp | 22 + src/backends/kalgebra/kalgebraextensions.h | 26 + src/backends/kalgebra/kalgebrasession.cpp | 102 + src/backends/kalgebra/kalgebrasession.h | 46 + .../kalgebra/kalgebrasyntaxhelpobject.cpp | 36 + .../kalgebra/kalgebrasyntaxhelpobject.h | 23 + src/backends/kalgebra/settings.kcfgc | 3 + src/backends/kalgebra/settings.ui | 53 + src/backends/lua/CMakeLists.txt | 36 + src/backends/lua/cantor_lua.knsrc | 7 + src/backends/lua/luabackend.cpp | 72 + src/backends/lua/luabackend.h | 33 + src/backends/lua/luabackend.json | 70 + src/backends/lua/luabackend.kcfg | 17 + src/backends/lua/luacompletionobject.cpp | 59 + src/backends/lua/luacompletionobject.h | 32 + src/backends/lua/luaexpression.cpp | 59 + src/backends/lua/luaexpression.h | 27 + src/backends/lua/luaextensions.cpp | 31 + src/backends/lua/luaextensions.h | 24 + src/backends/lua/luahelper.cpp | 117 + src/backends/lua/luahelper.h | 20 + src/backends/lua/luahighlighter.cpp | 23 + src/backends/lua/luahighlighter.h | 18 + src/backends/lua/luakeywords.cpp | 51 + src/backends/lua/luakeywords.h | 27 + src/backends/lua/luasession.cpp | 282 + src/backends/lua/luasession.h | 56 + src/backends/lua/luasettingswidget.cpp | 30 + src/backends/lua/luasettingswidget.h | 35 + src/backends/lua/settings.kcfgc | 3 + src/backends/lua/settings.ui | 93 + src/backends/lua/testlua.cpp | 98 + src/backends/lua/testlua.h | 37 + src/backends/maxima/CMakeLists.txt | 35 + src/backends/maxima/DESIGN | 25 + src/backends/maxima/cantor-initmaxima.lisp | 87 + src/backends/maxima/cantor_maxima.knsrc | 7 + src/backends/maxima/maximabackend.cpp | 120 + src/backends/maxima/maximabackend.h | 38 + src/backends/maxima/maximabackend.json | 70 + src/backends/maxima/maximabackend.kcfg | 33 + .../maxima/maximacompletionobject.cpp | 66 + src/backends/maxima/maximacompletionobject.h | 28 + src/backends/maxima/maximaexpression.cpp | 512 + src/backends/maxima/maximaexpression.h | 56 + src/backends/maxima/maximaextensions.cpp | 204 + src/backends/maxima/maximaextensions.h | 110 + src/backends/maxima/maximahighlighter.cpp | 93 + src/backends/maxima/maximahighlighter.h | 31 + src/backends/maxima/maximakeywords.cpp | 62 + src/backends/maxima/maximakeywords.h | 35 + src/backends/maxima/maximasession.cpp | 307 + src/backends/maxima/maximasession.h | 64 + src/backends/maxima/maximasettingswidget.cpp | 34 + src/backends/maxima/maximasettingswidget.h | 36 + .../maxima/maximasyntaxhelpobject.cpp | 103 + src/backends/maxima/maximasyntaxhelpobject.h | 31 + src/backends/maxima/maximavariablemodel.cpp | 176 + src/backends/maxima/maximavariablemodel.h | 39 + src/backends/maxima/settings.kcfgc | 3 + src/backends/maxima/settings.ui | 127 + src/backends/maxima/testmaxima.cpp | 523 + src/backends/maxima/testmaxima.h | 73 + src/backends/octave/CMakeLists.txt | 50 + src/backends/octave/cantor_octave.knsrc | 7 + src/backends/octave/cmake.patch | 10 + src/backends/octave/graphic_packages.xml | 77 + src/backends/octave/octavebackend.cpp | 82 + src/backends/octave/octavebackend.h | 30 + src/backends/octave/octavebackend.json | 69 + src/backends/octave/octavebackend.kcfg.in | 41 + .../octave/octavecompletionobject.cpp | 148 + src/backends/octave/octavecompletionobject.h | 32 + src/backends/octave/octaveexpression.cpp | 198 + src/backends/octave/octaveexpression.h | 43 + src/backends/octave/octaveextensions.cpp | 201 + src/backends/octave/octaveextensions.h | 75 + src/backends/octave/octavehighlighter.cpp | 33 + src/backends/octave/octavehighlighter.h | 27 + src/backends/octave/octavekeywords.cpp | 74 + src/backends/octave/octavekeywords.h | 25 + src/backends/octave/octavesession.cpp | 442 + src/backends/octave/octavesession.h | 74 + src/backends/octave/octavesettingswidget.cpp | 33 + src/backends/octave/octavesettingswidget.h | 35 + .../octave/octavesyntaxhelpobject.cpp | 62 + src/backends/octave/octavesyntaxhelpobject.h | 30 + src/backends/octave/octavevariablemodel.cpp | 106 + src/backends/octave/octavevariablemodel.h | 28 + src/backends/octave/scripts/CMakeLists.txt | 1 + .../octave/scripts/cantor_eigenvectors.m | 23 + src/backends/octave/scripts/cantor_plot2d.m | 32 + src/backends/octave/scripts/cantor_plot3d.m | 33 + src/backends/octave/scripts/cantor_print.m | 26 + src/backends/octave/settings.kcfgc | 3 + src/backends/octave/settings.ui | 156 + src/backends/octave/testoctave.cpp | 341 + src/backends/octave/testoctave.h | 58 + src/backends/python/CMakeLists.txt | 60 + src/backends/python/cantor_python.knsrc | 7 + src/backends/python/graphic_packages.xml | 76 + src/backends/python/python.qrc | 7 + src/backends/python/pythonbackend.cpp | 93 + src/backends/python/pythonbackend.h | 31 + src/backends/python/pythonbackend.json | 64 + src/backends/python/pythonbackend.kcfg | 32 + .../python/pythoncompletionobject.cpp | 155 + src/backends/python/pythoncompletionobject.h | 34 + src/backends/python/pythonexpression.cpp | 138 + src/backends/python/pythonexpression.h | 27 + src/backends/python/pythonextensions.cpp | 339 + src/backends/python/pythonextensions.h | 66 + src/backends/python/pythonhighlighter.cpp | 116 + src/backends/python/pythonhighlighter.h | 30 + src/backends/python/pythonkeywords.cpp | 83 + src/backends/python/pythonkeywords.h | 33 + src/backends/python/pythonserver.cpp | 185 + src/backends/python/pythonserver.h | 34 + src/backends/python/pythonservermain.cpp | 127 + src/backends/python/pythonsession.cpp | 320 + src/backends/python/pythonsession.h | 53 + src/backends/python/pythonsettingswidget.cpp | 30 + src/backends/python/pythonsettingswidget.h | 35 + src/backends/python/pythonutils.h | 24 + src/backends/python/pythonvariablemodel.cpp | 83 + src/backends/python/pythonvariablemodel.h | 29 + src/backends/python/settings.kcfgc | 3 + src/backends/python/settings.ui | 164 + src/backends/python/testpython.cpp | 338 + src/backends/python/testpython.h | 42 + src/backends/python/variables_cleaner.py | 6 + src/backends/python/variables_loader.py | 9 + src/backends/python/variables_saver.py | 11 + src/backends/qalculate/CMakeLists.txt | 35 + src/backends/qalculate/cantor_qalculate.knsrc | 7 + .../qalculate/plotassistant/CMakeLists.txt | 14 + .../cantor_qalculateplotassistant.rc | 8 + .../plotassistant/qalculateplotassistant.cpp | 290 + .../plotassistant/qalculateplotassistant.h | 46 + .../plotassistant/qalculateplotassistant.json | 67 + .../plotassistant/qalculateplotdialog.ui | 779 ++ src/backends/qalculate/qalculatebackend.cpp | 80 + src/backends/qalculate/qalculatebackend.h | 35 + src/backends/qalculate/qalculatebackend.json | 69 + src/backends/qalculate/qalculatebackend.kcfg | 133 + .../qalculate/qalculatecompletionobject.cpp | 95 + .../qalculate/qalculatecompletionobject.h | 28 + .../qalculate/qalculateexpression.cpp | 865 ++ src/backends/qalculate/qalculateexpression.h | 52 + .../qalculate/qalculateextensions.cpp | 188 + src/backends/qalculate/qalculateextensions.h | 84 + .../qalculate/qalculatehighlighter.cpp | 120 + src/backends/qalculate/qalculatehighlighter.h | 25 + src/backends/qalculate/qalculatesession.cpp | 417 + src/backends/qalculate/qalculatesession.h | 78 + .../qalculate/qalculatesettingswidget.cpp | 30 + .../qalculate/qalculatesettingswidget.h | 35 + .../qalculate/qalculatesyntaxhelpobject.cpp | 265 + .../qalculate/qalculatesyntaxhelpobject.h | 30 + src/backends/qalculate/settings.kcfgc | 3 + src/backends/qalculate/settings.ui | 596 + src/backends/qthelpconfig.cpp | 338 + src/backends/qthelpconfig.h | 45 + src/backends/qthelpconfig.ui | 102 + src/backends/qthelpconfigeditdialog.ui | 136 + src/backends/sage/CMakeLists.txt | 39 + src/backends/sage/DESIGN | 22 + src/backends/sage/cantor-execsage | 23 + src/backends/sage/cantor_sage.knsrc | 7 + src/backends/sage/sagebackend.cpp | 89 + src/backends/sage/sagebackend.h | 32 + src/backends/sage/sagebackend.json | 70 + src/backends/sage/sagebackend.kcfg | 21 + src/backends/sage/sagecompletionobject.cpp | 210 + src/backends/sage/sagecompletionobject.h | 40 + src/backends/sage/sageexpression.cpp | 271 + src/backends/sage/sageexpression.h | 41 + src/backends/sage/sageextensions.cpp | 186 + src/backends/sage/sageextensions.h | 99 + src/backends/sage/sagehighlighter.cpp | 20 + src/backends/sage/sagehighlighter.h | 25 + src/backends/sage/sagekeywords.cpp | 53 + src/backends/sage/sagekeywords.h | 40 + src/backends/sage/sagesession.cpp | 511 + src/backends/sage/sagesession.h | 93 + src/backends/sage/sagesettingswidget.cpp | 33 + src/backends/sage/sagesettingswidget.h | 35 + src/backends/sage/settings.kcfgc | 3 + src/backends/sage/settings.ui | 113 + src/backends/sage/testsage.cpp | 136 + src/backends/sage/testsage.h | 50 + src/backends/scilab/CMakeLists.txt | 35 + src/backends/scilab/cantor_scilab.knsrc | 7 + src/backends/scilab/scilabbackend.cpp | 78 + src/backends/scilab/scilabbackend.h | 32 + src/backends/scilab/scilabbackend.json | 69 + src/backends/scilab/scilabbackend.kcfg | 29 + .../scilab/scilabcompletionobject.cpp | 57 + src/backends/scilab/scilabcompletionobject.h | 28 + src/backends/scilab/scilabexpression.cpp | 147 + src/backends/scilab/scilabexpression.h | 36 + src/backends/scilab/scilabextensions.cpp | 66 + src/backends/scilab/scilabextensions.h | 36 + src/backends/scilab/scilabhighlighter.cpp | 68 + src/backends/scilab/scilabhighlighter.h | 32 + src/backends/scilab/scilabkeywords.cpp | 63 + src/backends/scilab/scilabkeywords.h | 27 + src/backends/scilab/scilabsession.cpp | 297 + src/backends/scilab/scilabsession.h | 59 + src/backends/scilab/scilabsettingswidget.cpp | 33 + src/backends/scilab/scilabsettingswidget.h | 35 + src/backends/scilab/settings.kcfgc | 3 + src/backends/scilab/settings.ui | 110 + src/backends/scilab/testscilab.cpp | 83 + src/backends/scilab/testscilab.h | 28 + src/cantor-documentation.knsrc | 32 + src/cantor.cpp | 908 ++ src/cantor.h | 129 + src/cantor.kcfg | 161 + src/cantor.knsrc | 6 + src/cantor.xml | 34 + src/cantor_part.cpp | 1011 ++ src/cantor_part.h | 181 + src/cantor_part.json | 40 + src/cantor_part.rc | 99 + src/cantor_scripteditor.rc | 14 + src/cantor_shell.rc | 45 + src/commandentry.cpp | 1631 +++ src/commandentry.h | 184 + src/config-cantor.h.cmake | 7 + src/extendedsearchbar.ui | 203 + src/formating.ui | 412 + src/hierarchyentry.cpp | 554 + src/hierarchyentry.h | 110 + src/horizontalruleentry.cpp | 361 + src/horizontalruleentry.h | 82 + src/imageentry.cpp | 408 + src/imageentry.h | 74 + src/imageresultitem.cpp | 107 + src/imageresultitem.h | 38 + src/imagesettings.ui | 167 + src/imagesettingsdialog.cpp | 205 + src/imagesettingsdialog.h | 50 + src/latexentry.cpp | 568 + src/latexentry.h | 70 + src/lib/CMakeLists.txt | 122 + src/lib/Mainpage.dox | 28 + src/lib/animationresult.cpp | 118 + src/lib/animationresult.h | 41 + src/lib/assistant.cpp | 60 + src/lib/assistant.h | 100 + src/lib/backend.cpp | 247 + src/lib/backend.h | 237 + src/lib/cantor_assistant.desktop | 55 + src/lib/cantor_backend.desktop | 53 + src/lib/cantor_libs.kcfg | 19 + src/lib/cantor_macros.h | 19 + src/lib/cantor_panelplugin.desktop | 54 + src/lib/completionobject.cpp | 277 + src/lib/completionobject.h | 210 + src/lib/config-cantorlib.h.cmake | 3 + src/lib/defaulthighlighter.cpp | 453 + src/lib/defaulthighlighter.h | 175 + src/lib/defaultvariablemodel.cpp | 344 + src/lib/defaultvariablemodel.h | 189 + src/lib/directives/axisrange.ui | 76 + src/lib/directives/plotdirectives.cpp | 95 + src/lib/directives/plotdirectives.h | 60 + src/lib/directives/plottitle.ui | 45 + src/lib/epsresult.cpp | 140 + src/lib/epsresult.h | 46 + src/lib/expression.cpp | 306 + src/lib/expression.h | 287 + src/lib/extension.cpp | 134 + src/lib/extension.h | 478 + src/lib/graphicpackage.cpp | 135 + src/lib/graphicpackage.h | 128 + src/lib/helpresult.cpp | 78 + src/lib/helpresult.h | 42 + src/lib/htmlresult.cpp | 169 + src/lib/htmlresult.h | 51 + src/lib/imageresult.cpp | 190 + src/lib/imageresult.h | 54 + src/lib/jupyterutils.cpp | 441 + src/lib/jupyterutils.h | 102 + src/lib/latexrenderer.cpp | 321 + src/lib/latexrenderer.h | 68 + src/lib/latexresult.cpp | 161 + src/lib/latexresult.h | 52 + src/lib/mimeresult.cpp | 121 + src/lib/mimeresult.h | 50 + src/lib/panelplugin.cpp | 88 + src/lib/panelplugin.h | 120 + src/lib/panelpluginhandler.cpp | 117 + src/lib/panelpluginhandler.h | 45 + src/lib/renderer.cpp | 229 + src/lib/renderer.h | 52 + src/lib/result.cpp | 78 + src/lib/result.h | 117 + src/lib/session.cpp | 388 + src/lib/session.h | 291 + src/lib/settings.kcfgc | 3 + src/lib/syntaxhelpobject.cpp | 57 + src/lib/syntaxhelpobject.h | 86 + src/lib/test/CMakeLists.txt | 11 + src/lib/test/backendtest.cpp | 106 + src/lib/test/backendtest.h | 48 + src/lib/textresult.cpp | 223 + src/lib/textresult.h | 58 + src/lib/worksheetaccess.cpp | 19 + src/lib/worksheetaccess.h | 44 + src/loadedexpression.cpp | 319 + src/loadedexpression.h | 40 + src/main.cpp | 143 + src/markdownentry.cpp | 836 ++ src/markdownentry.h | 89 + src/mathrender.cpp | 93 + src/mathrender.h | 66 + src/mathrendertask.cpp | 234 + src/mathrendertask.h | 78 + src/org.kde.cantor.desktop | 136 + src/pagebreakentry.cpp | 178 + src/pagebreakentry.h | 53 + src/panelplugins/CMakeLists.txt | 16 + .../documentationpanel/CMakeLists.txt | 11 + .../documentationpanelplugin.cpp | 69 + .../documentationpanelplugin.h | 33 + .../documentationpanelplugin.json | 59 + .../documentationpanelwidget.cpp | 411 + .../documentationpanelwidget.h | 100 + .../filebrowserpanel/CMakeLists.txt | 7 + .../filebrowserpanelplugin.cpp | 230 + .../filebrowserpanel/filebrowserpanelplugin.h | 64 + .../filebrowserpanelplugin.json | 59 + src/panelplugins/helppanel/CMakeLists.txt | 8 + .../helppanel/helppanelplugin.cpp | 80 + src/panelplugins/helppanel/helppanelplugin.h | 41 + .../helppanel/helppanelplugin.json | 70 + src/panelplugins/tocpanel/CMakeLists.txt | 5 + src/panelplugins/tocpanel/tocpanelplugin.cpp | 116 + src/panelplugins/tocpanel/tocpanelplugin.h | 56 + src/panelplugins/tocpanel/tocpanelplugin.json | 60 + src/panelplugins/variablemgr/CMakeLists.txt | 10 + src/panelplugins/variablemgr/newvardlg.ui | 52 + .../variablemgr/variablemanagerplugin.cpp | 47 + .../variablemgr/variablemanagerplugin.h | 33 + .../variablemgr/variablemanagerplugin.json | 61 + .../variablemgr/variablemanagerwidget.cpp | 272 + .../variablemgr/variablemanagerwidget.h | 59 + src/placeholderentry.cpp | 108 + src/placeholderentry.h | 40 + src/resultitem.cpp | 83 + src/resultitem.h | 60 + src/scripteditor/CMakeLists.txt | 10 + src/scripteditor/main.cpp | 29 + src/scripteditor/scripteditorwidget.cpp | 146 + src/scripteditor/scripteditorwidget.h | 47 + src/searchbar.cpp | 479 + src/searchbar.h | 97 + src/settings.kcfgc | 5 + src/settings.ui | 311 + src/standardsearchbar.ui | 118 + src/test/CMakeLists.txt | 77 + src/test/config-cantor-test.h.cmake | 1 + ...Equation Solver in Python with Numpy.ipynb | 785 ++ ...ies and Covariance Matrix Adaptation.ipynb | 4246 +++++++ ...mata and Computability using Jupyter.ipynb | 2095 ++++ ...Combination with Neural Populations .ipynb | 9822 +++++++++++++++++ src/test/data/EmptyPythonWorksheet.cws | Bin 0 -> 207 bytes .../data/Lecture-2B-Single-Atom-Lasing.ipynb | 714 ++ src/test/data/Population_Genetics.ipynb | 2187 ++++ .../data/TestCommandEntryExecutionAction.cws | Bin 0 -> 269 bytes src/test/data/TestEntryLoad1.ipynb | 82 + src/test/data/TestEntryLoad2.ipynb | 72 + src/test/data/TestMarkdownAttachment.ipynb | 77 + src/test/data/TestNotebookWithJson.ipynb | 103 + src/test/data/TestNotebookWithModJson.ipynb | 106 + src/test/data/TestResultsLoad.ipynb | 119 + src/test/data/Transformation2D.ipynb | 1254 +++ src/test/data/TwoCommandEntryWithResults.cws | Bin 0 -> 258 bytes src/test/worksheet_test.cpp | 7052 ++++++++++++ src/test/worksheet_test.h | 63 + src/textentry.cpp | 577 + src/textentry.h | 91 + src/textresultitem.cpp | 331 + src/textresultitem.h | 58 + src/worksheet.cpp | 2985 +++++ src/worksheet.h | 381 + src/worksheetcontrolitem.cpp | 109 + src/worksheetcontrolitem.h | 41 + src/worksheetcursor.cpp | 42 + src/worksheetcursor.h | 33 + src/worksheetentry.cpp | 1053 ++ src/worksheetentry.h | 221 + src/worksheetimageitem.cpp | 150 + src/worksheetimageitem.h | 64 + src/worksheettextitem.cpp | 926 ++ src/worksheettextitem.h | 170 + src/worksheettoolbutton.cpp | 68 + src/worksheettoolbutton.h | 45 + src/worksheetview.cpp | 348 + src/worksheetview.h | 67 + src/xslt/CMakeLists.txt | 1 + src/xslt/latex.xsl | 79 + thirdparty/CMakeLists.txt | 32 + thirdparty/README.md | 28 + thirdparty/discount-2.2.6-patched/COPYRIGHT | 30 + thirdparty/discount-2.2.6-patched/CREDITS | 35 + thirdparty/discount-2.2.6-patched/Csio.c | 61 + thirdparty/discount-2.2.6-patched/INSTALL | 65 + thirdparty/discount-2.2.6-patched/Makefile.in | 191 + .../discount-2.2.6-patched/Plan9/README.md | 33 + .../discount-2.2.6-patched/Plan9/markdown.1 | 169 + .../discount-2.2.6-patched/Plan9/markdown.2 | 332 + .../discount-2.2.6-patched/Plan9/markdown.6 | 541 + .../discount-2.2.6-patched/Plan9/mkfile | 38 + thirdparty/discount-2.2.6-patched/README | 16 + thirdparty/discount-2.2.6-patched/VERSION | 1 + thirdparty/discount-2.2.6-patched/amalloc.c | 136 + thirdparty/discount-2.2.6-patched/amalloc.h | 29 + thirdparty/discount-2.2.6-patched/basename.c | 43 + .../cmake/CMakeLists.txt | 215 + .../discount-2.2.6-patched/cmake/config.h.in | 79 + .../cmake/discount-config.cmake.in | 1 + .../discount-2.2.6-patched/configure.inc | 2014 ++++ .../discount-2.2.6-patched/configure.sh | 264 + thirdparty/discount-2.2.6-patched/css.c | 85 + thirdparty/discount-2.2.6-patched/cstring.h | 76 + thirdparty/discount-2.2.6-patched/docheader.c | 54 + thirdparty/discount-2.2.6-patched/dumptree.c | 160 + thirdparty/discount-2.2.6-patched/emmatch.c | 188 + thirdparty/discount-2.2.6-patched/flags.c | 93 + thirdparty/discount-2.2.6-patched/generate.c | 2107 ++++ thirdparty/discount-2.2.6-patched/gethopt.3 | 196 + thirdparty/discount-2.2.6-patched/gethopt.c | 286 + thirdparty/discount-2.2.6-patched/gethopt.h | 43 + .../discount-2.2.6-patched/github_flavoured.c | 101 + thirdparty/discount-2.2.6-patched/h1title.c | 36 + thirdparty/discount-2.2.6-patched/html5.c | 21 + .../discount-2.2.6-patched/libmarkdown.pc.in | 11 + thirdparty/discount-2.2.6-patched/main.c | 338 + thirdparty/discount-2.2.6-patched/makepage.1 | 45 + thirdparty/discount-2.2.6-patched/makepage.c | 102 + thirdparty/discount-2.2.6-patched/markdown.1 | 195 + thirdparty/discount-2.2.6-patched/markdown.3 | 152 + thirdparty/discount-2.2.6-patched/markdown.7 | 1020 ++ thirdparty/discount-2.2.6-patched/markdown.c | 1463 +++ thirdparty/discount-2.2.6-patched/markdown.h | 270 + .../discount-2.2.6-patched/mkd-callbacks.3 | 71 + .../discount-2.2.6-patched/mkd-extensions.7 | 197 + .../discount-2.2.6-patched/mkd-functions.3 | 186 + thirdparty/discount-2.2.6-patched/mkd-line.3 | 41 + thirdparty/discount-2.2.6-patched/mkd2html.1 | 52 + thirdparty/discount-2.2.6-patched/mkd2html.c | 236 + thirdparty/discount-2.2.6-patched/mkdio.c | 457 + thirdparty/discount-2.2.6-patched/mkdio.h.in | 127 + thirdparty/discount-2.2.6-patched/mktags.c | 92 + .../discount-2.2.6-patched/msvc/Makefile | 65 + .../discount-2.2.6-patched/msvc/README.md | 17 + .../discount-2.2.6-patched/msvc/config.h.vc | 75 + .../discount-2.2.6-patched/notspecial.c | 44 + .../discount-2.2.6-patched/pgm_options.c | 146 + .../discount-2.2.6-patched/pgm_options.h | 9 + thirdparty/discount-2.2.6-patched/resource.c | 160 + thirdparty/discount-2.2.6-patched/setup.c | 39 + thirdparty/discount-2.2.6-patched/tags.c | 96 + thirdparty/discount-2.2.6-patched/tags.h | 19 + .../discount-2.2.6-patched/tests/autolink.t | 27 + .../discount-2.2.6-patched/tests/automatic.t | 27 + .../discount-2.2.6-patched/tests/backslash.t | 21 + .../discount-2.2.6-patched/tests/callbacks.t | 17 + .../discount-2.2.6-patched/tests/chrome.text | 13 + .../discount-2.2.6-patched/tests/code.t | 35 + .../discount-2.2.6-patched/tests/codeblock.t | 216 + .../discount-2.2.6-patched/tests/compat.t | 29 + .../discount-2.2.6-patched/tests/crash.t | 31 + .../discount-2.2.6-patched/tests/data/README | 8 + .../tests/data/f01.html | 22 + .../tests/data/f01.text | 15 + .../discount-2.2.6-patched/tests/defects.t | 25 + thirdparty/discount-2.2.6-patched/tests/div.t | 49 + thirdparty/discount-2.2.6-patched/tests/dl.t | 101 + .../tests/embedlinks.text | 9 + .../discount-2.2.6-patched/tests/emphasis.t | 19 + .../tests/extrafootnotes.t | 126 + .../discount-2.2.6-patched/tests/flow.t | 33 + .../discount-2.2.6-patched/tests/footnotes.t | 16 + .../discount-2.2.6-patched/tests/functions.sh | 90 + .../discount-2.2.6-patched/tests/githubtags.t | 23 + .../discount-2.2.6-patched/tests/header.t | 26 + .../discount-2.2.6-patched/tests/html.t | 115 + .../discount-2.2.6-patched/tests/html5.t | 17 + .../tests/html_comment.t | 49 + .../discount-2.2.6-patched/tests/latex.t | 27 + .../discount-2.2.6-patched/tests/links.text | 14 + .../discount-2.2.6-patched/tests/linkylinky.t | 137 + .../discount-2.2.6-patched/tests/linkypix.t | 21 + .../discount-2.2.6-patched/tests/list.t | 217 + .../discount-2.2.6-patched/tests/list3deep.t | 38 + .../discount-2.2.6-patched/tests/misc.t | 12 + .../tests/mu\303\261oz.t" | 144 + .../discount-2.2.6-patched/tests/pandoc.t | 91 + .../discount-2.2.6-patched/tests/para.t | 17 + .../tests/peculiarities.t | 77 + .../discount-2.2.6-patched/tests/pseudo.t | 20 + .../discount-2.2.6-patched/tests/reddit.t | 27 + .../discount-2.2.6-patched/tests/reparse.t | 14 + .../discount-2.2.6-patched/tests/safelinks.t | 18 + .../discount-2.2.6-patched/tests/schiraldi.t | 91 + .../discount-2.2.6-patched/tests/smarty.t | 25 + .../discount-2.2.6-patched/tests/snakepit.t | 29 + .../tests/strikethrough.t | 16 + .../discount-2.2.6-patched/tests/style.t | 36 + .../tests/superscript.t | 21 + .../discount-2.2.6-patched/tests/syntax.text | 897 ++ .../discount-2.2.6-patched/tests/tables.t | 276 + .../discount-2.2.6-patched/tests/tabstop.t | 48 + thirdparty/discount-2.2.6-patched/tests/toc.t | 95 + thirdparty/discount-2.2.6-patched/tests/xml.t | 18 + thirdparty/discount-2.2.6-patched/theme.1 | 160 + thirdparty/discount-2.2.6-patched/theme.c | 666 ++ thirdparty/discount-2.2.6-patched/toc.c | 112 + .../discount-2.2.6-patched/tools/README | 14 + .../discount-2.2.6-patched/tools/branch.c | 29 + .../discount-2.2.6-patched/tools/checkbits.sh | 11 + .../discount-2.2.6-patched/tools/cols.c | 39 + .../discount-2.2.6-patched/tools/echo.c | 25 + .../tools/pandoc_headers.c | 99 + .../discount-2.2.6-patched/version.c.in | 13 + thirdparty/discount-2.2.6-patched/xml.c | 83 + thirdparty/discount-2.2.6-patched/xmlpage.c | 43 + thirdparty/preview.sty | 392 + 869 files changed, 370705 insertions(+) create mode 100644 .gitignore create mode 100644 .gitlab-ci.yml create mode 100644 .kateconfig create mode 100644 .kde-ci.yml create mode 100644 .reuse/dep5 create mode 100644 CHANGELOG.md create mode 100644 CMakeLists.txt create mode 100644 CantorConfig.cmake.in create mode 100644 DESIGN create mode 100644 FindCantor.cmake create mode 100644 LICENSES/BSD-3-Clause.txt create mode 100644 LICENSES/CC0-1.0.txt create mode 100644 LICENSES/GPL-2.0-only.txt create mode 100644 LICENSES/GPL-2.0-or-later.txt create mode 100644 LICENSES/GPL-3.0-only.txt create mode 100644 LICENSES/LicenseRef-KDE-Accepted-GPL.txt create mode 100644 README.md create mode 100644 admin/documentation/Maxima/Maxima_v5.42/README.md create mode 100644 admin/documentation/Maxima/Maxima_v5.42/main.css create mode 100644 admin/documentation/Maxima/Maxima_v5.42/qthelp_generator.py create mode 100644 admin/documentation/Maxima/Maxima_v5.44/README.md create mode 100644 admin/documentation/Maxima/Maxima_v5.44/qthelp_generator.py create mode 100644 admin/documentation/Octave/README.md create mode 100644 admin/documentation/Python/NumPy_v1.19/README.md create mode 100644 admin/documentation/Python/NumPy_v1.19/qthelp_generator.py create mode 100644 admin/documentation/Python/Python_v3.8.4/README.md create mode 100644 admin/documentation/Python/Python_v3.8.4/qthelp_generator.py create mode 100644 cmake/COPYING-CMAKE-SCRIPTS create mode 100644 cmake/FindDiscount.cmake create mode 100644 cmake/FindJulia.cmake create mode 100644 cmake/FindLibSpectre.cmake create mode 100644 cmake/FindLuaJIT.cmake create mode 100644 cmake/FindQalculate.cmake create mode 100644 cmake/FindR.cmake create mode 100644 doc/CMakeLists.txt create mode 100644 doc/create-dlg.png create mode 100644 doc/differentiate-dlg.png create mode 100644 doc/import-dlg.png create mode 100644 doc/index.docbook create mode 100644 doc/integrate-dlg.png create mode 100644 doc/latex_formula.png create mode 100644 doc/matrix-dlg.png create mode 100644 doc/plot-dlg1.png create mode 100644 doc/plot-dlg2.png create mode 100644 doc/plot2d-dlg.png create mode 100644 doc/plot3d-dlg.png create mode 100644 doc/screenshot.png create mode 100644 doc/solve-equations-dlg.png create mode 100644 examples/maxima/maxima_examples_plots.cws create mode 100644 examples/maxima/maxima_klein_plot.cws create mode 100644 examples/maxima/tutorial_for_beginners.cws create mode 100644 examples/octave/lorenzSystem.cws create mode 100644 examples/octave/octave_examples_2d_plots.cws create mode 100644 examples/octave/octave_examples_3d_plots.cws create mode 100644 icons/128-apps-cantor.png create mode 100644 icons/150-apps-cantor.png create mode 100644 icons/16-apps-cantor.png create mode 100644 icons/22-apps-cantor.png create mode 100644 icons/310-apps-cantor.png create mode 100644 icons/32-apps-cantor.png create mode 100644 icons/44-apps-cantor.png create mode 100644 icons/48-apps-cantor.png create mode 100644 icons/48-apps-juliabackend.png create mode 100644 icons/48-apps-kalgebrabackend.png create mode 100644 icons/48-apps-luabackend.png create mode 100644 icons/48-apps-maximabackend.png create mode 100644 icons/48-apps-octavebackend.png create mode 100644 icons/48-apps-pythonbackend.png create mode 100644 icons/48-apps-qalculatebackend.png create mode 100644 icons/48-apps-rbackend.png create mode 100644 icons/48-apps-sagebackend.png create mode 100644 icons/48-apps-scilabbackend.png create mode 100644 icons/64-apps-cantor.png create mode 100644 icons/CMakeLists.txt create mode 100644 icons/hisc-apps-cantor.svgz create mode 100644 org.kde.cantor.appdata.xml create mode 100644 po/ar/cantor.po create mode 100644 po/bg/cantor.po create mode 100644 po/bs/cantor.po create mode 100644 po/ca/cantor.po create mode 100644 po/ca/docs/cantor/create-dlg.png create mode 100644 po/ca/docs/cantor/differentiate-dlg.png create mode 100644 po/ca/docs/cantor/import-dlg.png create mode 100644 po/ca/docs/cantor/index.docbook create mode 100644 po/ca/docs/cantor/integrate-dlg.png create mode 100644 po/ca/docs/cantor/matrix-dlg.png create mode 100644 po/ca/docs/cantor/plot-dlg1.png create mode 100644 po/ca/docs/cantor/plot-dlg2.png create mode 100644 po/ca/docs/cantor/plot2d-dlg.png create mode 100644 po/ca/docs/cantor/plot3d-dlg.png create mode 100644 po/ca/docs/cantor/screenshot.png create mode 100644 po/ca/docs/cantor/solve-equations-dlg.png create mode 100644 po/ca@valencia/cantor.po create mode 100644 po/cs/cantor.po create mode 100644 po/da/cantor.po create mode 100644 po/de/cantor.po create mode 100644 po/de/docs/cantor/index.docbook create mode 100644 po/el/cantor.po create mode 100644 po/en_GB/cantor.po create mode 100644 po/eo/cantor.po create mode 100644 po/es/cantor.po create mode 100644 po/es/docs/cantor/index.docbook create mode 100644 po/es/docs/cantor/screenshot.png create mode 100644 po/et/cantor.po create mode 100644 po/et/docs/cantor/index.docbook create mode 100644 po/eu/cantor.po create mode 100644 po/fi/cantor.po create mode 100644 po/fr/cantor.po create mode 100644 po/fr/docs/cantor/index.docbook create mode 100644 po/fr/docs/cantor/screenshot.png create mode 100644 po/ga/cantor.po create mode 100644 po/gl/cantor.po create mode 100644 po/gl/docs/cantor/index.docbook create mode 100644 po/hr/cantor.po create mode 100644 po/hu/cantor.po create mode 100644 po/ia/cantor.po create mode 100644 po/it/cantor.po create mode 100644 po/it/docs/cantor/index.docbook create mode 100644 po/ja/cantor.po create mode 100644 po/ka/cantor.po create mode 100644 po/kk/cantor.po create mode 100644 po/ko/cantor.po create mode 100644 po/lt/cantor.po create mode 100644 po/lv/cantor.po create mode 100644 po/ml/cantor.po create mode 100644 po/mr/cantor.po create mode 100644 po/nb/cantor.po create mode 100644 po/nds/cantor.po create mode 100644 po/nl/cantor.po create mode 100644 po/nl/docs/cantor/index.docbook create mode 100644 po/nn/cantor.po create mode 100644 po/pa/cantor.po create mode 100644 po/pl/cantor.po create mode 100644 po/pt/cantor.po create mode 100644 po/pt/docs/cantor/index.docbook create mode 100644 po/pt_BR/cantor.po create mode 100644 po/pt_BR/docs/cantor/index.docbook create mode 100644 po/pt_BR/docs/cantor/screenshot.png create mode 100644 po/ro/cantor.po create mode 100644 po/ru/cantor.po create mode 100644 po/ru/docs/cantor/index.docbook create mode 100644 po/sk/cantor.po create mode 100644 po/sl/cantor.po create mode 100644 po/sv/cantor.po create mode 100644 po/sv/docs/cantor/index.docbook create mode 100644 po/th/cantor.po create mode 100644 po/tr/cantor.po create mode 100644 po/ug/cantor.po create mode 100644 po/uk/cantor.po create mode 100644 po/uk/docs/cantor/create-dlg.png create mode 100644 po/uk/docs/cantor/differentiate-dlg.png create mode 100644 po/uk/docs/cantor/import-dlg.png create mode 100644 po/uk/docs/cantor/index.docbook create mode 100644 po/uk/docs/cantor/integrate-dlg.png create mode 100644 po/uk/docs/cantor/matrix-dlg.png create mode 100644 po/uk/docs/cantor/plot-dlg1.png create mode 100644 po/uk/docs/cantor/plot-dlg2.png create mode 100644 po/uk/docs/cantor/plot2d-dlg.png create mode 100644 po/uk/docs/cantor/plot3d-dlg.png create mode 100644 po/uk/docs/cantor/screenshot.png create mode 100644 po/uk/docs/cantor/solve-equations-dlg.png create mode 100644 po/zh_CN/cantor.po create mode 100644 po/zh_TW/cantor.po create mode 100644 src/.emacs-dirvars create mode 100644 src/CMakeLists.txt create mode 100644 src/Messages.sh create mode 100644 src/XmlMessages.sh create mode 100644 src/actionbar.cpp create mode 100644 src/actionbar.h create mode 100644 src/animation.cpp create mode 100644 src/animation.h create mode 100644 src/animationresultitem.cpp create mode 100644 src/animationresultitem.h create mode 100644 src/assistants/CMakeLists.txt create mode 100644 src/assistants/advancedplot/CMakeLists.txt create mode 100644 src/assistants/advancedplot/advancedplotassistant.cpp create mode 100644 src/assistants/advancedplot/advancedplotassistant.h create mode 100644 src/assistants/advancedplot/advancedplotassistant.json create mode 100644 src/assistants/advancedplot/advancedplotdialog.ui create mode 100644 src/assistants/advancedplot/cantor_advancedplot_assistant.rc create mode 100644 src/assistants/advancedplot/directivecontainer.ui create mode 100644 src/assistants/differentiate/CMakeLists.txt create mode 100644 src/assistants/differentiate/cantor_differentiate_assistant.rc create mode 100644 src/assistants/differentiate/differentiateassistant.cpp create mode 100644 src/assistants/differentiate/differentiateassistant.h create mode 100644 src/assistants/differentiate/differentiateassistant.json create mode 100644 src/assistants/differentiate/differentiatedlg.ui create mode 100644 src/assistants/importpackage/CMakeLists.txt create mode 100644 src/assistants/importpackage/cantor_import_package_assistant.rc create mode 100644 src/assistants/importpackage/importpackageassistant.cpp create mode 100644 src/assistants/importpackage/importpackageassistant.h create mode 100644 src/assistants/importpackage/importpackageassistant.json create mode 100644 src/assistants/importpackage/importpackagedlg.ui create mode 100644 src/assistants/integrate/CMakeLists.txt create mode 100644 src/assistants/integrate/cantor_integrate_assistant.rc create mode 100644 src/assistants/integrate/integrateassistant.cpp create mode 100644 src/assistants/integrate/integrateassistant.h create mode 100644 src/assistants/integrate/integrateassistant.json create mode 100644 src/assistants/integrate/integratedlg.ui create mode 100644 src/assistants/linearalgebra/CMakeLists.txt create mode 100644 src/assistants/linearalgebra/creatematrix/CMakeLists.txt create mode 100644 src/assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc create mode 100644 src/assistants/linearalgebra/creatematrix/creatematrixassistant.cpp create mode 100644 src/assistants/linearalgebra/creatematrix/creatematrixassistant.h create mode 100644 src/assistants/linearalgebra/creatematrix/creatematrixassistant.json create mode 100644 src/assistants/linearalgebra/creatematrix/creatematrixdlg.cpp create mode 100644 src/assistants/linearalgebra/creatematrix/creatematrixdlg.h create mode 100644 src/assistants/linearalgebra/creatematrix/creatematrixdlg.ui create mode 100644 src/assistants/linearalgebra/eigenvalues/CMakeLists.txt create mode 100644 src/assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc create mode 100644 src/assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp create mode 100644 src/assistants/linearalgebra/eigenvalues/eigenvaluesassistant.h create mode 100644 src/assistants/linearalgebra/eigenvalues/eigenvaluesassistant.json create mode 100644 src/assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui create mode 100644 src/assistants/linearalgebra/eigenvectors/CMakeLists.txt create mode 100644 src/assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc create mode 100644 src/assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp create mode 100644 src/assistants/linearalgebra/eigenvectors/eigenvectorsassistant.h create mode 100644 src/assistants/linearalgebra/eigenvectors/eigenvectorsassistant.json create mode 100644 src/assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui create mode 100644 src/assistants/linearalgebra/invertmatrix/CMakeLists.txt create mode 100644 src/assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc create mode 100644 src/assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp create mode 100644 src/assistants/linearalgebra/invertmatrix/invertmatrixassistant.h create mode 100644 src/assistants/linearalgebra/invertmatrix/invertmatrixassistant.json create mode 100644 src/assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui create mode 100644 src/assistants/plot2d/CMakeLists.txt create mode 100644 src/assistants/plot2d/cantor_plot2d_assistant.rc create mode 100644 src/assistants/plot2d/plot2dassistant.cpp create mode 100644 src/assistants/plot2d/plot2dassistant.h create mode 100644 src/assistants/plot2d/plot2dassistant.json create mode 100644 src/assistants/plot2d/plot2ddlg.ui create mode 100644 src/assistants/plot3d/CMakeLists.txt create mode 100644 src/assistants/plot3d/cantor_plot3d_assistant.rc create mode 100644 src/assistants/plot3d/plot3dassistant.cpp create mode 100644 src/assistants/plot3d/plot3dassistant.h create mode 100644 src/assistants/plot3d/plot3dassistant.json create mode 100644 src/assistants/plot3d/plot3ddlg.ui create mode 100644 src/assistants/runscript/CMakeLists.txt create mode 100644 src/assistants/runscript/cantor_runscript_assistant.rc create mode 100644 src/assistants/runscript/runscriptassistant.cpp create mode 100644 src/assistants/runscript/runscriptassistant.h create mode 100644 src/assistants/runscript/runscriptassistant.json create mode 100644 src/assistants/solve/CMakeLists.txt create mode 100644 src/assistants/solve/cantor_solve_assistant.rc create mode 100644 src/assistants/solve/solveassistant.cpp create mode 100644 src/assistants/solve/solveassistant.h create mode 100644 src/assistants/solve/solveassistant.json create mode 100644 src/assistants/solve/solvedlg.ui create mode 100644 src/backendchoosedialog.cpp create mode 100644 src/backendchoosedialog.h create mode 100644 src/backendchooser.ui create mode 100644 src/backends/CMakeLists.txt create mode 100644 src/backends/R/CMakeLists.txt create mode 100644 src/backends/R/DESIGN create mode 100644 src/backends/R/GenLibFile.py create mode 100644 src/backends/R/cantor_r.knsrc create mode 100644 src/backends/R/rbackend.cpp create mode 100644 src/backends/R/rbackend.h create mode 100644 src/backends/R/rbackend.json create mode 100644 src/backends/R/rcompletionobject.cpp create mode 100644 src/backends/R/rcompletionobject.h create mode 100644 src/backends/R/rexpression.cpp create mode 100644 src/backends/R/rexpression.h create mode 100644 src/backends/R/rextensions.cpp create mode 100644 src/backends/R/rextensions.h create mode 100644 src/backends/R/rhighlighter.cpp create mode 100644 src/backends/R/rhighlighter.h create mode 100644 src/backends/R/rkeywords.cpp create mode 100644 src/backends/R/rkeywords.h create mode 100644 src/backends/R/rserver/CMakeLists.txt create mode 100644 src/backends/R/rserver/main.cpp create mode 100644 src/backends/R/rserver/org.kde.Cantor.R.xml create mode 100644 src/backends/R/rserver/rcallbacks.cpp create mode 100644 src/backends/R/rserver/rcallbacks.h create mode 100644 src/backends/R/rserver/rserver.cpp create mode 100644 src/backends/R/rserver/rserver.h create mode 100644 src/backends/R/rserver/rserver.kcfg create mode 100644 src/backends/R/rserver/settings.kcfgc create mode 100644 src/backends/R/rserver/tools/autoloads.r create mode 100755 src/backends/R/rserver/tools/envvars.r create mode 100644 src/backends/R/rsession.cpp create mode 100644 src/backends/R/rsession.h create mode 100644 src/backends/R/rsettingswidget.cpp create mode 100644 src/backends/R/rsettingswidget.h create mode 100644 src/backends/R/rvariablemodel.cpp create mode 100644 src/backends/R/rvariablemodel.h create mode 100644 src/backends/R/settings.ui create mode 100644 src/backends/R/testr.cpp create mode 100644 src/backends/R/testr.h create mode 100644 src/backends/backendsettingswidget.cpp create mode 100644 src/backends/backendsettingswidget.h create mode 100644 src/backends/julia/CMakeLists.txt create mode 100644 src/backends/julia/graphic_packages.xml create mode 100644 src/backends/julia/juliabackend.cpp create mode 100644 src/backends/julia/juliabackend.h create mode 100644 src/backends/julia/juliabackend.json create mode 100644 src/backends/julia/juliabackend.kcfg create mode 100644 src/backends/julia/juliacompletionobject.cpp create mode 100644 src/backends/julia/juliacompletionobject.h create mode 100644 src/backends/julia/juliaexpression.cpp create mode 100644 src/backends/julia/juliaexpression.h create mode 100644 src/backends/julia/juliaextensions.cpp create mode 100644 src/backends/julia/juliaextensions.h create mode 100644 src/backends/julia/juliahighlighter.cpp create mode 100644 src/backends/julia/juliahighlighter.h create mode 100644 src/backends/julia/juliakeywords.cpp create mode 100644 src/backends/julia/juliakeywords.h create mode 100644 src/backends/julia/juliascriptloading.h create mode 100644 src/backends/julia/juliaserver/CMakeLists.txt create mode 100644 src/backends/julia/juliaserver/juliaserver.cpp create mode 100644 src/backends/julia/juliaserver/juliaserver.h create mode 100644 src/backends/julia/juliaserver/main.cpp create mode 100644 src/backends/julia/juliasession.cpp create mode 100644 src/backends/julia/juliasession.h create mode 100644 src/backends/julia/juliasettingswidget.cpp create mode 100644 src/backends/julia/juliasettingswidget.h create mode 100644 src/backends/julia/juliavariablemodel.cpp create mode 100644 src/backends/julia/juliavariablemodel.h create mode 100644 src/backends/julia/scripts/variables_cleaner.jl create mode 100644 src/backends/julia/scripts/variables_loader.jl create mode 100644 src/backends/julia/scripts/variables_saver.jl create mode 100644 src/backends/julia/settings.kcfgc create mode 100644 src/backends/julia/settings.ui create mode 100644 src/backends/julia/testjulia.cpp create mode 100644 src/backends/julia/testjulia.h create mode 100644 src/backends/kalgebra/CMakeLists.txt create mode 100644 src/backends/kalgebra/cantor_kalgebra.knsrc create mode 100644 src/backends/kalgebra/kalgebrabackend.cpp create mode 100644 src/backends/kalgebra/kalgebrabackend.h create mode 100644 src/backends/kalgebra/kalgebrabackend.json create mode 100644 src/backends/kalgebra/kalgebrabackend.kcfg create mode 100644 src/backends/kalgebra/kalgebracompletionobject.cpp create mode 100644 src/backends/kalgebra/kalgebracompletionobject.h create mode 100644 src/backends/kalgebra/kalgebraexpression.cpp create mode 100644 src/backends/kalgebra/kalgebraexpression.h create mode 100644 src/backends/kalgebra/kalgebraextensions.cpp create mode 100644 src/backends/kalgebra/kalgebraextensions.h create mode 100644 src/backends/kalgebra/kalgebrasession.cpp create mode 100644 src/backends/kalgebra/kalgebrasession.h create mode 100644 src/backends/kalgebra/kalgebrasyntaxhelpobject.cpp create mode 100644 src/backends/kalgebra/kalgebrasyntaxhelpobject.h create mode 100644 src/backends/kalgebra/settings.kcfgc create mode 100644 src/backends/kalgebra/settings.ui create mode 100644 src/backends/lua/CMakeLists.txt create mode 100644 src/backends/lua/cantor_lua.knsrc create mode 100644 src/backends/lua/luabackend.cpp create mode 100644 src/backends/lua/luabackend.h create mode 100644 src/backends/lua/luabackend.json create mode 100644 src/backends/lua/luabackend.kcfg create mode 100644 src/backends/lua/luacompletionobject.cpp create mode 100644 src/backends/lua/luacompletionobject.h create mode 100644 src/backends/lua/luaexpression.cpp create mode 100644 src/backends/lua/luaexpression.h create mode 100644 src/backends/lua/luaextensions.cpp create mode 100644 src/backends/lua/luaextensions.h create mode 100644 src/backends/lua/luahelper.cpp create mode 100644 src/backends/lua/luahelper.h create mode 100644 src/backends/lua/luahighlighter.cpp create mode 100644 src/backends/lua/luahighlighter.h create mode 100644 src/backends/lua/luakeywords.cpp create mode 100644 src/backends/lua/luakeywords.h create mode 100644 src/backends/lua/luasession.cpp create mode 100644 src/backends/lua/luasession.h create mode 100644 src/backends/lua/luasettingswidget.cpp create mode 100644 src/backends/lua/luasettingswidget.h create mode 100644 src/backends/lua/settings.kcfgc create mode 100644 src/backends/lua/settings.ui create mode 100644 src/backends/lua/testlua.cpp create mode 100644 src/backends/lua/testlua.h create mode 100644 src/backends/maxima/CMakeLists.txt create mode 100644 src/backends/maxima/DESIGN create mode 100644 src/backends/maxima/cantor-initmaxima.lisp create mode 100644 src/backends/maxima/cantor_maxima.knsrc create mode 100644 src/backends/maxima/maximabackend.cpp create mode 100644 src/backends/maxima/maximabackend.h create mode 100644 src/backends/maxima/maximabackend.json create mode 100644 src/backends/maxima/maximabackend.kcfg create mode 100644 src/backends/maxima/maximacompletionobject.cpp create mode 100644 src/backends/maxima/maximacompletionobject.h create mode 100644 src/backends/maxima/maximaexpression.cpp create mode 100644 src/backends/maxima/maximaexpression.h create mode 100644 src/backends/maxima/maximaextensions.cpp create mode 100644 src/backends/maxima/maximaextensions.h create mode 100644 src/backends/maxima/maximahighlighter.cpp create mode 100644 src/backends/maxima/maximahighlighter.h create mode 100644 src/backends/maxima/maximakeywords.cpp create mode 100644 src/backends/maxima/maximakeywords.h create mode 100644 src/backends/maxima/maximasession.cpp create mode 100644 src/backends/maxima/maximasession.h create mode 100644 src/backends/maxima/maximasettingswidget.cpp create mode 100644 src/backends/maxima/maximasettingswidget.h create mode 100644 src/backends/maxima/maximasyntaxhelpobject.cpp create mode 100644 src/backends/maxima/maximasyntaxhelpobject.h create mode 100644 src/backends/maxima/maximavariablemodel.cpp create mode 100644 src/backends/maxima/maximavariablemodel.h create mode 100644 src/backends/maxima/settings.kcfgc create mode 100644 src/backends/maxima/settings.ui create mode 100644 src/backends/maxima/testmaxima.cpp create mode 100644 src/backends/maxima/testmaxima.h create mode 100644 src/backends/octave/CMakeLists.txt create mode 100644 src/backends/octave/cantor_octave.knsrc create mode 100644 src/backends/octave/cmake.patch create mode 100644 src/backends/octave/graphic_packages.xml create mode 100644 src/backends/octave/octavebackend.cpp create mode 100644 src/backends/octave/octavebackend.h create mode 100644 src/backends/octave/octavebackend.json create mode 100644 src/backends/octave/octavebackend.kcfg.in create mode 100644 src/backends/octave/octavecompletionobject.cpp create mode 100644 src/backends/octave/octavecompletionobject.h create mode 100644 src/backends/octave/octaveexpression.cpp create mode 100644 src/backends/octave/octaveexpression.h create mode 100644 src/backends/octave/octaveextensions.cpp create mode 100644 src/backends/octave/octaveextensions.h create mode 100644 src/backends/octave/octavehighlighter.cpp create mode 100644 src/backends/octave/octavehighlighter.h create mode 100644 src/backends/octave/octavekeywords.cpp create mode 100644 src/backends/octave/octavekeywords.h create mode 100644 src/backends/octave/octavesession.cpp create mode 100644 src/backends/octave/octavesession.h create mode 100644 src/backends/octave/octavesettingswidget.cpp create mode 100644 src/backends/octave/octavesettingswidget.h create mode 100644 src/backends/octave/octavesyntaxhelpobject.cpp create mode 100644 src/backends/octave/octavesyntaxhelpobject.h create mode 100644 src/backends/octave/octavevariablemodel.cpp create mode 100644 src/backends/octave/octavevariablemodel.h create mode 100644 src/backends/octave/scripts/CMakeLists.txt create mode 100644 src/backends/octave/scripts/cantor_eigenvectors.m create mode 100644 src/backends/octave/scripts/cantor_plot2d.m create mode 100644 src/backends/octave/scripts/cantor_plot3d.m create mode 100644 src/backends/octave/scripts/cantor_print.m create mode 100644 src/backends/octave/settings.kcfgc create mode 100644 src/backends/octave/settings.ui create mode 100644 src/backends/octave/testoctave.cpp create mode 100644 src/backends/octave/testoctave.h create mode 100644 src/backends/python/CMakeLists.txt create mode 100644 src/backends/python/cantor_python.knsrc create mode 100644 src/backends/python/graphic_packages.xml create mode 100644 src/backends/python/python.qrc create mode 100644 src/backends/python/pythonbackend.cpp create mode 100644 src/backends/python/pythonbackend.h create mode 100644 src/backends/python/pythonbackend.json create mode 100644 src/backends/python/pythonbackend.kcfg create mode 100644 src/backends/python/pythoncompletionobject.cpp create mode 100644 src/backends/python/pythoncompletionobject.h create mode 100644 src/backends/python/pythonexpression.cpp create mode 100644 src/backends/python/pythonexpression.h create mode 100644 src/backends/python/pythonextensions.cpp create mode 100644 src/backends/python/pythonextensions.h create mode 100644 src/backends/python/pythonhighlighter.cpp create mode 100644 src/backends/python/pythonhighlighter.h create mode 100644 src/backends/python/pythonkeywords.cpp create mode 100644 src/backends/python/pythonkeywords.h create mode 100644 src/backends/python/pythonserver.cpp create mode 100644 src/backends/python/pythonserver.h create mode 100644 src/backends/python/pythonservermain.cpp create mode 100644 src/backends/python/pythonsession.cpp create mode 100644 src/backends/python/pythonsession.h create mode 100644 src/backends/python/pythonsettingswidget.cpp create mode 100644 src/backends/python/pythonsettingswidget.h create mode 100644 src/backends/python/pythonutils.h create mode 100644 src/backends/python/pythonvariablemodel.cpp create mode 100644 src/backends/python/pythonvariablemodel.h create mode 100644 src/backends/python/settings.kcfgc create mode 100644 src/backends/python/settings.ui create mode 100644 src/backends/python/testpython.cpp create mode 100644 src/backends/python/testpython.h create mode 100644 src/backends/python/variables_cleaner.py create mode 100644 src/backends/python/variables_loader.py create mode 100644 src/backends/python/variables_saver.py create mode 100644 src/backends/qalculate/CMakeLists.txt create mode 100644 src/backends/qalculate/cantor_qalculate.knsrc create mode 100644 src/backends/qalculate/plotassistant/CMakeLists.txt create mode 100644 src/backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc create mode 100644 src/backends/qalculate/plotassistant/qalculateplotassistant.cpp create mode 100644 src/backends/qalculate/plotassistant/qalculateplotassistant.h create mode 100644 src/backends/qalculate/plotassistant/qalculateplotassistant.json create mode 100644 src/backends/qalculate/plotassistant/qalculateplotdialog.ui create mode 100644 src/backends/qalculate/qalculatebackend.cpp create mode 100644 src/backends/qalculate/qalculatebackend.h create mode 100644 src/backends/qalculate/qalculatebackend.json create mode 100644 src/backends/qalculate/qalculatebackend.kcfg create mode 100644 src/backends/qalculate/qalculatecompletionobject.cpp create mode 100644 src/backends/qalculate/qalculatecompletionobject.h create mode 100644 src/backends/qalculate/qalculateexpression.cpp create mode 100644 src/backends/qalculate/qalculateexpression.h create mode 100644 src/backends/qalculate/qalculateextensions.cpp create mode 100644 src/backends/qalculate/qalculateextensions.h create mode 100644 src/backends/qalculate/qalculatehighlighter.cpp create mode 100644 src/backends/qalculate/qalculatehighlighter.h create mode 100644 src/backends/qalculate/qalculatesession.cpp create mode 100644 src/backends/qalculate/qalculatesession.h create mode 100644 src/backends/qalculate/qalculatesettingswidget.cpp create mode 100644 src/backends/qalculate/qalculatesettingswidget.h create mode 100644 src/backends/qalculate/qalculatesyntaxhelpobject.cpp create mode 100644 src/backends/qalculate/qalculatesyntaxhelpobject.h create mode 100644 src/backends/qalculate/settings.kcfgc create mode 100644 src/backends/qalculate/settings.ui create mode 100644 src/backends/qthelpconfig.cpp create mode 100644 src/backends/qthelpconfig.h create mode 100644 src/backends/qthelpconfig.ui create mode 100644 src/backends/qthelpconfigeditdialog.ui create mode 100644 src/backends/sage/CMakeLists.txt create mode 100644 src/backends/sage/DESIGN create mode 100644 src/backends/sage/cantor-execsage create mode 100644 src/backends/sage/cantor_sage.knsrc create mode 100644 src/backends/sage/sagebackend.cpp create mode 100644 src/backends/sage/sagebackend.h create mode 100644 src/backends/sage/sagebackend.json create mode 100644 src/backends/sage/sagebackend.kcfg create mode 100644 src/backends/sage/sagecompletionobject.cpp create mode 100644 src/backends/sage/sagecompletionobject.h create mode 100644 src/backends/sage/sageexpression.cpp create mode 100644 src/backends/sage/sageexpression.h create mode 100644 src/backends/sage/sageextensions.cpp create mode 100644 src/backends/sage/sageextensions.h create mode 100644 src/backends/sage/sagehighlighter.cpp create mode 100644 src/backends/sage/sagehighlighter.h create mode 100644 src/backends/sage/sagekeywords.cpp create mode 100644 src/backends/sage/sagekeywords.h create mode 100644 src/backends/sage/sagesession.cpp create mode 100644 src/backends/sage/sagesession.h create mode 100644 src/backends/sage/sagesettingswidget.cpp create mode 100644 src/backends/sage/sagesettingswidget.h create mode 100644 src/backends/sage/settings.kcfgc create mode 100644 src/backends/sage/settings.ui create mode 100644 src/backends/sage/testsage.cpp create mode 100644 src/backends/sage/testsage.h create mode 100644 src/backends/scilab/CMakeLists.txt create mode 100644 src/backends/scilab/cantor_scilab.knsrc create mode 100644 src/backends/scilab/scilabbackend.cpp create mode 100644 src/backends/scilab/scilabbackend.h create mode 100644 src/backends/scilab/scilabbackend.json create mode 100644 src/backends/scilab/scilabbackend.kcfg create mode 100644 src/backends/scilab/scilabcompletionobject.cpp create mode 100644 src/backends/scilab/scilabcompletionobject.h create mode 100644 src/backends/scilab/scilabexpression.cpp create mode 100644 src/backends/scilab/scilabexpression.h create mode 100644 src/backends/scilab/scilabextensions.cpp create mode 100644 src/backends/scilab/scilabextensions.h create mode 100644 src/backends/scilab/scilabhighlighter.cpp create mode 100644 src/backends/scilab/scilabhighlighter.h create mode 100644 src/backends/scilab/scilabkeywords.cpp create mode 100644 src/backends/scilab/scilabkeywords.h create mode 100644 src/backends/scilab/scilabsession.cpp create mode 100644 src/backends/scilab/scilabsession.h create mode 100644 src/backends/scilab/scilabsettingswidget.cpp create mode 100644 src/backends/scilab/scilabsettingswidget.h create mode 100644 src/backends/scilab/settings.kcfgc create mode 100644 src/backends/scilab/settings.ui create mode 100644 src/backends/scilab/testscilab.cpp create mode 100644 src/backends/scilab/testscilab.h create mode 100644 src/cantor-documentation.knsrc create mode 100644 src/cantor.cpp create mode 100644 src/cantor.h create mode 100644 src/cantor.kcfg create mode 100644 src/cantor.knsrc create mode 100644 src/cantor.xml create mode 100644 src/cantor_part.cpp create mode 100644 src/cantor_part.h create mode 100644 src/cantor_part.json create mode 100644 src/cantor_part.rc create mode 100644 src/cantor_scripteditor.rc create mode 100644 src/cantor_shell.rc create mode 100644 src/commandentry.cpp create mode 100644 src/commandentry.h create mode 100644 src/config-cantor.h.cmake create mode 100644 src/extendedsearchbar.ui create mode 100644 src/formating.ui create mode 100644 src/hierarchyentry.cpp create mode 100644 src/hierarchyentry.h create mode 100644 src/horizontalruleentry.cpp create mode 100644 src/horizontalruleentry.h create mode 100644 src/imageentry.cpp create mode 100644 src/imageentry.h create mode 100644 src/imageresultitem.cpp create mode 100644 src/imageresultitem.h create mode 100644 src/imagesettings.ui create mode 100644 src/imagesettingsdialog.cpp create mode 100644 src/imagesettingsdialog.h create mode 100644 src/latexentry.cpp create mode 100644 src/latexentry.h create mode 100644 src/lib/CMakeLists.txt create mode 100644 src/lib/Mainpage.dox create mode 100644 src/lib/animationresult.cpp create mode 100644 src/lib/animationresult.h create mode 100644 src/lib/assistant.cpp create mode 100644 src/lib/assistant.h create mode 100644 src/lib/backend.cpp create mode 100644 src/lib/backend.h create mode 100644 src/lib/cantor_assistant.desktop create mode 100644 src/lib/cantor_backend.desktop create mode 100644 src/lib/cantor_libs.kcfg create mode 100644 src/lib/cantor_macros.h create mode 100644 src/lib/cantor_panelplugin.desktop create mode 100644 src/lib/completionobject.cpp create mode 100644 src/lib/completionobject.h create mode 100644 src/lib/config-cantorlib.h.cmake create mode 100644 src/lib/defaulthighlighter.cpp create mode 100644 src/lib/defaulthighlighter.h create mode 100644 src/lib/defaultvariablemodel.cpp create mode 100644 src/lib/defaultvariablemodel.h create mode 100644 src/lib/directives/axisrange.ui create mode 100644 src/lib/directives/plotdirectives.cpp create mode 100644 src/lib/directives/plotdirectives.h create mode 100644 src/lib/directives/plottitle.ui create mode 100644 src/lib/epsresult.cpp create mode 100644 src/lib/epsresult.h create mode 100644 src/lib/expression.cpp create mode 100644 src/lib/expression.h create mode 100644 src/lib/extension.cpp create mode 100644 src/lib/extension.h create mode 100644 src/lib/graphicpackage.cpp create mode 100644 src/lib/graphicpackage.h create mode 100644 src/lib/helpresult.cpp create mode 100644 src/lib/helpresult.h create mode 100644 src/lib/htmlresult.cpp create mode 100644 src/lib/htmlresult.h create mode 100644 src/lib/imageresult.cpp create mode 100644 src/lib/imageresult.h create mode 100644 src/lib/jupyterutils.cpp create mode 100644 src/lib/jupyterutils.h create mode 100644 src/lib/latexrenderer.cpp create mode 100644 src/lib/latexrenderer.h create mode 100644 src/lib/latexresult.cpp create mode 100644 src/lib/latexresult.h create mode 100644 src/lib/mimeresult.cpp create mode 100644 src/lib/mimeresult.h create mode 100644 src/lib/panelplugin.cpp create mode 100644 src/lib/panelplugin.h create mode 100644 src/lib/panelpluginhandler.cpp create mode 100644 src/lib/panelpluginhandler.h create mode 100644 src/lib/renderer.cpp create mode 100644 src/lib/renderer.h create mode 100644 src/lib/result.cpp create mode 100644 src/lib/result.h create mode 100644 src/lib/session.cpp create mode 100644 src/lib/session.h create mode 100644 src/lib/settings.kcfgc create mode 100644 src/lib/syntaxhelpobject.cpp create mode 100644 src/lib/syntaxhelpobject.h create mode 100644 src/lib/test/CMakeLists.txt create mode 100644 src/lib/test/backendtest.cpp create mode 100644 src/lib/test/backendtest.h create mode 100644 src/lib/textresult.cpp create mode 100644 src/lib/textresult.h create mode 100644 src/lib/worksheetaccess.cpp create mode 100644 src/lib/worksheetaccess.h create mode 100644 src/loadedexpression.cpp create mode 100644 src/loadedexpression.h create mode 100644 src/main.cpp create mode 100644 src/markdownentry.cpp create mode 100644 src/markdownentry.h create mode 100644 src/mathrender.cpp create mode 100644 src/mathrender.h create mode 100644 src/mathrendertask.cpp create mode 100644 src/mathrendertask.h create mode 100644 src/org.kde.cantor.desktop create mode 100644 src/pagebreakentry.cpp create mode 100644 src/pagebreakentry.h create mode 100644 src/panelplugins/CMakeLists.txt create mode 100644 src/panelplugins/documentationpanel/CMakeLists.txt create mode 100644 src/panelplugins/documentationpanel/documentationpanelplugin.cpp create mode 100644 src/panelplugins/documentationpanel/documentationpanelplugin.h create mode 100644 src/panelplugins/documentationpanel/documentationpanelplugin.json create mode 100644 src/panelplugins/documentationpanel/documentationpanelwidget.cpp create mode 100644 src/panelplugins/documentationpanel/documentationpanelwidget.h create mode 100644 src/panelplugins/filebrowserpanel/CMakeLists.txt create mode 100644 src/panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp create mode 100644 src/panelplugins/filebrowserpanel/filebrowserpanelplugin.h create mode 100644 src/panelplugins/filebrowserpanel/filebrowserpanelplugin.json create mode 100644 src/panelplugins/helppanel/CMakeLists.txt create mode 100644 src/panelplugins/helppanel/helppanelplugin.cpp create mode 100644 src/panelplugins/helppanel/helppanelplugin.h create mode 100644 src/panelplugins/helppanel/helppanelplugin.json create mode 100644 src/panelplugins/tocpanel/CMakeLists.txt create mode 100644 src/panelplugins/tocpanel/tocpanelplugin.cpp create mode 100644 src/panelplugins/tocpanel/tocpanelplugin.h create mode 100644 src/panelplugins/tocpanel/tocpanelplugin.json create mode 100644 src/panelplugins/variablemgr/CMakeLists.txt create mode 100644 src/panelplugins/variablemgr/newvardlg.ui create mode 100644 src/panelplugins/variablemgr/variablemanagerplugin.cpp create mode 100644 src/panelplugins/variablemgr/variablemanagerplugin.h create mode 100644 src/panelplugins/variablemgr/variablemanagerplugin.json create mode 100644 src/panelplugins/variablemgr/variablemanagerwidget.cpp create mode 100644 src/panelplugins/variablemgr/variablemanagerwidget.h create mode 100644 src/placeholderentry.cpp create mode 100644 src/placeholderentry.h create mode 100644 src/resultitem.cpp create mode 100644 src/resultitem.h create mode 100644 src/scripteditor/CMakeLists.txt create mode 100644 src/scripteditor/main.cpp create mode 100644 src/scripteditor/scripteditorwidget.cpp create mode 100644 src/scripteditor/scripteditorwidget.h create mode 100644 src/searchbar.cpp create mode 100644 src/searchbar.h create mode 100644 src/settings.kcfgc create mode 100644 src/settings.ui create mode 100644 src/standardsearchbar.ui create mode 100644 src/test/CMakeLists.txt create mode 100644 src/test/config-cantor-test.h.cmake create mode 100644 src/test/data/A Reaction-Diffusion Equation Solver in Python with Numpy.ipynb create mode 100644 src/test/data/AEC.04 - Evolutionary Strategies and Covariance Matrix Adaptation.ipynb create mode 100644 src/test/data/Automata and Computability using Jupyter.ipynb create mode 100644 src/test/data/Cue Combination with Neural Populations .ipynb create mode 100644 src/test/data/EmptyPythonWorksheet.cws create mode 100644 src/test/data/Lecture-2B-Single-Atom-Lasing.ipynb create mode 100644 src/test/data/Population_Genetics.ipynb create mode 100644 src/test/data/TestCommandEntryExecutionAction.cws create mode 100644 src/test/data/TestEntryLoad1.ipynb create mode 100644 src/test/data/TestEntryLoad2.ipynb create mode 100644 src/test/data/TestMarkdownAttachment.ipynb create mode 100644 src/test/data/TestNotebookWithJson.ipynb create mode 100644 src/test/data/TestNotebookWithModJson.ipynb create mode 100644 src/test/data/TestResultsLoad.ipynb create mode 100644 src/test/data/Transformation2D.ipynb create mode 100644 src/test/data/TwoCommandEntryWithResults.cws create mode 100644 src/test/worksheet_test.cpp create mode 100644 src/test/worksheet_test.h create mode 100644 src/textentry.cpp create mode 100644 src/textentry.h create mode 100644 src/textresultitem.cpp create mode 100644 src/textresultitem.h create mode 100644 src/worksheet.cpp create mode 100644 src/worksheet.h create mode 100644 src/worksheetcontrolitem.cpp create mode 100644 src/worksheetcontrolitem.h create mode 100644 src/worksheetcursor.cpp create mode 100644 src/worksheetcursor.h create mode 100644 src/worksheetentry.cpp create mode 100644 src/worksheetentry.h create mode 100644 src/worksheetimageitem.cpp create mode 100644 src/worksheetimageitem.h create mode 100644 src/worksheettextitem.cpp create mode 100644 src/worksheettextitem.h create mode 100644 src/worksheettoolbutton.cpp create mode 100644 src/worksheettoolbutton.h create mode 100644 src/worksheetview.cpp create mode 100644 src/worksheetview.h create mode 100644 src/xslt/CMakeLists.txt create mode 100644 src/xslt/latex.xsl create mode 100644 thirdparty/CMakeLists.txt create mode 100644 thirdparty/README.md create mode 100644 thirdparty/discount-2.2.6-patched/COPYRIGHT create mode 100644 thirdparty/discount-2.2.6-patched/CREDITS create mode 100644 thirdparty/discount-2.2.6-patched/Csio.c create mode 100644 thirdparty/discount-2.2.6-patched/INSTALL create mode 100644 thirdparty/discount-2.2.6-patched/Makefile.in create mode 100644 thirdparty/discount-2.2.6-patched/Plan9/README.md create mode 100644 thirdparty/discount-2.2.6-patched/Plan9/markdown.1 create mode 100644 thirdparty/discount-2.2.6-patched/Plan9/markdown.2 create mode 100644 thirdparty/discount-2.2.6-patched/Plan9/markdown.6 create mode 100644 thirdparty/discount-2.2.6-patched/Plan9/mkfile create mode 100644 thirdparty/discount-2.2.6-patched/README create mode 100644 thirdparty/discount-2.2.6-patched/VERSION create mode 100644 thirdparty/discount-2.2.6-patched/amalloc.c create mode 100644 thirdparty/discount-2.2.6-patched/amalloc.h create mode 100644 thirdparty/discount-2.2.6-patched/basename.c create mode 100644 thirdparty/discount-2.2.6-patched/cmake/CMakeLists.txt create mode 100644 thirdparty/discount-2.2.6-patched/cmake/config.h.in create mode 100644 thirdparty/discount-2.2.6-patched/cmake/discount-config.cmake.in create mode 100755 thirdparty/discount-2.2.6-patched/configure.inc create mode 100755 thirdparty/discount-2.2.6-patched/configure.sh create mode 100644 thirdparty/discount-2.2.6-patched/css.c create mode 100644 thirdparty/discount-2.2.6-patched/cstring.h create mode 100644 thirdparty/discount-2.2.6-patched/docheader.c create mode 100644 thirdparty/discount-2.2.6-patched/dumptree.c create mode 100644 thirdparty/discount-2.2.6-patched/emmatch.c create mode 100644 thirdparty/discount-2.2.6-patched/flags.c create mode 100644 thirdparty/discount-2.2.6-patched/generate.c create mode 100644 thirdparty/discount-2.2.6-patched/gethopt.3 create mode 100644 thirdparty/discount-2.2.6-patched/gethopt.c create mode 100644 thirdparty/discount-2.2.6-patched/gethopt.h create mode 100644 thirdparty/discount-2.2.6-patched/github_flavoured.c create mode 100644 thirdparty/discount-2.2.6-patched/h1title.c create mode 100644 thirdparty/discount-2.2.6-patched/html5.c create mode 100644 thirdparty/discount-2.2.6-patched/libmarkdown.pc.in create mode 100644 thirdparty/discount-2.2.6-patched/main.c create mode 100644 thirdparty/discount-2.2.6-patched/makepage.1 create mode 100644 thirdparty/discount-2.2.6-patched/makepage.c create mode 100644 thirdparty/discount-2.2.6-patched/markdown.1 create mode 100644 thirdparty/discount-2.2.6-patched/markdown.3 create mode 100644 thirdparty/discount-2.2.6-patched/markdown.7 create mode 100644 thirdparty/discount-2.2.6-patched/markdown.c create mode 100644 thirdparty/discount-2.2.6-patched/markdown.h create mode 100644 thirdparty/discount-2.2.6-patched/mkd-callbacks.3 create mode 100644 thirdparty/discount-2.2.6-patched/mkd-extensions.7 create mode 100644 thirdparty/discount-2.2.6-patched/mkd-functions.3 create mode 100644 thirdparty/discount-2.2.6-patched/mkd-line.3 create mode 100644 thirdparty/discount-2.2.6-patched/mkd2html.1 create mode 100644 thirdparty/discount-2.2.6-patched/mkd2html.c create mode 100644 thirdparty/discount-2.2.6-patched/mkdio.c create mode 100644 thirdparty/discount-2.2.6-patched/mkdio.h.in create mode 100644 thirdparty/discount-2.2.6-patched/mktags.c create mode 100644 thirdparty/discount-2.2.6-patched/msvc/Makefile create mode 100644 thirdparty/discount-2.2.6-patched/msvc/README.md create mode 100644 thirdparty/discount-2.2.6-patched/msvc/config.h.vc create mode 100644 thirdparty/discount-2.2.6-patched/notspecial.c create mode 100644 thirdparty/discount-2.2.6-patched/pgm_options.c create mode 100644 thirdparty/discount-2.2.6-patched/pgm_options.h create mode 100644 thirdparty/discount-2.2.6-patched/resource.c create mode 100644 thirdparty/discount-2.2.6-patched/setup.c create mode 100644 thirdparty/discount-2.2.6-patched/tags.c create mode 100644 thirdparty/discount-2.2.6-patched/tags.h create mode 100644 thirdparty/discount-2.2.6-patched/tests/autolink.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/automatic.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/backslash.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/callbacks.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/chrome.text create mode 100644 thirdparty/discount-2.2.6-patched/tests/code.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/codeblock.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/compat.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/crash.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/data/README create mode 100644 thirdparty/discount-2.2.6-patched/tests/data/f01.html create mode 100644 thirdparty/discount-2.2.6-patched/tests/data/f01.text create mode 100644 thirdparty/discount-2.2.6-patched/tests/defects.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/div.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/dl.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/embedlinks.text create mode 100644 thirdparty/discount-2.2.6-patched/tests/emphasis.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/extrafootnotes.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/flow.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/footnotes.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/functions.sh create mode 100644 thirdparty/discount-2.2.6-patched/tests/githubtags.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/header.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/html.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/html5.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/html_comment.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/latex.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/links.text create mode 100644 thirdparty/discount-2.2.6-patched/tests/linkylinky.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/linkypix.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/list.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/list3deep.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/misc.t create mode 100644 "thirdparty/discount-2.2.6-patched/tests/mu\303\261oz.t" create mode 100644 thirdparty/discount-2.2.6-patched/tests/pandoc.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/para.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/peculiarities.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/pseudo.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/reddit.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/reparse.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/safelinks.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/schiraldi.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/smarty.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/snakepit.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/strikethrough.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/style.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/superscript.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/syntax.text create mode 100644 thirdparty/discount-2.2.6-patched/tests/tables.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/tabstop.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/toc.t create mode 100644 thirdparty/discount-2.2.6-patched/tests/xml.t create mode 100644 thirdparty/discount-2.2.6-patched/theme.1 create mode 100644 thirdparty/discount-2.2.6-patched/theme.c create mode 100644 thirdparty/discount-2.2.6-patched/toc.c create mode 100644 thirdparty/discount-2.2.6-patched/tools/README create mode 100644 thirdparty/discount-2.2.6-patched/tools/branch.c create mode 100755 thirdparty/discount-2.2.6-patched/tools/checkbits.sh create mode 100644 thirdparty/discount-2.2.6-patched/tools/cols.c create mode 100644 thirdparty/discount-2.2.6-patched/tools/echo.c create mode 100644 thirdparty/discount-2.2.6-patched/tools/pandoc_headers.c create mode 100644 thirdparty/discount-2.2.6-patched/version.c.in create mode 100644 thirdparty/discount-2.2.6-patched/xml.c create mode 100644 thirdparty/discount-2.2.6-patched/xmlpage.c create mode 100644 thirdparty/preview.sty diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bca3db7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +# Author: Filipe Saraiva (filip.saraiva at gmail.com) +# Date: 2011.27.04 + +# Personal configurarion files +*.user +*.kdev4 +.kdev4/* + +# Temporary files +*~ + +# Folder to compile source code +build* + +# cmake stuff +*.cmake + +# moc files +*.moc +moc_* +*_automoc.cpp* +.cmake/ +/.clang-format +/compile_commands.json +.clangd +.cache +.idea +/cmake-build* diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..2eb710e --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: None +# SPDX-License-Identifier: CC0-1.0 + +include: + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux.yml + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd.yml + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/windows.yml diff --git a/.kateconfig b/.kateconfig new file mode 100644 index 0000000..3d7c91a --- /dev/null +++ b/.kateconfig @@ -0,0 +1,4 @@ +kate: space-indent on; indent-width 4; replace-tabs on; auto-insert-doxygen on; +kate: eol unix; replace-trailing-space-save on; show-tabs on; tab-indents on; +kate: tab-width 4; + diff --git a/.kde-ci.yml b/.kde-ci.yml new file mode 100644 index 0000000..59e7f49 --- /dev/null +++ b/.kde-ci.yml @@ -0,0 +1,25 @@ +# SPDX-FileCopyrightText: None +# SPDX-License-Identifier: CC0-1.0 + +Dependencies: +- 'on': ['@all'] + 'require': + 'frameworks/extra-cmake-modules': '@stable' + 'frameworks/kconfig': '@stable' + 'frameworks/kcrash': '@stable' + 'frameworks/kcompletion': '@stable' + 'frameworks/kdoctools': '@stable' + 'frameworks/knewstuff': '@stable' + 'frameworks/kiconthemes': '@stable' + 'frameworks/ktexteditor': '@stable' + 'frameworks/kcoreaddons': '@stable' + 'frameworks/karchive': '@stable' + 'frameworks/kparts': '@stable' + 'frameworks/syntax-highlighting': '@stable' + 'frameworks/ktextwidgets': '@stable' + 'frameworks/kio': '@stable' + 'frameworks/kxmlgui': '@stable' + 'frameworks/ki18n': '@stable' +- 'on': ['Linux', 'FreeBSD'] + 'require': + 'frameworks/kpty': '@stable' diff --git a/.reuse/dep5 b/.reuse/dep5 new file mode 100644 index 0000000..6e9f940 --- /dev/null +++ b/.reuse/dep5 @@ -0,0 +1,8 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: cantor +Upstream-Contact: KDE +Source: https://invent.kde.org/education/cantor + +Files: thirdparty/discount-2.2.6-patched/* +Copyright: Discount +License: BSD-3-Clause diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..799e3c4 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,127 @@ +# Changelog + +## 22.12 + +### New features + + * Red-highlight the text field for the executable path if wrong path was provided in the settings + +## 22.08 + +### New features + + * Added zooming related actions (zoom in, zoom out, zoom original) to the context menu of the worksheet + * Smooth zoom in the worksheet view with the mouse wheel + * Show the information about the available internal help system in Maxima and in R in the help panel + +### Bug fixes: + + * Enable highdpi pixmaps, fixes icon rendering on highdpi screens + * Open URLs in the "Select Backend"-dialog in the external browser, BUG: 456650 + * When saving the results, use the file extension and not the mime-type in the QFileDialog to show the relevant files only + * [maxima] properly embedd the results of the commands from the draw package (draw, draw2d and draw3d) + * [maxima] properly parse plot and draw commands with line breaks + * [maxima] remove the obsolete quotes in string variable values and properly handle quoted sub-strings in string variables + * [R] Remove backspaces in the help output in R + +## The information for the releases 20.12 - 22.04 was not maintained. + + +## 20.08 + +### New features + + * Change entries replacement logic and add possibility to use previous logic via Cantor setting option + * Add possibility to change plot extension (available variants: jpeg, png, svg and eps (if builded with eps support)) in Octave backend + * Use file name instead file URL in title bar + * LaTeX typesettings in Sage is back + * Add a filter in open dialog to present Cantor worksheets and Jupyter notebooks together + * Add new global entries actions: collapsing all results, uncollapsing all results, remove all results + * Add actions for selection + * Disable highlighting updates for excluded from execution entries + * Add new entry type - HorizontalRuleEntry + * Add zoom widget + * Add tooltips for almost all settings entries + * Python Plot Extension: Add support for different packages + * Improve tabulation handling in Command Entries. Now the tabulation works like tabulation in code editors + * Support popular Julia plot packages in PlotExtension + * Add File Browser panel + * Now it is possible to save and load images in Cantor worksheet file format + +## 20.04 + +### New features + + * WorksheetControlItem: special element, for better UX, while user interact with cell. Now, this element handle drag-and-drop and cell selection (details below) + * Multiple cells selection: now user can select not one, but many sells via Ctrl+LeftClick. Selection also visualizate on control elements + * Actions on selection (first version): now user can apply some actions on selected cells, for example evaulating, deleting, moving. + * Possibility to change result collapsing via double click on '>>>' prompt element + * Add collapsing of text results with a lot of visible lines (limit of collapsing set in Settings). Double click can collapse/uncollapse collapsed text result. + +## 19.12 + +### Screenshots + + * https://imgur.com/frfNeBH + * https://imgur.com/IAJ4YAN + * https://imgur.com/eBesNdR + +### New features + + * Support for Jupyter Notebook format (.ipynb) + * Allow to convert Cantor's native worksheet format to Jupyter notebook and back + * Allow to change the type of a worksheet entry via the context menu + * Leave the markdown and latex cells in the edit mode if the the user hits the cancel/escape button + * Add opportunity to set path to local documentation in Sage backend + +### Important bug fixes + + * Fix rendering of embedded math in Markdown Entry on openSUSE + * Show the pointer hand cursor when hovering over a URL in a markdown entry + * Make sagemath backend compatible with sagemath built with python3 + +## 19.08 + +### Screenshots + + * https://imgur.com/Xpj2EcQ + * https://imgur.com/KnXYvFP + * https://imgur.com/CmucWdR + +### New features + + * Instead of showing only available and workable backends, Cantor shows all available backends and for non workable shows reason, why this backend doesn't work. + * Allow to set the path to custom Julia installations. However, Cantor will work with versions only it was compiled for. + * For Markdown and LaTeX entries allow to switch via double click from the rendered result to the original code and back via the evaluation of the entry + * Save the results of rendered markdown and LaTeX entries as part of the project. This allows to see the results also on with no support for markdown and latex rendering + * Hide "Help" panel on startup. Automatically show this panel when user executes a command entry with a help expression + * Add "Recent Files" submenu (https://bugs.kde.org/show_bug.cgi?id=409138) + +### Important bug fixes + + * [R] Fix bug with expression only from comment - now Cantor R backend don't freeze on 'Computing' after running the expression + * Save error status and message of Command Entry into .cws (Cantor Worksheet file) - Cantor have lost them on saving before + * Reset Command Entry numeration after Backend restart + * Close loaded worksheet, if the loading failed (before Cantor show empty broken worksheet) + * [Python] Fix bug with non-working interruption (before interrupted only Cantor expression: Python Server still continued to work) + * Don't scroll to worksheet's end after the project was loaded + * [Julia, Python] Report about server side errors, for example, crashes + * [Python] Don't use Qt in pythonserver executable for avoding problems (often crashes) with PyQt5 (https://bugs.kde.org/show_bug.cgi?id=397264, https://bugs.kde.org/show_bug.cgi?id=407362) + * [Python] Show Python warnings not as errors, but as text results (https://bugs.kde.org/show_bug.cgi?id=409240) + * Add missing context menu to MarkdownEntry + * Fix bug with rendering loaded rendered MarkdownEntry as empty + * Fix unworking 'Show LaTeX Code' action in Latex Entry context menu + * Fix problem with an incorrect window title after closing all tabs + +## 19.04 + +### New Features + + * Possibility to hide and show results of command entry via context menu + * [Maxima, Octave, Python, R] Add a way to specify the path to the local documentation in the settings. By default, this path didn't specified and Cantor uses online documentation. + * Huge improvment of variables managment: better parsing, option to turn on and turn off variable managment, better GUI performance by limitation of value size (too big for showing values replaced by "" text + +### Important bug fixes + + * [Sage] Fix execuation for unsystem Sage installation + * [Julia] Fix bug, that suppressing output don't work diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..a7cfa22 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,175 @@ +cmake_minimum_required (VERSION 3.13 FATAL_ERROR) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set (RELEASE_SERVICE_VERSION_MAJOR "22") +set (RELEASE_SERVICE_VERSION_MINOR "12") +set (RELEASE_SERVICE_VERSION_MICRO "3") +set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}") + +project(cantor VERSION ${RELEASE_SERVICE_VERSION}) + +set(KF5_MIN_VERSION "5.91.0") + +find_package(ECM 5.15.0 REQUIRED CONFIG) +set(CMAKE_MODULE_PATH ${cantor_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ) + +include(KDEInstallDirs) +include(KDECMakeSettings) +include(KDECompilerSettings NO_POLICY_SCOPE) + +include(ECMInstallIcons) +include(ECMSetupVersion) +include(ECMAddAppIcon) +include(KDEClangFormat) +include(GenerateExportHeader) +include(FeatureSummary) + +set( SharedMimeInfo_MINIMUM_VERSION "1.3" ) #TODO: What is the minimum required version? +find_package(SharedMimeInfo ${SharedMimeInfo_MINIMUM_VERSION} REQUIRED) + +find_package(Qt5 5.8.0 CONFIG REQUIRED + Core + Widgets + PrintSupport + Svg + Xml + XmlPatterns + Test + Help + WebEngine + WebEngineWidgets) + +find_package(KF5 ${KF5_MIN_VERSION} REQUIRED + Config + Crash + Completion + DocTools + NewStuff + IconThemes + TextEditor + CoreAddons + Archive + Parts + SyntaxHighlighting + TextWidgets + KIO + XmlGui + I18n +) + +find_package(Poppler "0.62.0" REQUIRED COMPONENTS Qt5) + + +if(NOT WIN32) +find_package(KF5 ${KF5_MIN_VERSION} REQUIRED Pty) +endif() + +option(USE_LIBSPECTRE "Use libspectre library" ON) + +add_subdirectory(thirdparty) +# Need to set this here, because variable can't move from subdirectory (thirdparty) to upper cmake scope +set(Discount_FOUND TRUE) + +if(NOT WIN32 AND USE_LIBSPECTRE) + set_package_properties(LibSpectre PROPERTIES DESCRIPTION "A PostScript rendering library" + URL "https://www.freedesktop.org/wiki/Software/libspectre/" + TYPE OPTIONAL + PURPOSE "Support for rendering EPS files in Cantor") + + find_package(LibSpectre) + if(LIBSPECTRE_FOUND) + set(WITH_EPS On) + else(LIBSPECTRE_FOUND) + set(WITH_EPS Off) + endif(LIBSPECTRE_FOUND) + +else() + set(WITH_EPS Off) +endif() + +#[[ +find_package(Discount 2.2.0) +set_package_properties(Discount PROPERTIES DESCRIPTION "A C implementation of the Markdown markup language" + URL "https://www.pell.portland.or.us/~orc/Code/discount/" + TYPE OPTIONAL + PURPOSE "Used for Markdown entries in Cantor") +]]# + +add_definitions( + -DQT_NO_CAST_TO_ASCII + -DQT_NO_CAST_FROM_ASCII + -DQT_NO_URL_CAST_FROM_STRING + -DQT_NO_CAST_FROM_BYTEARRAY + -DQT_USE_QSTRINGBUILDER + -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT + -DQT_NO_SIGNALS_SLOTS_KEYWORDS + -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 + -DKF_DEPRECATED_WARNINGS_SINCE=0x060000 +) +if (NOT WIN32) + # Strict iterators can't be used on Windows, they lead to a link error + # when application code iterates over a QVector for instance, unless + # Qt itself was also built with strict iterators. + # See example at https://bugreports.qt.io/browse/AUTOSUITE-946 + add_definitions(-DQT_STRICT_ITERATORS) +endif() + +if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic") + + # both gcc & clang support it since the same version + if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 5.0.0) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wzero-as-null-pointer-constant" ) + endif() +endif() + +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DQT_NO_DEBUG_OUTPUT") + +kde_enable_exceptions() + +# FIXME Looks like docbook on Windows don't buildable at all, so it are temporarily disabled +if(NOT WIN32) + add_subdirectory(doc) +endif(NOT WIN32) +add_subdirectory(src) +add_subdirectory(icons) + +set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/Cantor") +configure_package_config_file( + ${CMAKE_CURRENT_SOURCE_DIR}/CantorConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/CantorConfig.cmake + INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}/ + #PATH_VARS INCLUDE_INSTALL_DIR SYSCONFIG_INSTALL_DIR +) + +ecm_setup_version(${RELEASE_SERVICE_VERSION} + VARIABLE_PREFIX CANTOR + VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/cantor_version.h" + PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/CantorConfigVersion.cmake" +) +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/CantorConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/CantorConfigVersion.cmake + DESTINATION ${CMAKECONFIG_INSTALL_DIR} + COMPONENT Devel +) + +install(EXPORT CantorTargets + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + FILE CantorTargets.cmake + NAMESPACE Cantor:: +) + + +ki18n_install(po) +if (KF5DocTools_FOUND) + kdoctools_install(po) +endif() +install(FILES org.kde.cantor.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) + +file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c) +kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES}) + +feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/CantorConfig.cmake.in b/CantorConfig.cmake.in new file mode 100644 index 0000000..67e6f89 --- /dev/null +++ b/CantorConfig.cmake.in @@ -0,0 +1,3 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/CantorTargets.cmake") diff --git a/DESIGN b/DESIGN new file mode 100644 index 0000000..995de6f --- /dev/null +++ b/DESIGN @@ -0,0 +1,143 @@ + +General: + +Cantor is designed to be very modular. It is split into these important parts: + +- Main application: +The Cantor application itself is stored in the src/ directory. It implements the worksheet and all the +Graphical user interface. It uses the Cantor library to access the different backends. +Cantor consists of two important parts, a KPart that contains one Worksheet, and a shell, +that contains several parts, and sorts them into Tabs. + +- Cantor library: +The library provides all the interfaces for using the different Backends. It should be completely +independent of the final graphical representation of the results. (e.g. always keep the possibility +of a Cantor KRunner or plasmoid in mind). It resides in src/lib/ + +- Backends +The src/backends directory contains all the different Backends. They all reimplement the interfaces found in +the Cantor library, to enable access to a math package. There are lots of different ways to communicate with the +Math app. To check how a backend is designed, look at the DESIGN file in the backends directory. + +For dependencies between these modules, these rules apply: +- everything can depend on lib +- the main app can depend on any other module +- lib doesn't depend on other modules +- each backend, and the assistants only depend on lib + + +Coding style: + +Generally Cantor follows the KDELibs coding style (see http://techbase.kde.org/Policies/Kdelibs_Coding_Style ). +Some notes: +- use 4 spaces for indentation +- use m_ prefix for member variables. no other prefixes +- for the library use d-pointers (see http://techbase.kde.org/Policies/Library_Code_Policy#D-Pointers) to allow binary compatibility later +- if you add things to the library, remember to add apidocs + + +The Worksheet: + +Cantor's worksheet is implemented as a QGraphicsScene (the Worksheet class) with a corresponding QGraphicsView (the WorksheetView class). +Each entry in the worksheet is represented by its own WorksheetEntry, which is a subclass of QGraphicsObject. +The entries can have child items to display text (WorksheetTextItem) or images (WorksheetImageItem). The layout of +these child items is defined in WorksheetEntry::layOutForWidth(double width, bool force). +To display the calculation results the special items TextResultItem, ImageResultItem and AnimationResultItem are available. + +The WorksheetEntry holds an Expression object, and reacts on its status changes, and arriving results. +Also it is in charge of requesting Completions or SyntaxHelp. + +The worksheet also stores one instance of the EpsRenderer, which is used whenever eps images need to be displayed, +e.g. in LaTeX results. + +Note: The HelpResult is not handled by the Entry, but by the Worksheet, and it forwards +it's content outside of the part using a signal. So the CantorShell can show it in the +side-panel. + + +The library: +The library consists of a bunch of interfaces, for the different backends, and some +stuff that is useful for math applications, independent of the Design of the ui(not limited to Worksheet-interfaces). +Things should not be depending on a specific backend, but it's acceptable to have interfaces only implemented by +one backend. (although that might change once a better plugin infrastructure is in place) + +- Basic design of a backend: +This is just a brief introduction of the concepts relevant to the Backends. +For more information please see the apidocs of the relevant classes. +For a simple sample of a backend you can look at the NullBackend. It only echoes +the entered command, or shows an image if you type "img", so it akts as a good +example on how to do things. + +Backends are implemented as plugins that are found on runtime, to allow easy installation of +additional backends. + +A backend consists of the following parts: +- Backend: + This class is used to store some static information of the backend, like its name, some links, or the + features it supports. Each backend can supply a widget, for changing the relevant settings. +- Session: + A session is where a connection to an instance of the math-app is created, e.g. by spawning a maxima process. + It implements methods for evaluating expressions, it delivers a syntax highlighter, or CompletionObjects. + The most important methods are login(), logout() and evaluateExpression(). see the apidocs for more information. +- Expression: + The Expression encapsulates one specific command send to the backend, and its result. It gets created by + the session, and destroyed by the Worksheet when the entry is deleted or replaced by a new Expression. + When the expression is run, it sends the command to the underlying backend to do the computation, and sets + the state to Computing. + Once the task is completed it should sets the state to Done or Error, depending on the result, to notify + the worksheet that it is no longer busy. + Once the result arrives, it emits the resultChanged() signal, so that the Worksheet can display it. + Remember, the state and the result are independent, e.g. if you have typesetting enabled, the state will + be set to done when the computation is finished, and the result will be set to a text-result. Once the + typesetting is done the result changes again. + + To be as flexible as possible regarding different kinds of results (a computation can deliver some text, + a plot, a formula, an animation etc.), Cantor uses the concept of Results. + For each kind of result there is a subclass, that stores the information relevant for the kind of result + (e.g. the text, the image, an url etc.). Your backend is in charge of creating the right Result Type, and + feeding it the information. The ResultProxy is then used to render the result in the Worksheet(@see The Worksheet) + + +- Syntax Highlighting: + Syntax highlighting is a very useful feature for entering commands. In Cantor it's implemented using + Qt's QSyntaxHighlighter functionality. The Session is in charge for creating a SyntaxHighlighter object, + so it can access all the Session relevant information (if you want to). While you can use an ordinary + QSyntaxHighlighter object, you may want to use the DefaultHighlighter class. It delivers highlighting for + parenthesis, and information on the different Blocks inside a Worksheet, e.g. to check if the part + you're highlighting is a command or not. + +- Completion: + To allow Completion of partially entered Commands in a Backend-agnostic way, Cantor uses + so called CompletionObjects. To get a completion, Cantor calls the Sessions completionFor + method which is then in charge of creating a Backend-Specific CompletionObject. + A CompletionObject should fetch the information from the backend, and emit the done() + signal when finished, so the process of fetching should (but doesn't have to) be async + to make sure the gui doesn't get blocked. + +- SyntaxHelp: + Syntax Help is the little tooltip, you get when pressing Tab, on an already complete + command, that shows syntax information (see Maxima or KAlgebra for an implementation). + The concept works similar to Completion. Cantor asks the session for a SyntaxHelpObject + which then fetches the information asynchronously, and emits done(). + +- Extensions: + To allow backend-independend functionalities like Assistant dialogs, Cantor uses so called + Extensions. + These are subclasses of the Cantor::Extension class, that are created by the backend, + and that translate between Cantor and the Backends specific Syntax. For example the + PlotExtension translates PlotExtension::plot2d("sin(x)","x","-3.14","3.14") to maxima + syntax "plot2d(sin(x),[x,-3.14,3.14])" + +- Assistants + Assistants are Dialogs, used for common tasks like entering a matrix, solving equations etc. + Assistants are implemented as plugins, found at runtime. Each assistant has a list + of Extensions it needs to work (located in the .desktop file), so they only will be shown + for backends, capable of all the needed things. The Assistant will be run, and once it + is finished, it returns a list of commands, to achieve the task. They will then be + added to the Worksheet and executed. + The philosophy behind this is not to hide the syntax from the user, so he may + learn how things are done. + NOTE: currently assistants can only work through extensions, but in the future, + also backend-specific assistants will be possible. + + diff --git a/FindCantor.cmake b/FindCantor.cmake new file mode 100644 index 0000000..07f5f72 --- /dev/null +++ b/FindCantor.cmake @@ -0,0 +1,24 @@ + # - Try to find the Cantor Library +# Once done this will define +# +# CANTOR_FOUND - system has Cantor +# CANTOR_INCLUDE_DIR - the Cantor include directory +# CANTOR_LIBRARIES +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# + + +if ( CANTOR_INCLUDE_DIR AND CANTOR_LIBRARIES ) + # in cache already + SET( CANTOR_FIND_QUIETLY TRUE ) +endif ( CANTOR_INCLUDE_DIR AND CANTOR_LIBRARIES ) + +FIND_PATH( CANTOR_INCLUDE_DIR NAMES backend.h PATH_SUFFIXES cantor +) + +FIND_LIBRARY( CANTOR_LIBRARIES NAMES cantorlibs ) + + +include( FindPackageHandleStandardArgs ) +FIND_PACKAGE_HANDLE_STANDARD_ARGS( cantor DEFAULT_MSG CANTOR_INCLUDE_DIR CANTOR_LIBRARIES ) diff --git a/LICENSES/BSD-3-Clause.txt b/LICENSES/BSD-3-Clause.txt new file mode 100644 index 0000000..6c9eef8 --- /dev/null +++ b/LICENSES/BSD-3-Clause.txt @@ -0,0 +1,11 @@ +Copyright (c) . All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt new file mode 100644 index 0000000..a343ccd --- /dev/null +++ b/LICENSES/CC0-1.0.txt @@ -0,0 +1,119 @@ +Creative Commons Legal Code + +CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES +NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE +AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION +ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE +OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS +LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION +OR WORKS PROVIDED HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer exclusive +Copyright and Related Rights (defined below) upon the creator and subsequent +owner(s) (each and all, an "owner") of an original work of authorship and/or +a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the +purpose of contributing to a commons of creative, cultural and scientific +works ("Commons") that the public can reliably and without fear of later claims +of infringement build upon, modify, incorporate in other works, reuse and +redistribute as freely as possible in any form whatsoever and for any purposes, +including without limitation commercial purposes. These owners may contribute +to the Commons to promote the ideal of a free culture and the further production +of creative, cultural and scientific works, or to gain reputation or greater +distribution for their Work in part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any expectation +of additional consideration or compensation, the person associating CC0 with +a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work +and publicly distribute the Work under its terms, with knowledge of his or +her Copyright and Related Rights in the Work and the meaning and intended +legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be protected +by copyright and related or neighboring rights ("Copyright and Related Rights"). +Copyright and Related Rights include, but are not limited to, the following: + +i. the right to reproduce, adapt, distribute, perform, display, communicate, +and translate a Work; + + ii. moral rights retained by the original author(s) and/or performer(s); + +iii. publicity and privacy rights pertaining to a person's image or likeness +depicted in a Work; + +iv. rights protecting against unfair competition in regards to a Work, subject +to the limitations in paragraph 4(a), below; + +v. rights protecting the extraction, dissemination, use and reuse of data +in a Work; + +vi. database rights (such as those arising under Directive 96/9/EC of the +European Parliament and of the Council of 11 March 1996 on the legal protection +of databases, and under any national implementation thereof, including any +amended or successor version of such directive); and + +vii. other similar, equivalent or corresponding rights throughout the world +based on applicable law or treaty, and any national implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention of, +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright +and Related Rights and associated claims and causes of action, whether now +known or unknown (including existing as well as future claims and causes of +action), in the Work (i) in all territories worldwide, (ii) for the maximum +duration provided by applicable law or treaty (including future time extensions), +(iii) in any current or future medium and for any number of copies, and (iv) +for any purpose whatsoever, including without limitation commercial, advertising +or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the +benefit of each member of the public at large and to the detriment of Affirmer's +heirs and successors, fully intending that such Waiver shall not be subject +to revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason be +judged legally invalid or ineffective under applicable law, then the Waiver +shall be preserved to the maximum extent permitted taking into account Affirmer's +express Statement of Purpose. In addition, to the extent the Waiver is so +judged Affirmer hereby grants to each affected person a royalty-free, non +transferable, non sublicensable, non exclusive, irrevocable and unconditional +license to exercise Affirmer's Copyright and Related Rights in the Work (i) +in all territories worldwide, (ii) for the maximum duration provided by applicable +law or treaty (including future time extensions), (iii) in any current or +future medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional purposes +(the "License"). The License shall be deemed effective as of the date CC0 +was applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder of +the License, and in such case Affirmer hereby affirms that he or she will +not (i) exercise any of his or her remaining Copyright and Related Rights +in the Work or (ii) assert any associated claims and causes of action with +respect to the Work, in either case contrary to Affirmer's express Statement +of Purpose. + + 4. Limitations and Disclaimers. + +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, +licensed or otherwise affected by this document. + +b. Affirmer offers the Work as-is and makes no representations or warranties +of any kind concerning the Work, express, implied, statutory or otherwise, +including without limitation warranties of title, merchantability, fitness +for a particular purpose, non infringement, or the absence of latent or other +defects, accuracy, or the present or absence of errors, whether or not discoverable, +all to the greatest extent permissible under applicable law. + +c. Affirmer disclaims responsibility for clearing rights of other persons +that may apply to the Work or any use thereof, including without limitation +any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims +responsibility for obtaining any necessary consents, permissions or other +rights required for any use of the Work. + +d. Affirmer understands and acknowledges that Creative Commons is not a party +to this document and has no duty or obligation with respect to this CC0 or +use of the Work. diff --git a/LICENSES/GPL-2.0-only.txt b/LICENSES/GPL-2.0-only.txt new file mode 100644 index 0000000..3b6070f --- /dev/null +++ b/LICENSES/GPL-2.0-only.txt @@ -0,0 +1,311 @@ +GNU GENERAL PUBLIC LICENSE +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public License is intended to +guarantee your freedom to share and change free software--to make sure the +software is free for all its users. This General Public License applies to +most of the Free Software Foundation's software and to any other program whose +authors commit to using it. (Some other Free Software Foundation software +is covered by the GNU Lesser General Public License instead.) You can apply +it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom +to distribute copies of free software (and charge for this service if you +wish), that you receive source code or can get it if you want it, that you +can change the software or use pieces of it in new free programs; and that +you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to +deny you these rights or to ask you to surrender the rights. These restrictions +translate to certain responsibilities for you if you distribute copies of +the software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or +for a fee, you must give the recipients all the rights that you have. You +must make sure that they, too, receive or can get the source code. And you +must show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) +offer you this license which gives you legal permission to copy, distribute +and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If +the software is modified by someone else and passed on, we want its recipients +to know that what they have is not the original, so that any problems introduced +by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that redistributors of a free program will individually +obtain patent licenses, in effect making the program proprietary. To prevent +this, we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification +follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a notice +placed by the copyright holder saying it may be distributed under the terms +of this General Public License. The "Program", below, refers to any such program +or work, and a "work based on the Program" means either the Program or any +derivative work under copyright law: that is to say, a work containing the +Program or a portion of it, either verbatim or with modifications and/or translated +into another language. (Hereinafter, translation is included without limitation +in the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running the Program +is not restricted, and the output from the Program is covered only if its +contents constitute a work based on the Program (independent of having been +made by running the Program). Whether that is true depends on what the Program +does. + +1. You may copy and distribute verbatim copies of the Program's source code +as you receive it, in any medium, provided that you conspicuously and appropriately +publish on each copy an appropriate copyright notice and disclaimer of warranty; +keep intact all the notices that refer to this License and to the absence +of any warranty; and give any other recipients of the Program a copy of this +License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you +may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, +thus forming a work based on the Program, and copy and distribute such modifications +or work under the terms of Section 1 above, provided that you also meet all +of these conditions: + +a) You must cause the modified files to carry prominent notices stating that +you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in whole or +in part contains or is derived from the Program or any part thereof, to be +licensed as a whole at no charge to all third parties under the terms of this +License. + +c) If the modified program normally reads commands interactively when run, +you must cause it, when started running for such interactive use in the most +ordinary way, to print or display an announcement including an appropriate +copyright notice and a notice that there is no warranty (or else, saying that +you provide a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this License. +(Exception: if the Program itself is interactive but does not normally print +such an announcement, your work based on the Program is not required to print +an announcement.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Program, and can be reasonably +considered independent and separate works in themselves, then this License, +and its terms, do not apply to those sections when you distribute them as +separate works. But when you distribute the same sections as part of a whole +which is a work based on the Program, the distribution of the whole must be +on the terms of this License, whose permissions for other licensees extend +to the entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise +the right to control the distribution of derivative or collective works based +on the Program. + +In addition, mere aggregation of another work not based on the Program with +the Program (or with a work based on the Program) on a volume of a storage +or distribution medium does not bring the other work under the scope of this +License. + +3. You may copy and distribute the Program (or a work based on it, under Section +2) in object code or executable form under the terms of Sections 1 and 2 above +provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable source code, +which must be distributed under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three years, to give +any third party, for a charge no more than your cost of physically performing +source distribution, a complete machine-readable copy of the corresponding +source code, to be distributed under the terms of Sections 1 and 2 above on +a medium customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer to distribute +corresponding source code. (This alternative is allowed only for noncommercial +distribution and only if you received the program in object code or executable +form with such an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for making +modifications to it. For an executable work, complete source code means all +the source code for all modules it contains, plus any associated interface +definition files, plus the scripts used to control compilation and installation +of the executable. However, as a special exception, the source code distributed +need not include anything that is normally distributed (in either source or +binary form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component itself +accompanies the executable. + +If distribution of executable or object code is made by offering access to +copy from a designated place, then offering equivalent access to copy the +source code from the same place counts as distribution of the source code, +even though third parties are not compelled to copy the source along with +the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except +as expressly provided under this License. Any attempt otherwise to copy, modify, +sublicense or distribute the Program is void, and will automatically terminate +your rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses terminated +so long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed +it. However, nothing else grants you permission to modify or distribute the +Program or its derivative works. These actions are prohibited by law if you +do not accept this License. Therefore, by modifying or distributing the Program +(or any work based on the Program), you indicate your acceptance of this License +to do so, and all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the Program), +the recipient automatically receives a license from the original licensor +to copy, distribute or modify the Program subject to these terms and conditions. +You may not impose any further restrictions on the recipients' exercise of +the rights granted herein. You are not responsible for enforcing compliance +by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent infringement +or for any other reason (not limited to patent issues), conditions are imposed +on you (whether by court order, agreement or otherwise) that contradict the +conditions of this License, they do not excuse you from the conditions of +this License. If you cannot distribute so as to satisfy simultaneously your +obligations under this License and any other pertinent obligations, then as +a consequence you may not distribute the Program at all. For example, if a +patent license would not permit royalty-free redistribution of the Program +by all those who receive copies directly or indirectly through you, then the +only way you could satisfy both it and this License would be to refrain entirely +from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents +or other property right claims or to contest validity of any such claims; +this section has the sole purpose of protecting the integrity of the free +software distribution system, which is implemented by public license practices. +Many people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose +that choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain +countries either by patents or by copyrighted interfaces, the original copyright +holder who places the Program under this License may add an explicit geographical +distribution limitation excluding those countries, so that distribution is +permitted only in or among countries not thus excluded. In such case, this +License incorporates the limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions of +the General Public License from time to time. Such new versions will be similar +in spirit to the present version, but may differ in detail to address new +problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies +a version number of this License which applies to it and "any later version", +you have the option of following the terms and conditions either of that version +or of any later version published by the Free Software Foundation. If the +Program does not specify a version number of this License, you may choose +any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs +whose distribution conditions are different, write to the author to ask for +permission. For software which is copyrighted by the Free Software Foundation, +write to the Free Software Foundation; we sometimes make exceptions for this. +Our decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing and reuse +of software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM +"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE +OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE +OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA +OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES +OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH +HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible +use to the public, the best way to achieve this is to make it free software +which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach +them to the start of each source file to most effectively convey the exclusion +of warranty; and each file should have at least the "copyright" line and a +pointer to where the full notice is found. + +one line to give the program's name and an idea of what it does. Copyright +(C) yyyy name of author + +This program 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 2 of the License, or (at your option) any later +version. + +This program 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 +this program; if not, write to the Free Software Foundation, Inc., 51 Franklin +Street, Fifth Floor, Boston, MA 02110-1301, USA. Also add information on how +to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this when +it starts in an interactive mode: + +Gnomovision version 69, Copyright (C) year name of author Gnomovision comes +with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, +and you are welcome to redistribute it under certain conditions; type `show +c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may be +called something other than `show w' and `show c'; they could even be mouse-clicks +or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your school, +if any, to sign a "copyright disclaimer" for the program, if necessary. Here +is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' +(which makes passes at compilers) written by James Hacker. + +signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice diff --git a/LICENSES/GPL-2.0-or-later.txt b/LICENSES/GPL-2.0-or-later.txt new file mode 100644 index 0000000..3b6070f --- /dev/null +++ b/LICENSES/GPL-2.0-or-later.txt @@ -0,0 +1,311 @@ +GNU GENERAL PUBLIC LICENSE +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public License is intended to +guarantee your freedom to share and change free software--to make sure the +software is free for all its users. This General Public License applies to +most of the Free Software Foundation's software and to any other program whose +authors commit to using it. (Some other Free Software Foundation software +is covered by the GNU Lesser General Public License instead.) You can apply +it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom +to distribute copies of free software (and charge for this service if you +wish), that you receive source code or can get it if you want it, that you +can change the software or use pieces of it in new free programs; and that +you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to +deny you these rights or to ask you to surrender the rights. These restrictions +translate to certain responsibilities for you if you distribute copies of +the software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or +for a fee, you must give the recipients all the rights that you have. You +must make sure that they, too, receive or can get the source code. And you +must show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) +offer you this license which gives you legal permission to copy, distribute +and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If +the software is modified by someone else and passed on, we want its recipients +to know that what they have is not the original, so that any problems introduced +by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that redistributors of a free program will individually +obtain patent licenses, in effect making the program proprietary. To prevent +this, we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification +follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a notice +placed by the copyright holder saying it may be distributed under the terms +of this General Public License. The "Program", below, refers to any such program +or work, and a "work based on the Program" means either the Program or any +derivative work under copyright law: that is to say, a work containing the +Program or a portion of it, either verbatim or with modifications and/or translated +into another language. (Hereinafter, translation is included without limitation +in the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running the Program +is not restricted, and the output from the Program is covered only if its +contents constitute a work based on the Program (independent of having been +made by running the Program). Whether that is true depends on what the Program +does. + +1. You may copy and distribute verbatim copies of the Program's source code +as you receive it, in any medium, provided that you conspicuously and appropriately +publish on each copy an appropriate copyright notice and disclaimer of warranty; +keep intact all the notices that refer to this License and to the absence +of any warranty; and give any other recipients of the Program a copy of this +License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you +may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, +thus forming a work based on the Program, and copy and distribute such modifications +or work under the terms of Section 1 above, provided that you also meet all +of these conditions: + +a) You must cause the modified files to carry prominent notices stating that +you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in whole or +in part contains or is derived from the Program or any part thereof, to be +licensed as a whole at no charge to all third parties under the terms of this +License. + +c) If the modified program normally reads commands interactively when run, +you must cause it, when started running for such interactive use in the most +ordinary way, to print or display an announcement including an appropriate +copyright notice and a notice that there is no warranty (or else, saying that +you provide a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this License. +(Exception: if the Program itself is interactive but does not normally print +such an announcement, your work based on the Program is not required to print +an announcement.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Program, and can be reasonably +considered independent and separate works in themselves, then this License, +and its terms, do not apply to those sections when you distribute them as +separate works. But when you distribute the same sections as part of a whole +which is a work based on the Program, the distribution of the whole must be +on the terms of this License, whose permissions for other licensees extend +to the entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise +the right to control the distribution of derivative or collective works based +on the Program. + +In addition, mere aggregation of another work not based on the Program with +the Program (or with a work based on the Program) on a volume of a storage +or distribution medium does not bring the other work under the scope of this +License. + +3. You may copy and distribute the Program (or a work based on it, under Section +2) in object code or executable form under the terms of Sections 1 and 2 above +provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable source code, +which must be distributed under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three years, to give +any third party, for a charge no more than your cost of physically performing +source distribution, a complete machine-readable copy of the corresponding +source code, to be distributed under the terms of Sections 1 and 2 above on +a medium customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer to distribute +corresponding source code. (This alternative is allowed only for noncommercial +distribution and only if you received the program in object code or executable +form with such an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for making +modifications to it. For an executable work, complete source code means all +the source code for all modules it contains, plus any associated interface +definition files, plus the scripts used to control compilation and installation +of the executable. However, as a special exception, the source code distributed +need not include anything that is normally distributed (in either source or +binary form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component itself +accompanies the executable. + +If distribution of executable or object code is made by offering access to +copy from a designated place, then offering equivalent access to copy the +source code from the same place counts as distribution of the source code, +even though third parties are not compelled to copy the source along with +the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except +as expressly provided under this License. Any attempt otherwise to copy, modify, +sublicense or distribute the Program is void, and will automatically terminate +your rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses terminated +so long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed +it. However, nothing else grants you permission to modify or distribute the +Program or its derivative works. These actions are prohibited by law if you +do not accept this License. Therefore, by modifying or distributing the Program +(or any work based on the Program), you indicate your acceptance of this License +to do so, and all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the Program), +the recipient automatically receives a license from the original licensor +to copy, distribute or modify the Program subject to these terms and conditions. +You may not impose any further restrictions on the recipients' exercise of +the rights granted herein. You are not responsible for enforcing compliance +by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent infringement +or for any other reason (not limited to patent issues), conditions are imposed +on you (whether by court order, agreement or otherwise) that contradict the +conditions of this License, they do not excuse you from the conditions of +this License. If you cannot distribute so as to satisfy simultaneously your +obligations under this License and any other pertinent obligations, then as +a consequence you may not distribute the Program at all. For example, if a +patent license would not permit royalty-free redistribution of the Program +by all those who receive copies directly or indirectly through you, then the +only way you could satisfy both it and this License would be to refrain entirely +from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents +or other property right claims or to contest validity of any such claims; +this section has the sole purpose of protecting the integrity of the free +software distribution system, which is implemented by public license practices. +Many people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose +that choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain +countries either by patents or by copyrighted interfaces, the original copyright +holder who places the Program under this License may add an explicit geographical +distribution limitation excluding those countries, so that distribution is +permitted only in or among countries not thus excluded. In such case, this +License incorporates the limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions of +the General Public License from time to time. Such new versions will be similar +in spirit to the present version, but may differ in detail to address new +problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies +a version number of this License which applies to it and "any later version", +you have the option of following the terms and conditions either of that version +or of any later version published by the Free Software Foundation. If the +Program does not specify a version number of this License, you may choose +any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs +whose distribution conditions are different, write to the author to ask for +permission. For software which is copyrighted by the Free Software Foundation, +write to the Free Software Foundation; we sometimes make exceptions for this. +Our decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing and reuse +of software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM +"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE +OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE +OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA +OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES +OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH +HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible +use to the public, the best way to achieve this is to make it free software +which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach +them to the start of each source file to most effectively convey the exclusion +of warranty; and each file should have at least the "copyright" line and a +pointer to where the full notice is found. + +one line to give the program's name and an idea of what it does. Copyright +(C) yyyy name of author + +This program 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 2 of the License, or (at your option) any later +version. + +This program 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 +this program; if not, write to the Free Software Foundation, Inc., 51 Franklin +Street, Fifth Floor, Boston, MA 02110-1301, USA. Also add information on how +to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this when +it starts in an interactive mode: + +Gnomovision version 69, Copyright (C) year name of author Gnomovision comes +with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, +and you are welcome to redistribute it under certain conditions; type `show +c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may be +called something other than `show w' and `show c'; they could even be mouse-clicks +or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your school, +if any, to sign a "copyright disclaimer" for the program, if necessary. Here +is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' +(which makes passes at compilers) written by James Hacker. + +signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice diff --git a/LICENSES/GPL-3.0-only.txt b/LICENSES/GPL-3.0-only.txt new file mode 100644 index 0000000..5990771 --- /dev/null +++ b/LICENSES/GPL-3.0-only.txt @@ -0,0 +1,604 @@ +GNU GENERAL PUBLIC LICENSE +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +Preamble + +The GNU General Public License is a free, copyleft license for software and +other kinds of works. + +The licenses for most software and other practical works are designed to take +away your freedom to share and change the works. By contrast, the GNU General +Public License is intended to guarantee your freedom to share and change all +versions of a program--to make sure it remains free software for all its users. +We, the Free Software Foundation, use the GNU General Public License for most +of our software; it applies also to any other work released this way by its +authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom +to distribute copies of free software (and charge for them if you wish), that +you receive source code or can get it if you want it, that you can change +the software or use pieces of it in new free programs, and that you know you +can do these things. + +To protect your rights, we need to prevent others from denying you these rights +or asking you to surrender the rights. Therefore, you have certain responsibilities +if you distribute copies of the software, or if you modify it: responsibilities +to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or +for a fee, you must pass on to the recipients the same freedoms that you received. +You must make sure that they, too, receive or can get the source code. And +you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert +copyright on the software, and (2) offer you this License giving you legal +permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that +there is no warranty for this free software. For both users' and authors' +sake, the GPL requires that modified versions be marked as changed, so that +their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified +versions of the software inside them, although the manufacturer can do so. +This is fundamentally incompatible with the aim of protecting users' freedom +to change the software. The systematic pattern of such abuse occurs in the +area of products for individuals to use, which is precisely where it is most +unacceptable. Therefore, we have designed this version of the GPL to prohibit +the practice for those products. If such problems arise substantially in other +domains, we stand ready to extend this provision to those domains in future +versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States +should not allow patents to restrict development and use of software on general-purpose +computers, but in those that do, we wish to avoid the special danger that +patents applied to a free program could make it effectively proprietary. To +prevent this, the GPL assures that patents cannot be used to render the program +non-free. + +The precise terms and conditions for copying, distribution and modification +follow. + +TERMS AND CONDITIONS + +0. Definitions. + +“This License” refers to version 3 of the GNU General Public License. + +“Copyright” also means copyright-like laws that apply to other kinds of works, +such as semiconductor masks. + +“The Program” refers to any copyrightable work licensed under this License. +Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals +or organizations. + +To “modify” a work means to copy from or adapt all or part of the work in +a fashion requiring copyright permission, other than the making of an exact +copy. The resulting work is called a “modified version” of the earlier work +or a work “based on” the earlier work. + +A “covered work” means either the unmodified Program or a work based on the +Program. + +To “propagate” a work means to do anything with it that, without permission, +would make you directly or secondarily liable for infringement under applicable +copyright law, except executing it on a computer or modifying a private copy. +Propagation includes copying, distribution (with or without modification), +making available to the public, and in some countries other activities as +well. + +To “convey” a work means any kind of propagation that enables other parties +to make or receive copies. Mere interaction with a user through a computer +network, with no transfer of a copy, is not conveying. + +An interactive user interface displays “Appropriate Legal Notices” to the +extent that it includes a convenient and prominently visible feature that +(1) displays an appropriate copyright notice, and (2) tells the user that +there is no warranty for the work (except to the extent that warranties are +provided), that licensees may convey the work under this License, and how +to view a copy of this License. If the interface presents a list of user commands +or options, such as a menu, a prominent item in the list meets this criterion. + +1. Source Code. +The “source code” for a work means the preferred form of the work for making +modifications to it. “Object code” means any non-source form of a work. + +A “Standard Interface” means an interface that either is an official standard +defined by a recognized standards body, or, in the case of interfaces specified +for a particular programming language, one that is widely used among developers +working in that language. + +The “System Libraries” of an executable work include anything, other than +the work as a whole, that (a) is included in the normal form of packaging +a Major Component, but which is not part of that Major Component, and (b) +serves only to enable use of the work with that Major Component, or to implement +a Standard Interface for which an implementation is available to the public +in source code form. A “Major Component”, in this context, means a major essential +component (kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to produce +the work, or an object code interpreter used to run it. + +The “Corresponding Source” for a work in object code form means all the source +code needed to generate, install, and (for an executable work) run the object +code and to modify the work, including scripts to control those activities. +However, it does not include the work's System Libraries, or general-purpose +tools or generally available free programs which are used unmodified in performing +those activities but which are not part of the work. For example, Corresponding +Source includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically linked +subprograms that the work is specifically designed to require, such as by +intimate data communication or control flow between those subprograms and +other parts of the work. + +The Corresponding Source need not include anything that users can regenerate +automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. + +2. Basic Permissions. +All rights granted under this License are granted for the term of copyright +on the Program, and are irrevocable provided the stated conditions are met. +This License explicitly affirms your unlimited permission to run the unmodified +Program. The output from running a covered work is covered by this License +only if the output, given its content, constitutes a covered work. This License +acknowledges your rights of fair use or other equivalent, as provided by copyright +law. + +You may make, run and propagate covered works that you do not convey, without +conditions so long as your license otherwise remains in force. You may convey +covered works to others for the sole purpose of having them make modifications +exclusively for you, or provide you with facilities for running those works, +provided that you comply with the terms of this License in conveying all material +for which you do not control copyright. Those thus making or running the covered +works for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of your copyrighted +material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions +stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. +No covered work shall be deemed part of an effective technological measure +under any applicable law fulfilling obligations under article 11 of the WIPO +copyright treaty adopted on 20 December 1996, or similar laws prohibiting +or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention +of technological measures to the extent such circumvention is effected by +exercising rights under this License with respect to the covered work, and +you disclaim any intention to limit operation or modification of the work +as a means of enforcing, against the work's users, your or third parties' +legal rights to forbid circumvention of technological measures. + +4. Conveying Verbatim Copies. +You may convey verbatim copies of the Program's source code as you receive +it, in any medium, provided that you conspicuously and appropriately publish +on each copy an appropriate copyright notice; keep intact all notices stating +that this License and any non-permissive terms added in accord with section +7 apply to the code; keep intact all notices of the absence of any warranty; +and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you +may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. +You may convey a work based on the Program, or the modifications to produce +it from the Program, in the form of source code under the terms of section +4, provided that you also meet all of these conditions: + +a) The work must carry prominent notices stating that you modified it, and +giving a relevant date. + +b) The work must carry prominent notices stating that it is released under +this License and any conditions added under section 7. This requirement modifies +the requirement in section 4 to “keep intact all notices”. + +c) You must license the entire work, as a whole, under this License to anyone +who comes into possession of a copy. This License will therefore apply, along +with any applicable section 7 additional terms, to the whole of the work, +and all its parts, regardless of how they are packaged. This License gives +no permission to license the work in any other way, but it does not invalidate +such permission if you have separately received it. + +d) If the work has interactive user interfaces, each must display Appropriate +Legal Notices; however, if the Program has interactive interfaces that do +not display Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, +which are not by their nature extensions of the covered work, and which are +not combined with it such as to form a larger program, in or on a volume of +a storage or distribution medium, is called an “aggregate” if the compilation +and its resulting copyright are not used to limit the access or legal rights +of the compilation's users beyond what the individual works permit. Inclusion +of a covered work in an aggregate does not cause this License to apply to +the other parts of the aggregate. + +6. Conveying Non-Source Forms. +You may convey a covered work in object code form under the terms of sections +4 and 5, provided that you also convey the machine-readable Corresponding +Source under the terms of this License, in one of these ways: + +a) Convey the object code in, or embodied in, a physical product (including +a physical distribution medium), accompanied by the Corresponding Source fixed +on a durable physical medium customarily used for software interchange. + +b) Convey the object code in, or embodied in, a physical product (including +a physical distribution medium), accompanied by a written offer, valid for +at least three years and valid for as long as you offer spare parts or customer +support for that product model, to give anyone who possesses the object code +either (1) a copy of the Corresponding Source for all the software in the +product that is covered by this License, on a durable physical medium customarily +used for software interchange, for a price no more than your reasonable cost +of physically performing this conveying of source, or (2) access to copy the +Corresponding Source from a network server at no charge. + +c) Convey individual copies of the object code with a copy of the written +offer to provide the Corresponding Source. This alternative is allowed only +occasionally and noncommercially, and only if you received the object code +with such an offer, in accord with subsection 6b. + +d) Convey the object code by offering access from a designated place (gratis +or for a charge), and offer equivalent access to the Corresponding Source +in the same way through the same place at no further charge. You need not +require recipients to copy the Corresponding Source along with the object +code. If the place to copy the object code is a network server, the Corresponding +Source may be on a different server (operated by you or a third party) that +supports equivalent copying facilities, provided you maintain clear directions +next to the object code saying where to find the Corresponding Source. Regardless +of what server hosts the Corresponding Source, you remain obligated to ensure +that it is available for as long as needed to satisfy these requirements. + +e) Convey the object code using peer-to-peer transmission, provided you inform +other peers where the object code and Corresponding Source of the work are +being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from +the Corresponding Source as a System Library, need not be included in conveying +the object code work. + +A “User Product” is either (1) a “consumer product”, which means any tangible +personal property which is normally used for personal, family, or household +purposes, or (2) anything designed or sold for incorporation into a dwelling. +In determining whether a product is a consumer product, doubtful cases shall +be resolved in favor of coverage. For a particular product received by a particular +user, “normally used” refers to a typical or common use of that class of product, +regardless of the status of the particular user or of the way in which the +particular user actually uses, or expects or is expected to use, the product. +A product is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent the +only significant mode of use of the product. + +“Installation Information” for a User Product means any methods, procedures, +authorization keys, or other information required to install and execute modified +versions of a covered work in that User Product from a modified version of +its Corresponding Source. The information must suffice to ensure that the +continued functioning of the modified object code is in no case prevented +or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically +for use in, a User Product, and the conveying occurs as part of a transaction +in which the right of possession and use of the User Product is transferred +to the recipient in perpetuity or for a fixed term (regardless of how the +transaction is characterized), the Corresponding Source conveyed under this +section must be accompanied by the Installation Information. But this requirement +does not apply if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has been installed +in ROM). + +The requirement to provide Installation Information does not include a requirement +to continue to provide support service, warranty, or updates for a work that +has been modified or installed by the recipient, or for the User Product in +which it has been modified or installed. Access to a network may be denied +when the modification itself materially and adversely affects the operation +of the network or violates the rules and protocols for communication across +the network. + +Corresponding Source conveyed, and Installation Information provided, in accord +with this section must be in a format that is publicly documented (and with +an implementation available to the public in source code form), and must require +no special password or key for unpacking, reading or copying. + +7. Additional Terms. +“Additional permissions” are terms that supplement the terms of this License +by making exceptions from one or more of its conditions. Additional permissions +that are applicable to the entire Program shall be treated as though they +were included in this License, to the extent that they are valid under applicable +law. If additional permissions apply only to part of the Program, that part +may be used separately under those permissions, but the entire Program remains +governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any +additional permissions from that copy, or from any part of it. (Additional +permissions may be written to require their own removal in certain cases when +you modify the work.) You may place additional permissions on material, added +by you to a covered work, for which you have or can give appropriate copyright +permission. + +Notwithstanding any other provision of this License, for material you add +to a covered work, you may (if authorized by the copyright holders of that +material) supplement the terms of this License with terms: + +a) Disclaiming warranty or limiting liability differently from the terms of +sections 15 and 16 of this License; or + +b) Requiring preservation of specified reasonable legal notices or author +attributions in that material or in the Appropriate Legal Notices displayed +by works containing it; or + +c) Prohibiting misrepresentation of the origin of that material, or requiring +that modified versions of such material be marked in reasonable ways as different +from the original version; or + +d) Limiting the use for publicity purposes of names of licensors or authors +of the material; or + +e) Declining to grant rights under trademark law for use of some trade names, +trademarks, or service marks; or + +f) Requiring indemnification of licensors and authors of that material by +anyone who conveys the material (or modified versions of it) with contractual +assumptions of liability to the recipient, for any liability that these contractual +assumptions directly impose on those licensors and authors. + +All other non-permissive additional terms are considered “further restrictions” +within the meaning of section 10. If the Program as you received it, or any +part of it, contains a notice stating that it is governed by this License +along with a term that is a further restriction, you may remove that term. +If a license document contains a further restriction but permits relicensing +or conveying under this License, you may add to a covered work material governed +by the terms of that license document, provided that the further restriction +does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, +in the relevant source files, a statement of the additional terms that apply +to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form +of a separately written license, or stated as exceptions; the above requirements +apply either way. + +8. Termination. +You may not propagate or modify a covered work except as expressly provided +under this License. Any attempt otherwise to propagate or modify it is void, +and will automatically terminate your rights under this License (including +any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from +a particular copyright holder is reinstated (a) provisionally, unless and +until the copyright holder explicitly and finally terminates your license, +and (b) permanently, if the copyright holder fails to notify you of the violation +by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently +if the copyright holder notifies you of the violation by some reasonable means, +this is the first time you have received notice of violation of this License +(for any work) from that copyright holder, and you cure the violation prior +to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses +of parties who have received copies or rights from you under this License. +If your rights have been terminated and not permanently reinstated, you do +not qualify to receive new licenses for the same material under section 10. + +9. Acceptance Not Required for Having Copies. +You are not required to accept this License in order to receive or run a copy +of the Program. Ancillary propagation of a covered work occurring solely as +a consequence of using peer-to-peer transmission to receive a copy likewise +does not require acceptance. However, nothing other than this License grants +you permission to propagate or modify any covered work. These actions infringe +copyright if you do not accept this License. Therefore, by modifying or propagating +a covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. +Each time you convey a covered work, the recipient automatically receives +a license from the original licensors, to run, modify and propagate that work, +subject to this License. You are not responsible for enforcing compliance +by third parties with this License. + +An “entity transaction” is a transaction transferring control of an organization, +or substantially all assets of one, or subdividing an organization, or merging +organizations. If propagation of a covered work results from an entity transaction, +each party to that transaction who receives a copy of the work also receives +whatever licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the Corresponding +Source of the work from the predecessor in interest, if the predecessor has +it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights +granted or affirmed under this License. For example, you may not impose a +license fee, royalty, or other charge for exercise of rights granted under +this License, and you may not initiate litigation (including a cross-claim +or counterclaim in a lawsuit) alleging that any patent claim is infringed +by making, using, selling, offering for sale, or importing the Program or +any portion of it. + +11. Patents. +A “contributor” is a copyright holder who authorizes use under this License +of the Program or a work on which the Program is based. The work thus licensed +is called the contributor's “contributor version”. + +A contributor's “essential patent claims” are all patent claims owned or controlled +by the contributor, whether already acquired or hereafter acquired, that would +be infringed by some manner, permitted by this License, of making, using, +or selling its contributor version, but do not include claims that would be +infringed only as a consequence of further modification of the contributor +version. For purposes of this definition, “control” includes the right to +grant patent sublicenses in a manner consistent with the requirements of this +License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent +license under the contributor's essential patent claims, to make, use, sell, +offer for sale, import and otherwise run, modify and propagate the contents +of its contributor version. + +In the following three paragraphs, a “patent license” is any express agreement +or commitment, however denominated, not to enforce a patent (such as an express +permission to practice a patent or covenant not to sue for patent infringement). +To “grant” such a patent license to a party means to make such an agreement +or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the +Corresponding Source of the work is not available for anyone to copy, free +of charge and under the terms of this License, through a publicly available +network server or other readily accessible means, then you must either (1) +cause the Corresponding Source to be so available, or (2) arrange to deprive +yourself of the benefit of the patent license for this particular work, or +(3) arrange, in a manner consistent with the requirements of this License, +to extend the patent license to downstream recipients. “Knowingly relying” +means you have actual knowledge that, but for the patent license, your conveying +the covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that country +that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, +you convey, or propagate by procuring conveyance of, a covered work, and grant +a patent license to some of the parties receiving the covered work authorizing +them to use, propagate, modify or convey a specific copy of the covered work, +then the patent license you grant is automatically extended to all recipients +of the covered work and works based on it. + +A patent license is “discriminatory” if it does not include within the scope +of its coverage, prohibits the exercise of, or is conditioned on the non-exercise +of one or more of the rights that are specifically granted under this License. +You may not convey a covered work if you are a party to an arrangement with +a third party that is in the business of distributing software, under which +you make payment to the third party based on the extent of your activity of +conveying the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by you +(or copies made from those copies), or (b) primarily for and in connection +with specific products or compilations that contain the covered work, unless +you entered into that arrangement, or that patent license was granted, prior +to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied +license or other defenses to infringement that may otherwise be available +to you under applicable patent law. + +12. No Surrender of Others' Freedom. +If conditions are imposed on you (whether by court order, agreement or otherwise) +that contradict the conditions of this License, they do not excuse you from +the conditions of this License. If you cannot convey a covered work so as +to satisfy simultaneously your obligations under this License and any other +pertinent obligations, then as a consequence you may not convey it at all. +For example, if you agree to terms that obligate you to collect a royalty +for further conveying from those to whom you convey the Program, the only +way you could satisfy both those terms and this License would be to refrain +entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. +Notwithstanding any other provision of this License, you have permission to +link or combine any covered work with a work licensed under version 3 of the +GNU Affero General Public License into a single combined work, and to convey +the resulting work. The terms of this License will continue to apply to the +part which is the covered work, but the special requirements of the GNU Affero +General Public License, section 13, concerning interaction through a network +will apply to the combination as such. + +14. Revised Versions of this License. +The Free Software Foundation may publish revised and/or new versions of the +GNU General Public License from time to time. Such new versions will be similar +in spirit to the present version, but may differ in detail to address new +problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies +that a certain numbered version of the GNU General Public License “or any +later version” applies to it, you have the option of following the terms and +conditions either of that numbered version or of any later version published +by the Free Software Foundation. If the Program does not specify a version +number of the GNU General Public License, you may choose any version ever +published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of +the GNU General Public License can be used, that proxy's public statement +of acceptance of a version permanently authorizes you to choose that version +for the Program. + +Later license versions may give you additional or different permissions. However, +no additional obligations are imposed on any author or copyright holder as +a result of your choosing to follow a later version. + +15. Disclaimer of Warranty. +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE +LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM +PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + +16. Limitation of Liability. +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL +ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM +AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, +INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO +USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED +INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE +PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER +PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. +If the disclaimer of warranty and limitation of liability provided above cannot +be given local legal effect according to their terms, reviewing courts shall +apply local law that most closely approximates an absolute waiver of all civil +liability in connection with the Program, unless a warranty or assumption +of liability accompanies a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible +use to the public, the best way to achieve this is to make it free software +which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach +them to the start of each source file to most effectively state the exclusion +of warranty; and each file should have at least the “copyright” line and a +pointer to where the full notice is found. + + + Copyright (C) + +This program 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. + +This program 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 +this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like +this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. +This is free software, and you are welcome to redistribute it under certain +conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands might +be different; for a GUI interface, you would use an “about box”. + +You should also get your employer (if you work as a programmer) or school, +if any, to sign a “copyright disclaimer” for the program, if necessary. For +more information on this, and how to apply and follow the GNU GPL, see . + +The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General Public +License instead of this License. But first, please read . diff --git a/LICENSES/LicenseRef-KDE-Accepted-GPL.txt b/LICENSES/LicenseRef-KDE-Accepted-GPL.txt new file mode 100644 index 0000000..60a2dff --- /dev/null +++ b/LICENSES/LicenseRef-KDE-Accepted-GPL.txt @@ -0,0 +1,12 @@ +This library 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) at any later version that is +accepted by the membership of KDE e.V. (or its successor +approved by the membership of KDE e.V.), which shall act as a +proxy as defined in Section 14 of version 3 of the license. + +This program 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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..1b3864d --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +## Cantor + +Cantor is a KDE Application aimed to provide a nice Interface +for doing Mathematics and Scientific Computing. It doesn't implement +its own Computation Logic, but instead is built around different +Backends. + +## Available Backends + +- Julia Programming Language: http://julialang.org/ +- KAlgebra for Calculation and Plotting: http://edu.kde.org/kalgebra/ +- Lua Programming Language: http://lua.org/ +- Maxima Computer Algebra System: http://maxima.sourceforge.net/ +- Octave for Numerical Computation: https://gnu.org/software/octave/ +- Python 2 Programming Language: http://python.org/ +- Python 3 Programming Language: http://python.org/ +- Qalculate Desktop Calculator: http://qalculate.sourceforge.net/ +- R Project for Statistical Computing: http://r-project.org/ +- Sage Mathematics Software: http://sagemath.org/ +- Scilab for Numerical Computation: http://scilab.org/ + +## How To Build and Install Cantor + +To build and install Cantor, follow the steps below: + +``` +cd cantor +mkdir build +cd build +cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install -DCMAKE_BUILD_TYPE=RELEASE +make +make install or su -c 'make install' +``` + +If `-DCMAKE_INSTALL_PREFIX` is not used, Cantor will be installed in +default cmake install directory (`/usr/local/` usually). +Also, setting `CMAKE_INSTALL_PREFIX` to some unstandart location may happens different problems +with searching Cantor files. So there is a need for passing proper paths for KDE install cmake variables. +For example, if no one Cantor's backends found after installation, KDE_INSTALL_PLUGINDIR path should +be specified on cmake configuration step to some location. + +To uninstall the project: + +`make uninstall` or `su -c 'make uninstall'` diff --git a/admin/documentation/Maxima/Maxima_v5.42/README.md b/admin/documentation/Maxima/Maxima_v5.42/README.md new file mode 100644 index 0000000..bbb97a6 --- /dev/null +++ b/admin/documentation/Maxima/Maxima_v5.42/README.md @@ -0,0 +1,11 @@ +### Steps to generate `qhp` and `qhcp` +Copy the file named `qthelp_generator.py` and custom style sheets named `main.css` to the location where the `Maxima` HTML files exists (maxima-website/docs/manual/). Then simply run the command `python qthelp_generator.py`. This script is all-in-one. It does the task of adding custom stylesheets defined in `main.css`, extracting the keywords from `index.hhk` and generation of QtHelp files named `qhp` and `qhcp`. +NOTE: store the `index.hhk`, `main.css` in the same folder as that of the `Maxima` documentation and the script should be placed there as well. + +### Creation of `qhc` and `qch` +Use the following command to generate the above said files. + + qhelpgenerator help.qhcp -o help.qhc + +### Steps for adding custom style to the Maxima documentation +Add your custom styles to `main.css`. To apply custom them, place the python script named `qthelp_generator.py` in the same location as that of all the Maxima's documentation's HTML files. Then run the script. It will inject code into HTML files to link them to `main.css` file. diff --git a/admin/documentation/Maxima/Maxima_v5.42/main.css b/admin/documentation/Maxima/Maxima_v5.42/main.css new file mode 100644 index 0000000..7bddb2f --- /dev/null +++ b/admin/documentation/Maxima/Maxima_v5.42/main.css @@ -0,0 +1,164 @@ +a.summary-letter { + text-decoration: none +} + +pre.display { + font-family: serif +} + +pre.format { + font-family: serif +} + +pre.menu-comment { + font-family: serif +} + +pre.menu-preformatted { + font-family: serif +} + +pre.smalldisplay { + font-family: serif; + font-size: smaller +} + +pre.smallexample { + font-size: smaller +} + +pre.smallformat { + font-family: serif; + font-size: smaller +} + +pre.smalllisp { + font-size: smaller +} + +span.sansserif { + font-family: sans-serif; + font-weight: normal; +} + +ul.toc { + list-style: none +} + +body { + color: black; + background: white; + margin-left: 8%; + margin-right: 13%; + font-family: "Noto Sans", sans-serif; + line-height: 1.45; +} + +h1 { + font-size: 150%; + font-family: "Noto Sans", sans-serif +} + +h2 { + font-size: 125%; + font-family: "Noto Sans", sans-serif +} + +h3 { + font-size: 100%; + font-family: "Noto Sans", sans-serif +} + +a[href] { + color: rgb(13, 13, 189, 0.75); + text-decoration: none; +} + +a[href]:hover { + background: none; + text-decoration: underline; +} + +div.textbox { + border: solid; + border-width: thin; + padding-top: 1em; + padding-bottom: 1em; + padding-left: 2em; + padding-right: 2em +} + +div.titlebox { + border: none; + padding-top: 1em; + padding-bottom: 1em; + padding-left: 2em; + padding-right: 2em; + background: rgb(200, 255, 255); + font-family: sans-serif +} + +div.synopsisbox { + border: none; + padding-top: 1em; + padding-bottom: 1em; + padding-left: 2em; + padding-right: 2em; + background: rgb(255, 220, 255); +} + +pre.example { + border: 2px solid rgb(190, 190, 190, 0.9); + border-radius: 13px; + padding-top: 1em; + padding-bottom: 1em; + padding-left: 1em; + padding-right: 1em; + background-color: rgb(220, 220, 250, 0.9) +} + +div.spacerbox { + border: none; + padding-top: 2em; + padding-bottom: 2em +} + +div.image { + margin: 0; + padding: 0px; + text-align: center +} + +div.categorybox { + border: 2px solid rgb(190, 190, 190, 0.7); + border-radius: 13px; + padding-top: 0px; + padding-bottom: 0px; + padding-left: 1em; + padding-right: 1em; + background-color: rgb(255, 243, 186, 0.75) +} + +img { + max-width: 80%; + max-height: 80% +} + +p { + text-align: justify; +} + +/*class section, chapter, menu +.section { + +} + +.chapter { + +} + + +.menu { + +} + */ diff --git a/admin/documentation/Maxima/Maxima_v5.42/qthelp_generator.py b/admin/documentation/Maxima/Maxima_v5.42/qthelp_generator.py new file mode 100644 index 0000000..516a73a --- /dev/null +++ b/admin/documentation/Maxima/Maxima_v5.42/qthelp_generator.py @@ -0,0 +1,263 @@ +# +# This program 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 2 +# of the License, or (at your option) any later version. + +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +# --- +# Copyright (C) 2020 Shubham +# + +# script to parse index.hhk and generate a txt file containing all the keywords +# and then generate QtHelp files using the keywords generated +# This script also adds custom styles to the html pages + +import os +from bs4 import BeautifulSoup + +####################################### +#code for adding custom styles to html# +###################################### +files = os.listdir('.') + +for fi in files: + if fi.endswith('.html'): + + # open file and reach to the 62 line + fp = open(fi, 'r') + + lines_list = fp.readlines() + lines_list.insert(61, '') + + fp.close() + + # link the css file + fp = open(fi, 'w') + fp.writelines(lines_list) + fp.close() + + +##################### +#open required files# +##################### +index = open('./index.hhk', 'r') + +# QtHelp files +qhp = open('./help.qhp', 'w') +qhcp = open('./help.qhcp', 'w') + +####################################### +#code for generation of QtHelp files## +###################################### + +# populate qhp file with headers and table of contents +qhp.writelines(""" + + org.kde.maxima.5.42 + + 5.42 + + + Maxima Documentation + doc + + + + +
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+ +
+
\n + """) + +# this way does not work, because somehow beautifulsoup is unable to escape > and >< special symbols +# html = index.read() +# soup = BeautifulSoup(html, features='html.parser') + +# for i in soup.find_all('object'): +# attributes = i.findChildren() +# link = attributes[0]['value'] +# keyword = attributes[1]['value'] +# repr(keyword) + +# if link != 'maxima_7.html#IDX227' and link != 'maxima_7.html#IDX227': +# qhp.write('\n'.format(keyword, link)) + +# read all the keywords from index.hhk and write them to qhp under section +for li in index: + if li.startswith('
  • '): + + line2 = index.next() + line3 = index.next() + + if not line2: + break + else: + ln2_lastindex = line2.rindex('"') + ln3_lastindex = line3.rindex('"') + + name = line3[29:ln3_lastindex] + ref = line2[30:ln2_lastindex] + + qhp.write('\n'.format(name, ref)) + + +# write the tail +qhp.writelines(""" + + *.html + figures/*.gif + figures/*.png + main.css + + + + """) + +# populate qhcp file +qhcp.writelines(""" + + + + + + help.qhp + help.qch + + + + + help.qch + + + + """) + +############################################################## +#qhp, qhcp input files are generate, now generate output files +############################################################# + +stream = os.popen('qhelpgenerator help.qhcp -o help.qhc') + +index.close() +qhp.close() +qhcp.close() diff --git a/admin/documentation/Maxima/Maxima_v5.44/README.md b/admin/documentation/Maxima/Maxima_v5.44/README.md new file mode 100644 index 0000000..01081b6 --- /dev/null +++ b/admin/documentation/Maxima/Maxima_v5.44/README.md @@ -0,0 +1,7 @@ +### Steps to generate `qhp` and `qhcp` +Copy the file named `qthelp_generator.py` to the location where the `Maxima` HTML files exists (maxima-website/docs/manual/). Then simply run the command `python qthelp_generator.py`. This script is all-in-one. It extracts the keywords from `maxima-website/docs/manual/maxima_363.html` and generation of QtHelp files named `qhp` and `qhcp`. + +### Creation of `qhc` and `qch` +Use the following command to generate the above said files. + + qhelpgenerator help.qhcp -o help.qhc diff --git a/admin/documentation/Maxima/Maxima_v5.44/qthelp_generator.py b/admin/documentation/Maxima/Maxima_v5.44/qthelp_generator.py new file mode 100644 index 0000000..cad2e08 --- /dev/null +++ b/admin/documentation/Maxima/Maxima_v5.44/qthelp_generator.py @@ -0,0 +1,220 @@ +# +# This program 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 2 +# of the License, or (at your option) any later version. + +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +# --- +# Copyright (C) 2020 Shubham +# + +# script to parse index.hhk and generate a txt file containing all the keywords +# and then generate QtHelp files using the keywords generated +# This script also adds custom styles to the html pages + +import os +import re +from bs4 import BeautifulSoup + +files = os.listdir('.') + +index = open('./maxima_363.html', 'r') +# QtHelp files +qhp = open('./help.qhp', 'w') +qhcp = open('./help.qhcp', 'w') + +html = index.read() +soup = BeautifulSoup(html, features='html.parser') + +title = soup.find('title').text + +####################################### +#code for generation of QtHelp files## +###################################### + +# populate qhp file with headers and table of contents +qhp.writelines(""" + + org.kde.maxima.5.44 + + doc + + + Maxima Documentation + Maxima 5.44 + + + + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    + +
    +
    \n + """) + +# read all the keywords from maxima_363.html and write them to qhp under section +for i in soup.find_all('code'): + keyword = i.text.replace("<", "") + keyword = re.sub(r" ?\([^)]+\)", "", keyword) + ref = i.find_parent('a') + + qhp.write('\n'.format(keyword, ref['href'])) + +# write the tail +qhp.writelines(""" + + *.html + figures/*.gif + figures/*.png + +
    + +
    """) + +# populate qhcp file +qhcp.writelines(""" + + + + + + help.qhp + help.qch + + + + + help.qch + + + + """) + +############################################################## +#qhp, qhcp input files are generate, now generate output files +############################################################# + +stream = os.popen('qhelpgenerator help.qhcp -o help.qhc') + +index.close() +qhp.close() +qhcp.close() diff --git a/admin/documentation/Octave/README.md b/admin/documentation/Octave/README.md new file mode 100644 index 0000000..d959bd3 --- /dev/null +++ b/admin/documentation/Octave/README.md @@ -0,0 +1,2 @@ +### Steps to extract the indices from `octave's official documentation` to add them to `qhp` under `keywords` +Simply get the QtHelp files from the official Octave repository. Get the files from `octave-5.2.0/doc/interpreter/`. The files are having `.qch` and `.qhc` extention. You could also run the perl script named `mk-qthelp.pl` and pass in the arguments as `octave.html` and `help`. ie `mk-qthelp.pl octave.html help`. After runnning this script, the help files are generated. diff --git a/admin/documentation/Python/NumPy_v1.19/README.md b/admin/documentation/Python/NumPy_v1.19/README.md new file mode 100644 index 0000000..f5b80bf --- /dev/null +++ b/admin/documentation/Python/NumPy_v1.19/README.md @@ -0,0 +1,8 @@ +### Steps to generate `qhp` and `qhcp` +Copy the file named `qthelp_generator.py` to the location where the `NumPy` HTML files exists. Then simply run the command `python qthelp_generator.py`. This script does the task of extracting the keywords from `Numpy_v1.19/genindex.html` and generation of QtHelp files named `qhp` and `qhcp`. +NOTE: Copy the script named `qthelp_generator.py` inside the directory `Numpy_v1.19/`. Official python documentation can be downloaded from https://numpy.org/doc/. + +### Creation of `qhc` and `qch` +Use the following command to generate the above said files. + + qhelpgenerator help.qhcp -o help.qhc diff --git a/admin/documentation/Python/NumPy_v1.19/qthelp_generator.py b/admin/documentation/Python/NumPy_v1.19/qthelp_generator.py new file mode 100644 index 0000000..dcd64a2 --- /dev/null +++ b/admin/documentation/Python/NumPy_v1.19/qthelp_generator.py @@ -0,0 +1,136 @@ +# +# This program 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 2 +# of the License, or (at your option) any later version. + +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +# --- +# Copyright (C) 2020 Shubham +# + +# Script to parse index and generate a txt file containing all the keywords +# and then generate QtHelp files using the keywords generated + +import os +import re +from bs4 import BeautifulSoup + +# QtHelp files +qhp = open('./help.qhp', 'w') +qhcp = open('./help.qhcp', 'w') + +index = open("genindex.html", "r") + +####################################### +#code for generation of QtHelp files## +###################################### + +# populate qhp file with headers and table of contents +qhp.writelines(""" + + org.kde.numpy.1.19 + + doc + + + NumPy Documentation + 1.19 + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    \n + """) + +# code to write keywords to qhp file +html = index.read() +soup = BeautifulSoup(html, features='html.parser') + +for i in soup.find_all('a'): + # replace the characters which produces error while qhcp file + keyword = i.text.replace("<", "").replace("&", "") + keyword = re.sub(r" ?\([^)]+\)", "", keyword) + link = i['href'] + + if keyword != "": + line = '\n'.format(keyword, link) + qhp.write(line) + +# write the tail +qhp.writelines(""" + + ./* + _static/* + _static/img/* + _images/* + _images/math/* + _sources/* + dev/* + dev/conducct/* + dev/gitwash/* + dev/gitwash/governance/* + docs/* + f2py/* + reference/* + reference/c-api/* + reference/dist-utils/* + reference/generated/* + reference/random/* + release/* + user/* + user/plots/* + +
    +
    """) + +# populate qhcp file +qhcp.writelines(""" + + + + + + help.qhp + help.qch + + + + + help.qch + + + + """) + +############################################################## +#qhp, qhcp input files are generate, now generate output files +############################################################# + +stream = os.popen('qhelpgenerator help.qhcp -o help.qhc') + +qhp.close() +qhcp.close() +index.close() diff --git a/admin/documentation/Python/Python_v3.8.4/README.md b/admin/documentation/Python/Python_v3.8.4/README.md new file mode 100644 index 0000000..f179dd6 --- /dev/null +++ b/admin/documentation/Python/Python_v3.8.4/README.md @@ -0,0 +1,8 @@ +### Steps to generate `qhp` and `qhcp` +Copy the file named `qthelp_generator.py` to the location where the `Python` HTML files exists. Then simply run the command `python qthelp_generator.py`. This script does the task of extracting the keywords from `python-3.8.4-docs-html/genindex-_.html` and `genindex-all.html` and generation of QtHelp files named `qhp` and `qhcp`. +NOTE: Copy the script named `qthelp_generator.py` inside the directory `python-3.8.4-docs-html`. Official python documentation can be downloaded from https://docs.python.org/3/download.html. + +### Creation of `qhc` and `qch` +Use the following command to generate the above said files. + + qhelpgenerator help.qhcp -o help.qhc diff --git a/admin/documentation/Python/Python_v3.8.4/qthelp_generator.py b/admin/documentation/Python/Python_v3.8.4/qthelp_generator.py new file mode 100644 index 0000000..d3e29a6 --- /dev/null +++ b/admin/documentation/Python/Python_v3.8.4/qthelp_generator.py @@ -0,0 +1,160 @@ +# +# This program 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 2 +# of the License, or (at your option) any later version. + +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +# --- +# Copyright (C) 2020 Shubham +# + +# Script to parse index and generate a txt file containing all the keywords +# and then generate QtHelp files using the keywords generated + +import os +import re +from bs4 import BeautifulSoup + +# QtHelp files +qhp = open('./help.qhp', 'w') +qhcp = open('./help.qhcp', 'w') + +index = open("genindex-all.html", "r") +index2 = open("genindex-_.html", "r") + +####################################### +#code for generation of QtHelp files## +###################################### + +# populate qhp file with headers and table of contents +qhp.writelines(""" + + org.kde.python.3.8.4 + + doc + + + Python Documentation + 3.8.4 + + + + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    \n + """) + +# code to write keywords to qhp file +html = index.read() +soup = BeautifulSoup(html, features='html.parser') + +for i in soup.find_all('a'): + # replace the characters which produces error while qhcp file + keyword = i.text.replace("<", "").replace("&", "") + keyword = re.sub(r" ?\([^)]+\)", "", keyword) + link = i['href'] + + if keyword != "": + line = '\n'.format(keyword, link) + qhp.write(line) + +html2 = index2.read() +soup2 = BeautifulSoup(html, features='html.parser') + +for i in soup2.find_all('a'): + # replace the characters which produces error while qhcp file + keyword = i.text.replace("<", "").replace("&", "") + keyword = re.sub(r" ?\([^)]+\)", "", keyword) + link = i['href'] + + if keyword != "": + line = '\n'.format(keyword, link) + qhp.write(line) + +# write the tail +qhp.writelines(""" + + ./* + _images/* + _sources/* + _static/* + c-api/* + distributing/* + distutils/* + extending/* + faq/* + howto/* + install/* + installing/* + library/* + reference/* + tutorial/* + using/* + whatsnew/* + +
    +
    """) + +# populate qhcp file +qhcp.writelines(""" + + + + + + help.qhp + help.qch + + + + + help.qch + + + + """) + +############################################################## +#qhp, qhcp input files are generate, now generate output files +############################################################# + +stream = os.popen('qhelpgenerator help.qhcp -o help.qhc') + +qhp.close() +qhcp.close() +index.close() +index2.close() diff --git a/cmake/COPYING-CMAKE-SCRIPTS b/cmake/COPYING-CMAKE-SCRIPTS new file mode 100644 index 0000000..4b41776 --- /dev/null +++ b/cmake/COPYING-CMAKE-SCRIPTS @@ -0,0 +1,22 @@ +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/cmake/FindDiscount.cmake b/cmake/FindDiscount.cmake new file mode 100644 index 0000000..4919ad6 --- /dev/null +++ b/cmake/FindDiscount.cmake @@ -0,0 +1,38 @@ +# - Find Discount +# Find the Discount markdown library. +# +# This module defines +# Discount_FOUND - whether the Discount library was found +# Discount_LIBRARIES - the Discount library +# Discount_INCLUDE_DIR - the include path of the Discount library + +# SPDX-FileCopyrightText: 2017 Julian Wolff +# SPDX-FileCopyrightText: 2018 Sune Vuorela +# SPDX-License-Identifier: BSD-3-Clause + +if (Discount_INCLUDE_DIR AND Discount_LIBRARIES) + + # Already in cache + set (Discount_FOUND TRUE) + +else (Discount_INCLUDE_DIR AND Discount_LIBRARIES) + + find_library (Discount_LIBRARIES + NAMES markdown libmarkdown + ) + + find_path (Discount_INCLUDE_DIR + NAMES mkdio.h + ) + + include (FindPackageHandleStandardArgs) + find_package_handle_standard_args (Discount DEFAULT_MSG Discount_LIBRARIES Discount_INCLUDE_DIR) + +endif (Discount_INCLUDE_DIR AND Discount_LIBRARIES) + +mark_as_advanced(Discount_INCLUDE_DIR Discount_LIBRARIES) + +if (Discount_FOUND) + add_library(Discount::Lib UNKNOWN IMPORTED) + set_target_properties(Discount::Lib PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${Discount_INCLUDE_DIR} IMPORTED_LOCATION ${Discount_LIBRARIES}) +endif() diff --git a/cmake/FindJulia.cmake b/cmake/FindJulia.cmake new file mode 100644 index 0000000..aba71a2 --- /dev/null +++ b/cmake/FindJulia.cmake @@ -0,0 +1,125 @@ +if(JULIA_FOUND) + return() +endif() + +# Find julia executable +find_program(JULIA_EXECUTABLE julia DOC "Julia executable") + +if(NOT JULIA_EXECUTABLE) + return() +endif() + + + + +# +# Julia version +# +execute_process( + COMMAND ${JULIA_EXECUTABLE} --version + OUTPUT_VARIABLE JULIA_VERSION_STRING + RESULT_VARIABLE RESULT +) +if(RESULT EQUAL 0) + string(REGEX REPLACE ".*([0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1" + JULIA_VERSION_STRING ${JULIA_VERSION_STRING}) +endif() + + + + +# +# Julia includes +# +if(${JULIA_VERSION_STRING} VERSION_LESS 0.7.0) + set(JULIA_BINDIR "JULIA_HOME") +else() + set(JULIA_BINDIR "Sys.BINDIR") +endif() + +execute_process( + COMMAND ${JULIA_EXECUTABLE} -E "joinpath(match(r\"(.*)(bin)\",${JULIA_BINDIR}).captures[1],\"include\",\"julia\")" + OUTPUT_VARIABLE JULIA_INCLUDE_DIRS + # COMMAND ${JULIA_EXECUTABLE} -E "abspath(joinpath(JULIA_HOME, \"../..\", \"src\"))" + # OUTPUT_VARIABLE JULIA_INCLUDE_DIRS + RESULT_VARIABLE RESULT +) +if(RESULT EQUAL 0) + string(REGEX REPLACE "\"" "" JULIA_INCLUDE_DIRS ${JULIA_INCLUDE_DIRS}) + set(JULIA_INCLUDE_DIRS ${JULIA_INCLUDE_DIRS} + CACHE PATH "Location of Julia include files") +endif() + +string(CONCAT JULIA_INCLUDE_TEST_FILE ${JULIA_INCLUDE_DIRS} "/julia_version.h") +string(REGEX REPLACE "\n" "" JULIA_INCLUDE_TEST_FILE ${JULIA_INCLUDE_TEST_FILE}) +IF (NOT EXISTS ${JULIA_INCLUDE_TEST_FILE}) + message(STATUS "Julia found, but include files are missing") + return() +endif() + + +# +# Julia library location +# +if(${JULIA_VERSION_STRING} VERSION_LESS 0.7.0) + set(JULIA_LIBDL_COMMAND "abspath(dirname(Libdl.dlpath(\"libjulia\")))") +else() + set(JULIA_LIBDL_COMMAND "using Libdl\; abspath(dirname(Libdl.dlpath(\"libjulia\")))") +endif() + +execute_process( + COMMAND ${JULIA_EXECUTABLE} -E ${JULIA_LIBDL_COMMAND} + OUTPUT_VARIABLE JULIA_LIBRARY_DIR + RESULT_VARIABLE RESULT +) + +if(RESULT EQUAL 0) + string(REGEX REPLACE "\"" "" JULIA_LIBRARY_DIR ${JULIA_LIBRARY_DIR}) + string(STRIP ${JULIA_LIBRARY_DIR} JULIA_LIBRARY_DIR) + set(JULIA_LIBRARY_DIR ${JULIA_LIBRARY_DIR} + CACHE PATH "Julia library directory") +endif() + +if(NOT ${JULIA_VERSION_STRING} VERSION_LESS 1.6.0) + set(JULIA_INTERNAL_LIBDL_COMMAND "using Libdl\; abspath(dirname(Libdl.dlpath(\"libjulia-internal\")))") + execute_process( + COMMAND ${JULIA_EXECUTABLE} -E ${JULIA_INTERNAL_LIBDL_COMMAND} + OUTPUT_VARIABLE JULIA_INTERNAL_LIBRARY_DIR + RESULT_VARIABLE RESULT + ) + + if(RESULT EQUAL 0) + string(REGEX REPLACE "\"" "" JULIA_INTERNAL_LIBRARY_DIR ${JULIA_INTERNAL_LIBRARY_DIR}) + string(STRIP ${JULIA_INTERNAL_LIBRARY_DIR} JULIA_INTERNAL_LIBRARY_DIR) + set(JULIA_INTERNAL_LIBRARY_DIR ${JULIA_INTERNAL_LIBRARY_DIR} + CACHE PATH "Julia internal library directory") + endif() +endif() + +find_library( JULIA_LIBRARY + NAMES julia + PATHS ${JULIA_LIBRARY_DIR} +) + +if(NOT ${JULIA_VERSION_STRING} VERSION_LESS 1.6.0) + find_library( JULIA_INTERNAL_LIBRARY + NAMES julia-internal + PATHS ${JULIA_INTERNAL_LIBRARY_DIR} + ) +endif() + +if(${JULIA_VERSION_STRING} VERSION_LESS 1.6.0) + find_package_handle_standard_args( + Julia + REQUIRED_VARS JULIA_LIBRARY JULIA_INCLUDE_DIRS + VERSION_VAR JULIA_VERSION_STRING + FAIL_MESSAGE "Julia not found" + ) +else() + find_package_handle_standard_args( + Julia + REQUIRED_VARS JULIA_LIBRARY JULIA_INTERNAL_LIBRARY JULIA_INCLUDE_DIRS + VERSION_VAR JULIA_VERSION_STRING + FAIL_MESSAGE "Julia not found" + ) +endif() diff --git a/cmake/FindLibSpectre.cmake b/cmake/FindLibSpectre.cmake new file mode 100644 index 0000000..c87d9ed --- /dev/null +++ b/cmake/FindLibSpectre.cmake @@ -0,0 +1,57 @@ +# - Try to find the libspectre PS library +# Once done this will define +# +# LIBSPECTRE_FOUND - system has libspectre +# LIBSPECTRE_INCLUDE_DIR - the libspectre include directory +# LIBSPECTRE_LIBRARY - Link this to use libspectre +# + +# SPDX-FileCopyrightText: 2006-2007 Pino Toscano +# SPDX-FileCopyrightText: 2008 Albert Astals Cid +# SPDX-License-Identifier: BSD-3-Clause + +if(LIBSPECTRE_INCLUDE_DIR AND LIBSPECTRE_LIBRARY) + + # in cache already + set(LIBSPECTRE_FOUND TRUE) + +else(LIBSPECTRE_INCLUDE_DIR AND LIBSPECTRE_LIBRARY) + +if(NOT WIN32) + # use pkg-config to get the directories and then use these values + # in the FIND_PATH() and FIND_LIBRARY() calls + include(FindPkgConfig) + + if(LIBSPECTRE_MINIMUM_VERSION}) + pkg_check_modules(_pc_LIBSPECTRE libspectre>=${LIBSPECTRE_MINIMUM_VERSION}) + else(LIBSPECTRE_MINIMUM_VERSION}) + pkg_check_modules(_pc_LIBSPECTRE libspectre) + endif(LIBSPECTRE_MINIMUM_VERSION}) +else(NOT WIN32) + # do not use pkg-config on windows + set(_pc_LIBSPECTRE_FOUND TRUE) +endif(NOT WIN32) + + +if(_pc_LIBSPECTRE_FOUND) + find_library(LIBSPECTRE_LIBRARY + NAMES libspectre spectre + HINTS ${_pc_LIBSPECTRE_LIBRARY_DIRS} ${CMAKE_LIBRARY_PATH} + ) + + find_path(LIBSPECTRE_INCLUDE_DIR spectre.h + HINTS ${_pc_LIBSPECTRE_INCLUDE_DIRS} + PATH_SUFFIXES libspectre + ) + + set(LIBSPECTRE_FOUND TRUE) +endif(_pc_LIBSPECTRE_FOUND) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LibSpectre DEFAULT_MSG LIBSPECTRE_LIBRARY) + +# ensure that they are cached +set(LIBSPECTRE_INCLUDE_DIR ${LIBSPECTRE_INCLUDE_DIR} CACHE INTERNAL "The libspectre include path") +set(LIBSPECTRE_LIBRARY ${LIBSPECTRE_LIBRARY} CACHE INTERNAL "The libspectre library") + +endif(LIBSPECTRE_INCLUDE_DIR AND LIBSPECTRE_LIBRARY) diff --git a/cmake/FindLuaJIT.cmake b/cmake/FindLuaJIT.cmake new file mode 100644 index 0000000..5b4d23d --- /dev/null +++ b/cmake/FindLuaJIT.cmake @@ -0,0 +1,13 @@ +find_package(PkgConfig) + +pkg_check_modules(LUAJIT QUIET luajit) + +find_path(LUAJIT_INCLUDE_DIR lua.hpp HINTS ${LUAJIT_INCLUDEDIR} ${LUAJIT_INCLUDE_DIRS}) +find_library(LUAJIT_LIBRARY NAMES luajit-5.1 luajit HINTS ${LUAJIT_LIBDIR} ${LUAJIT_LIBRARY_DIRS}) + +set(LUAJIT_LIBRARIES ${LUAJIT_LIBRARY}) +set(LUAJIT_INCLUDE_DIRS ${LUAJIT_INCLUDE_DIR}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LuaJIT DEFAULT_MSG LUAJIT_LIBRARY LUAJIT_INCLUDE_DIR) +mark_as_advanced(LUAJIT_INCLUDE_DIR LUAJIT_LIBRARY) diff --git a/cmake/FindQalculate.cmake b/cmake/FindQalculate.cmake new file mode 100644 index 0000000..298e8db --- /dev/null +++ b/cmake/FindQalculate.cmake @@ -0,0 +1,80 @@ +# - Try to find libqalculate +# Input variables +# +# QALCULATE_MIN_VERSION - minimal version of libqalculate +# QALCULATE_FIND_REQUIRED - fail if can't find libqalculate +# +# Once done this will define +# +# QALCULATE_FOUND - system has libqalculate +# QALCULATE_CFLAGS - libqalculate cflags +# QALCULATE_LIBRARIES - libqalculate libraries +# +# SPDX-FileCopyrightText: 2007 Vladimir Kuznetsov +# SPDX-License-Identifier: BSD-3-Clause + +if(QALCULATE_CFLAGS AND QALCULATE_LIBRARIES) + + # in cache already + set(QALCULATE_FOUND TRUE) + +else(QALCULATE_CFLAGS AND QALCULATE_LIBRARIES) + if(NOT WIN32) + include(FindPkgConfig) + + if(QALCULATE_MIN_VERSION) + pkg_check_modules(_pc_QALCULATE libqalculate>=${QALCULATE_MIN_VERSION}) + else(QALCULATE_MIN_VERSION) + pkg_check_modules(_pc_QALCULATE libqalculate) + endif(QALCULATE_MIN_VERSION) + + if(_pc_QALCULATE_FOUND) + if(${_pc_QALCULATE_VERSION} VERSION_LESS 2.0.0) + pkg_check_modules(_pc_CLN cln) + endif() + set(QALCULATE_CFLAGS ${_pc_QALCULATE_CFLAGS}) + endif(_pc_QALCULATE_FOUND) + + find_library(QALCULATE_LIBRARIES + NAMES + qalculate + PATHS + ${_pc_QALCULATE_LIBRARY_DIRS} + ${LIB_INSTALL_DIR} + ) + + find_path(QALCULATE_INCLUDE_DIR + NAMES + libqalculate + PATHS + ${_pc_QALCULATE_INCLUDE_DIRS} + ${INCLUDE_INSTALL_DIR} + ) + + if(_pc_QALCULATE_FOUND) + if(${_pc_QALCULATE_VERSION} VERSION_LESS 2.0.0) + find_library(CLN_LIBRARIES + NAMES + cln + PATHS + ${_pc_CLN_LIBRARY_DIRS} + ${LIB_INSTALL_DIR} + ) + endif() + endif() + + else(NOT WIN32) + # XXX: currently no libqalculate on windows + set(QALCULATE_FOUND FALSE) + + endif(NOT WIN32) + + set(QALCULATE_VERSION ${_pc_QALCULATE_VERSION}) + + include(FindPackageHandleStandardArgs) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(Qalculate DEFAULT_MSG QALCULATE_LIBRARIES ) + + mark_as_advanced(QALCULATE_CFLAGS QALCULATE_LIBRARIES) + +endif(QALCULATE_CFLAGS AND QALCULATE_LIBRARIES) + diff --git a/cmake/FindR.cmake b/cmake/FindR.cmake new file mode 100644 index 0000000..7b0b716 --- /dev/null +++ b/cmake/FindR.cmake @@ -0,0 +1,135 @@ +# - Try to find R +# Once done this will define +# +# R_FOUND - system has R +# R_EXECUTABLE - executable of R +# R_HOME - home directory of R +# R_INCLUDE_DIR - the R include directory +# R_LIBRARIES - Link these to use R + +# find the R binary +FIND_PROGRAM(R_EXECUTABLE NAMES R R.bat) + +SET(ABORT_CONFIG FALSE) +IF(R_EXECUTABLE) + + # find R_HOME + IF(NOT R_HOME) + EXECUTE_PROCESS( + COMMAND ${R_EXECUTABLE} "--slave" "--no-save" "-e" "cat(R.home())" + OUTPUT_VARIABLE R_HOME) + ENDIF(NOT R_HOME) + IF(NOT R_HOME) + MESSAGE(STATUS "Could NOT determine R_HOME (probably you misspecified the location of R)") + ENDIF(NOT R_HOME) + + IF(WIN32) + # remove R.bat header from R_HOME + STRING(REGEX REPLACE ".*\n" "" R_HOME "${R_HOME}") + # search for correct exe in R_HOME (R.bat is not working) + unset(R_EXECUTABLE CACHE) + FIND_PROGRAM(R_EXECUTABLE R HINTS ${R_HOME}/bin ${R_HOME}/bin/x64) + ENDIF() + + # find R include dir + IF(NOT R_INCLUDE_DIR) + IF(WIN32) # This version of the test will not work with R < 2.9.0, but the other version (in the else part) will not work on windows (and on windows the paths are generally standard, anyway). + EXECUTE_PROCESS( + COMMAND ${R_EXECUTABLE} "--slave" "--no-save" "-e" "cat(R.home('include'))" + OUTPUT_VARIABLE R_INCLUDE_DIR) + ELSE(WIN32) + EXECUTE_PROCESS( + COMMAND ${R_EXECUTABLE} CMD sh -c "printf $R_INCLUDE_DIR" + OUTPUT_VARIABLE R_INCLUDE_DIR) + ENDIF(WIN32) + ENDIF(NOT R_INCLUDE_DIR) + + IF(NOT R_INCLUDE_DIR) + SET(R_INCLUDE_DIR ${R_HOME}/include) + MESSAGE(STATUS "R_Home not findable via R. Guessing") + ENDIF(NOT R_INCLUDE_DIR) + + FIND_PATH(R_INCLUDE_DIR R.h) + + # check for existence of libR.so/R.dll + IF(WIN32) + set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll") + ENDIF() + + FIND_LIBRARY(R_R_LIBRARY R + HINTS ${R_HOME}/lib ${R_SHARED_LIB_DIR} ${R_HOME}/bin ${R_HOME}/bin/x64) + IF(NOT R_R_LIBRARY) + MESSAGE(STATUS "libR/R.dll not found. Make sure the location of R was detected correctly, above, and R was compiled with the --enable-shlib option") + ELSE(NOT R_R_LIBRARY) + GET_FILENAME_COMPONENT(R_SHARED_LIB_DIR ${R_R_LIBRARY} + PATH) + SET(R_LIBRARIES ${R_R_LIBRARY}) + ENDIF(NOT R_R_LIBRARY) + + # for at least some versions of R, we seem to have to link against -lRlapack. Else loading some + # R packages will fail due to unresolved symbols, or we can't link against -lR. + # However, we can't do this unconditionally, + # as this is not available in some configurations of R + + FIND_LIBRARY(R_LAPACK_LIBRARY + Rlapack + HINTS ${R_SHARED_LIB_DIR} ) + IF(NOT R_LAPACK_LIBRARY) + #MESSAGE(STATUS "No, it does not exist in ${R_SHARED_LIB_DIR}") + ELSE(NOT R_LAPACK_LIBRARY) + #MESSAGE(STATUS "Yes, ${R_LAPACK_LIBRARY} exists") + SET(R_LIBRARIES ${R_LIBRARIES} ${R_LAPACK_LIBRARY}) + IF(NOT WIN32) + # Query gfortran to get the libgfortran.so path + FIND_PROGRAM(_GFORTRAN_EXECUTABLE NAMES gfortran) + IF(_GFORTRAN_EXECUTABLE) + EXECUTE_PROCESS(COMMAND ${_GFORTRAN_EXECUTABLE} -print-file-name=libgfortran.so + OUTPUT_VARIABLE _libgfortran_path + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + ENDIF() + IF(EXISTS ${_libgfortran_path}) + SET(GFORTRAN_LIBRARY ${_libgfortran_path}) + ELSE() + # if libgfortran wasn't found at this point, the installation is probably broken + # Let's try to find the library nonetheless. + FIND_LIBRARY(GFORTRAN_LIBRARY gfortran) + ENDIF() + IF (GFORTRAN_LIBRARY) + # needed when linking to Rlapack on linux for some unknown reason. + # apparently not needed on windows (let's see, when it comes back to bite us, though) + # and compiling on windows is hard enough even without requiring libgfortran, too. + SET(R_LIBRARIES ${R_LIBRARIES} ${GFORTRAN_LIBRARY}) + ELSE (GFORTRAN_LIBRARY) + MESSAGE(STATUS "gfortran is needed for Rlapack but it could not be found") + SET(ABORT_CONFIG TRUE) + ENDIF (GFORTRAN_LIBRARY) + ENDIF(NOT WIN32) + ENDIF(NOT R_LAPACK_LIBRARY) + + # for at least some versions of R, we seem to have to link against -lRlapack. Else loading some + # R packages will fail due to unresolved symbols, or we can't link against -lR. + # However, we can't do this unconditionally, + # as this is not available in some configurations of R + + FIND_LIBRARY(R_BLAS_LIBRARY + Rblas + HINTS ${R_SHARED_LIB_DIR} ) + IF(NOT R_BLAS_LIBRARY) + #MESSAGE(STATUS "No, it does not exist in ${R_SHARED_LIB_DIR}") + ELSE(NOT R_BLAS_LIBRARY) + #MESSAGE(STATUS "Yes, ${R_BLAS_LIBRARY} exists") + SET(R_LIBRARIES ${R_LIBRARIES} ${R_BLAS_LIBRARY}) + ENDIF(NOT R_BLAS_LIBRARY) + +ENDIF( R_EXECUTABLE ) + +IF(ABORT_CONFIG) + SET(R_FOUND FALSE) +ELSE(ABORT_CONFIG) + INCLUDE(FindPackageHandleStandardArgs) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(R DEFAULT_MSG + R_EXECUTABLE R_INCLUDE_DIR R_R_LIBRARY) + + MARK_AS_ADVANCED(R_INCLUDE_DIR R_R_LIBRARY R_LAPACK_LIBRARY R_BLAS_LIBRARY) +ENDIF(ABORT_CONFIG) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 0000000..1e5c727 --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,4 @@ +########### install files ############### +# + +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR cantor) diff --git a/doc/create-dlg.png b/doc/create-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..065286750dcbf3dc82b11026a02081a83acb667c GIT binary patch literal 3053 zcmb`}dpK0-9{_OGwzWxCx?=ftZN$e65 z5)#qXfnO66+JXkp7j|v~f5qKngN1~)30*ZX)n5Jo#mdU+^71#9H-}((8MFive6+N@ z^qF933G_7mgFXkq=Wm$j1Hc#az^0f5fUo9&+1amVX6Jab zv)`DRo!yK(Gt1@u8}1C3%lm@E<*~Wke_(Ujn@qFWQ=3h*r$AHxz?zz7O-)ULSW^>| ztnrD-v2iA2bZq23gH9hA9{$$QFr79uJTOS3_7C*-^>3hl)!j?&?xFtG(@W{X;}`Gh8$q>o^|kNn zYu?q>)Yeti)K*s4;wx)#mDMh4pj_A+^~Hr3Vn2??Y~0CnaNkSm%e{4ye;#on-%}^WgdiYc&=4q5jA*+D z{T&*64BH?DUQRzm6x>x`GWWAHod>ej_?Cw>0X7>xgR!*hp6DKOFnS=Z39P~ojbn^c zxT-+5v2qx6;|`AbG?dT+Fn!CNCET~^} zx!A6fu_rdx*PUyl5LfWZT$M5}+7n@O@`Yq+gw6QrK~=@660fq=9YCs)uOGUoFTBfH z>12+Qixfqc^t2Q6f~ws{j5@o+LH*d`hr@;bG%|j4WX>JCDDLIdzE1@eb(hzbSA)pj z)fA(fqp!~7vfe7JyY!zDp07WEIl#dNUCz88sAzZRTGr9;m!)0$);O47NwMq-wLRx} zPXr2-9JwD$g^y3eP35og=lLqV2Y6m_RpkAKeS=tmv*S zZ$6~x9=%o3SGFhgp(rPYK&XVZRC&UW4}4(46Yr9i6DqUY*%!U2zgG&|q#K!XF3>Kz zMIJccNNqnZTZgT+h)>jE-S14!8^1_2OS~9$*de zc21GEOOn~6OA{lzP$zXrzXPt4jy+S|0Uqp0_7S(Fvjjj? z>J2uwhO%g&nSuCE!{r(N37fz+Zb^*^k3Fd_UZ7suNm zqSRF!ExZ9{if-WY#E4o-*{wO}8enXGRbD*|4vbTc-Lv0mN~nGNf95^tMB{! zFa3L1Pt-YXyEY_D&JqQ|ia zsxo%r3WJqq@i5F;a<9forYl<9AR+J=MSB{PZJksn8rbY@ zipak%f(u-4zRtlgiwWGAM3-g#FuI@{nnn+O3{eO zWY@MCX4L=*H~L2#I&{G*tG_=)u)Y9zdOOTi(CA6g`+#Uya(TF~U(!Jd9CX4L) z0rW84((frVYP|sE(sL@bWwrnZq|)LO@1E%}IurH5pILR?KFYV#KigO2Lz=&9im%#~ z#L!R41<}Zod?HYEzr*E+)nNP;V0%hg`l^{|!)k0m(+S@}6`E}iQwm+G?0pbz$dIRq zO9WGD2&k9Hx!<^0$)6wg>&;}!$Mx;4bw4XS-iwX*&{#0kRn@2n7=P`n(@V3hi_maS zPI?_#OIf(Y95n>=y_|35JFS|9m)SpL!zK#={7PWyu8vb~tS5pN1r@r7d}36GwZ`p= zhMcwOQ3vn*0$Nj5Q4=c7L!>t*gixs+o}JA>122G#^12(A!>q--@c@q;_I3=YX)2v~vtVxYOGvvDFvqVuGIUxN%*7J<%9lmGFM(f|o?JV7R%g^&P zIyyP2+^OYJZgWe}vLuH!o~;u3GH|e{!YBwckgm27Jpb~okpBU5N-fv` literal 0 HcmV?d00001 diff --git a/doc/differentiate-dlg.png b/doc/differentiate-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..afae50271f0d28a67e9058487340c72d5dd5e57c GIT binary patch literal 3019 zcmZ|Rc{r478vyV@i$lhVlTs2noi-;VNi(JxW6P4V8%t#k*>^^qN+Q&Vv8HIUWM4@^OX{i8MZ55Z!y z|Axh8vDm9$t*o-PtgQZNGbJOT%Tyu(^Ts8 z6qWXIiu&Q>)Wqb6@rlXt@d?WK#QXQ-BV+G}M@9#SMg|6l`v-@%3~V6}43hf?`^f!o z-;sOY_I3BX1-g1jKvzd6iTI|I(9uC4cC-_TZ3JR#JE66WfNyU7QB!kE6TYPp-@K)% zxuFSP--xekXnI}WSX>z#t*gep-cnOrRgJ5tswuCmE~}_2EvqaktJEx; z(JTK{Tv`q$7;#?z40yd+H8<0r`p z=%kxyY*b>}!vu6-Ok%{{`>2RJq2ZCiVc|g`sDPjlzknc5Z$CE=Zx=TY2N$;+POf$i z&NerktnKWrY_6MI*_fDH8JUj`B?W>lZD`@IMSb z$_*w>1xo?K7^Q2X?>1puc}ArLoV#H(fI0E@clkrkIlmw)SE36rVK&q>No`cSv)OF5 zN*fb;X$@Du8MlTVtH3GcvpH@Cye|4)E$S!vy~|{uJmn!y=sG3s{fM28v_lyA$fsPm zWilqEg_oAdYoqX#HAnOf?jYK4-V{6krgsLfYH?g&0qy<#w><<5J}G{8gFI=ZT}D%T z1i$MOua&{>nF!G@aOup)Q(yELr%CtaKYl;w36U6x0*Qw_p_M zn_@nZy&lImCR@x?0vxkvfwIJR+>QZq;&-+}yW~p`i=KS6_R4Ztx&^aJ1QWz3hc%Oz z1wegIP6=hbOPs>)inGtI+O|+N8aqRM2Lc&aOP>U#Xf-&YWRn`SZSMyq3^vLy^1|Qv z)i8c4)E~q{!({sj{MQcHO)jTggFT4c{hEy81<57eN2Mz-e+W&%9Rr`XvS!}C)gRA{ z`9P8smvps@8kmdZ$DNUu2$q+BfU&yeJ(rfOE8;PK3nSxsk`8T{sZb)$Kzerf8ukKJQMP;N@AyxN)oI&=@l_@ zqh)+MLUjRe#|%>??Pz+(i2D7UL%>t zXNW;5OU{-CrF;tS{Mw?FE9IET^1A&V53AddF?=p^f;2(cYcf@1J1D)7AGxozthyUI zW&s*Zw9qm&?PQL-YaH++3fOf)bS#F#^V7PMcDoM@b&@VUi1Dfp^;d#>?ah(`y^1eg z+oh1S_ctk5K&e*&mCz43b>45DoFZ6|gcBdfx&vuK7&<#^#6Nm)9n|UuIPpBcIpB6m zhPP%EdScHdzEvfNRm|dv+gh^8GuGK~WhvW(sWH=)TGl5U?B~=yPSN)jX2&uHukHC z18L7}K)0RYd8i7KEv?f2s*+7L;GkiZ+<1#XRHMep1kOcskMEZne!dQlV`Z$LxzCzj zu#x?8u(=tmXRo(lkq)ont+85ZNGQL>#t`Yxs@9cw(n!)e0%Hn3xnhSKi#%XRjtfvb zpkdoK+OrIu5v^AW0l!-&_In;tBrxaXyICAuy;owkBiQ1@5yyhn=Zo>2>ZOnF#OSLl6J(5SjGi(8~2m zD~w-xrDoMMw=Fnd^(p*#&U{SW=LO`apMAu@mSwU}+0qHF(Or=1UHqQ?dWe$hpiN38F^*>_*q*JCHzfYxvU_h!#3R?WM&p>kbGp=?ZScxygz~=MgBVwV z@>#6C&Dzl^(>l9~jRfx*n~_wS2MM~#0-PnY(j7MLdS9^9^hvBz;fP{35h|U#60@B) zl&2UKL3~|=_NB*(@ue5+-e)7TcFFE!HN15#p;)aEn{lOgoXBq3JbSBizz3i zn_Rmq;~ckK)+DZ9sr>Mvv2|XtSNg^#zD=d;2ysrJ+nxLWJVxuN9~=4)FtfuRC3FuP zuSom80q;TMW*7WOkJBLVkYBr;nRgT|GbcoZuA9tg3Bi+2(fM z(OBvRdTmZ9O}U`ldTDyiIv;k&ApGDd?9uoS0}5!`s(5f)=q-X}`}FAXCk6Wz1nm!N z)fgnmh@Y&@WcBIwG^7X4uSvsoqps7C<61zS=183*tc+Cw%;%-dUu8JSU*Ptk zzY!R4ZZHieL34)PS_L(W#oBYLO6V`_S2fP&ilqdkQG)!?Hw&1zbRE0qGG3+(0AuWc ocE258$Le3BW9t%No4v{N{_yXnG~qjz+)Fx02VtO5q;41aU#BM5E&u=k literal 0 HcmV?d00001 diff --git a/doc/import-dlg.png b/doc/import-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..9827fe011f40818e168cfef779ffd719d6013f5a GIT binary patch literal 2088 zcmajhc{H0@0|xMP^VQzYj7%FJT4hQj)z!4s*eb;gDV3nHMzuxq*{X`Rw2X>|W9cYk z*Bw(Du|x!keXF9iBnXO@$Rg4Zq3yg~rc<+h&-tBuo_o)I|9bDa=f>G0EfnP-av%^$ z(aO^NBnY%d9_Zd1*8yWsmi9IfXdTGb8iiQ-f00U8{$g1w1$@eqRQj1@Nh*1eiyxPsAWfQ-aEyvM@V`?~ z^vI-W!n3I7-h+btyAOhIQ?hdNGqQ6dG7BAkp{Ay1rlh7P-b{;6Nh74B`^O}OM@ENT zjtC9EeBokPP;iJ}KoHI^&>QD>#vAW>*2fj=g>m&jJ2~5-9Bu4SR@Sx%E2Jsn2cu&a zhQ{WH;bsR8!_BWO*MmUoC#=j(QK4&iEMtFG=oY%rSt`S?$V9d`((5-}NJQzLk5zhl zX^u4&5&eCms>u;FHOV$}V_VvF8G@~B%|k0_Qp!E~lbbDn#>iM_Z`m_AXZTKbZ*nir z{*8-VSnaW#mRnilJ6;A%9qsTg~Y-2^%iW@ z&qffbBwuDCUzWGn|6w!h(IuaJJ72d+x-1Ox_*n-2nkt449*MnHo&4W^ z>UvIOU{Q9^GvQwd; z7c%+e3bKDYbF)KV6w*RXHcLxRHv?2%@oUFepO0w^GXbKr@QqJUdE{}fdfMZ!+s3J2wUGb0Gn`p2b4Sye)86UYoAoim)G9kW{MAz$*ahNuA|ed^|=mg zv!%`^6}dcUT&N5SCfUPg-amC{kF%}1fKjl#tl833x-Gb=uVS#z<_><%-SAuDHqzDN z=7XIiDQSbtd9RS&IM5WM5#=Bjw5o9&=fs5UbYf7dj~tBKOFg5=UW@6B1xwU5FnJp= zWBbkT!<)`^bU@zEKGM5}&~x^{Ah(UF7_X%HY`C@_pKNo~1Eaa~s-xSmM@Fd5dc56A zYGBiW&}{rZzE({z_@oE8H<4^Y9NqHD`RLhUPd(tTMV!m>UlT9Sexck9BQ(H zcs@ESHpsxxvC@dpHu3za*Jf#5PFZR!8E$pHD@kl?S>*55nm;6h5!?kTZOZeF{D&5_ zkozkBK9Ku?)|M8vTObF`Ud($JithTRvvwzY$GcQI5qGNPYNGazB;Rwf#049US34#%NW_4#dU! z44=YreN+m4mS;nRDqzprErKiIzRo%e`?_u>U&_`T!lNiyVTdVsDxy8#NqHGEa>IFTpRTQ? z>Pk3qfS+_82d25B6OJ@APou+1T*EnCiEp%W^N)@$0pH$O8LTOWiIDHQ4@J7pfs^%7 z29pV`36plZIe2SwGQlCy9MbHbJVfo&EHr>CG#~=)I}0f{ZFc3}kv-F8#uqdzOOEZ= z7-@$M)(bq~L1Z!ODzYq^aE`>buN#T_7G17&!vcR; z3g4Yw{*N=w?c6X9I2njnM0EB$MiFUxanTR0x6 +ATEX"> + + +]> + + + +The &cantor; Handbook + + + + +Alexander +Rieder + +alexanderrieder@gmail.com + + + + + +2009 +Alexander Rieder + +&FDLNotice; + +2020-12-16 +Applications 20.12 + + + +&cantor; is an application, aimed at providing a +nice worksheet view to other Free Software Math packages. + + + + +KDE +kdeedu +mathematics +math +Cantor +Julia +Lua +Maxima +Octave +Python +Qalculate +R +Sage +Scilab + + + + + +Introduction + + +&cantor; is an application to allow you to you use your favorite +mathematical applications from within an elegant &kde;-integrated +Worksheet Interface. It provides dialogs to assist with common tasks +and allows you to share your worksheets with others. + + + + +Using &cantor; + + +Screenshot: + +Here is a screenshot of &cantor; + + + + + + Screenshot + + + + + + + +&cantor; features + + Intuitive worksheet view for evaluating expressions. + Results of graph plotting shown inside the worksheet. + Easy plugin-based structure to allow different backends to be added. + GetHotNewStuff integration to allow example worksheets to be downloaded (or uploaded.) + Mathematical formula typesetting using &latex;. + Backend-aware syntax highlighting. + Plugin-based assistant dialogs to help with common tasks, such as integrating a function, or entering a matrix. + + + + +The &cantor; backends + + &cantor; offers you several choices for the backends you wish to use with it. + The choice to make depends on what you want to achieve. + + + Currently the following backends are available: + + + Sage: + + + Sage is a free open-source mathematics software system licensed under the GPL. + It combines the power of many existing open-source packages, within a common Python-based interface. + See https://sagemath.org for more information. + + + + + Maxima: + + + Maxima is a system for the manipulation of symbolic and numeric expressions, + including differentiation, integration, Taylor series, Laplace transforms, + ordinary differential equations, systems of linear equations, polynomials, sets, + lists, vectors, matrices, and tensors. Maxima yields high-precision numeric results + by using exact fractions, arbitrary precision integers, and variable precision + floating point numbers. Maxima can plot functions and data in two and three dimensions. + See http://maxima.sourceforge.net for more information. + + + + + R: + + + R is a language and environment for statistical computing and graphics, similar to the S language and environment. + It provides a wide variety of statistical (linear and nonlinear modelling, + classical statistical tests, time-series analysis, classification, clustering, ...) + and graphical techniques, and is highly extensible. The S language is often the + vehicle of choice for research in statistical methodology, + and R provides an open-source route to this. + See https://www.r-project.org for more information. + + + + + Julia: + + + Julia is a high-level, high-performance dynamic programming + language for technical computing, with syntax that is familiar to users of + other technical computing environments. It provides a sophisticated + compiler, distributed parallel execution, numerical accuracy, and an + extensive mathematical function library. + See Julia documentation for more information. + + + + + &kalgebra;: + + + &kalgebra; is a MathML-based graph calculator, that ships with &kde; Education project. + See https://edu.kde.org/kalgebra/ for more information. + + + + + Qalculate!: + + + Qalculate! is not your regular software replication of the cheapest + available calculator. Qalculate! aims to make full use of the superior + interface, power and flexibility of modern computers. The center of + attention in Qalculate! is the expression entry. Instead of entering each + number in a mathematical expression separately, you can directly write the + whole expression and later modify it. The interpretation of expressions is + flexible and fault tolerant, and if you nevertheless do something wrong, + Qalculate! will tell you so. Not fully solvable expressions are however not + errors. Qalculate! will simplify as far as it can and answer with an + expression. In addition to numbers and arithmetic operators, an expression + may contain any combination of variables, units, and functions. + See https://qalculate.github.io/ for more information. + + + + + Python2 and Python3: + + + Python is a remarkably powerful dynamic programming language that is used +in a wide variety of application domains. There are several Python packages +to scientific programming. + + Python is distributed under Python Software Foundation license (GPL compatible). + See the official website for more information. + + + + This backend adds an additional item to the &cantor;'s main menu, Package. The only item of this menu is PackageImport Package. This item can be used to import Python packages to the worksheet. + + + + + + Scilab: + + + Scilab is an free software, cross-platform numerical computational package + and a high-level, numerically oriented programming language. + + Scilab is distributed under CeCILL license (GPL compatible). + See https://www.scilab.org/ for more information. + + + + You need Scilab version 5.5 or higher to be installed in your system to make this backend usable. + + + + + + Octave: + + + &GNU; Octave is a high-level language, primarily intended for numerical + computations. It provides a convenient command line interface for + solving linear and nonlinear problems numerically, and for performing other + numerical experiments using a language that is mostly compatible with MATLAB. + See https://www.gnu.org/software/octave/ for more information. + + + + + Lua: + + + Lua is a fast and lightweight scripting language, with a simple procedural syntax. There are several libraries in Lua aimed at math and science. + + + See https://www.lua.org/ for more information. + + + This backend supports luajit 2. + + + + + + + + +The &cantor; Workspace + + + Screenshot of the &cantor; Workspace + + + + + + Screenshot of the &cantor; Workspace + + + + + + The Worksheet interface of &cantor; consists of three parts: + + The tab bar, where you can switch through the open worksheets. + A help panel, where help for a specific command is displayed if you enter ?? command, describe(command) or example(command) (Maxima backend). + A Variable Manager panel where you can see the list of all available variables on the current worksheet. The Help and Variable Manager panels are shown as tabs on a sidebar of a &cantor; window. Variable manager can be used for Maxima (if enabled on SettingsConfigure &cantor;... Maxima page), &kalgebra;, Octave, Python2, Python3, Qalculate, and Scilab backends only. + The worksheet itself. + + + +The Worksheet + + The worksheet is the basic area for working with &cantor;. Using it, you can enter + expressions, allow the backend to perform calculations, and look at the results. + The commands the worksheets accept depend on the chosen backend, so you should + learn the appropriate backend syntax (the Show Help button takes you there directly). + If you know the command, but you need additional information, you can type "? command", + and contextual help will appear on the right of the worksheet. + If you want to see some example worksheets, you can go to FileDownload Example Worksheets menu item, and download worksheets other users have published. + + + To control each command entry of the worksheet you can use control buttons shown at the right part of the worksheet when hovering the entry field with a mouse cursor. There are three basic actions for each entry: Evaluate Entry to update the result of calculations for the entry, Drag Entry to move the entry at the other place of the current worksheet and Remove Entry to remove the entry from the current worksheet. + + + Font settings and alignment of worksheet entries can be changed using a toolbar above the worksheet. + + + Settings + + The Settings menu allows you to change some settings of the appearance of your + current worksheet. + + + + Typeset using LaTeX + + + This setting changes the way results are presented to you. If enabled, it passes the result through + the &latex; system, to produce visually appealing formulas. For example, 3*x^2*sqrt(2)*x+2/3 becomes + + + + + 3*x^2*sqrt(2)*x+2/3 + + + + + + Syntax Highlighting + + + Syntax Highlighting increases the readability of code, by highlighting + keywords, or matching brackets in different colors. + + + + + Completion + + + When this is enabled, &cantor; will show you possible completions + for the command you are currently typing when you press the Tab-key. If there is only one choice + remaining, it will insert the rest of the command for you. + + + + + Line Numbers + + + This setting controls whether the different expressions should have a number in front. This allows you + to recall older results - in Maxima, for instance, this is done with the %O1 command. + + + + + Animate Worksheet + + + This setting controls whether the different animations will be used to highlight changes on a worksheet. + + + + + Embedded Math + + + This setting controls whether rendering math expressions inside $$..$$ in Text and &Markdown; entries is enabled by default (needs pdflatex installed). + + + + + + + + +The assistant dialogs + +There are several assistant dialogs implemented in &cantor; to alleviate some basic operations. + + +These dialogs can be accessed using the main menu items. Each backend has its own assistant dialogs. + + +The Create Matrix dialog + + Screenshot of the &cantor; matrix creation dialog + + + + + + Screenshot of the &cantor; matrix creation dialog + + + + +This dialog can be used to input matrices. You can define matrix dimensions and its elements. + + +It is possible to navigate between cells quickly during input using the key. + + + +Matrix operation dialog + + Screenshot of the &cantor; matrix input dialog + + + + + + Screenshot of the &cantor; matrix input dialog + + + + +This dialog allows entering name of the matrix to compute its eigenvectors, eigenvalues or invert matrix. The default value (%) is used to refer to the previous result of calculation or input. + + + +Differentiation dialog + + Screenshot of the &cantor; differentiation dialog + + + + + + Screenshot of the &cantor; differentiation dialog + + + + +This dialog allows entering expression of the function to differentiate, the name of the variable and the order of derivative. + + + +Integration dialog + + Screenshot of the &cantor; integration dialog + + + + + + Screenshot of the &cantor; integration dialog + + + + +This dialog allows entering expression of the function to integrate, the name of the variable and the limits of integration (for the definite integral). + + + +Solve equations dialog + + Screenshot of the &cantor; solve equation dialog + + + + + + Screenshot of the &cantor; solve equation dialog + + + + +This dialog allows entering equations to solve (each equation in a separate line) and the variables to determine (separated by the comma). + + + +Package import dialog + + Screenshot of the &cantor; package import dialog + + + + + + Screenshot of the &cantor; package import dialog + + + + +This dialog allows entering name of the package to import (⪚ numpy for Python). + + + +Plot dialog + + Screenshot of the &cantor; plot dialog (Functions tab) + + + + + + Screenshot of the &cantor; plot dialog (Functions tab) + + + + +The options of this dialog are separated into two groups using tabs. The Functions tab allows entering functions to plot. + + +To enter new function click on the Add. Double-click on the Title cell and enter the title, then double-click on the Expression cell and enter the function expression. + + + Screenshot of the &cantor; plot dialog (Options tab) + + + + + + Screenshot of the &cantor; plot dialog (Options tab) + + + + +The Options tab is used to define plot and legend options. You can fine-tune almost every plot option to obtain the pleasant look of your figure. + + + +Plot 2D dialog + + Screenshot of the &cantor; plot 2D dialog + + + + + + Screenshot of the &cantor; plot 2D dialog + + + + +This dialog allows entering expression of the function, its variable and the limits for this variable. + + + +Plot 3D dialog + + Screenshot of the &cantor; plot 3D dialog + + + + + + Screenshot of the &cantor; plot 3D dialog + + + + +This dialog allows entering expression of the function, its variables and the limits for each variable. + + + + + + +Command Reference + + +The main &cantor; window + + +&cantor; has the common &kde; menu items, for more information read the Menu chapter of the &kde; Fundamentals. + + +Below is the list of the additional or special menu items in &cantor;. Please note that some menus are only shown for backends that have corresponding implementation. + + + +The File Menu + + + + + +&Ctrl;N + +File +New + +Creates a new worksheet with the default backend. + + + +File +New +Backend + +Creates a new worksheet with the chosen backend. + + + + +&Ctrl;O + +File +Open... + +Open a supported new worksheet with the file dialog. + + + +File +Open Recent + +Choose a worksheet from a list of recently used files. + + + +File +Download Example Worksheets + +Opens the dialog to download examples uploaded by other &cantor; users with + GetHotNewStuff. + + + +File +Open Example + +Opens the dialog to choose an example to load. The examples should be downloaded with File +Download Example Worksheets beforehand. + + + +File +Save Plain Text + +Allows saving the current worksheet as a plain text document. + + + +File +Export to LaTeX + +Allows saving the current worksheet as a &latex; document. + + + +File +Publish Worksheet + +Opens the dialog to publish your current worksheet and make it available to other &cantor; users through + GetHotNewStuff. + + + +File +Run Script + +Allows to load and run the batch scripts for the current backend. + + + + + + + +The View Menu + + + +ViewPanels +Allows you to toggle the visibility of some tabs in the sidebar. Choices are: + + + File Browser + Toggles the visibility of the File Browser tab in the sidebar. + + + + Help + Toggles the visibility of the Help tab in the sidebar. + + + + Variable Manager + Toggles the visibility of the Variable Manager tab in the sidebar. + + + + + + +&Ctrl;+ + +View +Zoom In + +Zoom in the current worksheet by 10%. + + + + +&Ctrl;- + +View +Zoom Out + +Zoom out the current worksheet by 10%. + + + +View +Show Script Editor + +Opens the batch script editor window for the current backend. + + + + + + +The Worksheet Menu + + + + + +&Ctrl;E + +Worksheet +Evaluate Worksheet + +Triggers the evaluation of the whole worksheet. + + + + +&Shift;&Enter; + +Worksheet +Evaluate Entry + +Triggers the current entry evaluation. + + + + +&Ctrl;&Enter; + +Worksheet +Insert Command Entry + +Inserts a new command entry below the current cursor position. + + + +Worksheet +Insert Text Entry + +Inserts a new text entry below the current cursor position. + + + +Worksheet +Insert Markdown Entry + +Inserts a &Markdown; entry below the current cursor position.. + + + +Worksheet +Insert LaTeX Entry + +Inserts a &latex; entry below the current cursor position.. + + + +Worksheet +Insert Image + +Inserts an image below the current cursor position. + + + +Worksheet +Insert Page Break + +Inserts the page break below the current cursor position. + + + +Worksheet +Collapse All Results + +Collapse all results of the command entry. + + + +Worksheet +Expand All Results + +Expand all results of the command entry. + + + +Worksheet +Remove All Results + +Remove all results of the command entry. + + + + +&Shift;∇ + +Worksheet +Remove current Entry + +Removes current entry from the worksheet. + + + + + + +The Linear Algebra Menu + + + + +Linear Algebra +Create Matrix + +Opens the matrix creation assistant dialog. + + + +Linear Algebra +Compute Eigenvalues + +Opens the matrix name input assistant dialog to compute its eigenvalues and dimensions of the multiplicities of the eigenvalues in the corresponding order. + + + + +Linear Algebra +Compute Eigenvectors + +Opens the matrix name input assistant dialog to compute its eigenvalues, dimensions of the multiplicities of the eigenvalues and eigenvectors in the corresponding order. + + + + +Linear Algebra +Invert Matrix + +Opens the matrix name input assistant dialog to find the inverse of the matrix. + + + + + + + +The Calculate Menu + + + + +Calculate +Differentiate + +Opens the differentiation parameters dialog. + + + + +Calculate +Integrate + +Opens the integration parameters dialog. + + + + +Calculate +Solve equations + +Opens the parameters input dialog to solve linear and non-linear equations. + + + + + + + +The Package Menu + + + + +Package +Import Package + +Opens the package import dialog. + + + + + + + +The Plot Menu + + + + +Plot +Plot + +Opens the plot parameters dialog. + + + + +Plot +Plot 2D + +Opens the plot parameters dialog. + + + + +Plot +Plot 3D + +Opens the plot parameters dialog. + + + + + + + +The Settings and Help Menu + +&cantor; has the common &kde; Settings and Help +menu items, for more information read the sections about the Settings Menu and +Help Menu +of the &kde; Fundamentals. + + + + + + + + +Questions and Answers + + + + The Menu Item Typeset using LaTeX is not available + Not every backend supports every option. Current version supports &latex; output for Maxima, Qalculate! and Sage backends. + + + I have installed Sage/Maxima or other supported CAS, but the appropriate backend does not appear. + + + One possible explanation is that &cantor; did not correctly detect the location. Go to the SettingsConfigure &cantor;... dialog and change + the Path to the appropriate application on the backend's page. + + + + + What a peculiar name - what does it have to do with mathematics? + &cantor; is named after the German mathematician Georg Cantor, the creator of set theory. + + + + + + +Credits and License + + +&cantor; + + +Program copyright 2009-2011 Alexander Rieder alexanderrieder@gmail.com + + + +Documentation Copyright © 2009-2011 Alexander Rieder alexanderrieder@gmail.com + + + + +&underFDL; +&underGPL; + + +&documentation.index; + + + diff --git a/doc/integrate-dlg.png b/doc/integrate-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..6e486dbf642fc06ae5c0d67ca20643717938dafc GIT binary patch literal 4674 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 US%Yhy@@@$5Tux24SlTr3zc;lXYybcN literal 0 HcmV?d00001 diff --git a/doc/latex_formula.png b/doc/latex_formula.png new file mode 100644 index 0000000000000000000000000000000000000000..4bf723c60163ca2729238be3224cca573db41bfb GIT binary patch literal 597 zcmV-b0;>IqP)F!bn~h45Ql<3^I_C=y)VY(0cLS? z*BNyK4A-Hco>J+aZ!Cwb2jqIlh4qM{R9sKW3=7@i0a)sId@TR0ki6o zzO(<z5=B!n(|L0+BnG?E=v?nPWoY_B@$8 j45I52H+X6JC}jNsv|3iEwy{o800000NkvXXu0mjfepd+j literal 0 HcmV?d00001 diff --git a/doc/matrix-dlg.png b/doc/matrix-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..245f322a6f783238b74a8e5a8726472c489726d0 GIT binary patch literal 2042 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 literal 0 HcmV?d00001 diff --git a/doc/plot-dlg2.png b/doc/plot-dlg2.png new file mode 100644 index 0000000000000000000000000000000000000000..5d2364dcfae759cdb76fbc1e3be20464a1eaf3ea GIT binary patch literal 9465 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 WHC4iQ3QoSL_ef3We&Ib3?0*0~-xDVQ literal 0 HcmV?d00001 diff --git a/doc/plot2d-dlg.png b/doc/plot2d-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..d03452cd3c3a12303715497a28ea654c88bee586 GIT binary patch literal 3645 zcma)k4g>*aQH8 zkiMR_8Se@K0N;8+eqPkQyfqmB_<{3A7j)SFhp|{}Ci9=LnE$ZVRVL$i7)-{08=b-U z4xO>`4cZF*2P-t%@6gt4nMR}XSpETZnfjGqwnU{a{$z=|$Yb#r3yVvX#YG+q-~3wq zPd`stoTDuA{BJDG&-0-CWNx0qgFHX~ow<23`4=S8+$@>QgGk~*nk9XWe=$p*{Q+@y zmdBShh_ll(#HpDtlT*_ZlT#BDQ)AagIuS{`q~YAlGU!D6bhRn@gsnA%EAO=VSeMOAfqC8o5zvZSn{xU{^uq`auO z^i@%@RuQrARgwDZS@YL;p68+Qintc!6};3dz}ppe<>VJ;<>Xssx8KgL$$XLhH1qkx zjGQM=GgH!^rKV-ZC#A+dOpb|9jEafB_aHX>UQ}pAWN>IiP;h7fD#Sk!?Rz`O%g5i{ z)5p!-)7j0#$<_U)Gt%D4)%K?Ib$h34Hyp0m*jZn@amgBS;nEdTi%TZv7tfhm7?_yr z8=L8#Gu1UbuVY|xM$bs=tl?=LeT_4^YMMGH)wL8)svlEUJ94-Gn9EhK;`b8Jc?13nEP|Gi1oNqU=-@=#vR)(qe$U&r(^yT*8)d} zeeck!8vfwOA90A2uVXw|t9J;%^aRyR@S67hsl6hr7Tt3h$>ZR<_3DvE{lcPx+$Qje zg8g(WQNBb{MbAD+-Fx}8)6?agxv+d;=PnWMnX~SO^I=j~c5PU)dcV0jh<#(!Q6y%M z&7%;!;QJ0uJQ&bHx?&}{-q7~Q)rmSca8`Ndsi+ukA?p3)EuZMdxiB`0*&+FNn4skc zEF@m%mms<`lFoPf;**G4e!v6CSD`p6zE{~L18e(itP2So3AYg30A#)a4D!%bE@&;i zhK!`<;HWfgL2Tr6Q;9$+Aq{9$RGC!k4eWo_n+lX`X&_odJ5vo0@zsiLT8RKpYzEr8 zL_hI6xnY`3n$OsqAQ}|(O8Ld}jr1q-s!X!Tl8)VQv*q-iGMzVr>lAP$@XAddJFUF| zVA>#=iAZy8??O9+iF|eV1y~!mzE(+=J@aDtHkU|&&cMPrTlcwsT*W;g`@+C5am6=| z!NlQFvf!T%1f|cA{=?369D*SkQ^?g6BW@%gXF+9R<9aK@X4o*c6Yld2sO}s#HZD7P zHNWJ@A0-){GY4)8FQkhrj@YQG!bgy4JKdn#Z5ekqqov*Z;HihV*Bg}*cFEW#9o4$Q znzTw9n5Q97*@_tua}$RR-z%|FiXtXutN^Z$UFO*v2y#1qU1h4WqWGNisY<|A0 zQ9O=x;Y3KMD-bbUHhIy&(zl~XLE&TqkjB!}yDzP>8+9u8xID(rdw@Mk-=hM2Y7;-A z!|~##YCwg)OH}l~E=q1#kUX{lPQ&@%pGl;HS4yg#QLShBY{*rKL5Lib{nHVR{QV#_ zm0&?RPiMc>LopNZNuJ9>uq40mQ4cXw%KHPp3h{dbWW3*XQQ*q601{l}6B2w; za+!{cxv!pNc)01ZB|4%vRW0@y+GyNeKq3sPX9K zJu3Qi#;dpmL)5To@w%$@0M_xjOwtK9Cw0)&tbzQA-gD*@$i#L3J_>dx0o#09tSv;lgV8l*KcT+S@0yb{VXh~2X^QK?hi}?$K z&)PSODb>3LhvTTuS{E z6EcqY!zq!|;!QgE?php^czH7vv;XX@?U&fl?FoCNw!*d^lU;Ef6cKm|CtRHo&-30V z49K-91ma8-J+)_1D80#z#oHp2Ii6GN=*nE$xb(q540+~EPCs`-Zroj6g|vIC2-B*r z&^`2Fs=|f)I^pjaLw2IYEXP{=u`6ciT!ZpEn53%N)a;L!X*)DnkGTo+4N0{XPe91{PtT#_kGhN1{!w(o+Pz{%XN-MOxH_vqUWIBfyxsRh(#V91r}M|z=G z^8?sgZqg?@jmevWTunHp^xN@R1vNR@K-7JoAl|(GknMK`Lr-{n8Ph+iz`v@~o4E>6Z zT(YaKeDzWeK4qOF7kHAnyQ?UyK@DfztRtCTixq-!nIQfMPw%fj8e$N<|7A$ z;rB8!bfwB#!y){3FmRn;6D3YK(FhgK<|AglX?%J@N_?T@rT(PCDgmE~mRDg0Zwz2P zNim4N{&ocyS_SF!^u)lKk2$y3U6U_DJ6lQ7qHn*QB&5jtZ?;w}HQPEBsDVf&)}lFM zv>^lIa4cM@NRI+BN4H36JfNrrTBKvSAtZ5BOtVB!-`(t9v)=YLf2)9zo%psbZkH#k zy5B0b6}jJxZuuiSH4&l1?;GFAfR(qh(&&p*+bKhjuQytyqnG#32QIfJu~vs$u961A z@k<+9BfQ%m7uhKaeW1R56mgW6q@ispqmxv~k_WXn`$25XZ=$VA1*B(nusHs`=yruT;)YtjH{iJi~L zjp8UtP+vd-yj;7Tgxdl|40DC1as!Jhpdej#tc7vqY6dScmGk!W@jetGWKM2@LoY9T z`}ai`IC!|$@}oX4-7P3KT9Cer7%@9e5(^YyAB1Z>b7=Ojz(L1W;N5Gd8(r@AgCA1h Y(`cRCHKDnK_ge_)>lkal*0QAIC*f*=1j{X06oNLQELRmNgSa#bjr~WXUjf3)x5Z{a$gAElVbQR5~)a zQcbIy65b6(H+KA-bFC))C|5&Kc$qYMlT?8cWM z)(i{>2=wLPVJ7;XUR8`S0|OI-rJ1ea_Wy00o7?}z*5*Hry17YbgSyYg=Efe>ji0u@ zvGIfTjrH}7H9BkS6grf(pHRLVnL;6d+lNdc@9~ZNHzSeBtA9cwuhLoliDtCF1fTk@ydmh>MH=VrhPH@dpcw^YeSm%`faTKRY-7 zb#`v%>nves|1_>m#}@Zcx>;LsiegP-~bhHxMId;j== z?fs)0+uPOM)Ab(vuB-d)yRMEmZ`)tLY47+quR7kez3QOT($?O*$E&86w#MexhQ^kc z4b7N_rg}_6UH!|Ny87zc7gg1@mCtL+DynoV=XL%DxZ*3ldZTinw7jz9S$R=$X?$_* z)89*eD=f|_dUmIB9N$upj?P!F--Oyb+Cr~cU$M8aftp)gF}1WczHD>J z-1?Ham64g%MN>a0=FZ*d563~hyP1x=sqTKhC#oqavy{mpplvBL zqYm!!Au_`q_I8HRY%V{lO_4K1B=r0OTdlJUriS$hz#DhC+L$@0C_?raV-aRltfSw- z=o%ujKo>;$fVj#_v^qegX2FnYpbySObqe7GiF%IYr<^8S5Z=isy-2mOTl{!wl_$r| zTebJ~JN&G=O?fkz0uZrR9y*+ILj>b1LzD_8`IN83U!bMhQ% zI_`ipgb01LR~|Bt<`fsn@Y@ph!h1TK>}G5hc=xH*q!wevT(K>0QXDWS7XjYZYQDRX z^~NVLDIQRs3DAi}7DVT&R-ewBHA2Gi#$sLX*c?B>hn5+6ITT&}V*PH}SSA$@miOZf zP9MXQms(ssE!g>5&$Qe+d)XJ0g6`YQY*y{lKVav1ui`~RLnfbBukXr`o5w;mDZ-1* z5ok-!|J|W0$BIpEa?47j6o@QcdhICAyawvBA`ustu>2JE+Rz5DH{zG=dCCyr(j_bF zI%-y7etNJZkFklpy#JT$vzlf87fvgOwGG3)TJv0IpCsvAxk%J>cbPSj7EwWQoO#ry zFDbDgAt6oo1zid4VZp{P!(sw)C&!kIUTicCdvYHh@d64n8oPhOU!IHq@j6aPs#P)`88|M zbA|f5YEqu~Ae#_T`;rrc20a_-2NXXkXr{1k%Tr=R=Q6Xsqohmp`=&X@T1~jLFrF_C z9#~sVoJv)RRY4%@XLg$KmZ99#VD9)a)`MLl_M@Xmk3u+kSa8hDnSI86)_4L#KACVn zbuEkG~vWDA@d)Z<>3_mBVdPccqh<#O&lnpeGQSId>3ump0y!cVKq5OtolEB8h3UF2NtG$V&XEBAOmd(iA^u6D z|3x7u9i^9!kUZ}L4Rwz%jw?VILoko!RShk4xpCbqLji#(&CKNd7Rc`%@5MOtYXg($ zcO%+xdwgz0qUNA84t4ZxXd(Bi9>BB-7hcgCnpLTt{qyhA^0H3|QJDS314dj#^aexRZI^0rK># ztHwzmA0Ig&?dh%d)?x{=Ce!jk8?-c;EZ6nxuGvh$;Awx4h&bi!YO8A7M~}~63tf0B z+JLCpC@u@~vK$ z5wzz&1anVT_x!>4;5(^>cpm+{HL6^1b z>g?Vo4X8VYgUp)r^+lE25L%#j?_;CNEnwphiqC+@Q7Z@+ug?_SYD$I)D_5@y4IU~h zyEKA`EMG-i<&(I`101B;WJETIe(G~)-m&RWAV5BiUn0jXe9gI3a^6kLU@#b%Fz>`t z(}wkqKTT!69o|a28RrhV*e?~7=W>A2$kzn9@#$9$SbUT>7LTtzQ+9$-$&?PZt>?TY zr4K__e7$=ARZ=E2P-REbOPg^0{)x|O5oQ+2$0S>6_xn%@%!iTTF0Q(`LNLrHs*Z3E z#Qq|}Oljn=qq{{R{6}ZG>_1B4-wg=axd0eW1Ee@(ep?;G#CdY!iR_FFzXdM)Cdt&} z@A;dj?hcHv3ddF}C9uJ4Jio+9Gf`avV;t>a5;wyCHgE~*f%q5N^P#}JbZpSV1QYz8 z7>~H)TO;Vt=dr)8r`_D*+%I-7JOEoV{MXnwfhuejiH!xow83C^FBe|V#3>{%E^)5# zw>4Vd_E^u;{t}LvsxnC>Njd&Y3iX;*pOx$bz6?ckec_0 zOtv(5{M=TVn#YRLvzwAzgXbN!&70*4){os@U(C!ise-LWY3Wx+(R)jLyKC^xd476z z8)rxIc}DKuK|nc&i?6mj=+JyEU38wc;>OZVUs8&hifYJNnN`XO!d z4#AUC(@7V$Btd?Aj!=V!XUhw6J15)bfL(q&f;XCZsH;mW4XtFJ1k&qyqokpsz$!`7 zizQRJQ=xw+qC~BM=U6}W1`j3dELTP1D%Ik%_7&Rnskalrz;XX(BrvQu6YIyeCyizh z-H^xqRJX@OF)rLQXfAEm3E!fErdo@NNqFfHf~n{i53vGMWv+GTy$uUqclx!fY9@$Tll1TF`c_R_zt+5$<#{5& zb#{T;(_Q)k520?46~0PR_EF$4s$4@)O&d)5^vp+L)P7`x7Y_MfVfv|ABdC?LLf*8q zvtO9tv}cT4{&KbIRLZ{{hgn*7&YpH5g#p{fqdv}(!)kdmv%UDjtM0J!FVz@CfpE=u7ACVD8 z>ZI4N73s~>p{zy4Lt)v}hqt3hiw|kTF9sjcmZf9iHkFfiNfq)b!U88 zQT5ckKDS6;Whsa`SI!%|BAtg$m1}iu1`mf&hQWkD6YIH$?L8arUY&N7Dk0m`9GJQ z(&nro`G=Jw!BWrSm&%6HO5G6#c4)WM*9q6K+K{5u(ca!(y()F!LaSe(bp9gzD@rTO zh?;r*CH9@~=+(9HJI5(w=Ts8Bzr;txN5mG03aOOXgTW`AiZ!s2$MH80_b5i?Zbg2c zL}5yDQo>WsBa_1gg#e8<+{)l~-*k}EB1Z;x_jPNwM*5Bhd=oCRxO4Py47ut>m=LEAT%T~U0Zc-}OVmi+NTH68%xXIc^dBz_#)g+6mHIb-`40j|Xg2@= literal 0 HcmV?d00001 diff --git a/doc/screenshot.png b/doc/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..5bef6b9a1937ccd164e9397b7b051db0b82afaac GIT binary patch literal 31151 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 VwV4bI!M~1HTkDo)+2wm7{|6S(Jl_BS literal 0 HcmV?d00001 diff --git a/doc/solve-equations-dlg.png b/doc/solve-equations-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..55b13ad4103ea0d5e094bc48d0478b654917b01f GIT binary patch literal 3394 zcmc)NcTiK=8US#%peSMmT~J_M6w9Ni5e%Wp(gjgOKm!7Tn4pG4kkG>}EGRYV%x!Hwf8BPvJXRkN7`T4(@|7%F+ z=Vj((r1NugUr6WXWIl&vZtgS5oJ2AwmJ!d*iY3ct#UIUnikaD2(I+#rBGDH!qOW6G zBoclxEfUHIznFd}6bk;6zvl4Y36}}}#FMr8@A!Pd7d*az$LDiD;qkdL+|M{%K8MTW zaJlR+I9#?2`zupy&PVJ?HhXeviZwYo@s>G0J~28rKEfCuW{eGvj?+fQ28Kol28Rad zZ>Y3E>HxiefYwj_><{Vy<&XXzN*}qWw+rm<=mcNA?reS4-qQN2iPSAFIcb^M4}mA) zDOp#OQm)-hN=UpJmyj3}8y^)D7ZDYM4UY;A2}1{kTnxO7yoB}-K=~mq_?$y}`TBc! z`+`sHT>mD?RdqGtz#zbt>N1o>}cP1BwK9TwsutBF+qgEge7d> z=d>B!f9{=`VPlE1cW_d&vgYZ^^HoyKhTH1_#u~);2q;OFs0u28mBGiRq4u7K}-S!K%+1T!Fq@9DT2gxyxwn8xhYXck|s;w*Qp-y zN7Z&g^_z#D5h^03b?>&j{HuFkThfew#*;2(WLHns*^%A+y8-n<;$Ix4`+n*r9)w1FOX47{>Y3${CX*w@6tZw10d`{$W` zuyJ0G#w!&~(?aTCQABh<1<0XTs!gCm6!p~fq2#9g&8~}*gCr@*X;%( zbdm50!{p)ZG&}vpHrlWJZJpb4C-JK-)U=>!$Ho;E6`73wZcpqUFiR90Bu-g@x~@$T zRiw2lfasd~={`Z=)Zv|A8uEBuf%nRZisTrZO$vgcM1`Yf&`6K9kFQ{Gr%JdR0b#iM z^2$OqEoi&iyFdR`Anzq;MaTLaEZ*Oy)2=bP@>dz^Bdfp#r^K~=h_UQ5yzwVT6 zjekh}$6o8Hv~)%k-BnTKFP|!%?X5H>8C@d4b))Pv4v3X<07B`!Eq$`j%+Y3Eusvtip>5;^h#ncvY3>V-U%z4Ac z`3c}=K14+o1~G@VpP{Lew?6RgV|M0)@%si3pl~i8W20@TVdRa?s2Ddxoevd=(M$Jq zqQY8x+f~wqi(HT}@q%4sFj|Z7(T%&eeYi-M}E$Y$`BJc6f|8fakaH z>b#JSK#NB{)ww)Td<+W9xxiix}Nhkj|_Ty0fe2^4!C@>hvK!S{> zGOaC)HyZ}2ryQ?)!(4PwujB1d)qcAQOs(o==PB+o~T%sxWag0i8{Kd$Ct1(i1k6G z8i4yQX5GBOauq#?sS!z5NY=q*_bR!C#YN|&FOf&DAPlS0c#BIbBuOw5E$GgJw==)` z!_za#QMvNu&ifH&-2-?}J4b(JQOwWD=;)3acExo5Pww@R>ZA|xNn+~ z8oonwDH^feHMv~XY1IP@^mGxnXC2FHWS3KC9Oo48zU3Oip@WF5_0>&+;2(8WqNCrv z9QDcznQN8?`NILkQo%yvJ;4ep80?L<65;W*?t01qck&9tLSN)~=X&xJv5D49Fjg#I zgvob~*rU+CT)C9Lk1VIRd&K+X-wj#ye8~Fj057B=^XA1)_`-EVL$Yo`@ZNCNUa)L; zRP1K|tPz~UWaaEBsNQq%HMt3HtNarpu-5jDa*4s?Mr*J(Sj!lf{o%!q@z7b1tD5Dd zy&<4K=hn=dojfmQp#=xDE!)@m-Z{i6Z;OF_9&$-$@{oyt!^&41*7LaSpYhRI1g=raboEKcz97of8bqFdQZJ>*ojhs z-mtTTHGGXJc+;N1pQB$4wRvXjG5hTv4|HC4>Mw*$PTkU$CWO=T%8LZ;9CkLl(v2{< zDkN9zKn+yK;?r6BQzLH&hRA~Ef?6yhuinT!Q>lx5wZj}ty6_aQtHQT@co0)mwK1x! zZci)3u&rI5g(Uiqya+Vdkw!YC1d2FJ{lG^_(c_VX-* zes`HE+?+Cva|y*ZU*rLQ)GTG??vM>%5l^iD0a;gi=FyVg3bZKr6sLwFzl@=3;;pL)O;uMIDi<4EaMep8{V|-QmJ@qY;NCxg4l7EJ( zgxws9gOsPc-d#wnT}Y^?-8<}qu((pBmg=Ca{lWa$@bYUG#^%rZ_vPKoWhh4O#pTFZ VS4C4x*?%KBduu1F;-7tD{|(fMyW9W( literal 0 HcmV?d00001 diff --git a/examples/maxima/maxima_examples_plots.cws b/examples/maxima/maxima_examples_plots.cws new file mode 100644 index 0000000000000000000000000000000000000000..8406807f453bf7dcb53e3dbb3b95a3d14cb11a99 GIT binary patch literal 973410 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�>(sF+-(}@7qCC`_Lwj& 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

    `?WofD7z>`&(0H@*gIa_ZsMw+ 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

    NhqYCr{Ggr;I)}1wUl;u?e`6 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%0AXd(AB>>>Na=h&1dKLBX<4O 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

    Dju@Khcx*4Fvx3<#9lsM%MrM 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�(ig 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%0Ato6C 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 kJA&FcyG6^hEtIvktSg$GCOjZL~%~ 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%0DSvX!X9y&5*`V*%U$NT_x9->r!k6WS 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

    fP-U_S>e>A37o26vsNM8-Ez@X3*F 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 z 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%0DOd^Jq#Asq(WF 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 z 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

  • D8-Q)B{!qs00*>&Gy$tAi1cOCTWut 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

    vX(ws_GO-4ux3RpN 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 literal 0 HcmV?d00001 diff --git a/examples/maxima/tutorial_for_beginners.cws b/examples/maxima/tutorial_for_beginners.cws new file mode 100644 index 0000000000000000000000000000000000000000..0356b43ec0be25b9dcf3547b83f7e9b9ddc29599 GIT binary patch literal 1603282 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

    IZNIDfm#>ZG@OX9J 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

    FQSou)^3jf1wQo`f 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 z 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

    ZkAGSNO-EjFSf^b#X1l8jT`RE*iJFO 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

    0u6)%xM7C_8dCk~q;m127~(69w9q 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 Ky2wh@a-a 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⩔Chn$b4X^dwD!mEy?kx67mFJ1eZK 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 %i2(VHA`Fa;=Qd-{F8OC4J)ckRH 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

    S84yP3xURN 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ℜeDlFUhQA+9$x%bA3gi> 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

    kdi0zVVvXb(f^Y^M!d-JAdbpG1xg6jh zz_NC?r35u3k@eb_pa+Naez;(m1w=b$HpWi^Iyvn(yI+e=7N&oqsv%}YMloB z=xihKYLe;QI{%?*8TfvJXe6|Lc0nDzma{?T*>;$0BG`VJeIDRB<#c;@zPE2vA0SWW z8Bry2pNbifb=rxRS>rykmfHFLXU*^EnWd&rx=W+or-K9hi$`E3Am{8}^EI~(EaSg? zc5!ucK6Mj6?x{)a@W#>Axu%c4YS3kH_-!GeW45O8J!;tQzDxgRHOYt zdV*|XZ@;E#!4uk#m-7|tr+YfKPAN;<#YJnqkEGQDr3!kR&-VcH$(X880bh zRCbOB_j%hMp44l)yd?Uv*5!T_Q_z9;Lh6O%EEh6QF9Oe(6`8`tS#SQK8)WaZhWz}s zDv3K?Q4||Te?{KCsw4d(Uz>kLkT{HgxKd(vJWnQ^U)-3p+GKwTCodK4>c1Xgnz(S> z5P8fIy!~uo_tI|n!nGa4;?v%|q$jbZ_WLBIF zFI_!33T%zMwYA~CPVlghcRYoszQi}3RqS{kG*R?sW-9){P=)!mxO-f*#3B&f32{7K zU8nIzUqBN(O8PnEV*$@QJmA!m+zA7RCIZiBDA3ehrm_Jq|He8Fv?rWbm{UdWpxAqk zqak_jO*D;pyzm9{cmggkEAw?rF~IuaFk7gB@5to_^CH*x1-!PB4ReOze$nQqc4lzo z(F;_w6!8P^zMk4N1@xa8db>Uy`>0`Xetao$|-4Xy$GA3n;-p6E5PjlX`K4Uf$ zX9(mgHUY9;Y}apX*L}aEvx8q#*RbDD9l!g(i3RvAzTce_6^U$bw262pL2fw7BR{OJ zdWEOcDe_L?l)cvy8Mn8yqxHscWdodNH<}q#PgZBo9_W|mQ;gXMv%9k+NJWqevaKPE zY5IP~_AGD%^{y{)pzEQJyCxiJSV;ZO|)YMJ=r&V6nsK9@ebGy@-8o1C^vzd2J9YV*;ah{ zE#h@_bIHoLZU({f5_fJ7?zsWhUlnuN(Ram)Z~fmN^NZI??g_&L{s9SDM%QatgxYuS z{{ac-W_#>K5`1UN_Ggdzvh#QMw)Fv-Zd1c@09wSW2-KoPv7ya*me7|}Tv~bnQT(Ihk zi2GHchzN0Ep}@?lb)uDzUuDyap~=;=d)INxN=@DHGv>ucKhYR%3M5hdWoeznE^z!_ z*}$=;aj+@VP`mdCBz64*ECtHW+YoFVZd-68#iY3uG44O^B{#6YSSg5BU9xPG*pwE? zy{IOC<6Y92mcNTmJ&?$Us*o}(G68}yVtMR&rN&b8e<#&k7b5;wX^rm z55vUzj$*?1pG|bEyZphX0S7w{HK`y{BpOsj$wCzx8KdmGMm-#OXg zNv(-z5xyPyBB*yiIyiy2_xOCx`sw3LqWb;LtF~dcW$71~U4)MadnXY%GAqY#OwWL& z&W8p3z~`@%U6uy01}|mdmisq^+tx3GE@i{u>GOd%4i2KYc~3e=hjFX-`pKG8bYBbM z+))v1GG^f3vR}U7QoQ3v*4k>XNP5Y6?%i(le@*wWGYW*@`t4slm!X};D43!0x6 zKfj8^tbO!E`lM`dw|xz|dfEzF6S~!M)C>mnp39>H2vakD{@o z^F_4XHJ@(uUaT}XeSBQ9T@P=V`08- z&?T@zX1FRew7fMuB1~dSuyuqOQD*1paK7Be6F(7tzo$%2hJI?{*q6I@y5hMI;N$7- zQFszs0&)cGHLXZYT%fsJG~~9OIB~w6tzE6`oSeTSUIgq1*cN>c6c*H7c%u9Mr~OBF zZtgkauC*CB+>^@Rlc%D=lSX)MD|Kb3ZG<25F_!qerY_sW|Ly!c!?yo>vmfZo66Uof zEX<)Wr@aVS?@!C~o6@_I`lg4}0a(1JSS^1~?Zd`rMv;Ct0|V=pfPmi?9wM%MLhz;s zmKPV~+4m2XF142xwupSaR}(A~jRXXPFHUP^5S{R*r;~rhP|dgNAD!?>XZH;2ADyuG zxpi={_J9dZ@wV@R9H)&FM=Vs}3b_CT>xL*9AYI%I9}0Xsh|>@aPI3vGb8mPviR z6i2>KC7%Y(o^73he-9YcO!45-h4h!-^9 zXdUUY+3s?fdOm+`?|Scl3!YdH$IlJm)e9QyoFUArVYv#9HZ**WU+I|f?+_C5dAMJ= zc)Pj>hyY$}22;5sLhcqO9Oml{8%rRs2&&`@o?vqqL5XO=4ZZcOGt4I&^6Qxgr<$bP z?s(!Dm-qQA^iGczy6ak>mkN*7i|h4VC}NDkPVNVv8-3u0J!=7pcjh2g~*`P=zh$DDRV{#?p*MtklT*`3`lY5NTdv|0jtr^`48{S&mzwoJB> z{Q?X7=4j462fZZWSeel$CKb`0jr>h)3OfLtE(Ax3DAXo>5RP7>ZJE5Tj)7lJ3afXU zlJU@7I9H3sLPE+<2vumKqqD$8xFWu{&9#yap$e7y)20UW)SNu7cGAL6_pNG0SN@uf z#k4$g{YX9l2>Ao|m-dFoI`JHS>HjeGut6U9hL*anHd>SH#-de|-yBQKZ^L>_ zz37^hZrDw2rAK%}gXl8AaLh->DJ~J_>hb8FfwkQjV&?@mr6qG^ z$FXL#`X(k8+nj-~L`sBKWlfNlG>G4vxiPKfiaI0)b&4c+Kf`7a8FzVeP@@i<@D+t} zWMhG0Zcc}miIMPu-I-K^unqzhRz;7x+$9bu_{&LfboczJwAD@P`B+ovc}Mn0=qIgVQ$=hXLZ3MxP~q_SPR7_aX-*%-Oxw~f;bo8V z7uFw7Xt7p2lS9LC-<=e&4GG2-jP#urvj+bZJEtF)SI`n=d_H%uBHNz?Y_b|fG)QF* z@Q*{jU(nTf=tLH#B*X2S0D{$9B@n0(1O-E+U^?8QWKQ}uz4pG9yS6dL->q5Tq9L*l z1NY38>=i1sHpu+Xrm?H3Ey8Y3))(SR$ov(bS41{-U@NBp$30)Aym=1e8;1#%X*V6= zF?Ogkz_!udzFw9CnTweo%rE*F)YgYxcPsQOVLe=1logZr6%+`5z^ zs{a`bH=ZFV1u~^``ZPAudWjT9CU1n266yRgET(0flFL*xNl`+qtt}J>*q>=zQTjxzq+0N|5v|AJ z-P7M#(J$i#ouH?ed28;W^bm}6QT%Z=d1!ZhckZjSD7vxti`{7_+4hEYLtrx#Sc@X# zIP`DvZrMJo0W-K2T|q@Nf+6eJ%~#cmqjl8&=F(^&H27xJ9W2&iYs!7+n~3Fj({SKQ==1( zSA?>WlNRxb2Cumzv3L5)d1cMGkjs z%a9PJ{7}XgfNE>NZb!ej183o*S!>T&0qQiW1Wk?B+eIrB;PQ;xPKbD6>O};e(y5T4 zxSzsiuufu{6M8wp_eKSG&Ng*Fu+oeL2d+xLrAHxa+I$|xPT>jG&{9Q?!=_6Hox-f= znE&Nq>Rx{|l{l&F}k&_b0_#L^RcsPi?D)@lYng-wsPl8OxJp!}kVr!=$ zZHp{yBg5fcI)A7$t}(y5y8>r-Xo^heQ{m2N&D!!i5cx-h0o-Sef1$#Dr~-@^V%sv_ z2TqW3W(`7^85>#wx}90A@i^WEGKT`pF;3bQYZR{1BY_fjw!&PEBI8^MLX`*9%ip3I zjP@y`Y{F$LHm#VNt0ud7oxvfHzYUahem>t5?*w%!LU1yVHFsY#H?Ii{?;j#IUfUo_ zI}XMllp~T_-EnbDF?MzhMx3mgqkKEVPGvur6Y^Z}!_uBWUNGNjJ1x^u5xVJ|balSz zTs`vWF?BocJ(=%m?#CRCUcT%{&UZhdY~$WJaXtScpmz&ACg{NzhALBrZ{GLt65&8D zBq?W;L=89Br1Fzbk+Z(EF9p)GjM-5X9#lg;qv`J{E>_DA45~;_0<~LYf4>v*ZPrQw z5zqU7^)ZrZTfCx347Q4*i*qL^4bhMhLRr*O8}TuZNn&S|F9Gz^gZ|ekoJ07^kR?+L zlCdLeH*Kc`T#A05fgmGMdVnhf9M8Nz{Y zN-2p}=#w~O4YY@~q?hHNvBm~%4vqq7&_`Q)Kt?2ioQ!}kLBuguFb03Iwc*iN{i(@+ z#IxqZF|}h8*{Npd_k5sO%B5E#}m^rk30rb0v^q*df+O1YuMg4 zouVnK0+T6Sa7_iFKNO4uE73BO&Rt8n^>UG79n<-{sWc9sXpRuR25uTjSrnje_V|kV z+5|6S#YZN}s?qRGIeeQG+o^(851GI&??cz*b=iiUybPv%3RHyBl?^Hr#isp$t!f05 zvjr_mDej!`-CAsPLk#uah4YJ*_v3A_V*G3DFJek??r7 z82hv+`ZqJsjOM(65Y1r67}NciAtI9H&#*u;d@JT_a&sgdoU|_^@KHo&g7yD7h1PHs zX*Ur&<*1VXIfeCs;e<~Rr*Pn3r%)fzA4)f-*aLA2BX@YDt$RMyCc~T>S4qfEFTe{_ zhL$AO^+fz1r_lUAr_i%oi84b0;uPxs;}pI^oI>o}R2U>;X-;)F!hE6l|8)wXjTFdO zAx8w2oP?$comCBB-F>h}6&|*llJow4zbtKm}PTgqB2Q;tpYq zYKpd<2;?2A!hfB@oXCHiLcPzwi+H1b8DY?2J~~ni)w;pT=-|Xikyxf{48UJy6rpn* zQ_NgRC%eOWOmc~)iqY)K_4;gG#!U*SlK`fF#1J(M7z3)gs7owqVbMEMP&Q_MO1tpN z{SwW=V=u1Nuv^6dG{r(cN9)qrnc$x>JB02?n-Op)=e2as(fk@TgVsYgQ;OAUQo=6( ztV*IW5bqT@0drN+Y%PU|8;gXj(8>84(TgnHyow&bByV-?EqcIwOWRoI4yz|v9R}DV zRB+cpqi~pnbbI&(R(2P#+%`!Y2`m{^@jH!9MX5VNX1Va9B-khBV-87WXSh4ZuR< zaEW;_BP&f!F2lD;Hn`*Fe7wS2GLnV+#DW1q7+l-y`B~DF}NjjB9L?TUJLhw@X zAvXB5HZ_7;mQ2O}`r9c6?%0ijtI%%XL`|9iP9vL)q*>^v#&|~%7ZDhNIPtrzAqCFr zr65WAV80436(J19;SV0H)I&*1-l)#4-#NTkC@|u-!d&Q3`Th0!G~E!U5Q$rI6$mK% z_F)t0j7rCPP7{^ov5LpE`-{=KzX5{Ur6W@;SJgXSZ`RQ@%14C{XdE}Z%*I*8{V~4| zhZxy)MByfuxWT6S0pWqx|i$A-p6cX^Oa9Df0fSTz^ z5C>mHk+EAO35yf*FsE596Wr3*qMpmpI8+0z0(JAyOt+R`_jy3AP6{=9ya~Uri{LfI zngUz%!an0+AdlfsFQ#m<3r08v28Wfkl5t1Gz~8My**b-I=S)s()f31yGBGcT#L|0j zMWSa+Cd31AJPp`-f-(7m8|yi~r$G?__rIQwI^A&eL_wgyAy~_%QK;mIyr6OD+mrGsfWCr0{y z_MSKMH-BJ6!A$TsraIjGWD7Td0-^WVQ0f(s27#Mv{#yNdwMwCt;{4DVWg#e2_SNjD zzC`rU=2+2ap{>!bysN#&2iDLkdAtg9$!REjBHx3$zX3sP_+~RP^&RMKyj2)7TR9rgJQYi|L;WXcRA5W7sf}H+S3a=nap~(sCKT4qvL@C^& z5c@nBLjW`h6NQGBH)-y}vla?sw$3%@(s_r^MqHOt*c|ddK555bLd%wbH}Rs+?tN5W z#_-e@@0CS~X%~+Ia_c6wPg%%Q1`0^4Wbmzim&y(1~c?Q zl)}c$PgbK&>{=rvDo&5lJVuXSb~fjjluDgVsDad2hX;7h=&DWAV{V`G%;ZIJ@<1@f zHkrM#h?B^8dU8(F%j9;-4|0vN-_g99boc6FWXb3%!vPSc(CvSjLX`hu3O)W| z3Kzn5Lg#D~Axt6QV?4REy{WZr0hWcdeV#TGB19e;(gIcvm((StAZ$aJ!cpdbm_m!c z6!5{{B(FnIoDN10^CUIGjjNzB)JxQx=e-Ul$5}ChF=r%P30VC-)?qR6s3{VxwR3n8 zDJ4Sk!I6Bd0QEIEP9=Cp&L2o02PKw_E3MQSwQ&R4G<(rcH?(T@EG(smYBd(|Tllq5 zq5*j`)OxT<)Z@xj>$ah6&=m4|nyTE=ytoji5Jqucct=)!uG&Z&L~)okQ>w2)iMm<6 zhJXr7)2to1w!_v(2OzP*UxlspqL?BPLzu-V9sgnA%{1DGH*isY&%z27%&Ze6BVo4| zniJw7qmY=WeGsVA7Y$(w9ibczfJg)FyM&@WW99b~8vQxT1vURLg(j-5p{-S+|1gDo zTK_SHln|!S6~Yt>wIAynwAxxpdYSFf7qBSM=KTP4-zf9r&e@x*^THmM2 z%pg7fHUw{yYqZqF0P#75UW+eYO(|Z!foT-YuGNcr`4FbiL!(d-!W1S!m_lGT!nelp96p4sOQZkC6pqqwz|iVgFS(mvuZGTFqDbR)VwX?Ztb8zvH`Y)5-hh?E zmVh@9m_i{r>zx*egzC%g-|S9-(1L&=iE0*8UBj%qsUu*s9NF{w8PsqKLg4so1I3Ys zEwM<0ufwEUH7xGJiUfC46uVyZt3m-7p^*JULLsj%mkPF_8rG(pTRN=kXrO4U0}i=& zTkv7Z0}4i3zHao_Z+8{VBH3G*kd(ytUrXX2@qIsTev7bgqWVG$$i-mD>sbpe!5Q$f z?9<RqaT9rK#&#bU6;1xuH#0f6p z%RXXB36V*m;=*}my)>p8RvsO&(?9`u`=GRng-p&V=LPuG5N2EP(6(>9Jy_{wiBr0@ zdjDQ>&?4Db$k;#H)Oq0;(!{XN;`>gg9F@aQNIszK_Qx+#aYlACYl(iaF{vn@&i9L~ z7q%Y6#)&@{udeAq^P&yHXrH8wo}%J~{eckj2_WDqA$%%o!ufUd(7d22Tz52KY_S<- zs^L%+?yA2qkXDk`0mgXtzEJ$Mz`7Usqlt6GocA+l*{o83N~Qh=7whvnh(r@=9vgZJ zvlcsf=MY#vID+6?2)`Ml(UnLbUyNBnh{z+xn~wzfNrI)im}E!C&K|rGRq%u55&kn` zRG!3)I%V&#myf;fgx&mEDPHNmfphu#sv)w{hTZ?z1%!_hUN?XVX*FgEZ!j&P7F_&3^^%#=xw zw6hrM;S3`$idvA7RRi*UGy*g#sIp-kz8{xh#JB2I)DruSAJLHyWC*~lT#trYFxC^Y z5SB~ocA@3fnf(4~Iy;a{?g9&zI44FcaEC$$$zDERM&s*u(oIcjqSO`+lXm>$Q6$Y_ z9kLP-Rj43V4-5b6<|EIi>&@*M8h&9bREz1(R-^>apzZ`KBqfmOzfNKK|8okB|8WWd z|2c(#f1JY0uUQbM(C#0nuo&VL>gNCxGq2O6Pa#fWJGu_UDg0H+7smL#x5)I^%sl%; z!MqcLZ0X0J5uwxHnFzXPBQ^MuK?xky`PwoRjs+#PxQjuL)DkJsoLZ`)xJ*v|2AlIx zsVK_qm9Rf+8WZQO2)SCJGVsnEmS`x#={^i8*e(a<9S8#!Lgl8FsEl{IIk3$|Inx01 zgo3(K>XCwT@Mn1ALHpRr)O|Fuli4Z++E|rJJjBvjD73^zFm>LXg;Qd<5kW(65hx(L zArGQx-H`z)vvj9jXhGT!zQ*(ZwSDMQC}jv{AO3X;d3`D~AWq?Y#+4JP(oWcNDjn4` zwBHwBiv4)JFp=Z#aWrpac6)3M0qUO#vhLbgtU8SOcMM;4@y={*3d>Gw*2xX*2or-}sTRxtU*@ja z_BnWp!Q*mEQtz2u%Y6r7T=2++Tj^37YX(~kdo-B zb`5bm4h1nFJ71fO@*(?nSqrFrr0xJIR?t%BMHUKz8kl%e?0-l(bGekWRi5NhgyG${l+`>bsuFWzx|x<%dTalWx$O^T&U zk}CN8c}h&YoYq3^M2t4DP5VgYm0YLOi<|%dadnqLZAEL? zu#sYg;_k(@xJ#f=C|=y%p}4zC(U#)w65KsF6nA%bcS(42&Ut4(nb|+`Z_k?9ll3Hf z-PgTvBsK_5TU^iiL#4t|Thu8IOes!wSZi(~PxObyU2ktxgR1zr1TFp}g0YwT-9E*xfvVsO!SmVE<6Om1v> zZifX8)35qp(S9(r6iaCB*qVzKSQ*oY&tq# zJyH|9LA2Y$KyXiR>wtA2QeZZ+PzM_B5K-3gVZ(18V%bzieRfVdO}D6;oz36OliZl= z4eAzCRKC4dotV6$wp}Ydw%zA$H^}-_ou4J+?HH-#vjy}Ifc2uagyy9M ziVQcyC_s2(K`RZ+HgS$18HP$;s%d!qmW8?j%KAP&vNaf_e$Q)Ri-=*<6I=}zM7);H zM;)07O155c&(!k5e}SW%>|gTRkdgkW$$uTisXzDwgWZFC>9!WVN^geJRN9B0O1ARd zrz$Ea?0aZRAFX`73M9IR5-NGpam8#eQ%zTfuznhZFTrujtXssF!3^%^?3n#iRF@ma z{+-Qn(TOT}Mv{TibIb@r0l5rV+vUE(|)>^yx|oP3j$5~cCJIwI+FT}_kU z`Si|!G5(hFUHmmbWS=E*d>Y_T&F0gq9gt@qCsy{_<#jcEK8bND-6i1d_5hhiFm`bb ziQRZ7d-i$t_qo23T_HV>IEN&42($YSaiSN(5@0Ha^S?Xr?Z_n%p z?f6otq|~KNBPk@pkw-_tjzi4DxMoG1gtLO+nfq4@3F;z=KB+RMz>7(;l~hDaVBF^o zF8Sou7*h%SCPsVo)D zDdLAjjR)npg>4hey}=r4tdiGWg@h;ObFKGStVbhtR1BO{C?{n+5`ZzOaz2f-Mn}u| zt6BS^oVtYvoShc+k}QR*`p>ne75Wy%G(N5Z`dX?^8*;i&yhw}_QFn@saq=JcR8NfU z{_)zjMB`^kiED5V- z`x};x{#%yJwc@uyk?MR@EBome&A&t6NhAPAqVu5^eQlUj_an<~M20&1S5OrdQoQ+}++NqFRA=PKF1Ekuto zFK||5hHg2pBC>6zj?z~U6q-h6(?gDg0-=2_$6f7rk8JJ zBIMxk0-AX5Z@OB|EG;x##|x#tHQI*L^ZdUC9BS~Ac+c_zbocN z5j^J|xcj+H>^6*M)Ar&CxNfJB7IXNUXV6}}^ZM9&jo*LVUL;CPD`u%$FQXkT6#p)~ z%5C-&ama*Dgi_5rIjm_%M4EgJY8^@By(4fAlaWD{$nk1IkDC$MV@x5cmp!AM6dSPV z6U05AZq|wB{*yz{-lUSEKGY_4&Z`Zkc&t%h^^zfKaUynk7>^M*(?AZzk`_u10}*x9 zh8qoe&2785Qn4p;n2hV|y2&~&I5i9~TUu$)27dSwsbj|?M5p5^E|>b8a6n0v^?M_4 zFWhEsL~m}V6T2idW%npNb^2~JhV@8HZrqqvR$Grcm}EJc{&Nxu6LI{2!JoERt0D<| z5kFgE$Fk`OU%^7chN-y_kpGHqJ?^fE)d1-~5lOe)h>- zZpIwfhTO$`arJOVX93A>^^8PO^z?5Q1_Bxzg(L5H`$!667dp~*`c*KMhg54lG5%}x zIxGbq<>*J~=%{d_4F|h!EFSaek~TVV^4&&R4K0HLL~0C8DU+Zg=fny;Ymq#Ixowhaqsdw7Mq2O9urQ0z zG)kN}zUDgHxzS8WNOUCNAM~~``;kZg%$w}am#}R;IiqwDw$8Bcp0e2QV)C&!3rt+# zlduIUI>%;n)KW6{n5W@Y#d3=O+KtImObz8OT#Ir(Z-oEhm@#nlkG2ORzdo0;4wgTX zdWB)p`1zmYPR;b}Ja#hwQRZ)6Tl^nfM_MHMIj^@PJ8qu1L|Zo%eq-9vqT@_5z*Js5 z{;?Uv3sl`w>mF=h=a}#ZkHsWoTn-Mo3@WkcKVLDB6`tD8V5$&V^UC4%kPb>{dCblE zH?jW}k>+qbI;HIa=9v<-Fhx&(KuW=KWbA{LNQS-$XdDystRTe|+bY85w#3Fwv^TF3~>^KF>eVPl_g11L@yUTdW` zB}HCVw9hJfR3=rU2LGV<8!`gt6hZzstB{ShGJj7 z0=*u2L=T6QSJStaIlPSNTBjQL5Lr(g$rN{ZenM=UZ$9Id6XY~kn98h8eUz9|_^Mjp zu+n+4ypX8kDPdz@hsCq-$dOMX>7<%94IKF~xbt5EmrQ)EUFkZEdx8<>k0>9o{89l| z1e&xBpUqtH-KL9uRGpFj$YJL9{rG`;bZix9Y(cb9YB!M`J@GvlS?6f5zCh)K#*Y$4 z_V2a?a)nc7Qa|#34Bo_AWS)42m)IAU1u^_0n?cy6^h^Xcjw4#G0Q_aH8u)5qDPEHn1LWwjbs{qYVTMX5&)OuIw1irE99dL zvn*K-qIorKqi!t@jcWXF@3H7xMQLxhLe%TBx3ScQfFi$hravE>_5>-L5*|+BTpB3< zsF?&WsSL`j=0nf20y$HYFvaFz$4oSc|MF(I2^)1QCP|D8={Do!M@wUFlYDpzW?$6C zqLmlp`kkp=qAZmzI$4*=iSb>H9X-01o!IlY;w@tz5_&GklPryqi6z)k{9reU;TT05 z_8#^PoZE)38ZF2jR72)8c0drKWKCf|5V|5uT4(iRaD+NmueAOMU6mg;44yy?zwSXB z##!D#`l2%~qZmKGhdB-Bte~gM?@x`Uvs`Kv6{(&>pzNt0muHU8L?KO!;;V$?l_&>j zp&zAgY}2C!ODNEPnFx%B#IDY`lMCy_&*q2~reqaG4YQN0fCSf|fG+T5m{@)G2P8=v z-^jz!oX{6RKsgFoJ=&BrT$_cmB9zh*skOk>^?T4gliPN$yjo-p5y@|mCmy~bvhEan zQT;<-M9>f;MY-iZ?80}W#6Oy%<#hy6A=L%lxs4K0SbzF5Pmu}q{*s8XFDxt?*ym5iewwY|5{$+)YmAXETH<4p9vQ?hIazV=vBHT@At`Dri2Vja zKBBcSO69??A(t6@Tj)pFgt)N^ri3^~S=nyR_G^Ys2@AEw1dNGzk;}>0g~CYxtU2=K z56PNgXM7ZX;66>F9Q-$h9p1_S-$;-p!#`KZYEE8l{(-?Q`!ko|wb9#F5DUC9tQPPF zNOa|dmtlh#E>YV3g!UpabpNgD(_n$iasu2pW-MUd4wz+BFjn}$pGh8VFcP9b`?uluIGOj_C zHG+s~9I2Vk<_jp^6?3k%xyy+6u>C!PiB!2kU4y}xdn z;xCiMrw;)oeIW%WMzGb)4LDomVWRye{6Or9-vA@7Gpj7A!FIf1YeG|Fd|-d#%rkN@ zlVczM6-RJ-Y1?ejUFjZLiQZ7U8mfHjZ*}^dx5V7naoXz~tne6NjqGBx;03pzNi!%6 zOsNU6U`I!UY|XyC!Qt6!6(moEpe63$`O=?8FY}cCr)#ctWhe4^QA!M^%;mlD=olYL z!qjO+2Zi~sk*X9T;kT4BMtOYphqRcpFjfuC807|436qt9Gp1~^C6ouV!D;1xP)72! zVFKhF>ew0xo{21zzNEJ#Ehr65ao+axvx(Va3XF%u5gMcXCZG}R4s@TLwg3p4c+c42 z;ED_Ei8-s;hZ$-T8U?nVAg>4>{ccfrFW{VlV!KolVVrwA2>hAqAHM%Vz8a!Naqn;9 zhA*#Iq(Y+%(^gL`?WbxD57`#7PeTTAP;&yAI`atGy@sXjH%yTwBbFMlH^M|?*lx7x z0l#@$R-+CXRJF|Ikj0J=$s&W*h17}qFev4tvF}TSE998umn-(9;ql);iMtQ`ID7rwQTe4f%$F#7P>O#=(Vf?Sgx&18g<)40Bx zO@6+|5Cv#GfJ|Gs!+#=%MM=?+d12fU<)0*wEG(9Mq9^yYI}|~oykFAM9Tw{S@Jpv^ zIAN97`$rzp1(oeQIc86qfTylgXNQk~w_yLn z65CdqjMK!;aBqL_W@bPbN4gaX46mDt6wsY!3a&;^WS5jzQvdWp%Re+uV|gQY9y5I( zCOOS$H%~70JuynfScCO-$jwHOX5y|Azo~#`Wex|vi1C-aUWw#VVHC;T5EgoE>j(X7 zCbFZX?!OI~b}iz#E-XE5GG$g{2fw8X)KxNRVsw~o)m3+P3U|Duych+i^Q8*%(qReK zR!TyD{NheSVsnTazqes$YB6>DIl}@B5BvOu%bkNjfF$HAM#hOgveqB)6`7FLxvW!$ zc9cf>auJYjF~2ab-%$tJZJ{PJFK(T{(3#DLC=mW3-7A+UnpZn_liK)iSr7+oHiO?j zm!{s=uc{#>jh4vs zrX?8NH&a-}>)e51zCDQk`+?_v; zFmtu$Ad4mUp#5~@Kta3Syt~iaf+WqQZ-3+1%64*iYidB@-b44g4{H?TQkp0^oNH05 z+bDYR` zHRjKZ0uZrw^pPWW^nb2kx!QPk!F6~z=};jCr-Omtu^SEICy8OWi0L{is54jj;81H7 z^HZmJf)ULaxy5}l#mc)?3ytqW?J8q?6YOUEbCU2w(9x_vLEE*y4>H~lGc>rAaRxgf zJL0WWP@&2`rIqkAEh>#(M)RlF!(Vs2xM|=atEvge7`vH+1_YEBfw&1AlvY$# zsls!gG(Kn+2U+Piv>Z<^ce@Yyvc6GSXG}iwv^0W=5iu26+{5gq8Dv83e~?0mBq#H7l zE4LBOVRariLSZOW%ERd^Uvwlw(%&V>u(qjGnIvcfG#Ml2Wi^w*22`9Mw>Y;dcKY}Qn$7ue~`gBjYGE{?T*nC3*(CnzD2ID_`hf~>ZNF( zX1X{E%v(lg0m0H6Roy5mdp*R+LT3?8vi2MlV`}4A$}-=NMHtWWlb@x^uq~Z_KGl^7 zp+pt1_AFzJ3GwH=ex2qfu1zguBCDcEi_m2osf)0+3=tVZQP#JtthYsIdHB*|5RBg1 zOu0b^k4v9*Y^Zkpv6XAquz>oKEDt3KCZR5oI<%d|>GwSc+V8ZnzAcw4!*lV}(hjNg zib7;uvh}%U9b}J&l_~10Q-7t8 zo_WAau?}SFRX2eNN}QH-g1&B7L)ZANU={d*ZHuY9m8sS; zhD?LwBiyG?BO=F!r!~PNZmC=-b@xfl+Ax5hKq`THfGv$rE8ig!Un7@p;Wl7$QI&;x+3m=859Hg zz(&k(#Y;@D;iV;l2?{6-V^X*XDJS(SWLXxU$8x{%4j-3_3@w$%kBjpJB)Kwn&y{`r z%Dp}v9OpFBL3_l3CWAzQXws?{J3o@a#w$p6xaj4R4JY7Qz}pJlo6)9;`POuqPk}{? z2RvV$U^JtL&9f{PWE{wTPVp+_s+Q%L*C@l4Dk`HA2&>sr@H<;s%QIPgPf5(Iv$Ti;GH`3E(Y7A+Uk|4GIsmO zH~+~A#zPzRPA)6qbZeka9gF&}kRO(x6O)@#C-X1|IQ=qv?gHfq$;yUxxDjU6w4{U- z-gtQ;{im^MVsNYWOAKUi=QUhC!~YGlly+aEIZ*m zVZG57?yNGZFVwW&vXwK*Zi+NQv{y-Ght902QBAOjc&l`w0(b?K{GU55!%#@QZ**!F zgRt|1XL*UgS1JtWyD?@{Kkp!AS}8m6^x}ltHM+vv*l4uas@QP|^C-wj7Y8RCUkz5gGO!e?X9Vlmh zRKXO9y=Iv-g|@>R-c)63m?Vkoc9W|5Ltr((5`vw0Q|yc^EUzM?!Wyq2p2&aNP}eR< z%YRJzDbHJ6BVOSf46lGhnKpNe6Xs~)k@QRLgwPvvOHU+JA3wB10=NpG!|p!Z(-`~rHp>T9RE5^ zJQEMTZ8N@p{l0Rn_y>(Pc1L!je7M8Hc}uyD4Ur9+Q@1Q zZCx>1ZLgr#S+dIc zvdJYD`fE+05DTmQC=}WML+X;h@3(f!QwALc()y6c(0IK_2aO0syK__*Jd=1|2iYyn zB2%p<;37^~0#Jn5?z6e2+UMjnRecTA2CPx_GaHTjC38uFQc_H&uNe!pxo5H1)tOOa zR30?wJxAhuI19Nzm6?WHIMg5aP5D3H4fu%Zj(0xqCm;PnWfB>A&R+XC3`8lZSy86? zvgQ3b&nadC2tTs`Nj04r)ISR6p&WO|lC}eZFie12C5NU>kDN? ztMGs8L^_*%a7L4xO~Lt)1VB3#eh?Io=6$-Nm~B2q=Iuv7-KkoEb=P^J@3@s<(Q&IK zD2Kb(aw(HV9w=2;QjZ`!KpC@6_&jEhD!8QZBW$%I1U=#zw?1n4j&r>Hq$Eazo8gFs zA}6Ak*%y9|F@9xNOs-EwtoHerxSDB+5-{*k;Ov?q+kxGSERtGi3*SIQh1kz@ zy_pN088jH1t%Im2lbL`dgZiJy77{9wV_M$}XSSaf1DjcNZogIoiP2QQG$~ol)d4lN zPt-?gkL>*(Bge$lxmRh(OQ`war^E>J?+c<{ZECG>C+j-5R=y*l?5!kA_>XJ?m&D#p zko{yn(s+Ic!z3Ua$0RFn4{FsWkt+#W$4z324D&wj>1%HD0t zg_^{jzysZay9XIUOjq`u>|njxw5$eGlhX1wyFxb zKxAH9%-|;&hv{Rsl5tqPPSWxdcJ_Hm6S(||sXjq$Wr#YWW z2OM^A2!p$J#B^|eTmziWIn66=+H%1N=her!%JXr7At;HUvCDe|5+Jm*;Dd=;E&AZR z?Xe+h|A=*10U}E+u1l{Cyw14?fKG{gdvvW;)69HU^p{s2veBf5eKJ$%dViNf-ID}jcv5-uFR8QDgmwUQ`2H_=7PamK5dT&q#e$1Jp^#ah&U52$KQ(+8ycZ0UqxY@HKg1WV=TCAYLMrMRn+`X5p^JA9%#-$n zC8lH?6_2P*v;!$#Me^9p_LjpGMGd^NV=%qpxl9qjscV;yL;=O{Kd<%1iR;kz^>d%h z7JN+NWtD6-z_guCU?@&gW3ZG3{>_d2srFZy^5Y?@v+Qq5t0c#$Qv)pEj`?)zp1IK# zwG?0Z!hPwRRlJR~KzTzE=<|a3Sa&0j!o(7_O zBlwF7kn`(bSq!G9h|fpe&PP`1x`64VhJ<|X^x8umAJSeMX0o{;i|)^V?58-rW4yY5 z$j)dY9JhphFztAW?H+I?`j_f^AhNGMhg} zmF3PsN&Bm=E#Q|Dsvh;7m{yL~oYV|6jrh0U6nrG-Qq@P>@~GtDWVg5UyhSAzm|_=cjsqKW%UE!fdnHyHz9C3hfD&~sgD23eRp~!2im)3Y zCXVj88ko8k!~89``G~z-9+$LRs6$J`^c`oK+s{E=QselQYU?}y#Fp&4H)-`J)8K7F z$~Moo^M}g$P;>F-5Q3K*l0$BSUDA8jZ&N{Sd&Ubk6(9%6X92}Vp4bx`t&%o&#r*D| zD66#!veeS_Tn1#51r!$4lakgbm*LbApwyo_P>ZE+lc^)7dHEAP@>q*rYk%>+=@;;BJ7qb#I|*6}P#bRb*o5)*e}1W2 z>4kci?aUCZ=Aq`xs%Aqw$l?DSNs+!ZgDitAKf#ZEeOV7VVAq($6UgrV{DGTN*&<&G zf!fAl*O4js^jEdvdy9YopuJ5HIzt=3gwN@W)}a?no3ySmMss2*2 zU>d>Z(g;d#`uU%l!F~8vdY(1cV283H~gAc2eRC9bl+R6UoJ+%z%T3b zqtWG;FZW70mp@tB&DJI~y5v4zKRAPT)-%BK>+XJT9M0~YM5%6}sJYHMy`uJ+eR<-$d;TkLI?0rZEk*#7v)2A-`&|Ld^LFNec~lZ*{e*> zA98c{Z2UeOz4&%BzWsc+KMAfNGXVLFP6GV=TG|D=+B(e^yk2)6ZrmSF-frBxUT@AK zR-@lLHnrPF?H>=;X{$TPs}n8%q!jPUrHu8jj(RlDlMWsZdc2dHcD4u}*++Dxt{2#z zU2whLZgaKQ0}MM>PJPBCA0aP0FDC=fWYx!`pp8ufL(pH2nQ@A{k(_|*nR!V2dL@e~ zAIQ}E?o&M5{@=EjC9KB9vq64Ra{b%o2j*Ox6UDsnN95(|D|1hptS4remNMjZ`{@?)aB#B zY%B13b#tvF|3kB@#owp4OC%G_He~3&dA0K}@VstVffoNf6W^t1m~GejJ`l4wX4oa% z-nNs%HVLUA4*<2a69EiCFJ~8TJ2$zHqtmioYuB&rlgILWyrAW*&9%&~oQW5NoZiJQfz!(`UkoRzCmqmVEZ-Wt zjDIea6D$UoX6Zcc+fP0<_AQs6o{~{NMO8m7E9_bby^H|>SM%+or?)AtK~0?OkKkw2 z5U1CZx%v?Q#y9Vum5A1l`>rP(1R!5GpKe0edA=cA2&bs6``ho~xIe3YPutpJ-4hHoU!;!K@3I_gdV5X%bDAa;hwzc<@5&K1r-Rv* zB35rH%#iR=hjwx!;X!vwRgvBlWM*eS^KM=F@TT7ecJW(W4mQRdw|Fo0rb)QOw%dQ z1@>=S-o(axa5WRi?DP~T$tDf%`p8#RC3+VjH~%9DGC$AuTHuj=8E$>O{4fgZfKhP$ z#vfFTxZ_wYW9Z^g@v;g2@mLQaeHz)#K@ITt0Y6+_xCd}K1_DHV{QSV+i`Vi~ifVKy zk+ybz_Dtb!ssmah?YWLJ93X|U9uF2tri$ebP)BwCUot3ejYtO+YgJ;$9mX*eT={e z_~^5-NoH8{$hMYM<%q$SS#>pg9o8JNyZYKiCR&cjMx%B%WOYFfdGpfS%>h}obx8%} z(A`6ZQY;Mvuq8mkr=vVj;x+UC60eJwNQ01Pv33yTb{PYy^Cor!Z1H%Q^LimcD1=4k zIX&v}cE5WH9yeeY{Pc32viXIe*@10x^ZlaP@S^K^_R{}VTJP$B!v4#anNY?ArCHbO z>2^=w#ijGhE%sxE|MkLf?hr=B%TAOK80OhRk~@Gp;Ub_7)8kpYdJUu7HD(WxV>LYt zMP4KNJo*M8clTnXketnmOg~KGHu=SPQh5o_RBkH@cB{vA5oGY&URGQVU_;IW>{xPq zRqi3!Shbs1;$v`rT_z+>bN0Kc!>eDS7^Cari>RJs=zo;gR+{wnU;kBJUkN-tBzun` zVVVSi?;aF^_iv6J@ht8EULK-nCO@Lwy|+o$-y!+OXVHDP>#OV6tX^x3P5wd#qTuVD zEA1t}JY90p+uaoKHW#127cK8g*v`5K5|@FOU(N2}z_#Z=fFLR02E6SVPk|8+dOy3l zavvHG*jwa_XvS$?tk(3Nk2S1@;;daJob9^~d~fc)ugRNnIjy_RyRrU)Vo^DOmxM>| z9DD!%INdG_Pm0}Reypqu_$oz+S-PjPtC!~=3m7$5mFgz+QgNaHJoPhWo zLeHrMzcJASV39wcAe+881L*0$ov%Zlh~?dm68c1@a(wrWr~(AmgDhxb6WdVk*SlIg z+CAS-q(8h7B#6}>WSffA$a7&SLr1$1UN-x9sPp&(x4vifjQ?PYb$*c<15p~Q6I2$(4d zn_W&yEM7sv&Vo5wlHfVHc`;6WcUGeCcbXkaoCU;OW!zp4$yw6lGdaI$V(t0pKR<37 z*qG!{11@N&N>)+7br38zKaQZ;l3v13;z8Max~l&_>UAGVy;dUyLmc0(Umga2umdvvvoTI?_Ltv= z0KPo_tm87zu=-Ij8P=6ppe6F-ix>Ib~!`-yp*PI|T?`?9r3pRdZij?(`mp>ICFM&>h_v5=2541s&&Idwp)-%kzgb;e-t4(bD6+#Q`$pKqNP!icb6_GP^9+0OnoOu2x+4cNEEVfVH9pY{rPuLw}8 zxt-F~T3E-jQS{#R{qR_SX>jK6{cO`uQ;Dd7s4|iu<9na;44!8-Y|H{1zVkyesyEm5 z#Qwv*5@-T2XAShT13aEiGBFp~CJlYxZ(Z|fdv_~HHz2OL(DZ@Qdlfnv zsr|p+tNY_+hSCP0YALolJI*i`R`mY9ppzn<9pv%2_oyhX;?!|_oel8wJ&YHNL$VsZm`hy`!{juiY&&TUj5gR){@6uwWu8SOEU`c!R z>znFdo54hDN+nM7yVuo69x~CUN%r-6LgP6n;|F8E<372INImWYZ3XzXICwAaxa&*T zHxS#TK}Y9d1;!{^d$R+%)q|FLE?J!JFQlF=!p3i$x7AyC9?pLN-Gp0??q zAuHu8Axbe@Qg}0^vF)o=jLf5M7wh0zrU^`!*@E!(`tIh%r>?=R6q+4mAss>wkIfj>E84-eg2jlig7wqY|4Y6S1a!D$Zod+cV>(g(zsc8K zDEXRmc8HsT@jvo41WLY^c>4bMANkt(c)J9bM!q`tR7zYpst9s=qPM@cO3r@TLkbbW z`XgOXFzR+}9U3?856F@d4~VN4gp@^7fS-p6v(_^X#G@r&Gh8}FAlT81)kEr&eNM3o z3jyBmq6=2MwR^A2!V?b{X7H}=zBd-{?g9SIuVJ(uZ;pR_w>_s_*^WHo?QS4E`a=ZR zPdPOvZrhL54;XgS1EtVShS9Mgiw%R10^;e^(i&g-&t5ABbdqsgn--q}p=Q~UJ8lMN ziN5W;ofk}OZjjkSD=WH6I$!Rd9s!E`FSgggMgK)#k)Y`7Am{FJ z{P7w16Y~A|veFO~eZ~1N`YNaW+T!keVU?zWkE^O`9shVVEl8#a9(&pi(h`;^%td@vu7K?UTvq@zlT zD&D1awYLv}OS7FlB5m8d10nt|Q1x|Jf#>L|#aJR#q+?tJ{lDt#J5+szIAYXNbU8sF z>>~FQr>jmv{=O~i*5o;)b;o}_FiHr>1ue%T6j^U0@O~k!h~jU?oi05xGe$U&5AL3A zZUm~nW4Uxdu8p#nO9lLrPdL1N36spTCoZaqq3ml%zyma3V|Y<*PkGuFHV>c`cFPH? z0d>*j$D-n^}gP6e&rbZD(omIp`zLF5Q zd4P4(<_l406_e7MvuIZ0b7UJs^o8U+I z<#kU1*EUhFKauCryd|Ha;|h*{&7ckU{BTSE-uK{&Fj4Z1!sM#Y`FkIT$#NPKo%7 zQ^Gz2osFi0P5fHeV~mN8uI4^{ip@Vet6q-zUlzrNP* zEB|7UX?PA2yOLpw{jhSl$oA#I;}Xy|;P4LZ81Qfa0EATGPM$MXEh7WpcRd1{U$5bM z!1v@#kUq%1qW*@T7sMjqWTpO?Pw3m!F3F=ztB^s9q^IHf%^#1bZXuB0;~Pf68W_9^ zp1yYo6M8s+OWwAY8?w~yq{kOD?#;FLl8h8s=unD zPY^76_RO=ffg`}v)?G_o9iEQ|DVLD#3sQiUY2z*zNq^7aDFO7qK&96dL;bbSi4?q0 z{na-D-wV_R>g1>UkN&y~)n5rVLnxXF_pd8&b$!q6<@c-~9|+Dpm-hYs!DJ{}8@5Mu zK7U@hgqE=sFJ8>wkGtwo4Y$`{O7Cn)KZ5r`Z^xJ0t3LbU@^bnrD+!OCp>u7_d6T-w zbXuz}?xVzq^OJN{x~#fT`L%h>7S(BBvzN34lYpRkUW33-|D>Z~N*DE)VMz1mfuvP? z<4<2!E9cy_Q#zj47NS^3&>W-qOEcG{WuV^k*1;MZ7D`~SeNO>GVAg#P#DaV}-5#C9Xy@Mw30ZiIzeEXuK*>zCR zb>&d_2^QHH-nMybduOGN@HdhR)2Nw3HQwQt+!-nCoLeoIX-;30#=-Co;1iBDY>rte z3Gy!c!q3x=?e4#F=szZPWd}l&ucih{)S@kI_Huo5%HdGq$2ezC^d4NelxFDZsCviO3tHi1%)#PG4?MViAQmJ@gW+G*P>$ZIgx22|Vs*%9ZX{2Yg7b z3bqam*hAH%w6ngoQ0g{^X=>c!b8=xNIwY{~!bSbS->bK20Y|2q-ND0OgMuP);+lD! zU!5DjoSHw*(m9DrmvumN7uOx@A!iv!cFoLXLTJIzt#75;P4g-{wtIj@QM(MQ*@Ok< zUP++btM=FaMB%B$Ln!wuMZ>Xm*(49;UbA{G2JwO!r%_R9nmB$CQi(yTat~*m9gG_rq16$-nOZ5Ox=QZGh2& zr*U@;S~Nf)5FCOOcPBxDySo&rgy8Nj#U;1|Cx=g#h(+1=T1 z@t*g0&hz&fD#R|&BlA>+iLJERvxI5mXSCV)na@hc6#i8LxK==VgSK2BGup50A?BdN z0%umx!5Jij#v6iO;d^Z)S65D7*hgt;mIr0ulsc;w1{?idswm>ocE9K2j-=I`SSF+| znx-We!`}ZQP^8}a7Zh&Vf!jsXu5XIc%K5z~d_L}TQ1pJCE7}_nB13s4O{fw|sH}ry zbO0j~ks6Vw$&Tuj`oFYSAI>nAi>)8B&4A^;8dpGj4I+GEtUo-;?DU`Z8vkFl*Y)41 z|3!Ok7YQKdgp7uzd~5`ekG9qdvHa6sHhUHMXlEQkvHjkP9Tqa!`~Aw-Ps6-@ ze)z1i1GqE1LX)8`qP)7w#@`9MDgjEOM9qgX{T(}7sDyjQW2Y_h@E&32gDKZMeW$l( ziWt93VYB?OP?^~E^x@S9iU`=Na8}X}C#4cB>esu7BI`&0Ai(s;pT&O#U#|^i2*oLP zMWyOV&AmEMaEQ}ZvcVB&FOqSXeB+;V;*5T7HD>Y*QNBiD|DhmwJ4%|lNnDi$OptsH z{sk_^tc%{Xy<|ojySp1GE(CpCR?4^m&c^|I^wJ8j(!4du77+GCJ7iuCQ)1K%ZBqQ_x%zT}lXq{tPD%}5;%!j}|W=Swy9bG#y zx2;&jM%&?8Jz!NU((e`R?EjwQNeM(xP=Q(VY!YvEJM?C7KE&xH-z?AJJKw&eS9)2| z*iXC@GW`JXE-mB|T+kqXdfmIu-noFdzLSMH&y6T}y;P3D;|s0mpTOe<_6Z z6|JSik5`oz?gC%2Xr@*JEU6W64V}Xh4>gSaX9I?PXyBh{iaQR5cBN>lU=1&_NvA(PRxy3(^g2{Mp@NSaPy_)k+;n(KIK{y z3Q;yp_?%ooqa>Vz?DJsHS0{5SePI8jfnudGbaiAf#Vrwgx*WeuMTG#?VQaWIV=?@g zr|Oj+vG8Q?Rum-jr8j58Te5!#5mkg03V!w}pCWe0G;&jn6!btuYDL`T^qjaJM8yfT zaXW4I93T`*%nW2TL*&dw$oxPxGi=-xyN^{@)WDqbSZS4LFj`!wjkAHVHril*PX0hh ztm+-zZ9vrbj}wWrVuSWX1d2?E#VGiLd^Xso6dMIk?mi&Tj@;JNF-6MaFbJ{A;NEq$=1L@MJ| zS}kPXh4SBv;QOE2>-2wWuj57fZBaSW*wb3?)Wre)6Qk^Bz&8|B3q0i53POw4pB~Rp zb@4!Qc^UaVGp^@;#PN#}I^Pi}L5`^>;fx7V>@o>$Zm!sr;x|m2tts@{CFFCjAxXrB zMU41-31*Cwc7Pgs(;*X*ws?$zZq}girUS3Mump_u!3JQGo(#%fwSBtr%A4(n8FmKPFD zq)XJ<7sX^CM|yuMI(rSVMaDVC>aWkSe=n|3-`e&N|9-6;M(|tZKDzqBbk`qhRD>PZ zQ7J(wKaCsEV>ONcCg5J0?_u*pjc!8Qr5bx{F{O-U;H z+(r~zD~C?T{nK9O>lvwUpl`>#PKr5Oa!pK1)D_L52%@s2shlnPqPUxhC%Do&?^6Sm z`+**#DbT6lr<^lT9Jv$b@>vd=8=n0E|1iyyQV<2%sfvbVa{wUDYj*0ia9T;#uV&<1 zS9K<d!0(ZfWC;OVKr_QoNN*D4@NS>g!%FNqLIY5ZHk-zjRL%>-1^CyF~23k$+GUPRCWKqi3Ak%sAhfE3~kf zzitsJ2WLf&e7M2kK5-?c_1EO#AfhV4Ld(-K=jEKJ5bhPQ31MqAxJ)p0S^S6g`s3_% z<+U18O`obv7iB8seu=WF+>RrDoAr?74dFqd8NS*R_-7v+{#SWal_i5J!NTWU-WCEZiv6d z=Ncw|o6r5V7vQPFqdJ5=a7A!HQ_7F0xg_1cN=vAstmHmlS4+&%71o`MClhbvX|Fn_ zpPY$M$Ch$uT+(SAM1&3d4R~M+MuqvnDWR(wPu0E8Bw&|THI@7z`FoN5Ui15Uh zAO*G_Q9Ltr7+cCd;#kZoUXg(O`Vdyg+N;w9xtH92-gx02+N5MExd|zF+U{lfiM+Az zyJi0i_6q!8vDbt5&$q|^ckEU0|B1cg|99;5-;F|S$)f?KJ<#^PJN}l$M{lF6&7FQ{ z9J(d!5>($jHVcI*Fpajhv?ia(s(K>JIFpz552to6MDb@eoP(7~2HPCVyg#bgZ}SJ< zSL_c>dGZdCGFpo>q95^_3pkCGhKc~f0qO|Da@}pWt(5f_%EyUMsA*+7zBrX`RK!*U z)hm%v)|dib>g?LfY6s#6Wy-4mzH`_FB2uuUhwcAV zTIe>Z9yf8UqOM|)6%@>>QH=-b4yIVv%kTygXGBY&14`6A15dvxn+1f(KZ}8QqgZnTBPwh#)HAA&wBM`JLl90cO!aVE{I1ervIS}MR13Q z9;z>AQ_nQG#O%vBd_`1iyp_?I{upn(W3gStA5&OMF41_%Fo(Jo@|8n``)87gw+oSb z6^?j#V&GZYV-9C`NY`UgLV{@YxssDeSe1YpzbyLL$}1XQ`@a(rU}?D( zj!}ez)!~`FfRH1~K)ROzs9ExbYuD<(Q?Fj{r2Z@Q>coxqG;i~Epb1`R@W_Wx;q-d- z43A(D`!d*n3nRNGCWtS>|Ar+rnBktrf$PZ!JJxCKXK>9Y|1Z>QYusjE+J927TSxy% zz1m^z_IpyNginhjQN{4fmp(}fA&G-3hsiR-PAfrnSbO~>@aovfl91e6zd#0 zm-Bs$Bi;ti#QxAcM`B|Ma5ff4X0(>uMLvlG`~c)Sj826FPaFqkj8yQ z5lVg|^NC5A`)>?dKW0AX$`^e7fF-Kze{9|UN=01R>#|8B9E)ukNFTxL5k-zRTNKIW zGw}S9kO=0Q`WGva7>nf!q`Aamxhf|>q=iEM5HV?4+#&e`{8j2`P8m0d&nzQBt~SGE z4F4zU)yL_^TGJ~Gzl!7o(V9D^nQ+r-Q>xk)9OFjj94%VTOGF(~2BmU{GMu37p%~-n zLE~7QArjUC;D}R5bx1(M+N-`i>QA9cy_)JcQ9okS9L3z-DWg zN_FQmA=b+1i9t;Q&mG_@(gwivrr zA9GjIT#Kt*q&a8z`#Annh$8Pl>D6Y^l-Q|%#oxSF!s4+m{Pt*G!fQOb9t%_6IpzMw z8}WvM?PVAu} zPJ$t^OX?uX_TA5Vg+}LQkc79#Tf^lXJ{CAm#Db%53pnZveYUUG90M5tZ|Jr5KcUwi zZ|Wj7dqyD+63KQr{psT1nB~i^k3@-@PdGPv?1A#xN`$uV+2iiiB~dET%JeCvuQ(rt za)>euxZa8_?Tmt5r(CW7JM;?TL_HiBE3suJ7ApZTzw4=9dlo@__QCUkObaCXpb(>W zNw1A3q$z{nAd}?C5H+RSe>lV8W{KHd*cQ^S3#(-5O!~%g{?g?A2 zPnNE=tspi(&$yI!@o`iuIc3OkGs`RaqyHIlCpDBxdU0bsBRtNu4Wh#f$~tW^khGR~ z@4XrsZtti~oCj@t@jEYdVeqsm?_m#b*$;IJt5m6H4)%xl24yGE7T|72dRGcF|~MfJq~%4hmMFgVuJOR7#1N;U7$=E*7 zRW%2k*j~auPU=M<*$XWT9;~Z&<|!0Uj)tY6)74WU-a!4h3K;m2lj2t#4p4+wcCDl5 z7&8~MM7S3sE}owQ%U&2Ow3bsR1(&5ZFQP<4jmQ+(~T*}E;UhxCGmnADgPw}(J-!37j&=jSLw7bfdefH-h zVUEW1en^5~q`UfTDwxnYPje@VqBBYcuRep!I6N`to8=a-(JjUQj=X|XE%3hLX;5*ihUNxLdyw)rCAnZR9Xg9AKXfD3<%96 zqQu6!=MxgPP+g6IM>N#_JQ^{Uv)5*|$PudpuAAvDuqlqo05`BlebEnTTYXGYvqhJD zPL|g^fjdQpBa9PkW}pP4p_^egt$l5LW+O*3J>TJ;NhnIXsto=sIX^`|tU_n7uY zqG7*)q+&On9Hy8djSQt&@@hJ+q2E>-JjrZ~-#c;>EOUJEEolS}2$Xd{Dhk$Pjg@EH z3()Ak%E!h_#iN}s#;g?>ERNk2|Y>lT=6bO;Am{Hp+dCOOtH+{at&fCXj+AKrj`b&7|A$HdWGn&3=+azg@H zd>15<7-TqR*N&Hr+^Mda1nyE>*7kxh}A9F^^*sumqZT4w9npIuLYF+ ze*#{cBV&X!cd06OIvA*dZ%bN&;4OyhgW~<|mT}$cR285evu(DhN1#2`egNq&an+W0 z{F+xibHqN}%(Ps!Tk{8X+XQP_GEXrTHV}%2*}c`E-oXI-$G7QT`wGB5B0Q9!lpg(7 ztpiSh0$HPkwOM%7%#|8=gkEXWu`7R;k6{|@kS-I^^W3r`ywfBu>4;P_d1vaC#8PEq zRxjWWQ%-2(8d}eYV4{HAT^%-7%%?&(Xt*bqvFN&JEPT`MUE#ZpL`qetAGVPq%q?v) z{jpm@c#xs;>ZL~dQz^0j?G`nqPS;};J~kA#$iNoTB_js`Vxa+Um0;f337KIHSE3ZK zQsI3MKr>sJFMaWwHmQK9wveV1A`AndKttj zvNuG8fPf`O#Tuo#Dz;S-(Fw-87OUobkC)5zOgzG$k?W`znS?~ATYp)P2_-uz zCkgK+AAh?oU!pnv8&*fSwr0o9PImO?ievrmEmYp(?<7=?|NKu~8pX|@zao5u^DmNB zqyN5qL_-$xgaDLkiuxh9^?vJ*-09|n%leI+orq36oykg;`Um@GR8R5z8 z9vbyZMUib(XYLq`#AqDu4{Ysn@U#Fo_a2vx&Xkh4YBZ2@I`9_KpwTUYc zY8!>Z1v>;H)%0+|$fxYjlUco?M2l1#6t1x<(I2?>su&!8OR#|BEvK;)6g=gbeg6I^ z!&qidRo*yR5-;v0_&FjuHJ0NDspmL zRcO;}n;g98`f!ow60GB=v zf|?Cg*U;{@W3zEm+8(T8JI-wlqUY)=Nje~43iB0%`HxhpB=$P#><=oC!j?G>9JLcLd@r#L#W+a$%bhIRs zLc8~j!LpPI|7Jx)IZhzla@!y=oZmRVNF2dBQK`T9gDk@py{z1(So-gEISJ@8L}ghW zGqJ4f7jV3oQmjb#xzkjgh`Dy*T31pG8jh+@3l59O1O)0HB^TX#<Jt5XPVS@xl1tM7P^S&F*&5CbjJT=oWospjjM4 zr>^ND#isuG6|nTl1YTAubj}m#y2JmI$Ll+s$w`T6eb85j(<$Z|?TlQ%?X+UCStmeP zn7ZlkpteQa5KkQ-7E*!ZMk%c5+@zBiNXK=)!Ux0=zi zGtvCdN&zHQqtf$nVmt82?%D1r{upj5$V#|e_g1b}vnj(2@O|*ItsF_3DAsey)|o!h zA?bvwInk<=N3{ylI9ZZVLG{fP15Jyk*!8zQ4}YN3gPw)OOIvAK{!V{BZ*TB?g46<$ z_$&?+?u*g#LqbYOhK2<304`w+?+P`Qw)vC8pHE72JQM%88P>1WTJnSnAe|o1>D41< zP+2k4J8it1+0D>0`rs>;4NjULpOlz53fds&LRd%b5IOzVVGaaun%bTqq`X3|hV1E{ zt!#fmf3yfFse=7r0=S#^oKAfwd3XA5WE+{1Cdg!-i~c0K|B4o?GLM(jd9gV4WbYa# zG`bXA7o*W%Dq>eoY{p{O-h`YSa}VPs;cpg>JY;AYI8pjmi9@DFQwq3|TJmOkyktfw z#8A40+pvlcw%u1Hid=G(uj|Q(QEK&eI^YEpw=^Pd^2<|5!Jo_4u>8|CPaq+Z9OW0OSB8Sx^)Nr zPGTgYE5oivBzi{2H*SmSy<>?6jwalhVg`k!gdv0vhoB1ccDt6EFa5a+i<@a?$#X=` zZ?U?V?Tl{H85TjC)+?1&^us*Ocb4E3nn4CVI~I~g+~5wY<8mPfUOtFk_CkPL>p1j} z6e-N&^+adKcQqKoUO0sU`;IH-9{Qoz1y!2$JwK-|Jht5B(o_UWncFuxw#Mx8{oCi@ zJ_RH$H3H3p?ZY~B+6KRC7tW5K-W$RK%BdAT6(;&d5wXJ6Y($| zx{CiTCV_cZ4i-1zFI0k+>V!`5wybOjPgEM9u-0a2pI1qNj>2=6v+WDn#vw^cep0rm zToj+SXEhVAZE8+1*HopxfeRfdTQ?Qw+wZ22U$f25I2q+`dK|leq@lvrmo+HLr81neJIvQ%pCbN}$W*f!?8qtQ>zHg{ zr}F&0)c(Ek@i`N||0K@$njz-wh0%QxsC%WJKL=2F#`K#cNK`i-U zMVwbU`9M6%OQLM7xOSJ#4;${QpNX4~Dg7>?jd8Hb9VCXsn8Ds9z$E+;ysiNoYHBFM z2aXo%sm%=hD}#5G*oR{r0c#C0=-|m%4>MMm1i00>)OZGwRmu#Fb~ODK7xp3C8ppt3^<61bRg{kHwmUV4pSDIkhm%Dyjeb5fuY5^GskARpM} z(PK)_3D}2!QPFM-uZdGSCF-(`FF8Rij6{WB1x7qp{&NgMC4Ug4rkCe|dHB(PXVwnIkF6iI&el+0XjEmmdy{%4s}ERORyc*gNvGF<8CTfOts9 z=mNS(rg*Sm>%wDJE9zyJ>Uz_%kTJ{^jA-I#ay$o#+4oU<;m9)ia}9{m1H*{-6_`ck z?5!uaN$ZV5KEGx(dOljoY%&;+AG2;8xd9$2S|AwNtyX=pC|aIwi85#UgihmHx~`n7 zv19>l0x|ZKUeK2(&qD-Cl>!(mzZo3ZuXy6md8KL6* z+FSf6Hbt4nUc#3{@uo}0dWVVhUCt}RI=Fr@IRLukv@EHDDzVQ?U8E%(XV!2NV=~mO zYYt@rtu<|Zbh>H)^?ZycnY^JViK4-U>W$;a8Ld^R5~;rxzYGxd4S2em9w?)2C59=) zkX&vh4O8*`VcUx)w!bM=Sff(WP@P(7dYTkTA??qnxptRFKwHWuS5Mbqc>!d!y{R*` zi8^mSdeR4BQ3wY0x(M)O7!qe9Ev9u^P3cJre@di1a1Sym8`^UPE4f!3Xj^TvILBT4 z%@i%CZ8zx)H8NdFrY zgrxO(y;2ez{3*dQka7rl?$M@ejSsKZ6OQNF6znN%yJ6FOdv|`L3kd*eF z+8ypijGe%!j7YwD{E$ZcdJAUY%sI7v0H-10m>92IF6!q2ibYP8X4EJr1`Jfa!M=~v z(B4*$4q&cf9G2ny0lfkKMh(9Xekz&fq?w1@!lj0mZ((G6_rqek$&JN;lW`T6|4ak( zuWRLeKX4gzF9M;t=eg;-YQ|JU{5Y=>&Cb|nofLQCmF2)2g6b_;O9f5ZGaoi-K^G#S z>T1tstX~yVqS6;$CeIj*Ur0pQVz?$Z`R^US6!@=GoB)sT-EM~RjE^qSLCw$F`>1~* zLo40{lcA=Lm!uy!q;w!~uB3SDkJd3Eyb*Yp+TxbCwiwlp7`M2lFgDIuXj2$~B)veL z-}u+cuq=IQW-V1Z-aOsU8fN4wNp2B`H8h9R#S3~_wZgw?WSUC`F~}85l9FRVg~w*9 zlt7vj2u|=SoL9OMdl^ttKAs>tLLfb%~#vYB{h<7avWG{jGj*cEx&#hUvya+M< z(ExXi7W-|^_C9(PKNF7#`$xtOAg1o5C(vpG={fn*`QqP0^qYHN>4n}5j3q>=V+I#5 zo+fF*WlZmVZ7rJ{{p)?;l;GORo^M-t>2(O=QJf&-+Nb4z$sMcd%dx=RRg;#vYCU+a zI8xY?+F0&^tYAS>ZVZQpi;>04Be~+ zyD4Rm%bC20&`!PwDS{6;w_w1TmYtXBShaBoL*=g$5e1~7j7-gFi#AbnkcGnn@QT5GqItN(!-LQRiA5_=3ydC_LbyBxsZcFUGqwL)TA-?$RoGe>lGN3jw^N+ zw2>H5>TB*I(IC~j?W&)IuVS`N)O?(*niW{j8&*>rVXyCyW6I zFnGB#)yj7wm`wCZV8+=rjvmk;W(QS3kIlGu7*}@g+SS>1`Z$q zJ{jc)1!J9{1ni!F!JT|7A@-fReW-0R9lapG|S4g*B zZqiJ>Ou=&chD5_|Wej^NLLC9CBsn+hI7;zf52cQ3_Y7AKs;&uog>ROaRS@~o>>91k zqGm){3wpIC7oCNO@@pNffbN+3(=?MbUVNx@`OYy>k5Afrqrv@MrIzFgED_y7BcK8G zSu`ORu^i#LZU0Ulw9L7@T73hzcU9p!rBXIZd|a#Nn9U@OHcEIm;g^`AR#XteQ^fD% zPi$kss~kKPx8TvB#`Hi%&$c`HG&vobR<7qyU!y{sW)gBcw#RBy**ck~!Eam_CdX~~ zw!+Kof>2$;OSyEh9-#!?ZUzDLFkz|o%~*$yrL(XV<{L1HGOA_`Z8;YIuIrKfVHf%`4LU<@pRzaNM1uVWu;I4ogsQ$ z=|km=k-;1x9*gjlo{!V9Qorc8Tn;n17N{zeG-#Fl**OsxUTRv|nNWO>kEiWUMDa`@ zCjzm^>|2#P=Md0HqMDQ|OFy544q;BYef-Jn&iJSd=<^}GV4dGgCJBPs9}Oyo_fyF| zxtYUaNL9%T^JH;()o;Mk7mkq14zX_w$NK>Z3)ruoc?zN+>{Z@=kn%<(Q=tD?Fi=sk zTqC#(gUhhLmk-sMav}b?lp0m^S|jwv@0TLkDkg4-PYsw;%ll&5osH|5q5+x?N`2LO zLG+Ld5KvV*#o~(z>=aM15z0tekJdOri@#LbkXOzo{;C)%=eeu&ELaRd+Nvg(du_Dd z#+ZqQG7-Y(05VZIQ&E-H5FXNJQV%`cdiAVCuB|h920~2Q)LoU0+$Et7UCM!bD)iQi z_2^lN3Zia}r<#OK(9VBBhOdA`hrhkzLVdzSHf*4!EO}<^eC%NLNNLy((SGj!rax`# zFUd>V(^VxS2Qim7w7dmcjoH44Q#e9i$`gg#0mSmhqVt8hmP%fz{tULBK$DQqrL#l6 zLX?jRsbojX`-W&H6F?SKm~cHwjgixOk_2{1XlKgPAar!0ITfXcN7dOIE(pw(hMjB! zepBsM)RS3Xk0Xe93VfmlnbuCV;|C;|Vm_jU>*cs1R@E(op<2Z*1sL90l*3AVVp(a>%kILu|EzVb~aF50%T ziW8kcFhR4I%J>&4q^FIoB`FhVN--GNqn@ep{8MEWx?Fx)u@yS4X)a}qHhyE2+_|KG zKC*XPep9ZqYa2gimFRuq&$}m{$RVEulS_f~803S24p}PX|m82 zV4EjRHpo5e`|K&oqCJvrIJ7pmRML>m1o-p9VNjMd(4Ef zaLYR*05WCXznegV#5&S{L~ZJQibEd94d{Gs(Am>z#r{j|sgULtYLs4%7W-i1ZF6`j z<-rSHZ{DueMVzZ63RE84K|YMqY*A~=jKXOKfB17!CDX^gwAoplFr(w;kUJtkoh4wbt!7k$dv}H z)b1CxE6Ma0p~;zJNtlE6#!?dT10_|&m`fM0%vbmql-8xfYV86npv_hl#FK z^>L1IHBtMmo*_xNS2_$nU_S3+@(a*rYgaZvHlMy!>pGtuqLhS^YBp`QK2j{Ar;GJZ zGiMVyOeT)9G7R9V`ZlgM4KAb0qODv8o?QWKu=5}koxoqhM>aO5sSsA4NVes3ti$b$ z@NJ(QbY=A7d5y9)IhW?z+%;ipu%{?lAtB%Umoci!g_OS&Np?QS6AYM9*d+*AZc)*ySV- zbK~eABW=~DmCUPJ+?ZK(jrT55$QYoM1RSxXA=2}Qd5jjD9inM*| zD|~s;Z`%0kFfzvI6dT=hgaf|;+|MYha*HgG-itoqC1!~~)r#uPQ(L}u*nrDDyru=d zv(ddkSh52f4g%hI+Qs`8hU@0f2_0>$NuHV6Up!T9K*I;RSQBb(6Mb zqySYg!0a79oigz^yf|&mZysin{A`u+3Jd%V)miPJi8k4>Je^`Ox(ZQei@`84qvkg` zUKO5grsp7H3ytAIB9~P9oi#10Skzi2&?)WFlS37ET^)LBm@qD4m@zhSXcj9{)Q=6G z2Et7}b6a$WtkjS3JHJF9NndkoaMpKC5o9&!9jGBqGwn*+8%wkz#S(RutjlV z&?VU4W^HaQ^S)+5XUodo(llx^ij8Uoz9YBPYh0stt?Skfe>!6IPE+p4iurh|i?e^c z_9nH~(5ED+858bfC+z|c^--LI{vkOL1sln;L5$Php(?zX9E{0nw)%^)GITbhL1v%X znA|U4o=FVybR@k*cy)zZ=3twkZw?lbSM5-p?BpZKX35@KC?9&cAUIfxlWTw3qW=-E zPk-oR%$bZ8T+{}(v1$o)R#BTDyG5f*p?qIdiO|0lrP=Vj&1RqL`7Hu*+7k7f5DOn* z@yKg(Q(rvR#P7z!Had2(KNA^cnj)GWI2b)lwl1K`fh!6CS_hzxsa-^ zHWP@DEtn@K@#w;=j@m)ERN7pD6YEg4JR}UJr zpg;f~jdWr&PbZ~VBH&)8Oo2G*fq@Jzac&is< zY!+>SZMt^EE5?aVD)wBnT1yRrz8nP2=8Gm(Wn`4~?<)hJ5`%Lv#9iLL@U=&MO@|(? zXjkgrR_yfNz9BET~ghM=}_cNe#1GITdm&#Y~aCU01PrZv+l2vGCMz7ruGB{o3== z)iSyx?&B7e^@Pi!$&m8&WD%DhbGmI#uGLeHFf|ac3`LQ zpN$2*cxpU82@uNdb~DL09>qFvuQfJs^O@y;U8`9W2C&ZkRLDJGoFr+g=p~aWv?x)f zZyX16n_e7-&^^wZLoxix5yYcC(b-%S*M(@=(;TCB8%>%*tLTIV+)I{1UCX-5qX!M% z-a@#rIurP7lWjANU!xTW8qvWn#sZGmHs)K{RVk=)P(_rvTjP%;E0b3=GEp=3s+}h%<$lDIlZgNAFAvFG`!|ph}XBnpsk1Cq} zvXwCY++g|j?H|hcr(xi(*iNCluBQyz^W@jmo2lr?v+cjEeBUNMDYCw2dGR~w?dQ{Q z!@szS-~Ddy^5ef*Z$7IFr4e=@!ZrredOlD_lD0Wkg`msKc>Uak)Aayf)8Wi;kwGCO#z6<8#B z0=TZ+g-w|7i#jC7&%+rl4bwp@V#|UUG6%u{^%$UQZFpGEdcRaD07lMjVZWSh>v@5$ z$;nk6&oMYLSD35%*`br*u8(b*@?Z`>3b%wGgG4ZmP0q^8tr0331=K@2p&WlIGb(i? zS!%vD29|3&TW%GW0kphwNEVxa~4OImKM zl~q&tuwY%Kmhati>2$;&Lza^9dNt{uOF?vgfKBibhq{6^LBybsSAlD-YkLH!$e8|9 ze<0~$F2Z9urXHkT*jvmn56e-cynO$fT|Vm$kZmkWz&XRellf7G8T}(F;>>Ox_g~(V zu~~^8)_SiE2dKkcQp=o>We|ta$0;VbWMWw96Z-HHV>m$isOTF!V6`%|s*K1C0h$ogfD9^HXTn_@86XLR zW{*{}YUg>!Bps>;-7DpQdLE)%GnNV+P9pE5r z*h_$3y+y=vp|Q-a7w@oLviX`tPD+jH^AZ7X!-NOBWQ267+1m2IIz?k;L7JHJ<1#zx zbBQcC!qcLP;^V&D_T8N_xP(DryJoLc3T@C^cKq>dkGY=l|# zt*667md^(&QUU)&jx?{7Pk5hoMsph6I8)N+8qC0qWi&pzo24@6jS`r=U_0V!yw;Ef zt)JWb;JE|+0C+v?;aj(?=yI^s&IU?Iq>+Nf0$c*Fp)FOqNXT#12{#Ja%p_|D=>(>SrJ(z@II<6JPT`Qsj-fdBKm#0~>OD|ijeO|YYE z+>O@4GK;;nm{E@6i%Y4lX&cu8VU#s*j6vnNiRpV^-1?Q}?vD1&W)k`Map%E^#9`^IoM1`JX?-q=1 zPB_vp9HcsQMJj24-5{+`ALWEI5=#!lJ!M#*O5pUljepQSESja)|nLJhmZy6}l zeLef>-Xkdc8+Tb664TBOgFYRRvnb_UUDkD<4xN~vL_$B8<%C8&P05RkI5Ro2Oz5Q* zPL#AQuGR%6h7-stM9tYaChl*;s9WzmdL3Aa|3ZBw+1b(at^F-C0X|Tadv3(>mpq zq6VNwIa$!*B<<&YXK`vX&1#a}f}`%Fe>*Ir-88GW{v3`p8jOs*EXXb#S=`?SyMg>!nAExj{Rt@FN?iqoNvUD8^=34i_xM4%> ztv~)5;5pQ2!1Cy+fBeiR&=dA(Gh!UJ__s?w>K;mg-^EU;Ngv`QBTf>~=l5XGN8T_& zdbMd4I35n}BDV$c)R;m!HK=?5qkS1Ob^fc$fNclG+@J%R#Utv)3fAdSA0?QUJXoL76W((R^smXL^LZ;_h?aXf7*|m1F7Lvi?-GWDzq3J-FsQ79i~}i>3!_#s9Tqk_>4e>6rwMHR7_SJ>9{3|fdSv<~w^+GS@=j3C}{ti_UgztfqHh2D; zl_7PTRkRpSdVRo({bLSS(uK3O_H-9)aV&3aZnPg^?rE0e5H#`ey>CghQkOpN!sRb> zm|QD~Xa^moAg;3w*6M+jW#IH#yWHCn>wJbs(QBTkMFlc+5!N%+e%y~8=KOMXH!YATmEY6TnJT`OO zy(+S{nd6Ve=e1Qwm(+zK<5zSQD<}yAd$!qRBCQ0#4a?m}Z7gYTL^{LkQ&s$Fq2G}G z)^k~+qe~Jid+a0a2fJgryDV0lZ}}cCmVNT^rsumIQrWbkn~eSdYl4-&Y@UBB#k}D$ zVEOyD-$ruUQI5F)5=1;9sUY}E>RE>A~())9cR3b072d6$h zOAi}Nt8Z_jozfn@uaA<#KHK(fEV`m6${Z*Dc{Syj;dwk`G3`B#`&4bAt#(>uhc+_% zG+ZyDEURUOz0T>Hw)?#7CI8!w7cUt<+Dt^d_ZI#5>|l}4IV&v7ED@YOQpWs3(2+Gq zTjBBiC+n7Or=8muRETJm`UvZxU>_MvGr)9HelU%cr%}5H^ER>XK+{5C&5vVLH^qPu zR!tqwiI7;V;wDIh1;!%B!BD()u-^aD_YnoazgT+nUkN~PlEPBRwyg=@z~$UVS&3={ z-R=JEw>%C(U6`fr7xtHYY_ao%EIYF9@TureciVFZfZdpA^j7Tr>Zr<))VZQ3%3qWEqY81v^@O6 z)01oesEh3=R*jth_-iDqlnx=6uWKfAosJrak!`jp`Ef|M%Dk0Vta+vbPsmlU67 zD-SD1?Dz5voG6TcSl>6r#G2ZGMsblZE7MiOq1=fW+?9|mm}G0MV~oPGAz+qs?16QF zbi%+srHbvdJNZH6vJvaW#yyoRQKG(gdLN1dUYY+gKSTD&A^wxKiCVmuK|Zl814Itn zq3-hg{rnJp-1{12BI3a<;Z2qH*cq-bb`vseD{MGYh;irCBPr6Wmi_ak0N~kIfxH0~ z!`Ck^_M;Jclsu);%zma~h2Dz^MxGoJgtton4O>8@zZC$#;XZy;h}Dwxz8%)G4VUGU zN$-oz^8~wv!FSU+Yxjf_^G?bbkQRG)T#p*QMX?WM!krNXDZU3QPp}~Q*4dY6wT5yz zwi3YPttabzxT2lSWQ?R@H^HP#MS#*c6xrEI|14VGF~Q&YW;Ow@&9TF_xNmTcb}|ka z1RF1*^4*z0MzU>9|`D&rSaJGK4rTf4%HDHoBHDIDyBs}IqbKb z;4e@7l(!#=D7{aYh4-M32<8l)sY1njc~dl$Ia&ots+H((TQMl-)XR5P!6BslQU^;x zc}V1Zx#ScMHXIAxMB7=PaM7Wuu=J5!3r96kPFpYl+2H0|vud)0-V}GRT$t?p(WCO#bnv}2T>wHn(-X~8tMld8 zJL>=mBc!Sc^QxWydfrTu;_Gc-&`Nc;=5G^L6VS}s$3~s|>>{pXx1#H<$IZ{(vZxGz z*cli@1X<5}Oqi;U$0;{Eo7jGiU+V@4#hcEtE0MM>ulR!_WIQO%#ladEFX$jPm*qgh zx?B9l<&b_mFTG-iqsXin`+A9m&g9WIY_63T=S%Z3# zz+P8ZD~G6Z0;aUmfHVTEoIME&;15@b-T2`E{1G>Z9hy@X;-f+}1Simn`UtwyhAl>; zCboWe1tJ6&3>IZ`v@3XQeRtZL2O| zZEbyfb^RU5)|T11&m~uUHACZ32bk<(0&PmbDCkadNK5h>`y8IX4f5b}c=fsXwB|sJ znnjle>Mc1xbYxN;&5!KhVUS8dGc;Ah)Nz=a&6wj>1Dg_bWnP>(ZPW#N6Wgp6O(dYB%3*?vT+!mH*| zs2V?i+S@_{`95M+>55E<7xX?iGx zbcEir5*&)(U;XH?_)IR?_8t5*VK~{A#;XA;6OPo2-!s?)OiLK9stoPZ$J74LLoE~Q zUOXq*UuV&?2#SuON)0)n4<8=@2Ztk_@-Futy9rVB9G(N-G$9C;=+Id7L+@rbMgm|E zF}6=K$Q~wn*FJ+@z2!W}7>EV-p$WP!hnhGbn%fnGJ z&%!26-j(%i9dukrVEVTnrSs3Pi+Fpq^#}9{8rp?FwS>I+sV_^ zSSfh+p4DP~Eo`xvL0yvsRkI|Ag>8PFm9QP1B_M`_CfME{%^WtmSGA&C-Ez{vlI~TW z6vhpMAZ6diV?gFm!RciUL#p`e`s54xKQx7ga8E1C>^uAXWqtlga56M^HCD3Mwj4Q9 z>LaR{by|Hqio?PRi?B(XW**t&C8(KlkD%mOY}~!sijRi&7YUa41yw)ULBNT_qCYrX z+YryJKpjOX5tS%n8~XKhtqAAVdjf6W?ttqy3e{UdHVs)k0hL+loIN9C*Pt>UE~YG=xZR1C{!`X2W6hTt3&+u2@D!Vzdr?5dA?Q_60zObHaWg`br*_^G$Z zj%D*5x93>oF1Da5YYt-epwh`=MfY0)tLfu;Y_+irV49=8j_za>-x(Z zh?16683{rTHjk5X-MYyffZPYtqsust$m;DuWSF}AG&Vk=qdM%sPFs0SCpkR>M&fxcmcHZjRb>i2uug?8d4n(@Ew9)#p;``7 zZZRsH_1>jF+K(Qrh1=$rH`skMol+nTfV$tMovT_bO0s2Tgim;3d4n?m3Q?$7kUf+Q zO|{8pV?FB|bYRtgC?#{h-riD!uYn6^F`U48r`~fsp*63ASaRLkRo&`x#XInLtj&jD zqml<@8Y)`uw;D6=q{oj3WW+27Ne{yK;~@%Bp1^3%8&;SsD6VmP)J+KF#sH3B4shz8 zms*;TyA;bo;N7x9VawIAs#pNpcAi6II;}ftfo=^({RGeHo4pHw+YVlbaJ)`)J`Y=j zH@#d!P1>JT1OX-APLQ5T>MotGBM?d7#bG7(d@h*lsjTo*tYHvxKFz09yk>7EHCPK< zjX159s;7?kB1GIasZ70T&%?uG_9m&~J+L{bz6JZn`a=dqE&;F-X_Q7J zLq1}qluLpEYT?I&c&>MVU^`jiUDrFEUkGfmkKZRW5)?Oh&jI|Z^9!-47)4C?= zjl9iUtHl7wx*q4s;t{i=V!Fv`8oqLtlWYo&(?E()&VGW)dSaZ_Lp{NFpu0e>IWw5K zALM*Ci*iFYu&6G23*?qf1b`Ny=TD*>{AIS>f-{amCSN4LJjwH zvMRZ1{l3orIT`|o8fE9;Q|%+5I~XDzW$^ak7n++A(?x=(=FinZn=J-xz2Q1V$>0ng zA{Y}gHNkx(q^PM7FK$8A!*$#5uy!8;VXb(M`oJBmk~v9vx3X;)dEKO1(HV4C>g&ne zRaC;_QS(UjVB>pO*8)@aF?k+<2*V)fzq*@s_5uVq&3+%H5Q>yOy~y}Q2|?~Rsi>P4 z+~XCk1I@IAwN1jgC1}%ppwutvEgoA$ms@v&0>o<+;<_yauFw;g?zjt)Ok+{*nZzV4 zBW1XFF2|LWd}6n;TVRVeSCs7uom6H_shHh(IHV9Fp?j6Uk>O0q`3&O4L7HloGmS87 zORQ>6=$oEbZjQGmBGm0p%)mIlLZ`a-?%Gr!Fyby(!(n;|*R*zIIo49NUZh?=BK z;L&94)KscK0z%ew&=!Ns-_xrp?E;&_HM+o8Pep?AcCS)ZL*S8>PYymaDRGJl76y`6 z$U13P%R~VdT;%Lpkw<6Fx&-%DXN#qF0I#6T$;~=WkHsF#(Z&6vh83Yg$Fl+P_oTh( z>voANub4ribsRFf=)t(jn>*myFOrqMow{NIf~yB97Fe$^8lbV?+OmUoAV_r{`^+n{ zWz?!+&nh<(_3Uo;qw3nsUy7I&VpW_1Bs=BYys&PIl{ zi-rhIC~U*)0yYF?Zgh(eONi>Y5;(G0Pg-r*Dhr5fp7SmhTROZi6AAb|=axszOKUMA zB&^}NtT(P*(N@V-K~Ca306=X*^24?DPaPn#RgX~j5E`K|L+kMOA%eqL_(ByeNhZq$ zO6*gkaG&q@>gs4qf~c?P436SMfgB27r1EHsWh_NnH$afL_6_XVmDS9%tqQn8k}uH1 zGOd`*yw&L0CQ85z9opDTkv)=a8D&iawH%p$^otnEaeyd-Z+2*1z={V!Old(R+$gF0 zz?tCbaJaL@bSezmm$lur3K*N$;%Q7yKEXS_Yl7OHGs+ed^2h&pp zmL0=7CE#fU7+FaDF-piN^v+JLu!Kv#HiFI7_1m>R?fg}=_l6_D;h zBsK@ySV_1|ui9g(R+ZwXRk=YR8C_-zPpUw44UYI;4~d0{YWN25S4gIE^c76vlo|Wk zW8TZF-J46^3rSoKz*oys^*kGfkSt%MP@_(8A` zs6X&7d3Sa_+UoH7@5M*wS>(Bte1jWhb)U<9-u;ZJ)cxqNrjZE)^cGr z%!@eRPd?K5TAp`nhi?Z;dTL`FZc#T$m3I_`SFDZl>;oK-i=9mNff6p1@pJB+$aVm6 z)fFO7dj8V1Ee7CKh~=Nb$kxApz@Nhh{PPFr{^Ni6CkN;Jr~lR9+~=?SKRGz(t^NNo zIJaN!9|q_4pZ>Xnb9YVm^)GL5Zr|%a9-K?(?_KZm{m*l~^TYln4bJT){=XZX^9TN~ z49@*U%s&eGPcc3B#aF*(ul;7f$Un(69XS8vi(mY~3@@?>zWBR8**M)3u2)q_rL`cd z58&mp@z%KujjAtcrkoKTr$k)u83d;dK`z(J$2!z;R_I!L_W)FKBnY&%hQKIgaQU?L z{dLaE&RmtXmL09r{<*PWg$fA-?Sq4w#H|2jpjchwDxK;t>j6%MuyO&{cD!C!VoO;) zscM{nC+#fOhMjxWz(t3L{2q>C4CMkJRV~%sxe6pjCHJgc{G)%vl@#>8Rdjt%MZs)w z%oH*6(*4Qu#Q+SplRJvfQAZea4>(AMmSSz!38#wsMCTa`EaJxTXK_*7GC+_nXRPtUFT16O=&PxZ)KM3o(T& zM<-XV#_hc;)bY%i(oq#o$=sCEU`0*atU*iZwpH{kqh$xwEg!xfJCpjQsL>6*KgU`} zk4_5~jm&Q)oi3T;fJHPLmTdmIbq!?X$*tt>?AMos%J=(w&o#RKnaX~JYr zh}`$&`aCT>SW$z^e@D}Dp{QGa4cM=veb&)l)HY%1KR z>5lu|4?l9MZE24-@#|fh1{_gsZ>?pVrYhN^co=X~YsYqTPiZU=Ue$%7G+}(Bn)f%% z)A3(!!A=+rz0T|IP-E+F+~xWlEMlMK3lhizvj$FJTH(>-C9GSa%D`*vT1zQ|pI6t$ z-Chvho%)x&d$@g4tfZuE^zx|3Rddo-1s2O*$eN-pIDN8*FwW}Oojr-#b7e=R97kb0 z<=4Jo77XFf`np{@aNC2$Zd+vV2uY<&`spEwb=BU`iQ?U~A66?OQhCJM#U|K|HPUI$;z;tF1y1TPlYQ$E|dpD}n} zS6|LY#BB9^+L$&hQ{DE9-dnL)N-Rq3`Igbdaq_4jyI zun%TuGh*POG1auB;H=^Bl)jfjI9*#=@pk&<)PV4GLB4m|%1BDB5wD&~Jn%@uQ(T@H z+_={J9FH#aRs^o0r-Y(kpL2kZjYCm`IViO9&gbmM$(wgCJX*8`yDcuZs-;C%PvsRy z_An2w>Hp&RSMzKp&lUG^V>uE#-QEbx+2b7fUQzQ;o>Wec1H#Rds!Z-xKZ*rGsVa z9P>5WYC9)Q=Y6J4pZv!-sO3XNBl9r9p%y;_(S1(QghEWOL7j`9>waV%Zxu=Xlz$+IFR)?8vyNLL+Z9j|z} zwq_`>&9l=YhREc3U2W!8u6nXwiD1dT$#G25*1ZK(_3uzBI@jH*L4-8wj{DQ%P6hH6 zQtLJpdkaGgkc-^tjVB}O`LbEpW9K=+w3Ruz>8@$2gITNq^+gpt&sx$n;Lom3k>#2K z?^gwCEJG&`BPsRd)q|qIQjaZAWhdPY1K)YgYuO)H=5gipUiwC6jn%Z|=-KIF02bkd zWYX-lB?hsXN$#v6mSFhwlsRuAQUxx=wXM7Cj*89(bxmf;XHBChM^6*sBB}sQp30WN ztJ3YHfu|fcV>|0R9I@)ew+ey-Nho4vPp-Hk?!n?%i0)aj(Z^#`4KClT?-cl8pJ(58 zr&wZfT4#8ENCpD7X!f~h)`Kk{gvC1Tvm6?cwRD8!8Fk@N4CmZ5`XMWYxURVEMf$}> z-Rd7kr|3`N4cRtoaK>G*8;LuQN{yt0G!*XctRwK0Q)~D6JVT=uYac*^Xtj|~dpvX1 zP5_{J`OG|3ym#~YIE#y*c@|0Ra+~ogZ6t|lmhHg0z=>)R&t0WC?CiNt?y{xRQ)?Co zQIths3z%iw#d^yu|D>NAK~6PV-5wv%A0g~uFZBr`4>sZFo!bcEmfLRUD1c(%MRz1U;7?I>4^pmwoC$py2Sk&YzFy}3pH^=kyqz6!owRTbjH0-wM zGr_t=qngLRm_{wFDA@|9n!c(>@W%H(uW%Uq0l`5!$3AvHPn$t+SJq(%V^ONE3Ssym zYwMT1>ft5o1EOhao&*7~-1T%@5^Tk7j`p?pP#xvd%gO%Z}QDXxThYR1(B2^IUenfM!9IfE4JRn_HvEE(jp%T|moBx=-xJx$*`X ztND8`l-q6-*aBQnZ;xwFfvFeBX0+hXFFUdJ!UM{6MBAI~WsXD7j;I#Q4TKXh4?FaB zVN98S@e^3pdN&lu9upztV0nsQzrm|l>sWjU3cr$JFSl2 z)~9(5npF^LO{sPwo>2Ia4YNFm%mTEv|L87jzVW$@2-%T9olVf7sKAUN&`?K4^wJJ@poxEiq?>(-T9O-6@DlAadARnr1f(x_Lr$I>~n8$GR z5d^~)*`;pMq27}uUos21vIAq28rurAM+a|=pI}8rR+GezZOb1Qv1CMEWwS}v`!UAc zucEXH&TPLA@Mt6)D^;&rHUOh|sp?AH%g&6!_1#+p!0Nc-;b(ZYfaQ^LwSzs)8wPZO zUsb74F#yEpD^WZi^v9ny1c~V`=e8EL2L@u)9%(IWUEdp70h zJ5^n$+X+TIZuX&-3#_P8ET5|=Et_)fX8SH$Si)#~$nCx-s0Oq619gE@wbUVC}az7wJr^+coM(OBd)kfAbuI7xa<(uo_T6B2ijf5c$ z(0S%_3$NqxC@?rVfO>H zSE|gL8_;f7BmBHLj2V1M)$wCT!qajB&^fa3ycXQyJ78;GcT74zMW;sfRpuI=-3-%D zrQiWmpsJ#z4&b!vDy41It9WqSJV{T|Nff{~t*iW<^f(@+K4V5q^&wS!%<$K+PxLrsP!M^Ku}cPcjWircCy7Qo1A z&|2u#yUK2kt++q}ox53pWpizNxacgJ?by6^;=rTub5tDT*0}79jz5y;qXe|fXDYH$ zuV8oVv?Y%WaNN?mN8g0hosg{R8f6;^RQxt>buy-didWi$58Zk6X6W_2P78L@cD4iX zgw1*~3x;9^1ITX;!A|A9wgcp)Z%{em?$fR|hy~vi4qnAp4T*YYYQ+#drqburQ>aV- zZmCd$7_w!9DcKG&q9e~MEYA;iSAHXFMTNy(A(~ZuCLR^4JQ0{t(MrzH#c<3GI*(lkfw_EIU(Uh87_^- z3sOf*&jM{uaPm;;Vwa+m0yl{P(sZS~;ko|0JoHWs0S=Q>jvKDw zoWG;<Agt3szYt?@n>MXHP5l;6S4^*!0dL-y>eHq)nmv zQwT){B(%0tStzW^N0TsUt)&w6ing%A(2#%-2pcCeO)a@KRz53nyQjQmraasuCV+#B zGAIQ0c)z6W?BGTxMjVPw0e-exzh(xyQ2~tfMwwhCsI6)Jz2-j9)Q6tC;rH?HZg80F`@EeUQNx6lpo}&wY_xi>eyk zj+o2NeQl6<4c!)ePoNwG;B`5=PXO%)8&0(^HOy7_v*np+V-t{P>QR}dM;~5-7R-h~ zsmCpJjJLBF$x#+jSeX}sQm^WhDUfF1a4%(bB`PtczIw>MPxRk(HqO-F_1cgh199%J9qI^-2xlgRz-@M zPEQMYZFWWz4Qz!2Ep6a=k1MZyu!SD?Nz-P{F{gErAs!nPwH)qOQ?4CG`smZxn{zyG zQn=#um|iIw^JhJk&F1OZw5d)Y`%jY-rBNP@>|Tv4`YRYyI{fm|*jB7W$Bm{fl4=P( z%E7ZJVM^NEKsNz<4_Fj_(;SeuiQ8UiRjTHeWFaa`GVX54fn1kBGueT64c=<-7)X?PGtG zJapvnx$`)h=}MLjzVlS3NX1SKC@evMTNDO>#7C#Im6d9*B0;Yfa;fqVBhVmT>UJ%& zac8AzIh(ptLZr{zD#WQes%z7OV2@4t3(vpV4U(?3r(%oeggiixV1{lpo}oB5Of$W=9RgFh>x0@Y#!8jLjgtf120s+n9wK35WrOJ$t_=%KTZ@}QAJVUyi zPT0mmmqET<{;o2edVRjSQLV#a4(CpQX9QIZh1InIzQ8Gn%C8zbEC~&fL(hQcLF+S%I2LVT0 zGuAhp!-qVLF&+^<$7@2k`IG@hyQa!pp84qN!GrRoW)xmRQt_&8M|3lJwiaXm_B@uS zT-Dl~2d_>t#O)~2ReN#fW$rG0eQUJ<^<0RE;cVhQGcN~-U|1Y=6oel}tIdOmsU^$xH%P38FL;amvoaZe)1|441kYzcyC9+d0% z>?cf(c+`99`d^=H{gY@Es}EP&z0*RrRX0F&jw5LjrwyZsG`u zeGkEVNU?UFF+shM;y3SGE-ByOb|x6NC}f5_Imx{vNVH2N6NmigOv4jo$41 zi=2_6#_9o+GtaH)$uonXJF)RRe75t(pq<M8276w^C znV8hT4;uaG-xystgiJ*&;8qYWqf>Q2({nY?J;KpKTdbw1d>64^*=x%f7BQn*N?nNp z@(7%l<>A5IrK#q*2L*t!hXbMPxIA3O({b$AV<(k&(uA|z(CJB#PYw`dH4}Jkh23G; zjl(+A38G!9U{$5Rmjkux8a`@ukPCw_f_Uvn$4D*|^5&~2EPQtMLt!k%D?p22hyf!H zcBwc)ei2NO9ONRl2w#y!O8Q@Qi|(W8l9PPgYC>h1F8!SCbrf_+G8j1jl4d3gMyA~%^#Bo7v3sxV$XFnLJ|qX#gnYhvI+gx9k3)hh-DA03JhHukv~8eHR<`A@`zg%Ng4j z@9c+0)=eMSprKy2RB#84u~u-F8XOZm)3;1WNLF6?B8%}g-3k55LQ;K(3(6LDUWv7p zUtq>mOB$?c;jq6d7OOe>=&%g{Aw2F|XE)lq&{V)1%5lsjTCle0VVW`bvJyjpmmVpqk_^s;4O={dGiSQpd#YB zl_>-nG(~?dg0F~kaLOBZc^%+&=dGE2uXfsv@v1uDGkK~C93_xr2#Su(XUFSG zesuwO<`ESvt$HP^K*thuQt6pC7Ct=wab2DZ4`)FMb2=Flm#)*%{R>#dGXU6X*-D^P z&p{z+Id>AgT5PxtQzl($seb6}(RJ_n)@Fo1-r|g@f>>`%icsGKKjM*MF>cDyjZ-mt z23WOeaE3`!Rd^j+ZyhIa%eosh;fBdovW}uBq;IEZVF~%NdG*>7a#Oi#gCk*>1PNe) zFKF_l_Kme`$j?wJ7y54ToQGL1&-PtUu&<%NR(aqb%}hrcDT=J$kzJ_H451kmn8_G! z%)laG(FXOql2&uej<%&GofN@>1Z)(5!BQ7I2R#FI4xOz8iyqP5qTr;YV4wGy6qAbk zaI=S$-d#t0j~*@AW}7;<{d*MFUwU2kRbQKKqb-+Q{@t_`WRpD>awLnD(PzJ6yN}oMULVS*`xRG>SK`i zWA#*oB+K?0I%{~=y?cmB7>6TIN+ETvURmT$uQgsim(SGJZW=hW-HQN zCAj01@9YC#*TCYr7sWQa2l_!1WZrliuSa6)%NE@$lxSKuZ(R0hy6)t1P#V&Sf&&G5 zQmZ0pPDCa-VwqP+>K@j{Mz5#TN{Q)PZnVp{?y=C$3>zTyKbvV!m+{i@bJZ#kQ z0B~vX8db}CS*m1d;+C)@=pFm2_N&ZuOZJo~GR0EhT_2X8oib% zr}02kO_&|;Xc?)cZa0WwW70Zy`4_S}3=1$8xZjxzA&J1&fSgsM+@!WHz$Z)mFO~2Y zm(wkP9GV@UJYL>FGv_G=4zxy=rSuftt{DC5-G?3*K;T zk3%nasoPd>!^^gxc(6LQ>WbBUaCp?pBPhef+5{>QR=}PQ3;ikKAt8uTNuF#7Ybq%o zkH*Rx;7!6nWTV2Kl@_^dFO#Y$B{lXzOCwe-wRr4S>ArYK(y@zQm*q&Mis6_Fj6*hx zBtl_@bOEW}#Xb%S9k`|9(qL9mzP6Dn@naYiz^RWzxJ55rQh};M=Bwrb?-^YcL@APa z>?*f&A8h^Oi|tYuEkUdCI;_tUC-(=#>0C5g|&a}!&NpF>?l1#Y;B zsgP*0`Q9_M>Xf=d=Sn$b2cwl-I34>WeLM5J)da{3m2VEyxy=#gV^eP4eG?iZ1C6XO zv4cGg1R^@v>=3oJTh;w9ePrx1XE$5sJOMT(0X$jM-DWJ%Ia`BNmruCS&@AB9nfZRZ zs?q5@qy<+wedVRVO3z?%Fu7$KnAIkJwIbL4`s)NaM;CKb`m6xnRNw5c0@(b0Cb$4^ zUY&4T)^n9T;?ZOxM5zvELER=;Nc^^EB%2?X#@B36^@)W+k@sr63gq-PurgSHlBd_qKe4skXz8wZ|3s5(ry2aqw9e<9|AE8Zg>nk z=<}&Co9%ZxlwbTm1r|U9e+F}j|M~%c4j=G;Fdh2W-~P?~!`R(N4(H`)`Nw6Eg~<64 z`J9jP`M<{xzWB|5`R(769{QF=3hRgW)Vtw@in*Opx$Em*jZ~vYDKeiuT*ZI3Cz4PPypYl^*e~@^; zgv`YFWxhUg<44br7Jk$S+y3ZZ#_;)*-+YiHzXbDt-1q0_o%u%)>*M!!dHbh+qB-7| z*Y$CJnd|Sq`j0+u4+wt0r^Y@X&42#>SHJw#&wf8S`&Zxo=C|MRhxP4OzxnO=-~QW= zfAg2${`yzH{Oz7j~|o@JXM)`^OL2fyJ+X_1(wM_FyEJL3B*l|NI~R z+BaOt_uv2Q>yK}K`Sb6-`|3A;>)7ZoKYsSRm&qsn{)c|{{a1hgF@E{gH@`Uk(O-ri z#dean_>VJ2P^kZrAm{1hAAG|B$^R&&IBfcpAN<`9>v?|EkUswYV}0|3zu}MV148H@ zfAWK0{P5Qw>+2u-Zl~O9KQH000080JC`oPez2|hIMZM z0BP6&051Rl0ApcpbZ>HBV`MQkHZ*24Ut%|8Fkdt)EZ??wFb3?29+797PFY?>3T592oHCA+oW%|u;+Rgs_?)v8Q-OC>?-roN9``_*6XF11RyMFur=Hk28cROcn+&7M#H>EiBk|M~9h?#p==wDS^P`M>`*zBGRy%>452 zlMCm6|1y31t$$&^UBZ%|@v!@6UtC|U=Xc!Xi|eahdH3CJH}9U2ofl+y>OMd?H z?D=8;(~H;q^3CD-^ySa>tQ=mxd&|Fn`ucEpbAEMu$!zoX#qH(o?$!C_?SA*=*$=lD z|8>8!b{F05&AUrpc|Bf9&t_hljxSv@6K^ly-DYzbpBvBqJw|$Qb z_UFTAc4vRSc(vDa%tZJ8`r`WP#rYkt>0w{*Z?7-k$q4D@4|?U#zj*0t|K09Zma!Yp zm>xah@uhrHS06i~_L|)ohr^?5K094B`ZhXc?wj_fuhpPO*FL`Y@uv5mw!8C}FUKSP z^z~n+H|KXZ7eDP@yt}!z1^Q~##H@YeP#^a?hnUlySsVEtTCs*$2;DgU%uM!Umm90yYstu zx3ZSA4=*3D#RPTri|e-+``g3W|91Rk_YE)hFV64&Vr6*Dm;U+d^yOKv^)F_;X8!u+ z+0_-le0lbV?fCDDyPNUv%U7S>onKrY^nN;8>6bfxALcoo2@U@A{_TF}xmJICaU7~w zS9do*onERS%8rNe!CT(E`tI!8b7te4-TBSU`TOatUhpY={hPD;?&9)gdwqU$(2w!g z{)VyHu3lUVns#d4m%BaVR}N>duCI5D;42>Svzx}vcJ!GaKk(??<@NbXxgE4{fYx?Z-o->ATDQ)pvKV!C+a=cl+_y>yO?F_is&l@27)xY4`YjfB(Mz z)g|vg`nY>|+qyU|nYiZVPaj=mA3y%$_|_eBd3Ky7{Yozn8aXZ+Bgp@!qicLA<5sgD z=IL;I{)6nmV&Pc)^IbX4vs&SHVAuYq@%!@+Gd}(tH|OEs>=?ZJd7`sF@o)QS*WT~i z>(NsE@#A=Sdp|L#FV0`Q-oM=caPeZVH@He}@WISKduH{S@zM9YXQR7+J+zCTFWwN6 z-kjflKi%wai3)oX-e|JI{B+wD@fK<$#xm z(RhBGz*hrtxYwk|+#9R@e?Qdq><aKW_B?Lz{QEudjc6%M1w=fxDZ# z!}Rd6@%Q5oet2OF9v1W%)W11<{KsU?h_pYP5yG(n-WH&^c{xH6qvTEyMVBpa%m-b7 zDewGZM%Vqa3)6A>Ui@%#%a4IC!uiqdWsb={i_3V-F{XU;@r%cx`_0c^PG>JKWbBHt zFWdvx`TG69*gqd=*VlhO`{AHhzR|ni z?Ed_7-F*mSC!zx{dijpOetf;Z*$YOeK|lWT+x6o1?dAFV-~IN>{WpL5-EaSh3*P+Q z%>|rnXO}Yw+3)^(c<`|MyPW>K#QmmUymd0@@efvgamAf}fOIn=n!gcA_di{TyZo$I z?gwBxM)IFewCH5=grdXYyWwJg`g$M^|Km3+XCH)yF4OfR2h$K9CJovL4BCBn4?;gb zd8gy&kN47DKip|L{OX-ft*dzG>7G}6eCkdR2|J`KZyxcG>BFzPiw_qZVL}bSP%epP zccQK|MxpQi1>PNzaJqlt)dk@H-3MSjKOFBPi``$|oe#Shl%kwo_(u1?zi2x9;_!U; zc6WSB9(RhZ-;S40f4n$+7It6gmWR*$_+@|i%#B}OiH&}tc=z4Gj8|SC?D+TMaJ=Hb z9F8CP{&2jy=)0VkmBc$9`c?hxMQ4ryE`9%4r6=%`~=qO4=?cd!#K*)rlZ6<>4~T0#oOD* z0^?&Tar5c`C3!h031Z!^+g|+!5{0{?paPKfK!?UxTR*U2?bw z`jd|wUF0vPJJ5_pBc*OaefKZ!-EO{r^&{Z&*kRd?QiY_`gCgeDJ1JMBeYOo4u84t&fyWEJ%&Iv?EdNFl}WE? zC_Wm2`)eLrdWx{4o%@rDJKT@-XyJ5rC8eqMfkY<&I`&YFy1afE<-gq1hhNiSNTcJ_>4MpN$ZGjRMkG565@!8ZQ-Fs_FemwO1r^_%mX?>|Jm54X8D zG4*2lr(N*&?f%8Z`Q@)W;q&pkyBGXl?w&t-^Y_n>A7A&c&fi_$fe5c}cZ+q15~##3 zW+%;lJrMMV<3F!&UknBF!|C7iL0!H)Yk&O1SL2tPA1|Ko_gD9e0Mpsc>yKVIyWHOq z0S^RthH$Tc&x3wm?!P;~+#az(K|hJq%H z5gC6o5(j&vfBeb=?uX`HXwxkQ=i!>y90_s759-GKCG z{Jj5@H~BICB1#{F_`PMyXU~5B#knl!KRu%JZ(bg4d-~`lq0c}vy>Jf`_ZOV7kIU{s z{YX~dyqw;g|8#ooI|k#8UVDuG&U}FXp`DK|GeC+fPb&XY8@acRv+I|KyPw`(--?`| zEba!d$a+s|;^hZE@q9YJJBR5h;@{H|P3-tZ4tRLD_V5V}fgOE#cY5^pk#_L*q5wTG z@57t_=xfuHk6Z2o^FQ;o2^c;#5HMjN)SaJy*3T2{JoFWob$5iClioNV!Ts#J7rUQc zz8Wz}tAUw;l(J+JU;S5pe|5{F`q}^U_v1h9`rXY1bQDnC(6uvq!DXPY>1f>Er&fp?bRey3ap0sb)->2J$3RM!&y( zpO?eO_8F#o79)&0F3dixFMW8)9g&O1Jj=@fx8pz_jbr?rj?eq@?8V!A&ib&-uzUOF zfo6}j#be6`*xkG#N{&!AeYy<&#LD!Cb?ke%Kb)2t9-1{4d5jhXzXJla#xX$l#2gNf z`M`+|JeMXot>O$ZH$7_DJqvt$jsI&5en}#Zuyb}j{vo2h9KTHCr(ho?{^EN=n-*L4 zclXUW1z%#!J$ijuINH6w{h$aDHbm=t@y9#I8NPqv0TBn%tLyL=A~X#ZSr8*Qj*7zc z$$n08`JgDRSgK$74{H% zFxV3jc{Dn@T$i3k=-BM{(`gj+=XlidPhI@z&rina?A|mFS|r-voa^oJmsq@hJ+68l zj%#eP{?q&Su|~6rCEw5Hakh6S8=$k}lQ;Xf`}4cqFD&8Zhl}J3$BU+WLBD%!llQOb zIvz;if5M8@h2Ov0KeR;`qp~j!r@)PNzC7G~_~XUl=02h#yJ3BL)Hl;(GaoPgXIR9S z(r^1aefY)s+ee+hy*u3A-CTc9d-dt@^FL1~Ch_IjtBcFSSf_aO?(X5;{iU!SwnS40 ziNtHhGUMrw>FoUt2=&d`Pse}ck|(zF_vn_7 z_K5x&YXC2 zdj#K64+@UuCnqUARN2^hdqC{z-ryeH@bTh7J^i9>(eb7lba>pbA;KQs<{pQ~ZIk@F ze-Cqgf4GO(kKZ_df0&+n=k@Kl9shi|-Dw`59J1+?cMqo*9y({uhfb~S!-~WMZ6Awo z$93%cm6XFb594w6?{C1V|BN|a|9CLZ?5sI`w&Y{<_%JGKo6hd98tc}dynpuZuPS*Kt z$Nm1;%{c42XD)nl$FKJ}e7{y~De2!P$rVU`GCltN!ld z^5t_>(vRQnZ*Gn~&6-#Lq}e_{zkGA*=j?S=dg7Mt{N`$;uzYoK_5E>j{q89<`GO#L zb$5R3#1l9A^Tjnv_F=f}lQ;SL_4Uj1H}v#)k$dt^U%b0K_3xS2faj6*@XUNVLp<&H zSS~ejTsqv?e_}?{S%3H9_3Z`ie-_4-qk+%Nr<3_d!o!ueT!$~DC;RcI*B7^U@K5Gx z_-B5yBY%7I;`PPL!^w%4Fw!@EdC`hueYh};VHxP~)D6FSck@z~r|$gK{^sIG zOl{nC)=bRvlSACjU+(X8XRceuAnRiHgj-B!?fT~G6(F|1x&Od???O+Q*Tu^#rG=d? z&FOThM%90E^_S;AyuZIv#yE#xAFXknpmBb3pw5o(|H`bi{mr|}{rT1XgRGsNyzKqC zb`hR_fSAhu_V&KLNAvh}XrF)o{?Wkhjz;{+&HnW6<{#c&U)<_C;py}%M){}xspt0w zdGy*(-E}%E|M2eo&H2sn|C9GW^S?GyBS4>?t?T>~J=xws;4fbu2jppF{SWU%{O)g- z^XSO@REMAM&+jiAJm6Puc)Z3Aiuvig{aVER;c>@?rF0zRPX+|g{m``IcnC|Lxlg0k zA1~fKTsohq$gjlm`^&0y*OTz{J185+M9YK@^%U*x@LL8`i95YaO5ov&GN*s z{Cg48Q#O_c?^AO_oSiPPpM3i7USHhp??3*_&;Gh>(00t{_t~2d*{gc>GyBY(-q{)B zpBdvmWTKuv@MqW&QTg*n7krv*`XAn1?tm`4d~W0C#%Sv!KhB6<&wsdhx%=YT?mt{# z?Qf^wJfy^a{wO>4w=aITvpL7V86V#jT{PzEN zeRucv^RqK$pPs+DeTD+~zkc^OyB{x5+h6bD;XmwO?$qJkm*;Qx$DTc#ezQ~bJidOP zh`Zy3OGNk8EuVO&=)2?LyXSxSe zytsbz7DhOBzAg}df7}1~?Cz(#ztQrVE|ZeK@6V1idz2ohKOS!mf7tCkUZQ=$53gxK zZ#Kq6qQL$ihKl)+2so0?^fEm-ZV*3Cn3#@PV%h`wIFsVzzb0!RZR$QsGaT74)8kCT zzbNbS6m1@U`zz-4^7`uX{fEoP{GPh{@Zv~KJbXqp_{^aLGAI~vzMnt-_*h#%?mvI{ z=pU|LUGMTKZx>N_YUvNBiT~}%DSo&6_+DRL-zi`1w;zoA|2DIE!4Lb-Hu3S1rz~4{ z`KOHgmksLgE-%O1za8&?@-|%f^8M)ojP;!oZ@#$3{I7m_>EG>-&icjv<;A-easE$M4}%FTMvdZZXB( zX?OM)k9^q0eaP^dPHA1chrRb9%I~+2M<&^ES^hCzstC>zbph zYn*$T%!a$oE|;ELa%+#SFTv)y<>ste`E;0F>T@t_vAy%*t=3$Fi7D2S{WRNJdyTEP zxo11O)oydGrmSf-c4f3BrlWlYB9D>;vKC?zU#WpX=F4g#&jjcTtHy0Ca zoP9FeY>KnKrx;rZF(%!nl(n{&mUW?1cG{NG{SvCFz44ZFJbIo}n_IFau7TUx#pQLK zZF0^mG0@1>Bv-8K^kXu84Snv*>aEMY_1-P5$kx$~xNa@2-j_MnxopO}wDr8sv8-!p zbMP+usTrG{My=SyoqeCp%nf{v42D_ep4RO8<~+!@y0zvu`?)YB(Z^+>3w=q>d&3<1 zwFREybBk%oxiBd$E_n{FubyEv+=c$8!be)SE^ucTrp{Pw*%gK?&Wu7&j^S#t^k8Z4 z(tTO`;(ARqBo4J{#+p8}*V=m0Pi`m37)5gHK`>p21){J#I z6Jy`_E!K!>n5nwWHru(zu1hy|wH8YFQ&5)iNo| z#?VKe-55@~H@C=T#`MzGxOfI?&NlQZg@||MoV+#8x6Sr7<*nmIzLdCmtN(Hj3kHR> zn0f1SEiwAlltA#Ggg_YaY)jhco534%2)49hW44jIcLppt&E48(z>a&hvSBV}+xjwj zfMZR)g}68-T6jTAnEA9cV9fYsE+M42Ha{~442oZSHfa`Kmg1&4ZZ2;PTUgiVatu8g zy5HxmmCk&x;6q*=qiz!R8f#sNBeXQxw)9>nT&mc{r^7ObRJL`s0rLT)EVG*#Xtx&p zr1_1p2Eq#i)pO5VV76+UW-hm;R%{|O1)+Gq;m&jFwmQHab25cn&D~;|TE{biq91@-wS}PSZSVFO&*QP-Kf{N=J z%$nE*utbbfV3;fbDbS4*4GccSImWGSxhxwuS?Q^>p_ts3HPLKvqISE^O9Yu2>qIz8 zo$)nc3VCyu5s8EZyblKj3h8s+)`j>4Zmxi%*|1IquHbfHG`2N^>wTjIy)H}SId}(< zv2b(zAXN}>P77wdg%uPtdCj41YlA#R&`d{lOz1Rr>d7aJ&0!S_ohnSWt3XMg*9zV< zS#<{LEir`2SOirmE+rMb-{e%LwE|2EUk1x;X0d#@%w1C$GMPU13fQo z9*~?N=q|QYvu|sswU!x<$*eWOVYYSRzOaS7Y*>O{9HWu=MDGlvh>6+OIs>#ADfEEQ zgs;mE;A+qkx;nviV19`>H-kCOuM5b96NM7TxK#O1wu&Scgomj$VgQk=ZN}l&lTSVa zh8Smeo6i*|cNybWmw0(gz>i_xFf+e2J8+2blZl+0gIrAXca5PE30r}OhM0N5tZT+> zY31s2%k;GyFL;DQ5E5r1t%qa4YT!uxfT7L`#NN`;&ICIHG^fpiqPS!8FeaZMky*GS z(wifZ%Nimah6D@3WYX4%#*Sc4&k`&b-lR|n&4Ymw`;&-GB=RQ##)H2#Me)L~%0ADgd4x0eK~aZbT!TkoZfq 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Η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

    f6K^?wpVwF@2)hpEML{4f4 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�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Ⓢq*%P(Kr*~_U~_7)#R%ZwdInK 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%0Apz&mP4vI5M}yE)AueXh4br5z**4>l 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

    =G41FL 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 v^*V^w=) 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�}|%Y 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ⅇAvTre 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

      yMAEXP<|#5&B8==#yLl7bKfj@tuP>Su(Y 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�<1vy)a=KcHM>fj>>#{&5 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%0AHnUze;Hp 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%0A;CMkNbq7;>u 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

      {oOJ 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

      q3L~*;&WE#31W8(zYBTI%@*x%6ZD=M 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 z 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

      AHx1Xm7^Tnt^u^ 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

      y_`5I)lY@NJa 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%0AP>nd_d{DtHHC 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

      6-NA$g>Hfr8X(mUa~2bw%K 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 R3P{9i-0tlv^ta&u9DbO{PB>P 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


      qy2~U-k zplX;{b3xG4J2gnKUw>Ru$hA-2w_hJ^2M?~EInLMI05wu8PrSd1&|uN0$)6Nfvhs>k zI;mhx_^8>p2KW68$wL zn8(da(qPfo2-Dp(;{TbuyMNn)+B1(Nsv3?)C!}qaLZvY>)gZ zaE-HMC)MBIJt2Y6zO1|5RLLUOc7{>y*}DInwPdCUNJT`^x*7fLk@)8j>>Encvsua4 z7K@PK7GzGF57}~WwXD&Zh?c5VWUd?FkQx2>C?;;GE~x@6U+BkZU!cs=Xt~Q8bs5vw zSI54%_>6eA@gdSpzrtzm)Aw1f<(F&$|W~c*3RBkBy2N;e5<1tc8I7 zGeT={u0t{HRtU~|=VW#SMijf_@PkuNpb%8-k3Kgdf`nSNXh5M~`S{A$P_Hhr5U^-= z!Hh87`{aG-MH4ykyLTcrW(tBo$uSc^E$s02c_LF#V+h*wsU;EB?H9>P4eO1yTw_;d zG})d#^7|NrP-C!ah!h01a1L0^*K<-6(h&yxekJJO2+1X>zr~+U&&~Y81)G&4x;t(9 zc`(vxB##pwu_n& zF7L{Yux`ST64dh>%3bP)ja9`qhkGK&jn0q#8+aU4^Wd31YEeu-y@Zt1e;61kEE84n ztFE^@zVZ8B_BVD_!{c*3_o8}BE;hPJmD$e+v&WmMnOv^&E2ra$vp#&agwYOzhU5sv zxJOAtzY+H_Zc01=pY3t6-8$4oYeWmw?QmrHKuYa^7m2Z(D_<%&>6u@V5Ar4ntG`qE zPBn^?v7#CbNXCeLXoq==TULJcc2}3;QnR~>bV)k8#!%~Tl31CJf>VLqgJE3wpqDg) z=jV9;evWedh(i{0(MeU3F8S;=GkqdM$0}>wWrVZErSbTgRW=< zn#lKixOAtH!83M-$ab%9p-#TRP~CInBP|qSv?9KIN%@dR<2GhURZ~Z4<_w7)ZQn(P zOj`f~HRksXLCT`hN7QFsA1Bb3t`&SsWOKEde!K13gy(+ALHg9UJ~TGkO{tJ*z_2;pcX7p-s9RL771X4Y}5 z;hOqv62sDYoDW6V8HzJ}1N(9y78eu=UE*rGH9y6GcFtj)n*M2H$XX}89>3oi{{~$` ztbV03^hGS0PalpENjqmeto2&H9!}p3iTSMq@|5}P{_|nDLp_}2a_tkHzGtaO%P)f8 zgnL<_5ft~;HauD2g8jj_X+(Hd*a}4eS=4E*;gbeR3%{Li%+*|rnd5YX)U#W3knYEh zUgj9(xz4{Kl44dRYgG(lQ5gx!W_rKpRP_GAh;iG$R~0ag4zml@d)XqfmI`o8{?Y5b z*TA)^?u`<#y)FFrJnnT=+6qJ39pETArPJyr~5 zgNLd~BWw+<{9D^edV01Hdm`d=6M$HiWb+HuC{4X*Wbw2QyUEH69MmC;iMC|@u6s#X zqaFS`-lX!2YEFv1o*SN+c_>YN2Gp@|E)jV)2lND?y#Uiqa=bpy)9VtLHHQle%KCjP#5#D%{r;V#z(i? zljkEctDPUs*o&6YkYV2Srkh@acBIQ!gd3^Wg6(106zDS6u%}|w8r$$V5&j8X#1U8o z=sb$cO#Wku=H)7V|6TlN`&)oi4S*Z-p9aLmGD~5ojdIM>{~4resJnjOmXK4Pv)wpPT7z>a+i=lUIw?Qsgo%%(z>CupL|hx0R7e=yFQ{F1;U^6406K z?}jGB^nJ_U+|7ftr|{bX6|Jk|o0}1K=6?VcjavUrTlbJ`bp;+2WR$1ow&913_?b}g zV}_2aO^39dXNkP#Rk78DytyyxMPl<32vnxM2aZ1-2f<&0KJb>QYcK0P3xPzkfvxz^ zv^RA>gkg~ZBh~Q_;Ldh0O4lE$42;*s8!e1E0>X3xHvx^)Ze71z-crj_NYn=*t5%CExy{5GDP@_>?(9|mUCHkmx;K;>jn7+ zam_akdZU+NnOapZ{uYeM^IgomiIoLQAX;oYM=F#Q*$_%49a3fBV8Nh2pl^l>)KyLo>3}gzqkg zBcMzpRg%x6`Po|k;z9j;mN!ouGND`gxY9X3aBrGqhBttxH;Atdf+&p8 zz`Pf$lzR-LPH2{IvjU0vHFxM#5lMa6j|E1|CW*W&)>GEqVuzqvDE#_(mz!E$MEp_P z;&0MQ_#$!lMY^4kJOp5>00$scpf;I$qw5`B$4}u*qWWlTvG2v=?-{#l?RW^BQQ*gj zfW*C1N+GU``p(O*=qT~EAVIW^x`rk4XH*r!Q+(Wohu)S| z|5g>J8-Ew2Uypg=VVlGl^S4Ku?U&(&#v6e3%4XYqL}dLW%(-+ntkW%~Y!2J!((Hg* zxHA~yh2wKX#b5{HibbB1W*e04hN1ZLR8|sE7(Bl21bop*0B+w2MVyjovw1l?#0!r4 zF0T@E$>3BD@mGJr zIg+`JPsBGqlxxbl)FY5~&j^;I3V%I`GljyM8^H=eAEb*11(_kNtfd2L_1i_!N(T5^p z2G^emC_rD}<8>bLWU99P_s!HAZUn{7KbfB>c=&y#DYP1WIjP)} z(@gRm)gmi*z28uK%x*^YA7(LC+Brj+be{T+v%qF;#a^2F{@LB+KU$_q#;dh;u^Etf z!RS{0KIk(PIh?+17JJm*F1gZ3MLOMg(Vhu-PC@f(HqcQLHd3Xihkfm1oVXzuLmF^T zn=oDHMC*RRSNCyi=Z(fr{Afgl9|7tGgkJzCB>i1?xzv!2bs5&95ll7f)=5C3xoHRB z_ItLp4`2HYgs}Au60v5cxo#=39=aC}*r$v4VX1FOKPrUsn>uNtFHXq{XDi1;KE>9| zhtNUcryegw@g*eqh89Qc2QobTfpa?q+uJ-d;3wO3etv;!jxuug)^-{LpCFn`w2Pq` zA^^X5&L>OC{hWHvnw~@~cI18P{kEYR*8=es^-mU^ngaIC;EPWOdfIH*ZjFCaJGT_x z^PqHn3mh72PK3}VopoW0Wy(XBTZu64M?@&bI#pkX2l1gYJ{!Viv?@Tu8of^{2yM(a zWJW&5O7do`JMrP-ro`cE^%Fwh(8y1g4x-bVj_haNp$AR#U>zVM)?KWaA z@XE&#>Rz{=GPMM-DJ;33CLOCErZ2jzI4pFil14s-4>JBS%=i1EZE!B%o6+u z#JmIlVcXdjXc94p=vA&rBU^HfP$*E2=5}A+E@q~7BC-#Ios_%ZGHttMC#)J{-cFz0kJ zM-vQ0dJQHdOTqR%0ehX;X>x18!ND4vZeFzKj_|zo4j83l7YH|!OC;$aEAGzMRefBj zhG2+tpXE*P$U9-EvoowUnjidqW^_fGnUbYURZi0&kkD8P4mqDmJ>ubFodc#_O_2Q}JaH!bcpzF^2DjLB78| zrT|1hyT7f8znx2n1#3c@L_%xdiFQl&7D&T2fW8#oM(lQDN8h%H&wcHph>)*_eec}L zMaBKRRmT9tBEF$OL88d-r5R}-oQfdhbq{!%7=;5yzQ#oxiJhGPVx!s>n|r(ZSow~x z6vM4rx2;nU!zU)3Y@tJ~2TvSg%<}wrP$pIyR=j-4K8EEC@LZE5M;slmRZw|mQ(gY4 zBDKBvl#t>r=IH43iO^p3bdpX>{X)80VCwUM`pA_`4V4rri40mK8MnL!y*gHf*35_^ zoGBMPbho8HYE;nQK$L+K0$>SBp||qCi2pHK)~mC7&cL^!K~9QDgQ`^?w-WwXn7&`s z+kzx}HzRwE4GTP>f)vF77ZwXu;Bo&OONOZ9pJ2t6vDKc*h#(FN_1TMU(yeZp0j0|F zrTF#v!m)vz^wZzdlGx|-kv?D9=6J8b3W=4Fa~@-2!9>(jv0fpnZnc(+r&Nra{zL zfeF)US~_dHLX3{6c_6P%x1=i`egNg0{tbDZ0W^3GE|i5C??pT_n+&G8-_r+M$^f7F z-+dwvlhvtpF(iNIq1CUj@ zKA(iAOtt`9thgmL>7p7<5Q||O^0HO|4G+8$DGuOirp1tmYY~X=Y|Bt0kzB43%_lST zBrpf-|n*~V#-Q@AFxfY zb@?i>W8J{PT~DcK{YnPWzo~=l7Qx)XmXe7JWR0Zi60OHhhH4hPfj|NO($|#~G0jRu z%_nYc7*P>{Be4@0jl29E@_FZyY=W4&{=g z)tqA*#o8_fU^-r`0T{~l4_8Zdt~yX)KuC=Y6V6?wlprRvB0oxgh)sflpiW*7Nv36| zN+dW;(OA^s$FhqiSDQOLCTSk&R&W#U4mwV|q{C~L$WTk+LT=5qCj`6){<^o+>F znunj~E}HgH@L5@VnGs}a@E1zjRG$g0m;Xt#dBuQ*T-DaoFQW|Ghu-#4@M0M3AMIEO z2D@Hg;yFifQV9upy0W(DmLl+2=1s(aPa|fH7MyIhw;9${XBF>qEydYVO3=`WwV7Es zlGi^s8hlBk$4oKVXIdWQnEBb{A!txmjE!La1`pBYbH9>ZNh23jla6VApkq>Nxqoeu zD_4%GY9trg4QWJmiNZ7hqb0>~thU2_!;V#WfobCzAUG&8>7+d7*fNl*axr>+ifJkJ%R?=+;~rr|{aD1TyQgpz_wPr> zN|BpYvHKfd?!kl+?Tx4p($9KY?dVVZZbA64T$ikY!V&nOvVZ#yO0n2q(Hc@zl%`OF z5=;jN)nLpvUg|jr@zSf0Jx5LcuJd$}Y!vNBVt+rk zW-UpFM~ws#MJvnVcda9(db3NYb!8%j(gb^}5D2nMPC5rc(xabIoiX%c6J&)9&sI8{ z3Vi_`>H`S6TJ^_T>UO0PlqRR-m-YP@&SA(m$fLmNmF!AY1!ND)K%TvwapN4=YCm3B z$2D|81G!4F2l7ybVMF29sep+fh!J74So;qv+uAOqDd1Gb&0=9S?nB6$_u4ot-R{}U zZLHk)ig@&u3rQoXe>Y<$;&U@1g;naSLx^_Rq>bOuOdV>7CAj5rM2iP)lC8np7*KL2 z<<6=BV~L*@I{wZ_u`!@+fF$PD5D)BYT@Qt%g`W(=2cRmeKo^|E34lz2=2?COf|Aw; z%W>@Hp5|j2tNAe;wj&mftCgLvTI1mfqCR%XI?8ZRLR^;ggor;ni^h=C{%tL6Gent> zzbqr+oR0!X41?MfO_LH&@up<>M?OV(GS=1XM5ekj_Hoa%h;TG;!OZr^PivzG4>gTL z@~nk6mv<|al3N=bOPk*{;!--aI6bx^=kvzs*XXA{9t$~GQ?giUtUZc;!RH%}#=I45 z)9rU6R)^A&y`v&5m(fmx-^T}1pjCbR{9TiWWT@weNMKdZboq3x$CZJKntARXbK*Su zj{9Szld^dlz)KQigJB+JvmDk39nNX|;Xd>M43rM5jyHVWYuBj4k(mM=!V^~f-;4Ov z77sC2LveP={b73AHo-zUWZEJQm`d2~*BVq%x%4(Bf+2?a0^P6g$oX7F#8v7>V=JuD zDtbf=C8?vj-}$`0kBr2NVudhxe+GC7lW?Z>ldjJbKyjt)>ja7x!kD)V{vidx&B}(?B6;gQvfD>?{$c@cT#wWwK-cq84xl-0e{%wp^>U5Yk8ca_J(ua;+OjLwR9XJ5?r zye=z4$jHJ>`ugeSAb0~$YMSWhim*4M{Vwbql~z$YR`fa<7ss__c|nh0qml@9U8AK7 zIF51J&hGf;J?p_bDxda3+FQpa&VM#ZmVApyXJz8Ik0r;slOWQ>h0oLVSLrc^1Ksny zWKdal-m!>V>*)jMJO_&ly^`8naB@`vQBKR>Oa8N%$57@5^S`J zwnQ|}QuIqN+rVoeE4ar}zF19m(_Wi*K}^3;fyp5-*2#V=&uYZ2Ink8p$!1K;+oA-` zJhGNhrXj@RO|DfMi>)a4jgOX9WRIY!pOzxlF(xz6H~s!*!Qb(dID?sTIfr2f4R!Ye z8nr6jfTkN)FbS$El;mrfFjTDQ@Ued}sRZ;IHBTRO8i`F8fY0f7UeB)%a~RCfADrKl zMwx(F%ma65YtOo@q=hQPlfIdRpvq#Y4$RMoP)O;-?ehtD@{>$_y$0e$tia3`{!6;M zSD5qHE|^bgAsZ_Nh%W!sVQ%QL8B4}QPkbc?Q0EhZGwTC{zgW$500={g^V|F7i@86p zPV5YX@Zf=aMzy<(0~R8WE3WQeg}iFoNU8pp+(@78z%SVj)I@Lc4ni6SG~qi~UkC($ z-+dv`-WahM1TGD5UJm3+qmeMzSIQ@k9Xf#F*=~Fc%KS1HN2{``|W^t-|Tmf zT~UTuffq->vAXbUJs-iL5+=`$1vP}1`hk(TpT46x<|`V(%E7eH$wr7{ai!v&nC-8T zA5p6xPz?D+t2-<6cPW;4$d??0*>pPL+1hJV=5$!-hj7nC8`m3J^}#x|I?yAb4mW%Ecy>CrRE=2n>LSKpwDDWJ*qrkK^li zU`Pt>6j4Bzs?wliMzD~*D7Qs<(!af(i8vA}Bk4If%_F|S2;owPt)i@GM!X7h)x-+( za|phb03erhBhcjUpse++#CM_r zRqsGRg~X5}pqyfoFf+8H*C}44Si}{TFzGI@v?arI$jA>7^wwznYH3H>pH`XxTCZ24 zGPzeg(ysUCPj${nuRF;9WRsEZYK()RltI7}5Y+C|*V=2S{;m8=*^1)nrBe`_rg6(? z?LGAk_R51JlMhc{I+Wfqov@ZRzMqgQ+Vz0h$25qO#MLl%FQ4hz-(DZ*=U9DZioj+p zh2vqem{Zxx9Y;lvCcl9kn36ZdCQ$5f7<<7dd5NH-N<&52&z0O9fz?PA*ED&-Ml`0@ z$iw*|JL$EcdVa3v&n$$E{aAI|kDyg{Hk?TCP}eZNmQx4c$`iQrJaM|^cfmv8%3Id~zBnY}X`%5~`-*&CKl z^nLehmMd7ly=~WEh$T?PW^NzzncSW0GXQbo@L4-Oy26Ek9QE^kxd;(u{CjrJ8MHz( zsJ1E=o7V{fE@#%`u>1a6)2LxZfVykT`{zWpP`x1fybDd$%6gf(E1Z&wgnR?MQz&=; zMaGt91j70ppyj5IA!T-_4mKJJDw7w1=cQ)`$IzqnCvVl~P;~^xI^FmLa4{s=zEyV( zm5`g)o)cQ*F=sE*ev#b~#XQ}TyQ)G+y8vKTzonE#D2<85a#(TRVA@k1kGUYf;wpm1 zYV=yh7Z*$QX>OFIj4@Ut<-j^()wN-wLT?Eok|A!P{CIk~UdWccmM1(tuA`cLc=UCST)h9IoMY6p>x+AIZYsSjm4eFYTp_G+nFdP4aauNRalN z5lD;}tgQ7Y4fKF|x~NxJ?up`y<@<|!&#wqO3Z)Ju2rmjyl5G{J|Dhi5`9`4ICu4{Y zWw?q@G*YP|#dz6?bVw;SLiJNaHbNr29#|f}Zqk-x#1XZF8SbH6=s46G9jh+$bbo1u zD!D{C>E;FQ0!vej*;TaK#N5|h>8;iFVd!XUt6`in9lJoAkEG@Ojvau|H8=&#iu80d zd4dA{@hu8|*`_B!#bKb^_T)AB%`gtq4qu0VkAQ0C@qe%6J6KS<&o{iW+3L4l=>kCG z$P9Annuu~u0{23i85ejFF0EHvDVY!Ps@u<+??*gVpm|72jB%=P(T<=Ktnn3AE9l3w zUW54<^yd3ecl~@bofKzz0WeIFm|1<@Sp>XCW$$+2#y{>_#ml4on!~)Wxk~2i7R2}A3podlNU*qJ`DhR)7Bw8PZ2eow;17Y`~Il1 z8=quS^XsjIiO=OAOXt98c{RD}fgJ9Q{#5qfk+R6AK^j8nkivDc<>5`1^My5*j_8t<%X9CV7w~c5>#dvUzZKLz z2N`Vry<|}R+l8PgQG$*Z6d^jV!G#KGbCMld`bX*31Lrp9 z^(~7uF4z)gDpKYftbLj+p3TLuP85sTzVKgwjTto6;;eAy2#L4{0S5PkB`5@>SAl`g z)u^oi?xR^`H|rHG+FUZSTa)=)TSC|4cO?|LQX&y>2$+Y$K(>U;WBG^;?(8oYZ2s^% zam}U-LOmCSpLqXx$AIb-q5*RQ%HLXbQ->0x0_hwUmQllNCZXFj?b696T>D_AfA#DK zx8Ky7=o`Yv_qxDwU}}_EBkT})FZX`DC7jkn?+iu-D2-Py0M)AJmD~lnUr0^|+@RFL zF#^=T4pwAgqr6|L$<%Kk2aOdAIF!Dpb>FC1r{i5mGrN=zFrh=Bj?g!zyMhQ8SQQZO zx+a4PF1XWHMh2IWCDkq{*-iWbZ^9SrA+Vok&Epy666&{!S8?H3SaQ?S#^1rgv~QEz zi)H-1T4!#IEj?#(1{k%DWoFE-Pky7M>ThO+15Ekxuxms0GGKT{cPtz}eQB zXY3VxjL7PNgY{bG%;GcGo^_l<8p}B$dEQWEY5rQ@3lGTu!T__{F;Q@LEcY?=Z$7K& zu)~jDy$T^aQ#R>U3AGKZKD_bF3I!T-`sFFq2H2-{Qk^SE1F{Z<@3`ofkfG~k_yRgw zv=Su%{HSPRen@ZJNy45XjqOIMpVE)VQz5dj6EBk3fH7~2W&q<>MANPynpL0lMT0i( z4P_GCCzJ7>jD;6cH&ev^PJU^0(hHOrKOAVcZwNUq{~m>&8b~aXmV-xlFGF6(3U4th zi+Bk^aHOQKjoh(#k%Rdbl#)YwP{JEbO=%Je%j2^;3@ctw#H3|;FDnS*zG~qqv4QHS zHUW_f*Vh#x{%Ut%+3FkZ%@5qu5h5*vGm3!}S8qt)nOOiT#!0q95+p%8zu#A#h}Wudy($ zC0&u(b*s^acquG!ynTz)q~S6z*kJqM5NB48_&XS!-N>P|pbnQIx>^JpZh5?G0PZHJ zrl7`|%uBV(%M<^C;HA(Ytu$|4x&eL4+!t-?5cojUrR)!>xP>_od2UeU5P!7HhKPT8=)b;`Np8CPs3sy^m z9YZ<#1qv%bv+d%eZ`UBz* z(v>>r{ZCfkdY>4k<1lfgjUrWK=1t<6*H&Y@Xv1h6I z4VN#vW&WPEP!=Y|y>m9C>TDpFCg8q(596bm>v@5c;2t?ma7?RGjek3Mb&_0Xn;9)F!Vrw+@<#m$hT9zLpwY;)R& zPj{MMeuN9E(5A=TFp~`6>B?5U?Wp1=-vunR3sH{*%uP|6q{8~kw>}mNuMd*wQCdXl zHmTX+k#^LNt7ZkXEQo;wYw6(>2-*xPPN_`HI(n+V==Szx;j3o0XzdzG<40*H!m45^ z>5B=)StQ0bW92$Izqtj?$!KrTS8bhbGQ7`L#Eq>1M6(J7JD)jhJxG96>Mkcl|5wXy zKGLDrp)*zVp`3*Sagw*x2@Q8vLwD!Ir!?4-h~^UpM&&IuFi>Qe}iM^}rm=Q_kyV=H~NV%*8j!n~2+t-$1fY zOqWW=*YLC4f94G+Dl*jGcDxC)9K4ba#AVV9ob&Hgrv`@9N8uDbyGsug)#`yq)os-J zBqti-TD%k0z>OoKm_G1}_fj1g&ZjrYkg6+wGbS04SMaW^;nAHnf8-tdaYi8*@|{ag zX?%2zNeA&XskLhR>|ie-{MO^)FQ*}WEj{VWlSoqbV_y3WtWKSO+v_n0p!GZuT#0;w zmX5%>Yzy%}#}b8f!hgQN5vWV8G|T6A)He+Z za;yVbQg!!APM9qO{;-wjcTVOLg5@;ClPwfqqlBu?MAFxbhN^H{tk~b$r$Glw8)DkX z$fTO9ezTgX>`j$Sv!JVQfj1G1o@C=IHznp;g5MT1#VcM#0b9e$xU%(UbNH88qYTxz zLz;Mh%tEx?KIhA`Bwq+g%HTW_U)(qH(zWw5V8GxeD3;ZUD)~NgeGRnZG=~j&zGRV# zW^CBvPe2Ha15mX5!d(sL)ekxY@`zCvV3y>$84OYV^pElR>Fo+i5GFclOVE_&k;*<8 zCYc_*#cy#!QD_VO%ioS83z^E=a14V`^;j-{z9K6mfMP0$I+OCGe4V+A3N#hezbpdz zP*IZ`WVF8{Z(gh-M5?N?d@|u|UbKWd%m*k$bQrV>DiVYHEhb)=9p)8LNM19AJ9G?F zUj18r*r*v`pgyy#j%5&lU4UEoj5`e*rnT2P4k!POD`s3w>FzFh4Y^1EK~7!bBMs=I zb;(l0!(1#l0VKVUcC|urCQEiNB2=QL=02W{yk*WJal~9-%SpRONUePwgA3OhgDBLQ7`3 zhr`3eqhk6Sx?RAD(Q?ixHNgByolk)Of{fW;SS_&T`w{@;c82GpgQer(G)!M-UU9-b zeqdwC8SatFdcEzcx230xwYCbbfG zX+xQPrqQ(YSxB`p)G)Lg4nKwikB2i46#Q)L;5s(BxS+E5PFZJ(;(=Iz{exSZV z^cFM>1VdhQ{cUDrBf@R?lXTUx@XOkO8jW#-gy#PRei}nFJv0}S3DNw|5Vw2TP290O zc*+;DylwyR5*YDUw%aCo9O9%z!zQ;~u>6~sHc-YSad5g&HJ`4N8SDIeRim!ySzGz>2TnJvB(K_nn2#%;9~54|a)C@% zQo~Z+)`1u;CH(EJgvmHb4&11*c7W%m7ew;6ybc>}hjsD&5Kc7aFT=afD#_ObPbV!; z#PWOv(GH5bmwg$@Dl=(6R`}V_zX^?grtK4sA5aER5lN0UHN4SCJ(+!L4LFbh`*V{( z?es1GN=_gUkYE{W^u6A%_2!kBVx&?%^)uJ2UuXNZ8X9X@I{r2x~ztE%A0_>c%``I0Ox@36?yJqC!r*j9#q!M8+TzMf9==hfCIpMsIidkh;% zHEI*-OL*asc`ZHT+21>|-fK1T%c5)|>$+1Bd(}TRRr|3}@B!&~0kILC_PS}~^ z=T@G*o{}*>jH$UOr%PC&d}}{Vm&xx`^5-g0xJ5y}XbY|b3umo0ib@bP+59M=H)d}eJ~W%y&b1E-SM{7O;l)ojT}-;s*$R0ag@ir%gB3=bI?k_2LGzN zmLp}C7~_1!?9Z85Jxn|($hN3GMsC74)M#wHPkxH(<*(#Gp0A?(?9s&)D3ceVYJy+^ zc36fuU6@vy{5gh+hFgA0?l&2{eiKvf0CJ%GU@1b!fK=YpN>#2ug7QfZbC&X_<24Yv zz~r4ZQu_{slQB$FlS>es!lpWLY7QJi+ihK2D_(Oc^2%!z|7q&x&Qh|N;bY@ntF79{ z8cjJjJBIM5Qba_E@WA^rdNjLVSxLB$FkYLl%f`HyeKC}T8E*i8yRVkNHs4|9` zFQhGpwfI{Hce+(GJplZItCecBE0=0ruqX8iy)KmVzBSG|hF`xpKurE-WbIalsie+P z-`%Gl_Jw$>FsayG0tgOHr#3+EU%-!iIqih+HBI92(}mCQq$U$yaF|)i*U;8YpvuHO z`2O**1enI}B&gs2p94?}z6)j*TEXgnEmzp&(t!A`E;>ke?el_cqImG_quk5i+K+ET z9{VRCFlzrGRWZ>6$;e(2!-sRFBP-Jd$~eQe4>*gYm%zxEDK_b`#ZP_z)j z(u{`iK(hlf(>f=4h!p)|16OTqkSGc~+Mg0cz7!ZKao00HY_5Z)NNK2kpn06Tk^zX9HU}f60`%$vOI`J%!RiO zGN#@Edzc>a0itZY?G+M({^`k-kF7W07=K>A$55gYs#Z>Lhy0-Qg;eH}{Sw=ERfj|t z0DlP%j3HbFq80o|I1kiqmiYij)H()7ZZA!QjdDjQyRo+eKNVvuIkUOS%8w^*mzej+ z@cDdxAFksp-vz&Ke5?GT%ZofL+^6hU40H+jmHakV$m07Q^T~(Jx4F-R^}D!v6-GoK zY~t3tB2C@aY;nKn;dJu@qkpfr3%4YTB~GqABh@Fn6g6#4A((IYdvPAvTEC*tzkds( z0*(4|Vs&?%nVM8Qe@iO%p_%h)XMaXJcIS(~{HVP&tVMJB&mW?<_2io%baA(NV@I-5FN%~{3s;Ct+osM~-oL`TUH$jbuWkVPZ1rME zi@>(0I#j~DlcN>*{Ioljkdr5?6c79O-=s~|?HkFRYRlEqr*DG8O(gE}KijSeht<8{ zUkdNiX zak0>-0)-@S)zoL&TU(Af0mHNhEzt-vP&r2mPA^ibyS7A^OD_Z+M2H8v1>w zJEz*wgRMypR#8`P$QSBEh%H0}ERr8kr+u?*J~IHi!CV#2As~x7L){-91*31&-mHZl z)dnBVSL>9ol~ZH?b{rt!dyN@J`TAo3LIZBpNAPIBDy2UyIK#rmU%{_MWg=IY;ZX5p>-_9#EQ`IaZd`h=P8^#K zcJh+#7&cgJ+Va00RwnA+5{s7o+tX59R#!?%{qMlf`a?)^&ukl{1m`Rob*IS2| z98G|g`xQ4VGa0 zypZ4}vsOhR=OCA11MM8ROW$~mm~=q@33-dO_3bT>j@}*ct_%&Fb(&xiPBlIR58aA;pVhv zi-Nl4Pq~@)mm|foXgQ>bzU> zz)kJxnlf?E!)6!@@TBn)w6GUqXg>ctVEhATHX|M2whoYNR!1lDYdL?A{3GBye$yN` z%OdCM3*@aqZP^{u^l48I5m+u%^ zeJ-%?9b#}7sN2Vx*cu$iX+X33xsuJ#%SfLR(&3<{%Az`EKFQw<^Mr*95Gqe@>>44| z@V*%MRqw=ZDnq2C%{I>rZwn&b@Tzi%TwQ-nbY!q%i%SH4UQNZ8(cob%HDribiL!<5 z`tRwj%P|QypC3z_3`NA8F7U6Z{d&FRU3nwz8`4vODG;zUrmrQW1f}m-e8UZ_>->g| zsMFyCUkahOoTLicf7kZ2^-EmkkkrquWS#KqXN1MIn^E;l|ga2wi7zCw2RHM`4=E-8DmGz^QoP8i!_^&>8T= zEtim10bH)+ zQvu%|EwlHlN2`&gA}!M8uSUY8`1p)5Mn`>Q@jW!wn~9w>uStY#*Y6jiaGrhTZhdc` z@ZL^Qv_c6F^tbCrl;5oK^fxT~Zx*|rzDX8Jg{zAv?EctqhDV*d{2`XUtCJLzQ4<)PY~+gZrdz3K)es?V#sID# z5r6^IBm^VoXU-R^K6c5kAa0!b1lXJJ|D3%U%V`hR&Qv-p(`@7+h%d5wJpp`XPBFo7 z9fdjC#`H^zSo?%hH~qZ}2n#G9#|X@FrZzaF`oz&aF4lCeSBm(F6{c%HLJ}Jx_KV62 zfsCL{fY2o{5o$fXO^^^9b2Ea9Mh@ts`qQBV+NuV(0n`BEBt-DjSB`Bm7h5c;H(ChV znIW$&OF=+rEpVZoTkw;spi+fyl*|blxkG1}>#>#Qlanv+KL#i@V(d1LS8km2i znRnNBP~8_v?^i|8$p%$sv=8B8?z9T5Qgt;p-8o-kWIXl4Zm*`7Pn=7k=X|Ep!UhA3 z&neID4h@^Yoj!ZSS}D^vOHw3l&VSbh*(GmwEnOek3}O9PV$`=s{-VS=S9JXC>Pej) z;)zCrU}OH?d>%ETAiKHkaiZFy4H=$O`!}!oJok@nwt_zOwKWC3uBe3g%@^$ZS~-MC z&VdVyUtn10Y^ai{nZA~((oQ6iOvX05vj1se@)%e^BoC+-l7K?c#>rG=c}&2dP|^dFyUBMmmOX82FSh zZT@ks&7hK0uIH|3j|FVnnQ*ka7yEel-_t6q4Een|2Dg{ zdYx5T(rY9|oKEU9-UdsH0jh`(LGRJ>^!43+#Z~meY7ehp<(Z-1c#92*a6WRQa@lhK z3S&NpmeNmeIKlWW-jPa&3V?TpC-4V@l z2VW+hUw#Jz0qM1+8?R}6SYxyKr3MyshooTZWs-rnY!*e~y7 zE0=L$YFW4=W`PDVs^?8FrgpvVQZg z@94YsHc*W>cy5|Ev;v5{H;8eM9-b$PL*r!xlxjK>>}$EG=t2~qa3gs6sG(&Jy?i3Z zeS(@Tiq#3?tcbkw-G@%eNza4Skh33m%L~ksqFeCFvqHlQZ)tWc{fGiA@SjMcgoXiN zi`j+i=+aEbb@SR{_Iz?g)1UlGt%WBH&`H~m@3=Xi0BZ&d^I-E}d=s#7T0Y`Xy%z^r z4H((?Ra021J6Ed^dZFqXWKt1fZPnXw!`Kvdv1D^&LG|r)r>sUq#C)=;zJ0keD|TRFGq8})D^1{Ym7tzUs6WdA5O%8w>v>!GK)}{(~skK!mRW; zO?Q%tirv%)n+$zLfW@EjVP}G1ph4A6%8%?guS7||B^~aM;0#|Qs@uTL-Cl*fS4Jce zX}A>EYI1?hs2ja&^?i3~jQ0FeagWMJ4Ee~Q`%DP*dB+ocMWPXu!9*E4K=iaHPQ z)E2exSqQA3YsFtAtmmV%)$#3GLhB1Z{O@Cgza^9cux)+nLP6OW;P*_LX?uZqgbjE2 z#>5d4uSzE|CJj=5qoTI8`;2=o&oRh&6tKL>)bqB#dz^@~;7=gDH2i{Ipz!=ExCa^>-d$}#9RWkD(7*T`jXR@eEvW8-FLGM}v>Sq+^FJn@XuXQ`+#*&M3I3VX$ggczj;v%#+h(0x2 zUfTqZ=+&@AzS8}9w9+00&_Iygb4uZ1(IEet>YHj#=bbdw%j;6plt~A~{h5ZvIGbRW z*v+}Y(89%0OQHqgnQNEz5Aa>^Qm}&_D9Wx*oAmt^+Sn2BYS)_yO5HA*uU*gw1OuZ* zocvp`@=L};zwwfeg+)9Ea$t=Mz&tcHm2-FnBr{0(2vLnV)0+@xoho z*u33f0uE~fWL(Y{sV#W3koIq2=u#){d8^igX7O%%|qy4k_+!LMO zNj85-GS7=q8KQvIJh7Z6WlFWoS<~VF`x^SlwrDYaK?R=icvfT5&%V67mG98lqCwcI zVPtuK1AC+da+ZZou)&Mp zB=k1}M+Z3x4_MOr*vcffAqJH23nl6G2HkI7-u5v*4fnQKsj)_8xW}Gu1GWxZk)+J@ z!DHnUT*vIG+|N6zKsWugf2MOM1G+q7W#m4LUYgXyg}|lQ_+%Y zZMz4VI`SM&!$5vNqFPKwqx zP}J_O@B>j@b}9uxyPf?MpL3$e^83Dd6b8#y@;YT@M3d_I95WY{U_-oa*xErKmGHNp z8tTd=>j!vXJ`h{A>oqRhDOg=WM%{a%J3>K1Hz#g(!l9-Qj3<46u)5Q9_{yw;9Bqo8 zLN7NOrj>Ab9lpaFv`i_sH5g?p?(hOYYH4I)4Q4D+Q}ZPxtyhyw@ODmWcfw$G6t^Q5 z*E#mE!M`(F$WMz4HuX7G91LhcwL`7`vpCRBYX8F~oJl)UU0iF66co0eDjT4+&naOZ zvVq*Rps9;xMHaaR8r&7WDg~K6?@4-Ghl@TO81gB9R1mU2+M|Xe6BcBE+YiR(*DV>W ziAPCAANnxGKYpxGY91R5l`@4_c7gx2+QsMY2T(s>ck?F))&hi5Bv3#Yr2bNHS@=6b z3nK9P`y#^(9P{`5Bf<>8r9IjP{l)?IfEtOk;BSk#FN#Apxt2Lqvlo)M`|(OL1p$Bi zi?tP8gLi3SyEr|ruMSg*c)^n~Y&x#n-@R0oqr^}7F}YU{hs`wn@3_J&eh;e&)Hf)w zW`I3WbyNwyYnXMnsj%NqI*v-7z*et}=AAJScmiT6OwHv-kluXSJ(kA|%49Gn1*b&& zk}SKtOjo2dLBu^CK>0heWd~QBq2=EY%fGhzIGikht!ka;&yVx0DImtB4D79+w=$XX zRM}yyRVKPGplG5Kg|z1-j(OYXT1nc!>SyL;=6kQQzR9)K_SO(PtOA-hS@!60pl=XZ zP2y4Lf@|wV!~m(GqG{6TV~nM;SZLi|t_UFWE)Ua_ApS`F7&c%DAJg^UCZ6(laMLv9 zp z^=)N~fpBz+FFl`9n1iosmlTKT@MNA5QNdroiG1Y+gz)*Gyw66S1+S^=z%XF&ui)lh z1s)xO=C18_LUdh#h22pjn6gQ}i4m~2l;$J_;!FmuwB(6wZN};)*jo3SGLwCz+Mrq} z?FaOinT`t9?E6wi4aZhYa|y2D`A*|)lJvru@)NHoO9zsReu^!Tpcw$eRQX^}jSw5^ z!zIX}^p~E<-=ug8+<|Uelti5X-%aF(CI^9~K)czqQMgi<#CdA|V}`p(9dRd;2%p1m z_-rk@lQ#N3fOW@>F7D5SfJzg)3R2;}+e-n+5C8>QK_JYVHuHuPAT8;b9F zsr5bhR-%CHQ-Vx4;A7Icp&7g;$cV#i0+TvtY|SpRc@f<3w~{v!yQ$d~(+~H{#muOr z%i{vGu#9FA)ci%<#js0QO~{SGh_s#iITW3XuCT4fSNz&i+&wguZn?fpi1DXVXGYwv zEcLn8mw)S%yj=c9h^4}r^9mFDWdix==0W#0ycecr22ysi!nQ;OWn+4W1^Z$`(zCii zu(Ne?DI2_zWz{ER5NHlz+Mo>~EC2+~tD+@ej@sb3bX<1!$$$$X3w{*x4URmrCfC6? zAbdy&b>4rHBq1U;vT>PV=QXx-%^R@bG&YM52*mTcJr9C(Xou_dmoNNOu9uo>Nzf(T z8OlbU>bF!J3sq)|gZSZM8N`}inW_k3DqUhge0;H7$d8L-7jZj1LYf#(Z9 z{~ZQm5gPxalfRwMt0mbK#`30*4$FZ>`uW+Ca%9md*l#0P{j)wYm zrnUTd5iQpVO<~k{PynhO7z8WtDH}!9ZqeE5LtY>58e+RVAe(kyldrtNA#akG7R;rX}FJHWgJZtk<{KB6mw?#Az z?#9KYZoWbf2Ns3G=QPjA!)|@eU#;(thM-Qae$QC5sxm79{SMshf}N^tcH%&?WbzU& z_A&5&ZD(xn5`5J8@34|MY|Ks+KplNL)uq#iYT76*A9H;3tSs(W+)|i#VZ7(0{fzFe zWk2sbx0%B#CF<8}zI>AyGu^yJ8z#vE?-v|HyIZx_zob#ABwTm3YJZk zs*+AeHf*n=Bl7B$u|DoXf*1?Mx+}PPV!ZOu6Zf6yYS}X3h}cS1_RX`m``49rt~p`8 z4$fEBcp3tTwwSMc$CGyY+Fz?xFg%XaqY>wv18o(WpnOOWS9aj94ab4st|5t29)qt@ z@Lk2(D8X|R#bfJ+2Q;rl0p~98oz@QhkuJ&DG}OtPD|Zjr@iU^hpe3-kc=)lAsE}9m z)JG|=;`}@vhLyjhoPTKPeYqD@lH>!vm)(n~E)sqQyP7zs#mj5&43!-YggF{rlN!HZ zswV$>S8lR&_+B@8>3PM(cE;RqK8eoc!2?v9rnScumPw7d2}e4R$!EcNUz4)m;2~k^ zDT}+*>BL~BgYqUtm2^)TuK7l6z_ROIL9V3E%=4_Y@Z;+b32CAv2%aR23;3 zj73DK6RUW(QW^Y-R;gn8af`*k9--C0rVa7Qtc_o6XqmXB_HR=C!Xw zTl5&U9lFv~%A5`G)_>-+XrP_!G7SeQqqc~JV!ngYot|D1c}0MB&dYJ zRME4{1OuJyPd`EYcoy9{RwYFOu{X<1?BnhvhbRZ-fT%ARU~8ZTs@&GzEZfTu?zZC! zW_TTj2Vcmdk+yFMk2Evy-AT6$%`+UQhZj`1`AAY3+HL0rj8)t8oP5n$@GM&66=V9n zt9frRrd1-G6;;d~9x`1SUrvnjEjd%Xh5O@%p}0pNqc88ksZlC^tZQsZ(*ov`cA!yM z1QZ_`p9?cCsR`unHZ@La*Z5l-xs>RKgoE@TEZd*Qv}o>1lFjA1F6u>>fIzb#(SseM zzzxL!FSK;o90nOjsKqn^buHWeZMrWb#kvGgA*WH6^_wBAAwJ9Nqq!Ni%?;y&MRRsh zG~xu4HrU3bML%S#YdiW`-_OVKY{nNLqQO9r`+TSXKr}Z( zJ7nsbp2gj|br+(w<2g!HV82K0W4tdAYPVOlDFStbHQ4F*H=pj|aWGw~$YMHIMWl(UC?2J*M@u6|-(7$}{XxQ4i-?Kd zIt|Qu($)886BElM+)KWNmn?16ugpdy7`>BkI{}n8l%Z@k2?akQk?7h{G@!De+<>#M z7WY**#lsEP{EwpQg6qA_33=+hfzS$=exBlY-ACbC2rrx%oml#p)HAV0;`Ii4TiwbV z;%d{97yX7P)~od^96XHuUidL)-x#9BPl^(S;kz9bra4bfMj@FF8l-N1Ax$4PWls%m z5#I@L#sR|}-~?Oy8gLxm5fkQEAQSG@xKVmhZRBhIZB@hGqJQs930~eQsmxXD1pjAbLs!=kXCy1BnTA7p2Du1iPL_y*i^V)5( zgz71M4)C+N(V}sNP0Ue)RzHcP=Xs=4!9`MjrtLsi{3_G;e^*7M-vBqbQuOG*6&Sln z7f~+}@SFM4?TZuzNyY}=x#N*_7jH+*>Gn54nN|%)dm{l;DhIvC2b!8nibl#K!(0`m zRu1Ubsr)obe5{kde6|=Y&&0pzE@eUtUoebzaOArkb7J zNw?}qCjGZb5egIxt3c2O^@jtzzsHV8>tSgbO-_;E(sY2dK^djCey8Voxyy@}7kDc1 zWnQlc0;pQTmn(VMmx*T$-7Kdor@g^cgY3j!d2}F2s}`Dpj!n=eWJcH~S~pstcb!9l zL8UJuefb{c8#aCaVJAHpQa<)9neRBsSh@~58sVKXv09fUiS?+9KcHwU3aI-qvZ+33 z{bcyUiuNl`f}i)`r0Tmzogi_9x3`zoEK)RGg~o!`=_i|%0B8GyPRfTmNhWrvUPfO> z_Aq@<7l%G!E_IM>?&&Sa=9F1emQTO%o$THTUsSJjUl7y|r;r?NW%jdzu%8Q?P&BvX zYeP+jHWc<*DV@S$Q0UAt^@;b=kpr+bw-4Eb8%Ck6I$#UqFXE&&_}u&%ZM~l;GP6G` z$Z>*P8oyFj!h?M2lWg(@+-94k^{$FMp8ZG|MOl4683PTipVOy*_Io{E^kqXL+RvCp z;Mm59?$@C2m@$VAORSmf;!uq=InMH+^y>#_h#RJrpfEqqj}M-2bHef>9kj&SOUx z@*^T$k*iQXM#3W&s=$M*W>mkc)WHTwuZp_wdp_F-Ub?-so5W+SUbd?CZy8dO)A3ER z!(;~nW`h}s$WcWm2lpbrvcCxy(o{{iYC79S(L2%)IcX+C*APynjM~AG)s1IfpwxKQ zw-Q5;?m`+Xu-b4FXL)3z$uGIl7)@y`z)eZNDGl!=(hw8+oPy^vp%DQb7EZ$p-*p1b zeH1<%aMg;C1EOLrz{jO$DCPIlUubC=E_Jg+N>~gCy{0qbom&2OFQ7=F{u|6HKg-}$ z*F;W0KMd{~=x{&Art>!wmZfE0jK^VE6M0WU-pg2rpkD zg&F*4CZ2J7&OS30UWraKc;ENL*;R)dTA(vCoOQmTT&n$vyqcNlHl@xmS;ijU%4N4~ z3x3@g)3}gQgjq#FqdKKQ!GQ91fclL^y(p>97J&8H7yXQEW@@Dq^bR8hR|&eF{V6l^ zpC@(f)P$B-h^eeS`h`^+5W7$ttrst+mRNgj;gKMf5Os}s2#1}zd%2qrl7D9nR)}Y{ zLT7bktLZY2ZZdL-t$|VKv5(LmMPLKfCn9d zlq@K`m<7AkCj9M`cAiF`5TRHp#IE@BxJVOaEG!#f{zYh_S@_r+dE8g1smNF1}8z7!?DD5`VM6x~*Ug|2=U! zcz3ZOfWvkbQ4a9yuPAbfor_jnQI?uZ9aQ~_*p!o~L<6yj89W&eY`!Vpz30efP8kT6 zw*E1s9vFmso*38n0s?^8bp#g0IMUAXjE9Ov+2$OP(#ZLl9cxEOTA}@6c}<`$!ru0a zNoCe;jENg}+;6OWsXIv$s>%ii?`$o(@{G+==<%JqbI3_EQS%G-%U zF8gw%%+wYul)X)HGi9>kryA(70Xi|hfh|%h{h|3nSFV_3BeV>&KC$YMpGTNJClT}` zwu6*fyJwgaGw{b~D=APGkL6qhkK=lBE$@{dSFjk6RS;TbaNw=kgI%#7-9C@{XAPDLe?KPI=+rP96V_nd;!HtJh9fYN;E z$2HglrF!G0Uy6lo-1EvGYA}I;#O1gQoyh0C`_%^Wf~6fkP<={g3v&4Bk@v?eBdQOF zJJj2o|E-%9MAlk3<{(u)suWl`UFH21xA?>}te%y5=r&`~EGO>GZ&PlBL3ehX%%uZ! zI#k;+5!*Q5cFH>NU?amcaqp~r- zo&PQ;)PY$g=B`2gV-NnJv6%xpQf@%K*G_KQkmz*VW2H1k|7y*LG~-6^R(OL%>>$1s z3y=Xf)q(k}i+9rmNb zk&f!jkPl{BmX#+C3$0Zg)?P7Y(K~hXuF(-3@TQ9kyxISWOun{yPkmJcmIU^ zU+dJLJnXEAGwAXC;}1F~Gh@9{tj2P-XK43TVRz!TRSp;Wekc0|{L~VlH&-+(N(NI3 z`iY=wE8r)EnaNz64hCQD>>K+~2{H#as?aokK14Zz-`ZP$j;dP|ZaD2QwRBvEraXn| zLcH}4QWZn%`=p971fxZ_c2Oi2KEC8vOdc=oF3?YlDMtq^B?W*GjCY0l6wv3fFonYS z2Nj7mR($?%UX5EtG6-#$1QbKlBxRaHKgQ_1<7bb|&wpOOG=25k)IBm8(38yU)=}LB zZzHS0%6^H$Js@hrn&3rz6QC$@%H0Vogz{N21jGr}aX!I)8fxdW-SFm{-GrEdA zSJ~BBWz(Zi0aze9e_A0~4I@7#N%sOKwK!Xe)B(dEg8CsKVyDz4h2|qIyR?K9zebgc z>b6gB7rA*%hIwrB8eX|?exgSVM9q2&I7ponIVph43~`u3e>V8GL9?6*h9^Bv`bb4m zI0RT0f4REPq~aOxC5;p=6Jbtgzr0H(bJnxIcyV`S;bN0T_r)Lg`*_N078L86Dht*j z)<6eHBd(dX<`uT1u5T(x=ii>dN`iC$z-Pg=9~5rF*?`@nuM68~!)pcBAs}FMl2}(! zQmT}6_}D<1=CFA99HLm&V6Ayn$XXpYs~zF2e!jH}xX3RjA&b)6M)D2U=H(R(A9Z~3 zkVXS|g(ZSAF0rHt2d5_$VURU8wR{gSK=VnL{Y;S?Fq@L22Dn>o?*;U_B*70K)h#zS z?7F02MA6NP&vSuZk7iZacLy>GW0M`5?X}|}aCZ+s>&$B@DniOtz11GRyX1M4UxYQ& zSJT(T;F;o#oKp~F`qw*VmJ3X_N$%K(^*r9l4jjRODg^!gz6@5#HTykHBnw9tuaM!D_pgMqt^6Qgw%2s&&$HT?cfQfOgrs#7EvZ>j zQ&#l-#)KG#5_bJLS$vXm(%1-PYBIjqct<-$u@T`sCk@-XF*FDXs7A-&V?a~4SuD}> zmOazo37C92edurz;%{=2*}&KO{s zz2d@Nflb_o7%8vmN~zDv+@3Q2#DePiZ0`u|?@3f5wq4@#7N;*a9 zZ`+nAX&(Tt1CHK=7gr#6?Uf0owlNc{P4uNcopQwe+wy+>{o40pTxjlqpWJZ{GP;2X zH_1!2kWoGXL;CAls{K~?TW=4l?=rwX#84~WHTLUXyh&;~>o-z%QWo?u-?{yY-&^yi zX>u(}qce3eXmp2v2;^}CE+3TR!#2Qde#WlISDgRNUo*Vqzs($}BW8Y|{>9~UU!))) z5NMxX^j#D3_Hf3F{4D#b(n@1YE;gB=;a-pqF#ap1Wsw}QZ@Jbqs!!|>!LPNGw8Rj9 z^BWwvPj1Fd$B^z?ud5qYRlHHF77rE9crg4ud1Ksssb#2Xt zNIB-^xn+;P%I%T{g3|oX24(OYv&#l^zC*R>BIBn%0U3RBT>>U*r?X;x^j<-D_m?Rv zMt7~vBR@!E7v?vUAEL|5I3~DboZL+3@3adz)QeZ3U~hMc7p065sh zX-|O-;RN2q*}Ndtl0Gl-_akeSXJX{48SbT5XCHn=`>H3iH@dZKyB@d3z+x z^GJ##0jdsnnwBY-$(^JUEkUd_FL=k4KE=kbs|SZIf&yMn=#$UKv-VVqx zxTo*L-EMDwv}S645rW6*`2*+@tuatonUn3LAOR2YiH?Z|>qWodm$$3ft))Bn(@E65g z{`eNcXhfFpuLDJXZKtDy`iTMl@;>f_xOcTt~@x7P3WPGd%TS z(=>L~jj5tN)Eb0F6Vgo-UYoTJ%KPrV?p4%L*usvfz(n(lmp0T#O}@uc)E8#7C12uf z9=1TjkoUSZj*ho=S*`jo%ub&`4t%@M0`YrS_$1+hU)pHP5_d`kG~PsR#Ku`5=$CpC zwJq_iR0}Lz$SaY$C-XCD`tvQauY*eIgCmX)B+mA=0W$t-cEz-W6TZO+Gassn$!(b4 za>$i-0B?@&do6ufi`!HIPL^0VqW0!v4RR93`-zX87l4!dx`jY+JLp-V{D2%iK=175 zNLn|r!!_1HGJ-Lkx3fgxa|(~b<-;n56;V*TZ%dvKslSsE8yKh-zT!$5zPFkpq|Yz< zDJ&%rUkfU-0O}!`QzmE3MFH&^_r%|tQRL>25k(55aOs_yV{#b>A6{CX7_263ZgSiC{uITU?S*AB2vrC3a2V^0h(M0z0?BV1y7q;rhk!w#+w@L`eo?_we*+fnyrSMLK zUjeOCx1%-u4cWi-IiFPTZzj=gs-gf&`>>CU(fwVNrL5}xQ;?uve~r)Kl&@U1zxijz z`K8l-6CU!2*MS+grp>vL*SRbKq;$shb`nGb0SU2u7Kj;a7M#%O4@$n(Alt1876?g!LQW=r7(x#tVBh9|W^AoHRs| zQ8Dr4v>0(JKh(9aaQQKETV|^tUc=R=6@rf>u0muJRb>tz0rQo!zHQ>`9A4Z|Qvnjd znYB=Lk~sV5OMqg!*fg;948ba($j<~dTBa`~=OUt8FasWpSj1e(;-b`Mf2iI#-(t=_kvktpkMfL zgKU0@_`p#|lEB=9^@eo>XnT_Dz+Grkr$HQK^1DycH#%#jLyxRpm8kPz*E!$BywSk% zrxe6=51>F+SYQBeY`KP>62w!Mk|irO2BG^|FejrBRNMq7)X(Ws#bHxG7@U)14s}c? z%yYQQZlVF_^eMi_K$Jj@1mhZ#y4fS{Kg<240#wbNQET^0Z`#z@kC{B8#-un02R6F^) zh0*O2T4rokwu@20N%aNcH5Aq!2w>6(nBqbk_w&QOvUNQ0ZgK>E#p_T*94<&IA;vY; zdK(OAQF=zF#OV;tZkBcWYu~8h7_Hy)ni(lMq?Nq$PKF4of7V5Qh3&$(w-Yl`htT&u z?nGPs+N(^O$n>IhhJ|6=fs`eGXP7Pth(8QB0)@zTBtsr`MU`Lc4$T1l`%b zv_57jy1MeLRG>!jJLwW%`yu(~o%kUMESBGGKZ3sz)jGQ3MFDZWGUgX|t?auIpB{Z} zsSH}{P_kxiz)zD50t52>VA-XV9SgvY5dF(wZomMU|>=55eMup4tdzmOEO?n;?v7V zRY5ZCvksAT;7tH@`T;5Z8{~x@Df5qt5fiw-*8I>tmeMyDE;^NKS-2F1_|$klRrFS& z8$f)aPNmHNDo&&*Fy%fR>F<7P(oM4%5RLq|3Lp(QAhN!oUotah-vu6~Qcsu84Ru?k z8T8u_v9d9ukvtS5<(^*kseM6n@N)eTfb-wY;KNiZD;WEd8?SW0jyA>s;%a6o(_c~{ z&Tl3{!eDYN$c26|e!=U9c#|esNvuny;9wT6)Q84)1Z_rp)ro3kKn*4q3NeIO?e{B^Y zHM9BkMgXSOS@rCSAF=z)LNa!pgWO-yqt`c0lUGnM`qeN;599Ww@Tx`w=g=&NDwy@EgM| zVEfW4_kt0(RYRp77mypn0NDR1H-J+ZgHCTM7K18_qh*OsJ3HN^`Nq-$^e&@5{Z>yO#S2UiDyMd9GsVtT#)O11?Y+^V7SA^J$(;Y#SADW2!2`(C|Uwo~d-NQ~j>2=9}zXr&$3^?6mic)m_;;z5F!F2^ct#Gb9d>gQ19Co15VCVd_i#!5i zQ0%V=G+G!WRIn&4{6ajL@GxFzwVsbrMQ-_}eRLuGkoBTV{qr|VfHn`F^`(#H)X+#h zZs*E4ah{DgeUMkezj0{cB~T7|`EOjeds!<2zH7J_P^ztMABREFOYkC{d3b^4 zt;Pd27jTeq0SAsO_1+nkeOkt_T~)=>T`=m881uIt!t-5)#JXw(G#Z}Or9-Lfz<|8_ zzPdYwghyAKT``Qpu&OJFK|Cr=;brUKR;lim{A2V=BH#p$0J8Se>QVwd0Z}Io;*jFF zx0mVQPPXsjQNe^&zv-!l2vXiWlBQaIvw>m|AGrCpKXQ?P9fC|JZ2JKGspWS$U+lO$ z$}S%)>$i|mtzp0Hi&D*a*wp=630U7lK&7fyyWW3Q_}dgc~pzj6=Dy}|ih zY(?_LLKs%k+nYCzQm#?!Eo&LsP<%F1DHmnG_}1=Am<^f+Ma$-KG+W^gpWWY~h<{s+ zijc^Z46+~-Woz+$rkT|{5JHa+=;Y|i-ljl>J2=ZWB#OxV?>!^K)i0nkt9EVqfu_GO zjN>fw)L@fZfnA{-;(F-F1Hl^G-+U=%Tn&9gV%UyI13JF`neGE*$iW$<5Z#{qBJLQu zhsz+6%M0bVo`lURGy58AH>ZrYj$m!1;{nFbUuC1$qNnS-&|MspdD&8GVcOe_I>_{&y z@#~=-_VDr;P*zW%``M(TYkl^&FSE2u;p(kcX}7H$-6*JM@gWHg)*(IQO?6qaKZO<3 zjS<7IDidfn9(x-cj^Ep{++gF+boDj8{j*j($9`xDxPTCjx_u}J%{A}m%Z9j0L@x|i z3Ul}EME6c;X_a4{=dSC9yX?+FV(x9FqiG(gvU(k0q9<#rvZ;+_$qTCltX;M-?ze&8Qaz%0oDAK!IR zWIci@h;V%rib)kPtYU|}bNWUcS^ISZ-FR|4pal`11SiCoh`9hw&THSe%cK|hi;Y&8 zG&_g_yni)jk4U%r-zvi8beAwTE&?+AR!qs>zo3(#f|pMNQ=6iG4p0@pWD5RJR?6_H zwM&)f=w12@O0%THjLIMgMkFX$o9m;j^~M?VntjKf$O5}2OaXds5B&nABP7*x9l)RX zNBEPxc^T>N&iJcXly%6uEfIWRZq^ve=)+CwNK@q(`bi)Cg`2LIlUOErrc|jWXhcxZ z_=TEXvzW7m`db@$_%}l~jc3e>SWVv_cMNdIe~?UC>F9Q7fa8I2$1S+{8Vg$u{0D3% z3kg6In@RW8G{RrL3qo*hEu8P)YQW6uzh2aTCz(h_!Z|V@Dkk-*S)T|cprGG}w8$m4 ztBXIM>yQ+gr$@b0Ce}ms3aNiXhv=;kzn?6h{h|g;x2HVi<&+S9L)YK@QGk`wRI2FR z%5Pq4)P)8WgV+|g0~NZ)N7j>o$5Z^61?5)Qv$PT8BSm64vwcf#5q@Y zc5_&Ju`B?u?nLPs^3{Sx7!z@={?B!&g6Bv0@G@Me=|*`{ zTkBJgxG53B*Z>~Hp{3Vwm-;vuO_+==bvGXvcYzR;@8OdJRtdneIJdDsoM2I4(*4N3U|dZV*Y&v=-(xAb1X){5}w?`%XU4a;Yu&-2inhWw?#>1q`UYISj0zS==tCzeYY|0qia0o#bhU;gGI z0L|X7TzulJ#CzeuBvrWc8-Bf&&nC?uOD9ebSsZlSU1~s`ESCDpZvXRUxFJKf%H#kR zr%!g{o;-*y}w=jWg^cSv$^#_+M};CLE-2I9jSL=7(N`lhL=^vTHO{q5YLF9 zzYo1z3+`{Vul$3)dU+VQ^yvaQ;qNRr{?-F&?o11d=C ziP$*nJ{bmg9ldN7->;sIJjuEGVUHhJAMdhJ!D1@)8&9CUhpNF!SL+JAI5dSPQ)R#S)q&zaj^Az0huh585f!FoEYsYeQWz@k1y@yYjqu@8X$NX z^vVg43@f3;(2$}Dt5hD!w;n<;o+(Y&5!0h$Y4T$8$|UavqgCZ5(t=+o%n>pt%^MGv zE$q6<3wjm%2(mmge=8?^g8N%&m>=R_sf71q88+z9MSWl(k$E`DT7KDohK7bebvLvo zf~vTFZ$B;MC!$62i_at{$3SbqAmoo5;`<)9+7n{_+y|AbjKBr1stpgY3C-`dZU2zd zH_t2Jl!Ia-LWoHUKH)mp(Ixv~?1*5P3ZS?D*qhd-E6WBCL*%YRFavcsd zc;au2?6IG5cg-oqLhpb1pSg>2j2L&;3O)k&Ukx2nr;$z5y=_^dFisd{y#!wlZlU!T zIWwGdvD*9s@e99^oge*06~2Wv4ifZ2rf}cMpB*%TV3^yw=-=MxqM}-0str1+`(CKt zmW$Cq#t!qH)nP5dAfg&M0;_5@r-vAD=IT?I@U4xb?niQ5z6{qYwZ0G&KDK-NS~%z4 zlm7GQ4zxW8??Sqt)d^9eIbz=Mhlt zMuSwU&=Ws)CBWl`)pyv)HCAkm+HOf+Pl>bKr!2}3P=2&TT72W$pd%LC=+jtHMzhoN zgMKyDQ)P~}**aBYC6zz!duuIVhS{Vm5AR#CE6RR+Lw_fvXU$fG;IHHfqJVxQGK^5=}4#EVH%7SWt&VUCtnC0T4d1dSV}eHC{yEV&W#! ziWWMuA?GJ4IxMg|7qMW0y*)1ijTxPBAeIg=D1!|BhBt2R=m(!yWdQke|2yso=K&mw zRp@;14Q+Fp`bzep7*`7)=`Nw0Fl_=my6;s{fsC?4kBD@h=Rf$D#nK{4M!oVRL1=bX zf*{>PBeegZI0eIt{mK+Wk*ZmG#>XxtRfdpZg2#{v&Jpp7(nc z#i z0&qy}Z?bnrohCz;VgNw6Jo?kHJSC%W2>!i7>Q0ObEo{EH>VV6OdOiStgKN|`#5awb>r%Rm z>p8fDRj9AfRKAvo;QD!lMb6qwe&ei%?t`-Gj#63ekk1o_Jlj`t3?+Po-BQhYnoPG~ zpJt%fizqO0X*+(6oN{!?^x)*Q$v*FGjs2;SW-)fg1qi_}$sK!+U{n|bxt%{2DSxG! z0%H7Gpk}q!l;7iUB7y4skn#iJVr=@hi_aI{pA+uH+9k^|sy4octL@p|qav-!&YnJtN4uJ5+?g;AM;R zo-(Q7PaXs)h>&AR8)te=taj9$K7sA}g<_s){zGt4v8=oYduGh9=WTkM0;kZ_h#$z@ z?H#}Q(KS4iH{6v<)I)0I??zd01(srC4v&)bEiR?=ts3+ZMvC%R-y%$xHQ-1ehu{iU zEkD#;@AJ3*YmQ~aMa7rha58{i#9t;#Eb?yXYnNtqx@MQ-scVR{eFCH68$sF!1qg<; z&ENWT?%%;sKI(fzn6}XU^|{1QYYTsYi!oJ43CzsB%W8&cejp*)s$*o9g-ZCh2j$L; z#x-pxUEn!@iEmPBFuTX9fF$LsG^j8{`=b^C^D0L;HRTX5aNz_br_z9geA4Tj+9l)> z)38Dfl+k_GqOKfmr6HmCQ!P2;UX+4`>N?Uqf=65hGB@WY6|WN#LqXVwEZIyJ5ImtT z4DYA;=#Y%&-!bbD?)BH7Njc-}kn1AnSm9u19Y_49Lz-ml#}_xIhUV+Pb$#gMl*9R4 z{$mum#s>EjBDK{)lQ*&7>}R)08n%#FoN6DF=D=qlMNCxCTY>L+k7-)3OJY_T{p1b_t#}MxJXVzZ%^mtkA;tu?Veboj zkN&nB`>|~(Sn7OG2y0324fyRO`d)GEzu+Nq5UffB6tzYr3QukqBgu|vN%f#@NPO5! zfFc(SXWE+-uyFTy3p4K&N{Z=Q-oZo%_Tl*_cE;1_R7&!yrJc$bK4Uu`7js5-K(gFg zU|xX*r54nC-fKY)gInB$c)b;CQNPfa9=vrf3!jzm^hCNB?fuy;^7Ca3nzl?0pB`%41dwOdh zPCI*R7qnX?GFa=zJ4J2&&O_nAfxp1`SWI2xUZ2n^B=_he34DQi+g??7+Xc|CkLXcmkof@S(6C8}eR8Eh|5OyHNHS=h*I8$=K zfO>ks?p^=TGgUgEpn$L&8Wt(|yj!O(YJT59OZMMm z96(k2aG@D(7mdU-u&9~P3b0&0TY7;(_V_3I z@)1Ix%cympzD!xsF|7(=y~p~~dYu@6u++A2o7^)mjyD93dHssM13Q4tAu+wo^g;n3I3ifG-e43lUVIm~*Eh4PWMV5D>t6>Y${>Pl zp;T}m4bgeUo_mpS-r!#b4qQRt_x&h}!A}80m~g%j$agORklv~k_tvV>+CM6F#JWyz zxW3rrAyzksJ&+-OB*X@z8X9KDwJ!Rr2|l|SWhGtqwZ z&{*9_b|=_SY8d;|Xd6eB8M4V={FR#Xm7Z$h$wJ-LmTnsw4R~JmG(O~fUp_4Zw~K&S8NgBCB;Cq?ni^WJ1Wv3`UF{*r0&@C0L=MW@=e{}XGZ0T# zu98j|!<_Kg*2nCI=nPwc_{_*-$-(r?QYOmBix@dWf5P;qBiOTEYqFY-ABc_RBj(4s z%JHpRkttXsvfuGSk96~Q7JCwVP_HB84wFORmhJ{t?H;$rFdlJKg}4lrrx5mC;l%Xg znTgO2GLxUi(fEnTlT8+Ztm7u^$ZqY2o zlc3Fu)Ygz|t0zar33-Gpx^-G#D263Qd0o(ZiykNriWk8ScU7WKA)q;aPE^5D~{ACZS#sMVuc*xoFczqii3h!=5i{%)6yr$o|0* z_1F$AvFqo}g&gwCLJF8^saa|L6ng+bi8{{!l}xEd%EWICs^Ov+#euW#a~_DZryDRY z$ZIkws6$w;`P>pH``MIf)(kxz7-|wMR^QiX4)cF}7Sp?Mb#|hJ)u!`_S zL+sIa2lfV~u+2RBlcU%?>jP>1ws3*dUuxNQ_jhjHx*W^B>FVcVlRwPB3?yr z4ahH2tLyX8GcN`bQ_jrEeRCvof1GyO)wmlqBq+C9O}qIAljx21Ym;|TxPz+}p^Ey{ z;mE{3Ko-)oW8}w>J@xF7DvRZoWZ(OK=`QKMeqfe7qTt#X5ksXZnQ+B23Z7v?WDyxK(&QW#}%@QB;MfVb3)4kNp{P2v>)%Sf00I zcHD{5ZqGSL8vh zHk>ky+Uh+zO_F)E`Sd7KcKaKpqiia+JSD?(d+8HMZ(q*#Ja&u^Y_^(2A05-fMW+}v ze1Els#?o$hdr$3hH;OZB5YBo=Z}9ZJlN|*=-}FOd1ajTvCcn=o%$zR+hH7?NEBiwZ z8tro!&+=t(QYmno9_z5T!@a6*qACciz=T3Hlt?~I1<>$_jbazu;Hj}{9Td0kG@-%K z+*82U{P+Ikf^uXuqSD;Rew`YiSg6isty#26VHmObeKKRjM-PhzP_u3(X!yOH zBW|g>pSyZr4}Z1kVRcE9IXvm2r1KD0jN{g)cvzM2F|(C>LtgqQQ}sWbjw zK6W0wA}>NwDjsL`-vGT8P5MEG}OlHh|OJ6b`xQkB%glk~-d_6`ZhWwLQ!E z9Xd^wO2lRFeI+zRSrioMu$o-GVfbV&+MPY;kpf@&uuz1$oXS0jB9<)uAa=d2VWOIs z&`Jt~c{WGKoxylBMW{Zg{moJ9B*{Vtz|p1uYQIFuIS?r={>!}eUk#~$`;bgh`o})s z2f;=&PY2pv<3(_Pr)ng7_)SKQ1T<-CENb&}+4PN?+T|FvY^)5!lqnr;VBAE2CFTsI z%Z=T!=LEGwM5D()ul7M%{Siyy=OmR0f2~non#Nh}`{3tKZ>JRG9Hy&okDYCWYmep) zw&2P!i!RN+d7|xAfS_O>VDLeI-!}u4>$)BmaLzzu?6o<6LFD+>3-hXa2Iu6g&3k$ja3WU)( zsPfR6=jms@+|(6F6>AJ*%QI5W`r(V!>DOD}k|$_UzPbE_hRFPY*1h|EKJSV{lwzge zA9Tbm+9!_cbG9Yuwb*ViI>E<00;D&DWYtb$KSz`~IMndKu|s8i)nn%}jXt?c6jocV zQb%{up&ry*cVFf>J%p-b2TDopj&o@`Ga+fs@p+x>?|tcaKxIeuWQ|9+NvCee+&8y}sVpjA|zkZC+6@P+5SDyDKfaZ=aAZVuiD13DXTL%L!WGTyOSP z?1pMj<5Ze)oM_f~wU@M~+{>W6aPXNVM#pAEZZ}=@+*O>fC)}1?{#OS@R$;}WF%pJO zz&C!zbho{V3J&;;efU>11sjvQnMrMavd?1vhPha_I8fqd1}`!iRfDK?KDm1J{4FH1 zjBtfIEzl%?5Z7|isVl+**&e+U*sF(^ykpS?i3BO zHxcX3U0NU2n=0|BomzN>puOW2_(3?3;}@Z8BSmzo3w+&^(Ub1YywlUQ!q)XAc+A5a zndCd2mbEPZ)rbjH^rUmnZTD@Ghe462ZQk4>GgXE4RI|-NjCD6tzv;G`8}=TW!Y>eXjbZ zKf-3M!7t4eStOn9pk+U;VJ(~iqA+`<&f)j+Q=%!Q!$<`avQ3&CjlZ+B`K6hG5=dfzqLHunXn~8{?c0bD<4ZH?vik3 zEq~S?NTCvCXg@64_+q}NJN$Tk?QBc(?Ueg~RQ2jT#Y>hPL)e&ea}XF?84wYz&{g(N8vcW+)=60imQvoH#_<;(-RtPTey z$n;#ik*~LI&T%kqrREqo+7(Tcv2z1S4{M=|Q@NXeipqH^#BT$sZk`ueW3CC^25>7W z>@8^D@S8&AQ#GC$q9~zC$6-4%$ACHWW}a3rL%_AY>8V6Z)6@jHxXHUfGHQqhztSH@ z(fHlHxdBcX=6Q;6!^V8@0q#cc;G{Hu&{|lU-lEa@b8uW_dW(1YC~uKwYVFUheP$~@ zw=#@(Jp8Tl(q~8bf&vvOFPm%rx6--QfxnGhDO~;sLN+qG`<#Orb#CZO{afbxdz#MY zFiP+l5_gf8Z;MLQ2`WBY|lX(T|Fvcjelb8(ptHFFt!3mFd!y zsP|Q6{d@u-GCdqk&rnF?rIxZ2=wvUM@hkh7p@!6A z#}E|vHysPZKC58a&<1Kb0E+uq)txndwzPhQ?>w#1^&ByGP%Typbg(}NVx1&kq)T{7 zNvVJ5h$rXQDMfu3^UXP+=6IP1Fhn3D4AMK^=H)uP=13-R`* z2UgfrG|lkRuIkD;o~E*C1XAv*k;c3YIY)4ZvWq^whm#MgvG3xQHIXa3&o^JctedN& zB43`jB>j|JKIKivgx#{jnv@<0gT$)CD2Z*qFGZZ&lL-c6M)%jl90}6-H)!v-_O1YTa%l&i--$K1G1psPxql z@M|RFJ==^mx>4rX)0>A=T9`t+wCpBDeU!ZME~v_ile;OWdocB#tkD75@p+%NUCRul z!uG+5Kh3+a5rj-Mi%K@^OuCpd&?-21V;LGDRf_1BOYVGh(jaEUl|xvrb80GDSnG85 z5QHuRfOuwoK0JTT`Ry3Pt&h0V7n|52%s37EI@7E)l_m9KOz9Ivarw6uWnjR2t6JR~ zeh;#XCB}g;-bX&zQV#h249%x~(%P;JCEI=Bt2xzPg~`xSi#l1jR>VQOBnCCNfeT#S?gU4ZycxYqT1=C(9jQ_d%XSscTCoau* z4az&Fi%JYvgRzw>p}~Kx#e$^m2gX+umZ-3fTIRcs!Ytv*_Ok`GU(qjNSWfN6L7RKD zuOw;=d)K2eP_$Qg=|}ay95~KQ^2nRE_Pv)C69g~4<1Kmh#SIqEQ(Kx_QFUlh#o>`rhD zS3shg02TIA6!U?12%R1;|6aK;i>h@B>2|4_Ix3vopQ_f?( zWy{EqZ&4muJ?9sd)u8?FW>Z`QI*yNyZtHepMrN7#%HIyAWX0_;V?+O(OBwkEl!1V} zD>LQ{($lU&*0goizSrZ$U$U9az)uk{%nv8l%8=U~KX22?C1jYqAEZIwY5FM+Y-;7A z6j9S+nCX9I8`M3;qi6VoKn>HV)OjolQN_M?fT#aVpoFuImEB#4qaQWiPO?jyV+ee;5N?m z@o4z5x@uWqgwo+~7sk$;KMF&{qHrki9HY#{4kHZAYy@UGHhLSgr*2?H;}YaAiHkxp zzi%eun&B}+QRUEBJrljU?Q`Y{#(0BbioBx9TAc`4zQb^laXG2O^Xo1{TOnzIa}qA& z2oyh-kZsWa75r|ON3bBQm9E(jp2fg)d(0UH$`4Am6DBV;WS>4(99{f^{VP~CJ%^>w zCDBy0yB=Ibe$Ss4VGA+!Wo#LC}PEK4z zv5k2=Z9#4PETr73Rb1^&Wuxb&@rSrnW_a^p;!PjvRigjzo$xacM+0J2>y5N1CsVLS z{ZA0JMO0<3&WN`({U47h@QM&Y0^0KK6(^6Ba>60ktqvSQ) zXYP)#RtDta0!VblEmBTU?=$ho2_IIxt`Yk}5F36O*A$l}B>s^Bp=uW}wTCepz!sbC)M)0nNZ;RqaU~WtS5LU`pi5U-M0k1TbhqU1t1yvm~mW6=(qZ*FrlJ)Mi?}lFd`J!*18kGgH<1b6LU1F zKwP+99^3QF)_C~mZE315;4%<9cnL~$PMl@5ux9dJ-Lox|L|E|^#p4eX2eqy`9VV~- zjyZ)ND#ytt`68yeur@yAb{I(U{g{|8!UoSk@{;!x^sWjxU5*v?l{A2tV}Jetvshn* zQu+#W@Q4A`fA!iIXih}bKgSOV4Pf0Knsi#MxR^e_P2`$*j@EAbT2NG=Tg+I&~_ zrkAPL)GZly;9_9fZN8`pee8W{_-VzM8(lb&L1KLEzI1gq!;NJ0mtp)^fPWQZ0J@NF ze-3l3ds-XoM)pkjib0Y%yha@j38%S*>pT}BRg+M3isAd2meJ1aFZ#E3=Yjpv!MN=7 zn&!w9!?YFdCCU%*<$Z6GT9`yni9(+sd}0c4agc?alq_gpaujH9y@ z4j6TX$JRCq@M!SpM-33n0++~i_Kcz=TQ0zlg;Adxh9sq=ep>E7qvtCEGLR61w*n|CZ4 zU~T1fz*(d}6A_qr94UyfR<_(3-+tONkWo5{KqDYGJJtvlXObznG#vvC?KkV1xD=%A zUNKJLkDP1S3H>LWl=eg^!uEQ!{D6s}nbcDS*`&g7E-CHJu7}rO@##(zt#kY2Dz^g( zG{*Yh;T)htFE&T9CRTD-{7~6n9N`fq>n{^jqu1o@m7tCPVDs*(@Nrobq2-jD;KLEw z#rS-Ml@hYK{%!y=rgc_tj0ELkvi2}6o+GIXB664?1HElegN;~aU_>xMq+@6uPcoOh zNJGU3&yWKMj5<4-w#`_W5>g#uX`l((R{Rl-msy(}?#mVZq!D_SPHcE2>Y!o;uJQFS z^XE+_$fdgyMwgnMqNR$aO@I=LheZm1+BXs#htI`* zly;;>6^!%^`P@Tz;Rp+zojc+13L6Pucr=7xGcLpyD1K?f<42&ai$^Ak)|g_vXbf8} zd3TVZn=_{jWdG2P>s;)d4-qBJtN3HHmy|b>Cv!l<9)c4m zUQUxj#GGOaUR&Q}UyQDqjsx(i?Plzy7vkZ02!tVi&r&sHt;#4qV;=G8PVxP%DnM zV`=_h73F?88ma%YgdCkQ<;2*~hkHXJHp1@Br~e0#paZj3D=nX_#H@ zuOGRH^N;MI_-PzL_@LHnOwe3X`#D;*DuScuE{q+<1d`b!#72YK<*mX{wiAO%L+k~! z3ui)QYdb%8X4R^(^gbM}!G}?`P$PK-WkVl1fd6*mqm*KYUX&h2yk4+&E5n`0O&Xu_ z1?3Er7Z|60^(T3W9qyj|LD>RDW0u0PYIb7Ai>cRAg_MV3hur56`bUBPs3I~Hr>vir zM|iNm29J=M0`9i9u&pd^65N*Qyw}t^Gu+RzD@qCy;ZIdWnT+7OJV zn1Qrb2hOs;W0IV}-utbzBOYe-o}Zu%`0K-X-qR0@fg77U>wIrJJ9%x*<@CAcOyBWt zz!SM?D-&mTA9FkEXbS+*y9Pl;<@8(>rgBB$jmbRm`I#|b1r89>+2}k5(1MI@ucHhh zcvI5Jh%g=0b`AC~^^qwZP-96+W#cGjkPx8rVtcPH3QS%${zMAebSA4*+|M`=6UB_l z|yzP-R2%<%Sjbuau?Tvv$io$CW?2K5&PDp6l(=!rBxZU8#}*7;C9G z=33D~M-1W8YqbaLtjJq9GauQe_30;#sJX@(7lR*TLWdiL1v zW=*N%?#aC7Any3mf)g~SIS79GaRN3+#{S^PmpJ@q$twyvJLK-*1IYpE>Lzva$zv(vIwa-WZJ8 zyG!ZU0lz#?M7r2+pvT{-Lm$b4qPmyONx*Og!*~)+CqXPGBdK&hzGnDIC3#A^nCkBC z;5H41Pgn>>4a+YsZ7{vvGsjrN5%mwma(U{uS#3^#dR~=>{oIV|&L3BQobW8#Hxa(w zx)5dR|5M-A)-fZPm2Ej6M}EAEBH!RMtocC6BBTkdBkIdm&s6(v=sItxr$L$)yVFaf z1Nt32u|b2cKe%cy!kw~=BHlbX#iw;pn73Su_XuS3dynl!B zG8#+pu4}`M!Xw)7Wj%1y9PB_*I%O$#1;>{U@by;MF@A@P%yhx7-We8*1b7z{t0ICI z;upO)e8rG2sp|!E2>n=I^q`d-aW?m?sZg*O&-d>WlZfo`x?0`w*|}Im0s`kmChm)) zY|H&8oTlD7BokcVqQ_88J6vt`B$ujE6nd`}C&E_LFqP070vC9c#ee>wRTSzo= zP{%M56J2di9_ONK!}f{lXCV)Hh2WzBMWQIZos`uLAT=gRL7Z1QIG0dfQ}^pwbB@@J zW(Eca5k}wQ$?YA~GTk?#vHUpz6}mb^7cLCn9f_4{fxjUvq`N(ll-&k-?Vtub!pr|F znEfawv4uI>=Pid0UMo`1()a>OgPb3oRxHz`mL3lTHJhuMb<(dNZVZ`5Kzc`K*T@2D zn74NR?L3O=SSdN=GHJ-wM)f!_;?h%jLA*AU9zA#IdO+^d7uzf-`@0iu4Whh3_DHv> zOi;PbOif0biu-CTuqc#3UqqV=M(Sx;{^1>arPhmHBIW9hZ8W=~W_;!jld zoA=-xkK8(L6A0Ek2!fLC*=!Gi^1i96t#EWO z1W>RigzFi26M0R+(+id>W*D$S2WSgt(-wS1v(==gN> zyPFoC45XkcMPtK@yZpAk>*BM~#Ys87KU#zoxVz@(*HMnpCmw6Jc!KD$Tb8>K7 zK%stobiwINj>PaZ@X0FyGCauN_2DnzbzLT!)6$or{UHqNQXu{*L+U(`UAyM34ec1qcnD5E6M>7;ZR(LUr{=7^ZR>zpom0L_# zTEtiWXsfo(Y}pa(xY)-;;6Ig(rkw%)&7rm&SimKPld(O!g_vt-gf?1wD<4#U%}buZS_1CZXh;EXJJg_B`iCorsxffA(6o{S&w(YF+5|>bI}y|2*fwPC zHE<#r3&3q`iPg&AbIJ&t1xTi65z=2KM$BA7xmqML(gi1{j%za^f_`QzDy@ z(Vn>ST`#lVKAV)O5;&LC8PRtn{6GdO*)YU4cELkHC>bx{ISAq2XsLQa7dD z!1Qc!UbGmb(4O+-cbe{|kCzPorCh&xXuYS_JnpH5VNNPCZyy!H8g75NrA0m!Wp3F`ay^p0K7fX7 z2ZT3LcL1l)UkkTP&ivVH>r0SQ8$Byk?v;ZevF&&$U4cCzk8pk#`cCI40B%sb*BKV-Jcl>J$j|+m%9qG}C^>L>G;|wP#kG?&LapAyWu^BNLnI%{I-5y?s z3wM^rvMj^RhpewHqFZC>GvdHbIJ6P{dXgpjA`-Vy!~18YzPGNzQ)`oIv049MXo-et zw=psVFvAlX2CExP_ylQAi#>+S(RV%LOb@Or%p#BixV zt&!axl=xrGVM5h+yFg$R_UrUe3)Z6DL#0PP0PvjQL&#u&xxKz40?FKByXY=9_k*@6 zNNo4ni_8osNKQCJfFo15qERpcT)y<84-i#!UvLn`)C%;YEOJ9O&Dx%iXzMrT%Whxs7kZp39byK;g2mnZRB9 zy6U%$6KQF{R4*`su#R-#KrX;Q4dZ-^n-c+GbHu;gFv`dtoA*jn+k!Y zy?J#MP4RSKv(9*5P7dsp(dR;W$OvfeYXer~2ZCjtjxnw)<{c~H>%k+L%rTVla+r-b zT>u?4#vEIX4|(6pE6doTvijILeG=(lgI(jMc25)S1FYl&6eD?(cV2%sqRMLKV4>!4#L5=8Osh~7wK=-(HL(`hPZ zM9?MtnaUEKaG36%-pET<{o>w}Xy1O?cTF!-me4U+1WjZiQ}LY+C(z}@@#oUYT!Xgy z{Xx~eqU?cXo2K|i^}3Lb1od4?ga{S;6J^s_NQ0o^BUe>_zctN?_kuIjZ+3VtVAjuc zHv&;YWn$D-HtfyzK@w1V+b>oA)AvW%OzJhqIpl{&?2Ahkx8EfkKhJ{<*BPOFE4S!}ypDcns0j&fn>+KCum0T z8`?YpnZ{`G&E=rNtj291_x7aw@6g6j>%`Z<``RkefGd6D+AH6TRhp(*J{smm13>|PkrqdDw;(hd3qu= zUk{{id?!>_er*!mD2Yo3cn55QU15IUmt*E4y-q>~Vj?J9@2fDV_-Mid`=aJb1KE{+ z+g@Ic!>ZDiEE*O6$m#Xjm61HYy9Wd!I<@oVyAR~V&k@+UgYL<}?LnR4<4k+sn5&#@ z2=0~G^&AYwM+Myd$Fk8_)ss`@t`v1(0|Vjr;MvPB-z=RwcJnit`WT8M>I_)%c4FeW zu5*T{FgA}Ys)f}y0}Bca-go<>NSFAcR&ZSLY++8W8pV@JaAmd-3WJ`=D*3H6lu=6y zI+M9R@u)mQf-qB?u7pf2eAydOQNtlj7|r)A(D-OMv;5bPkv5nGUnX1%Sk$mWLWa$IV-$kOCepf34WkXDxvanR z_Jc6xNr=e;u}bowaeC6WXZI~ocnVy{uqqA?9>d0eM%)I^B|bsTR&BeH2t&lbrn{oE z?9QWwU^6gA;|c(jM8Ul?<$$;@=)Ad+wo6h6l}u~MliwT%k%5=4pIl~kDw);znG#0d zmtFH|GDv|}h7m&#nZ&!CP9k2Dy8$5dasc?lW6VGY#S z+`Eiu%h1;LHswvQ=h}!HUJBBW!q;esO-`dvorb@8DkA07a1wQmf=7BeuUHl(k>k@v$e! zk9oENhm*Ha?1|y1*!#+Y+ejLx$M_|Eaoj0C2P5A?;(db%k}(?Mq(j1P4ucJ`<*E|< zCtYBaG|qIt3lqHSagm>%lWvpZ3BOCRAz%F#WoYU!2=!l~5)Jb|O>QX=lrpnAbWpKsvSE*}m-7GDbhQ zd7d*m$gW|pPe&SM@NC~`FXo-;2R^ber>Ojy5x*=5xM>>=&SOo}x$T%?SNe68Z{ueC z`p&mbNrNkoB;-um?M`b{m!HN>|0|f$@qWIN{GMqZdn(-OMF#87v6Pzo8vWCy6VeZuA|9+#ZrDza$lQV@XOSiz^ReIJo-I-uj^5l^k)3$cOYOm)Fuj?X<0b>xWvV z8SNL_4Kr#@Y30V&CKK_zY^LAza3-?oVYQWX?)%f=Mm(o3mZCbXhNz$A7Ymd9IvK@p z5*1VgFY_g|%<=->A@+4O`S8 z`Z?Z<7Z#}*{mUse8BSg1?$C5gEV$qwWuS)s+Hd=3S3lQl9z(&Q)d?~aw^fcD zmURXP_gonziplUn7ivl2#@9(r7*RclrHeE97l=LLbH?J~_OCW-L><}C8v)iu)zdkG zA$h-25Mdd|#fRN^pRp%jC~C(wc?N$ss-*px2WsJPEB}r%!)@QAwU=Nt_#H1NS^f>? z^pajKDeV2K^y){#4AA3b!l|eE(WwN6W(SS-Ifzbv?KJFIusTo77iOxPuQ-mki$d*F zrl)PzD&=h3N`-PP>xX&{V&~D&vVN|OM{V+fvC0|cKs-&Ib4i;Ot@ArOe8&rtz5 zJqY{{5(uhld+pT}5~N*?=@wKRtM#eV8xz49u*EQFO|p$o3N}E&oIrSnx(My2bpqZP zi3S6lU5JhT*-V+^S0=KU9~y>1E0!67hcN{e&$V6daItD1ke4tUK|iKq=YBN7E_QN# z_r(O;w-w?6nFt1lav!8FvoW! zWuYfiB81!R?zQv9VoDMw>`B6DL{@&%z1Tg2 zq=0?Q7mKo3v-5VZ|raIJRs)o1hOukB_w%Mk@yMU5gy)9rw|rAQ+ia5z?_Kfl96N1Z-*amKZjH3^=fA?v z!E&Gs<*@H9dvAIyD?B-F?C}HsJ|{+9`p8J1X>WTL&`&Gs{bBWK^XD4Qv;3~}^r(VM ze0PQIg|wDnru$8t=f&rt;s<#xElPM_E3O2J%!=#xY19-g z5;gL8kz5ejxoWq?gbj3stP&|?)OIfsh2mva62{2OkSp9)oQDH3NReVHwlYIT**o78 z0w_Cla#8)Bx@}tHEeqiqh*aFOul`zmd8L%I`5#{jzv^zC9URDJq+%07porsM$3XOw z$wi_D*lGREe3|k601M1=JWhSoV|dN0otJ|f1f3-IZpGm*dc){|KGr^k;>rhOp;mW3 zXG5ZYd zT+MB%I9D9-YQ8yHS?bR`R?T^7z+b|GAs;cd(V_$#?NPKOAG+ac#dcdn$ZND(2_+$q z<*sTI4AIqLx}PU!7RKPdtpt*d@pk0&pvB!0L14v-i+9XSZuPkrs&>j?3_-;_jrLl4 z>3ypXv1ZuoUevnUBgE3zyrSl>rV$o)#ajb|fQ=PQlmi3`I?@*H)a|=hPF<3}YhDPx z`s1*wuwkp#gt$Eiqdao*@PO%3A#1{Vu-2R-JUOBHFj(K0a>E6Rd-DRtmM_PzuuM7n# zx{8u}2^;%)5r?vh>n}af_MHU<;|Vw(0N1l<8*kDKp&k(5z*$QHiAGoV^9J^uomLxF z^t`AO_R-V$tdQ>%lgVbGW1$j%7j`_WxhUd^hp^|}OX4W!>Kj~b&Gi$6`xIPx1?h7H zsXEcfxj@|0;HO2k{gnyRf6K9tVr4ureuBT zcR>M$r5j!kLR>#FO+*hH1`jj-m zy=@Ys`oNWxIzFl-%BC~@2ikHR4LNqr!7ghZwMyxX{!ag%KOY%;n;Uq-mcBl&J8Mv~z9qIXO{FC|E z@xA?pe^tf{G;p>s>KdUsle33rx-i&OuCK|ry4vRyAPyR?+uUltrfV2tl)r}NS%nta#cM1&=I3ZPj=gdegVy-sd1DU zx&Ul^EX1v@XDxUo%=as*0V%MIJ<*7+1Zwzdz}}V~d^BtA(w;Esg@TNX2-T3)6 zaVqS{CFA{iR>Ia@3!Yj{l*&HWL)b?j{qQwzrDB5UhlaHT5E9RG+!dQ1=r;+ENOJa7 zw@g>^qC(V>1d_4L+{hhu{zXDaTS*$;o9AuzuIlb=<~zCzNwcA&!lHV{M^wH%Qs{SX z-Pg`m)N&iyH6?t63tjrNU;J&dZ>Y^_ujzD3R1fsSgu!Bg5|iU zEn8a&!|raTEP7uO@dgZ6FZmhEk69$!U$3F{^JLP^>`ly#(;q{`<`C=a9{HK<7=)*T zQe{6J!)oe&wW}!QNSko8U!7w~#_tb$=rhVu%v7@IhQ1%Z^DrtfVqJ&V!iXM4w^$Id zMqBjH-~DQa(V0f_?YH|-&lmpGT(Arw;T*=PKVxm%i**B`}uwP ztt3`U7e0yBcYjx{L9<}hMCDF4_*ycP1FyUl$F!5t-^XMB0&S@jfx3kA(Uaj$8~dAB zh<@W)!>E#}e8nuA+F#9#IF z)ZjK4OZ1ONveuZC?HbZN>0^xpnkoI%>+SWjAvj(WS@X{p)9*i;+(30yJJ%>KbRJ3q z7Dd$Cm}U)}5VQFabxh~khxO0(t(AYV=()om>6-W|g6edJEv$m$n-`T~5VZe&Z17G` z2_}$5cAr9MU<|#;p%Kt#>|ffjYi?$- zp$MGT&;=d1Q2YJFU3mGkNW-F`@csHB4HlUILaWM_Ed_oam-`(U_taJ2fgg5Iw z>fNkH{O-WL;&|Q6b?z@pGqF%#m`xOrJkS zoGN3@!ttZQS{IEr&Ft*SOF`*fTJ;xp4xZSQcrVYTx4b0g3Q*q5*pIn=gbKk`oy}08ryIc)zod}H9=MpSus(E8J51(Ch<<(-RICZ z&_j6qRxcA1DI&^@+mf*%mt~+!(w2K7qugr=Zk3)~pvy~eO$Wc+?+Q(g~@H_MxH*|S{8iy^{F~e2{-^=Adk82G( z<2UP-sbNPyPgg4e;?f;_;ZDUL`aZl~bCKOXdn#dYhgMl-(iwXs+Fc2a>Ju(kV%&!D zX}hjca=CcVF3#S>8g@2JY@dz-iF!4oi&r-XKitTXFmiK`bgx)2DAOsBXt4InmXO8k znyYtb;}XCAr>ip>%ok*D7#|3k{rIhuKa5D zA;0RsGf$zC#1^JS{r&t~@?J8v+CaBFORW8s_W=@nY8+{hMpdbwb`VH(G004jn5F3HZx041}#x?^0uC`zRq_4C8|I-lg zpFLwbJ0m(xEfXt;pY*2oPXC5uXPtG^rU3wj?SI4VUzhv`HenGJv;1H1bJR=t=nw#q z`F~*lFpz&>3nv>3OQ!z?BgX&O0L20T;7tMlD%({K^dH!m!I`2XDP|0t``G?UoH004tO|E=sL4E~QYqoK8oxyJueRx)|$ zLi!B=3~c@z#+>~x>}juMCu;n^;KBll>v9YLz~=wlZDlKnf0SiyB(2$%{}-&ke;Vx~ z4+5C*gZ$T+sRRBCdvGea$jJN~CjA<->G$kk9Z?{F`C6!d!4or(|0ugKx+~cHpE3Uj z?(dn-e3bD$Zq$MP2WEA2o-|XZKZhur>6*;GE01#_@w{12SU(KHTsCaR2{#{Q52o;P!+A i7~9!8o7y_lyW3bRNJBvW=Xd0zs4X{dn)a=Y22id7PEqbIPFLdoMs45m&uw>z^T=sSf7~!yszzZCC`LPNx!jWPPP#J#r?`h62 zMDpsv?Wv*us>zp_N9Ru%32ItwJ!0&nbTwZ>p2#%Khz+Ib+Uw@KbKx1ymFzIH3y5k! zQa)W_F=>^M7@3xkM@xPRyR_wLJ49Ol>57Pjkx+0YBRJMJ%?Q@nCUl6%G#&ZcN~Rdq zTC>VKpqCbHnXd;FuK*f3i_EIzOQjk~ zuu6^O4v@#cmHxDS(aGA;srTPyv>rQiG_Fe9w=r}FKkC64W^%9()b#R07J7cBj8HB67{ z90yzJk1ivn^hcGLcM(|pHqc6cD&JmOR_QMaDHeg17jLD%8q!}uo){Fq2(;2)9qCVd zJqgC+09N`7l>Q4U4q&CJD3c>|+R#{fc!aiKV~3z8=@DTnXZY z$A9w_x_fs!IlNEQ^X!N@c8mmH%=Je~nG8gPA3peipHc@F?qFG^-%v+2vkNG(^aH@M z#fvbZaXel>@&#^i`xx>8E%^YK%4GzAvCys|t@J0UT2>fQfU-*e*fC?UymKjt z2ZMCD`qI&O00iWVC41zPw8&(BPN|k@q+feqN;m~LhUJld09d|k87{r#QXD+^ zPaOWw>%xxDS)tdDs>AA4H(>F?1z=3x5{!M{STr{^VacLJcwxs*tlzLvSPRJH`>7Oc z7fB?aJNcMzOA*9IwW+t=KRnKNc! zXm}Xiy}Qxf+ly1D-T?qioY05`^XFs174vY_;zej`YV!B@;r|Qd6AzKkK+eRWOa~Q9 zf2y03jN;!71WG0S0I=ffPSn@eWAFZ#aQxUYH>0;tCw%e~t1zRz9sT{M@#`mki#LxS z^&Jrr&Ye4tH;$~suI_GpVa?|-b4I(c9+3YP$(LlG5F+2n4-jKP8!C>WOy* z-R;{I^X7sG*xA*MV{aW-*JTd8fDR`dJ$4*By1KzRf%AZ9CdK_JL_WEHLUkzxp`zOx z-Psd<5|G#dDB-`TIyt}8R{C3-n=$L7AHmSz0Jc8=Jc6xSuy=2tJ`F@1d-m^(C*Ng| z0PNeh-P8-cTkWp5E;ggZvYYD#L1I_rAviCJ|l0}Pk8IZi9r5E@?A3$$tTj1PpaaRt0Zwd z18rK=%}57xae#uQ|ABAZC*?nW;sn+{@gxQY2DF{z18r@XF})oF?+sx4_AY^ZVT1y} zFhKR9ZLm1>Dj|~ZnFiZHk$eh~uakXZ%01xnQ4wQa{2(%1^i5dNxeNqgM|Tg-yn7DNkq^Q<{r!%=Nlnm_4;CW7xw*-&he*CE`w)l@ zTv9Cg@X1#sA|?)yV+mk34p5}@|KLYI_UG8f#>?=fHMgOC+H_oh%{6%Tx#y&EKR9Iy zrcIrS^XK2g_8q(6vVwpu#}5(VP+uP=O`3>~*|YHG(PJU<9jOn<2Y@-3&km*lVXH?X z`2x`*`RWaFyNz?rBcGJqachB`Q$X>HKvS!J=88BG-Z|Be-~aJx3=R!p-kc6BTrgj< zU9qeaM1<`-cjCSOotHhoH?`QZJ;}4 zi{wky7E*%t0^~3JT=M)cm`e6ijqPri+=?jA74@Y$PgL~Bb+aGtM_-`3KK zTWsBRYb79+Vn-I4SZzCHy47$QqzX>6h{;DFg(%KKdK&Wt*!X@$F9d0KYts>HH^cdzP>;KM7j1Cf?@K-ss{vz$(L%YP6Zm|{+uged<&+Ue*Z4fd2k|9D40F?Af=^jTbQVzPKkO`(g#f8tcgynoBa#&Q_8uexmMI zQigaKe>bpL>6h(1@`i>up8oTC+;a1c7*$_~mku025LXMxmmczPCT@TO!DC#6lP6AM z^VY2Zgz&BuxN+FquyLat+xMpfnSAdbzht4ah~x*gjUYc}8<+>i-VFo{NWZ2&4lx`9 zg9CVa{W?sVFu^@?PbQx@N#u(WIx)Pfk{>$Q(UH%5m-3wN{$G@RiG1DNh~psVVNvn# z1ynKCFWE7|nbT)*=JeSR`EG{5la72qOMXyt^udmvd`c#tB%SipqS~8xwCiBzc>tJ| z{@~9jJDL0-8wFv0g?xWB#+~Yg6aoJG0V??++4nk$LcV0HBR?((B-Ah~j6?!WNdH}T z+);T&YKVt_@`ymb(-yACJ`h^x%Sff1S!?LP?7M*lO24Uh_)H;|d@oHjNF)84dtiPM zSYZ*Sr2l8Xc+{6wA_7z9b^ zYF{BgQRdaO$N^BoDL`wUbJb7Y;*FSD@_`8Qy=A>zM{R^z*c~{_0aCN3z6XgY2$8Ql)zh{^K?0e1N4pNy|N8j60UvEnz3i*x z1IfDyk$hG50fA_bd?`#EL4Jk%`$`5+UVe-yfGOz@+Xk;#`GOuN`^50e#~xFj&u0J^ zV(rk$mx?Oy@;S_2mpE-*}IF z3X`vseK$ZDG$VAX7vB!af86Da*V4e~VNjf(?9#9IMdW-YPbB$JU(0g0dL*X1Cvj?# z9?>HCpk(rkl>R6l$~Xm>mwwgEN%b~}fb$Czn3EsTjv(J=X2D7TZ?_ z>GxpdlR{J3=9K=xjViRxwoN6URPuo^`CQ$qk^c`N)K3EPNj=qzZ--F%xT~q|efg&V zgVL`9C-1edAjqR5KTw2#dAz^oP@k#67wk+Yga1M(O-B0)>1RiKluo?T{)LcR4Ce z+eu(+72H#-Q_?{;s7S4-z!V?9#AKcPZT0wC;QHfAdv4Z1f%L4 zg(9UtrOzZ7|K7k_NWa#K2*KyU3BHvGpOglGI3<%`6X`DoX1+PpvrXx=YG2ht0CPT- z$w`ho&j<9cYo#nNl(zus*WVLOVg)e&YFJIBKU{{h{ikH|-5w*YAkvI#9SV^CXb&Y@ z1WI}eJ56}}ERfg7o#O0{8iWY*Vr+^Cmms$F?*#Q4lb9X@?`z@*T zr?`{~=D#)$D4Fz!^Ek7BLw>C6$CRh@FQpYN{RN@;Dd2*V{;&-pOjfg3 z2-2_S%OvwvlzzQRMj59=RlYDH__JKnAL}b+c{=}6T0znuvkHj3k_P6!Gw1@5eywfH zs6OzaFXQbAb0YnyShD>tsf>pn{4Q2>E=_H}c=>gqdWp!pLa5$%23>5@Um>#0?vlj? z6$iN3r9Ue&_)0NEved*!@r%HVRQih<{aGEv)IX2IygMEHnvcaZRB4AV0KC0398d>i?A9N198NHYpH@vJN!&y&D*e_jjWU z4i1*P=i?RNg71?tHauGSH2L=WsYL z5RJC3sJ4R>i7sOOL>E%U$)Zl1FSVJnLnv>ClW_UFi*Vu!&L};(h6^gnWuU_1f|=n4 z#5R2Fcq5}8rnb9+FL4jO``$ft@Y%Dx+PyUAL+_yp$HQkwd7BfbHxGr{{vY{H&-g|0 z{rg=$9rw=AHyg>i+q%gIL*d)=XJUh|F+Boe<2Txd{%n$Uiym_`JPJ&3v!Mt~vv+GG z?5!D1J^1)tH%^qSdu5oY2iS9Y(XJXlm))x`^Vq~G!HocVOW|^DXDOtoQ@DBM7q>CP zA)=_^;c1H%^uCUOmbqX0Oq5ZI*)NoOWRd;Y&*1h-O!nBgT^48RSVGYDzlc5iMgm#m zv0@uz&f}G&(vn4Ed0p1dNd9D;indJW?K8|(v)2MOGTCFtk7F9R3i;_K6w0_pW=%03a65rw8aFf5BTO zVzbvc%Dq#7h;Zcup#LwFOhvco<$HZRPVnI%4JNSUSdv%%y$AB`A3By5!2AnMrr@$K zY_m%$J2we}ps|g|R+;I*5>ho5dF+6n$-Y@%U;wc2>A3}9{4!}?IQ`jf*V+KEQrBqg z)IGwAzP2ljcY&KWaXO4xW1Q3}#C*n{(1 zd;b?zv}yn#t#qMd|DX%=TTc!kf}p?|UL-*5AD2ec#8`)&?{9t(uJN-OAR~8IoiOyo zLM*y(r-sl56d4grogQ{jxyZKPV^#qg8Am&vfqz+|C{n zXwF~BT%dnapn>Bz(5Q7r=sy>@!l+6Bh)23axqKqkni`81i%y*epkKUfmD)y}N6;>Z z4H_NvDM@&5!lmm;rJ(vW5?CcqIt zd*b5<%AK4`Z9Q*lMK#KVz|H$qgBJj2M~>(Am^K;saIkgN^BVNJ0L3Vo0W|X#uVs7Z z4w$3Ui^(@e@k4_7W1y#Dv-*o?(3?kQ=^XIr%a=2Tch{~$Vd0_6L#hvd`Sm(zUd^8_ zYf;@S=zVqi*Cowq;UuJCDtP(;L&v|{n_CP_%y-Tx3vH>*gQzqB0c~uTLPy4Ck{1^6 z-qS4%r>DW94$fDa-^5GK%_NEh%qlf8Cwprw^0HgMe<)gVd-Y9^)iMv!J`OiDRiz8? zdY=kltr2GP@CM~-hA8ES{FCD1K3G2o(${DKIfbUM`CS;eL$ndlI&-} zMr&4BZ1hx?96wd2BXu@xYi>i!q4CmMcB|xKAFnPzZ3jb8$p#MQU1Pf~bB77m5g&Gl zFH>66zi=T92NxwBN+S_Of{{vzzrb>O;zeS#A$mV7Nq_7e)JU?_lR}2xoXLwZg3>it zhcM8+Xg!y^aI!$Sfhc&QMu91GS3AwwX}%8xm6$w>@o$7M9BwRhe}1m|U{BR&w#8*a zRBtF?XmPtoxQirhRkQx#@&kRC?qWk2BlY_LT)+i-=5)#fAJ&rDH5bEXc6d-dc|djw zzQV#b%|KUf?a5lcqM{-!mOgevf{gF~aWh-{mGQT(tUB*@>KFIw^$&;topy5!WUFu( z^U4AO41Qs;?PMJyq3;@055(TtE81`};~}MQK!c~OR zt>Av(9rz$nRUo)uECw3o*UJlsY(A2I2!@vEu&|%7rR?$O;WNQ|S2uZfb?6f%qx*#; zcxvws#-d_pMb?AB`H|Rnr2b#_^9)HWrLCGt^-;TbaI(jR$1tkqJTDW|#zK~F^V72? zhUx?-?vPP&V&9uuwC+*uG$%3fFlDCsoe~j#Q;ias_b$Ort)Ti>)PI-dUIUf7t7{JB zk@^jRM@qMH)z{S*DS$_i+1oGdUc5@9ZVyJZ2wi&cv4qb6BDYh&KFfmvXc)-6I`-oHoc|NZ{)160BcPE1t% zo^D8vN$@*Zv--8V`Zx#I!JOi~6MoQThC@K&t^GW=GGlUaqDKL#pU_=VN+s6GWvbV0 zbknR)q%Hrjr=v34K*iv3opYfCmY?$BDe^;k7iS()V6d$4pF@t-{aS1V?!M4<$^|-H zMbY1XizxSGlrXjTDLwtsE+*Tz83HG*r6^WYz`ZF;XI^vjUz)8v)B@6eX@BB$m5=6> z&rYkWQ*jKL&x^GC5PGeSv%>Oq=knk!4cmyfY0RSa;+rK3A3G1; zr6ebRZ;jmdvTN}dUmM*X85@hu|2ZC=u(dK(<+r_fT@?G2!wPZ3!?)m(zj0D7Zmv^K zAK~n0Rk%}QgFd5cd((Vru*HQeOr2>_$Z~BjL<&2XNyMp(D!r_?F^1mOOgw*{le6`W zv;Jjmk(kr!QAFrIBHVpZ-O?=<;Sr*Va{xt~Go~7JsCSpUZ9h z`zg&)H!MuUA#BC%eKflgARo5 ze$IVbY|L9&+$iu-Ozb-)CI)wMc+wa!GBUN0?r4C3MPRoTGh=Zx*2&r2?l{SjoOv(N z51M47PvKD%>1c<>Eh)y2amHEI>%khPuWWzie2aTEf9#cMB<}duw&^a1?VbKIOWC#4 zzjQH_o!>d9d@ZVxfUo6oufmw*s6zEhSnfw)X}r0wyiAgljh?VHvbb>m6{926i_OO>bW;tv)|2c$BcU6?60uzr-|A_iE-zsZ|v{ z_d=3OkKgL}D=unGe=?};^PPylC%Z+o93KwY%7m?%HMu2qQ2d!r#VtE%h~qq%J9VaM zi9BOr(O2}J=;`b$@H2>@fXfN;Jf#;&FJGW!@;aZ%<$cLSO7Tal)vH`M*@mVHYg~YJ z^lkW5M*NYYYpcDjlk$Un7iVa=y?u7Og95hYGH2C~wGY$o_$15EeVS4XugGM>#!rt6`Jj$<&h*z6ykyhsP`@6%riGU;em3mBf>6*4d|tnRb%KlwS-+BO^A6vHfxYVHby zQR$pK%3{t#j_)`B+v)$6qYhae*Gi(jM~h?6t~NY46-3;)kxgrHjskw-w_l<>Jagz^ z9ZxeP6g8D%NVBtB;yO?FmeX46q13-;H+JOPxiQ6)OJat()RKxBl}dmO=EXpLL=8WG z`B%hT$YK4%Q(uR!F)8!v#(F+F1tq0qhA2(Rv4y1!1!_#>=FIP&sMc*>mA%)7hdXW_ zUeZgSAhUGuZ_HNWo>ZT=(F>jIDbzJrPo>@>>lAGyrSLrTHQS-}_@+~a-MrAGse?yn!alL}eqA`h=WJbgDYJZ{NEC#1b2z{Jda+4#q|rU_%2L!$Wu zDMcETdCzZaUl3N0?GbT&(#0lX;O@?x^Zbrq)Rwl-+{VXeR~;88sTqGCY-zKw^T|gr z&^1If4UuFZ)LyT-C*t{d9jcxS!kyg^gh3^=rpo+KHH=wzR8$!~@Fyc}R$b{k{eC{s znVYJ+tP^^~TxM$_^lz`)Mch?ab`%Erj!L*x?}OhwJDqHbidu$g(WyqR0aHaZ7DUn* zmxr{#hKPq>(Yob1FR>rdqC1&wNVR%5Anb{8mi*F(ye0)Ve~Fe?I4Cg@PVv`b#E1{@ z&$@J&j2g1bIkuzq=@>Dn$by!CGgl=@C_GlJN{`Z~wt9imP^CcDMEZaw<4zTTx!M6w z_!{!#wzWHr^{F$s`>ZRbk^ z_5kq}*XSc9nPnhl>!*Vef`v~GiTE9gAY|f{ju@0NE0$u{i6JYI=@xn+vanQf{m4s} zj1<{u&YK0PlVhpx ztC!wYdMwC)HB0Byn`K1;GSyC`nRlf^7!*ze>8tJoW$%LHI#w#Iwtw7dWopgS2V?2! zvFWbWFEiWJNro45rdySB%$2S%g93dsk{MJ#ec_`1WfM7}l-mGq+@DC>qbPt5vH6TG zO%WQ_)a7r9SUw&Wx!40n(9l@|mu;bdZPB2(a^|)8@N{8*BzgHhTcD`Jtj+67a0^Mq z(Jl^^j!gAFgb??NXDF#Q-+Ox#wE7o0ud$>AkBV_Eh{Fd*i2cK!q%{NNRL|veUb9I#QQezPms6{9^ z`$cNWkjX{L5yok9F29=l5%HpA2gMmaXSIuV^G!^MN=$n7h;|0uVi)H)q_0H<&y3<7 z>$C8dMn{{*0qxSaCZ6+FWz)0X;#|ZG@AgYZOlVq}PwjlHb{{fyx@hE}?C;z4@V@m| zGc{^LCS_;;mP>lR=kKJ-N=p#W`VOhXbWlP!L(S-g{~FR_emp>&Ru%vnSR#v9W|S`s zoPFm;!XZE_=hAm*aop>W^!#pSGf(cd*2vFXN-b8|t-vR<#MOLVG$HX_>{phS==U0! zjEugb7{|rV_jJw^=11rieS@$5i!Y6#hCcIF*`>g~h%ht5x;+#MF<}yq)Bi^yzAE)c zL*DJ7EXg=P(V(a8o-qMR`|i=c;|(*B+7?@K$zk$_dWabKkyHy8dgbu9j*v0pr-gme zo+k;p?Uc**c`Ph(9%L`3L`FW70K_WtWyp^*MA?}VaJ0G$s$!!U{&#QRG8>*^R!IEiC z2Z>lTCXNR4iXiIS<=ZF(r5Y{&6xe+Q8FU$Sxa|eI4 z>%-SB1}PBg{3O!6k8_cZc3uy3wmi6A$aW>Vy>89XfgK;N1-YR~)u&GqBYA6)yjMzx zuUpvgg0ofjls1VFDbe14CW$&d)_}+MVgUZywp@r@%Ql$5Gd>@qrT<9;Dggm=q2kox zrlF0JbH#Gk-v#THJ}@tp1WW!VM`^B{h~A;_S>Il<*X$4TuhBpIEB&9Ag(BQ^k2naG zuD4f5Wgu-D*9$_ZEVSy@NBqz)=c1zDsy& zod9jcpR)Ng$K&*_J7bFf7}LW|D~Yu{oGDiU;y__w{`O3=`J_DYT5O+e%Q zt%mG7SyS2`G(PD2l|Z4FdgFfy$a{{itJFl9==2FaL)QJ*#rZtM?r%&}YUV;7cA(7Z zZq&08(0zVc5+ri$XQA8Q)Z=|wA$xoCxGHPVp_Qe>E8B(#O9pGqxg8r674_czcCXhq zkByy7B=odf@;@+U-F-cAxbU4ScK(Q5s9i80byOPFIVzrX@u)F$U9j%#Z|T$NDrTv> zb6$onMlUFuD{$AFONipD_9DNVTY$%6F!L|S3PDH1F(h*DL0x``kd*;+B@~DGnMb6Yzt9s6Dmv0}IMWenZ z>t*r@5=qsN|OkTv#xmrk!f^0(j?|RNyskR2N>}te&R%oVf zX_OXURe&dG^xnnj=a28d(=dI|aI2fxcSF4(cI>Am&yl-lq#N_yKofMuyS)SppS#)8 zdH2SWY%Tc(ldtWyUVL97PGMT&3{@N(VC7JX{vTD0uC5w3IcDF(!)T5|r&2F4=a`jR z7ZJy_bm9Fm>$QR$ljCQ2GQGE4a*zo7|0Ap^=gcfOGXw4bi90mnoeqP#rT<#bDdztG Dfzws@ literal 0 HcmV?d00001 diff --git a/icons/16-apps-cantor.png b/icons/16-apps-cantor.png new file mode 100644 index 0000000000000000000000000000000000000000..f0ea24ab9f0b7b1b45c5f7e274c06d41971d83c2 GIT binary patch literal 446 zcmV;v0YUzWP)E?QPNr1+8H6ZkC0!`Mo?mBB?uN;??WE%*+httO%?RCbLY<7Vc@@!S;cz2z8FQ( zGmsW(;#mfzQt1ph%(CosT3uB`p@FKdh7iimxs4)?F-E3FXf~TAYwZKjPSbRl=Xpm& zT0j7qrIOi%rc~Tpz>NS9f>}Of_QmfS#MC8DG zzc$vioO6}oaQFt$Xf(FG_pd(&k%;twcklfig*XwdfDmJEE%LPbbcuZ(pc&q2xH*e*gdg07*qoM6N<$g3!Xdwg3PC literal 0 HcmV?d00001 diff --git a/icons/22-apps-cantor.png b/icons/22-apps-cantor.png new file mode 100644 index 0000000000000000000000000000000000000000..e52725c9fedc6fa1e7b15293112c3c882eba3cfe GIT binary patch literal 469 zcmV;`0V@89P) zD;tsgf|LO(D}_|IYnuEAL5o;fh!!br)9j8-E+m>W7ZgFrSI)k9`*;kn;NL=7g(9-6 zs@?B2*4mL@E{kcYRLZGplZa}@7&A@7%$hai2oX7B=DT@zW>&$>%K&;o5R~)z{PSQi zXaG0_psIR9MCaobBm@~gZveQBMjRquT(voQcT=S~6asOm|(-FC^mP$*mg=&9-h z5#6imW14X)BC$!>L@100000 LNkvXXu0mjf*P6lC literal 0 HcmV?d00001 diff --git a/icons/310-apps-cantor.png b/icons/310-apps-cantor.png new file mode 100644 index 0000000000000000000000000000000000000000..e001caffab2dc7328b211a742647ef86a2349034 GIT binary patch literal 13075 zcmbt*Wmr^SyEg_U(l8)OOGt{+2nY@!&Cm=W(lB(VfCEYi2uP=cz|c8#NOun%15(l@ zUGMh)oOsUp@P0X5vu7^$%wFqW_qzN3txz=;Il>1t53sPX2<6{`)v>Vd2>!kBaDY2o z4NZB#$9)%Rc}+av&lk@u1o$7{@vWW<78c{Dzt^4eyd??X<|9`bT~`eU3s(N z;(f(pWVW?6HGSB5qHOQXS**Z8{D|)GYxS#D7OlL79~^nktM3v_jW9Mwvn^A1AAS8A zMBV@X1zz8SuTJ9 z5B`6Bh43*rCv8u4-tK3G$k-UHJ;h`4)orgD@c-j~HKo;bM<*1E!DNI6=ZYXf1Rsu< z5h8=Ns5Et9z`}$F-^b3SeQY8uSbbmW&;5Qo(cD&0eQ_j1NcvBd^H)k1JSO3{Q+RMZ zA~HcZ13WM&f+1v)!I&Aiow`eDj`h=Oh+T@LszzMpi|GIU!M{D%wj;mae=TBkUn(eS z%f_;XQn1~AjP(8pbB$eScNp1y(kGE(f*ubEjXHBP42PSoSay$7OtT)nI{Ce;ur-*X zX>q)LWE|x7XuiZ}37(fI>Qp*wZgrqNC2_rdSA|}DYUc$WynBhE9;eSfaeU`R<-Z7j zVkAX1D7vyMG;?2yqGfRx?YQPy&F*GW_${K zcOMu3u@p(m(#_|d;(f2ar&1)`S99%aH;%+Q^+ZY@%=8kHkJvtU>9bbrM#?jyesi6& zrmYR>d7iuI_P-;^Z_-Sy9({BVhyH71Lf%sF(2d!hdeZ(83`=BV6XCTtvuzL7DKP83N%lYA8hWC$k;ixM;HA*M zb9EOy*4*AsUFz!{yXRK3)5QOVYdPiZ9-cmNA;}Cyd~KSpT8j5(Wv1XU+FHtPvuuIL zGOmFQOo&{1Q1?z6RLMV~CvGOyaTd_@bUbz6JGq?$mH$uHSw$-WV??k zi^kp|G15+_L$*C8fUdXvHdU%=o%pvQfN9^52xLaSB=(*1dHp{q>01w|Kb}7@f0Fhf zMHQwBs(jjs>(kZPkg!I$`Jg#`UfcY%}O!AU?)tVICrLFKr=ig|@k#oS)zpFP)w8==o(TV$qWjb!o zH0ZJsF=)@V$w90)9OK;-1tW~L+Tl|g98Sow_0B^FyCgpB}- zALUjgRLK6n1_D?Ptp8|EQ!ZN+UY$w!bJ>SZvwQr1EWv(r!?9hL#J&rsJd<|(4M_6~ z@o&X)&f0pgX95lz!Hk!EewI3|a&;yxx0|ZK$gE&4?DQ?LEfFkBLQD-3Xr4plue|joGMgp=-@0JS5QOH<ZE&5+K8O!2PF zGA#0O9SSr6eyjGMa#Xx>a=)5ZUnrhRZ+P$@9{lzq*gRMW%oG*O{faFxSkxYiT@;V; zA=s20Xy&ikNHvp+aJE_Qfoo@l&KFoK$a(!9T_iJ;66;oW)6CCW=eD|M)le!D%!PEa zXG!O>LS30jr7azZ6F<4e?}pQ?PILm}$?ne=^fltzW15@S!|DRK*vFSjiOMtUt|AYG z7rJG&`9J;l<4wB50g(;_r=yGiJu`0Iq^+)8)@ENUnFSzv-!>g}5CPq~RaUmi0cCYk?VSiqq=F6)&HEg}&p2O&%DbpHM%QH2D z+e85hAMR^RdQXML{MXtuxU6=BF`P33%nBehd$l02C;{(GpYfc4YC?Sm+Q)io`EACu zW>P7t)U6ix^wgH;6#mX}-UE+(B!&MN5ZSqzztsHxxQoj3^clK0i<1GY7=i*;TvapI zy9V;-CEWG)ivF(|B{c~)ONu`k%k;q4*8jyYV%HMoEQDa39AQM zJb}Nb9xxKXQuRXt`Q-K|=eA-6K*ACL5YV?y{nei`)>mL5Y3tvKz zYwx#bo||Hr&NHWFE;+$K$>wHqxhUGcy3QPZHKR|x@uh%DsVz_S9#e-cUbxu=QldZ) zLlEA)ldFnC7>3rZDKbE2nIa(>-to$5LuiRo0it+?k+6C8c5_j%sIV*Zhrrkuu1 zBOh0B99&#(Il-@H=Q5CQuefxfQhI7@yL}S}2}aa^x9dM9N)@Rn+uW^>+qd+;eMLko zQ8+Y|>C3y>#F_-vv{pX1>a>{cZJ%~%TxI2Iy74ydUsYt5&c`DqncmK1=NO2!Z~A!O zqZpuDa?^7=T5fof>Z4JsTqIpbj!qRjr?_I2KNqDyF|)#F1``%jesfDHu1iw$GH=Me z02U#xPAwM;g<2*at*z6L)ewCK5PDpfZc?J;{2%(}6nvFIt}P8-HAj)F3Ky7bV^cSX z;*Cx?(tHT^LS~No`^_K!=syNQAyn0wT*%w|D4lOyR;S$TSiZ{zTd}gA&2LX=g+rQs z_rFtQd?_VGB|Zv=`k6E$Q43kMNEEIDqEr00m46=ZylChMjFZa)?|2YXZUQ8jOSJ6eU5itDCn%`;znXf^v{anB8gfL$|O&U(#RK5)8 zc=*_8?kV_%A|(9d1(+~84cSp>3JHhaJoymfjFD>TS655mwo;xpAnPBzN8SyGqD>j$ zqyfiU%?MW;hvxcwfE@HOt?uZ`B3RF{EKe#>OPu~+l=>ad56vGE8<8PQKyOF|vg_XB zZM^x`P*B-~<9?J*UR)ZDO`)&x5TVcCR^eWnsJZVOKd6GLe;PIHzcvrQ3yZn@UdQCWN`#&rQc#z!r#vDmaP z31}Ew0nLiD-x;W0=*%0-EoWayObSU(9m+!EgqoCv=1|%Jk-z zl4E>`%opGbq1?OVrOnH9-sZ%)(f#|*xlDj zyRM`{RT(6P(vYiD%&KZxWb?J^uXvZefRI=1$!PaA*%QEYLNgG*cd}c=dS(9Z7dv%Z z<7r`gVbU-8r34Cm+UOqN1Zo4W2ZGRIGoViK7gq z323^J;LKU5cX?7_!JUND2nnLD1*Lpx69}veK-1I`b#fSk0FtRT!Sd-YChGQh`8IYuHY|BReN|56M8oh4 z4TKy%6AF<3nyYCWuzb&3Nd?O@O`%=arwifFG*}7x&RaXer^^*jNE9|)swgG%%X4XI^abIQms*WTb3rRfw&?YOO}ipZFSi_i6?rUl#Bu7xe0<0? zy8eES_o_CdOhSQDptBOu>1rCZt0;Q)sZ9HQd!;{_KVVdVR3rDDt1UL13u*kyG*Q_2 zE?vW|pLsgBezozL`lT@MV~8mh4ld6AejxGUcYy-F=fYnHEc>p!Tn<*Mn?r-?p@A5O zsgP5Tok4JsKw05yB?^JgO;Uj+w=`rnuWSet4(QTaYW`tif}^M);0i&@aoAj=cc8+)ogH$8zkVSl=5^<$`FAQu>!mo%yUU z^OfeDvT|~Fejsu%kw0cs7pwFgT23>($pY`)`y^mk<9Wx(*9l}fl-{=A&7zdV|41WO zrKSJT%LjW!j+b`TCN~YWXR{eMPnek#_-Rwl3aV5`Lur;Vs-g%3bP!7xxxlU>V;EDr zxqogkR81$td~Eq$|NhD7qA9kXTHD#v(?H_FmKvw!pjVa>w|5<@F5f&6aTXT&gdgf=J0kf!;BiwWb@hTX!LDx8!{x3hox}d5 zm$~m0FB$7cXZbl_`kGFP{-8v?RLbVr8_wM$ed@ zF>i7V-vjZpP#ZH7K>cZnCC{)faB+gnKm1yeZ>TVpD<~jwrV5|gp03z$-1EbQ7-bw* zUpfxSopl*qv(A!^&<#*PV%J6emzdIL_wO$FUfNw9(MtqQS6C3#vMHq|V#?(8Tx7UG z%*ry{`Y*f?tOHN`$?lMbx7S+nTJeZGDZ~Ln_W3}5ce=uIshHBElFsG!-OQf{e3TvOr8Cg6Q_Z7Qk4g{%e5pY#GUBmN zNHD!Y){3a(BE!x8l`I~9O`RP$BE!kml|u4*8ne7jWvN(Kbyb;!EISb^Cl$bPxx{}~ zz5Db^TaxP8kj(}kLGmxnDUBbxORV3RzU@-TebpCC)XI#ID!-{S zs@(O2u*0|+0}Y5qGkeX;2Urc2UW$XBlv3yzQ4>YTn0rcXaJwT_WXGuYOGl9$ zx0OO-YtF~NhBCot>3Gugp!E~1`lL6$9Ug`s29CH>V|>8GGMOHA%IfpFASBt|D-6*& zOty0LW?g_bMYz%wLcS(Mf;y4jdy6iw#L+2mwU$Z=&^K1xvswCO1f*eZCQ^6aU)P}& zwu5~nTEDl+eYZP^l1?uS z3Nm>w8NTg)c|cwJKxa!d@W{vG^LQEd`)l94k=&u`;0SrK@`p0Y(X)3ilWv-I z(bS%hSd4?1v^cYL2Cwgv3@?(l3+j|)r_rM0MC=FzyU5cwU*>CVgd#J9tyy3VuLlwZ zmGR8KEX@t89l|a}Tp$`chfI)rrf1tL)^3btVTkzE=M(}HRV=$;?g1X?cF~9xpVb9MoHjxT7nX zzE#o)ijq7@Of`7yvw8ILY_-Hcyf1-QEHA61gxF@X5aPT&bwD@hd*fB5`~&T0;kK_D zroGV{*VkIG({}^}Gt22b6sSMdcp=NWh7zO8e-`d>RZ}z~@nf`1BnkZDhVd*yktiYi znGZxTgYeGO=RwMWvGzrZAlLVfSYwt-LcL-iIv@IOJvQnp$+%7%#}z5j*Ke|YWHFfh z4DEA%NNMZkRv(8%U49m1W@b)&ZY+J`dAK4!-9b?Vj+m4qhnRBJ!*_!Ymfch;uj?a_ zd{dz`{uQ7EL}xRJ%#Ix7sqK+Xa9wGp-?IDq9ha*iE0u6b^;j-;)6U!Y1y^!9zxNRk z`|otms+#?=h>M$ydTuAg_7=BmUEC2l&rGeX-geJoCIR0vse~@CBb13y6|-4Wx^@m4 zzLy-Dyvwu816FRlDkUilfhOzwOvyd%5dBtaU%2-<2&IE&F4apdRMkn2Vj8vDpuBazVEFWLzJqBbDoC7pLRL zTV+;D(iPr6M1dr+>|((uF4f^?gWEtj!`_jXN?@KAJmw@9MW=Cysa%nz4yT#ntc^y7 zic>RzYrJ~M2A1eb$pv@{qLEItIZbP>A=yAELlFkOh@}+x*aB(GZZYKMxO}Ao9uV{= z^pQHN@So%lB=BlhlO`yvTck7>f zm3tP{hqtwP0#W)lSh;83&v!po^&6iM#+CWq*|MSQ5IS&>2X| z0`UyRo|?p}lIuVD~4>v~v1D{PKmhgN?$IU6&`O zZJktcyQXtB2WJbhsvJyO?Li0RfM-%*nY1Zs{#7s>?L$;PE zYR(ZqU&Zh7g!gY^cR2LJR2!4){^Lv8LTRBko} z+Qsc)dj}S*R7rn2fA7no-Z?Ksjs>L*p%pFc;HG$9VPyt)!ts=CI0UL*Rfcr(xjV+E zGf?}W@2E;DIgCaqB^t>$aw9^HvQ7PCn~r4ZnZZ4nDdAOa!*Kqd;a92U)eT9uyP@Gi zf(Clq96os+tSX=VUT##NDt~|D>w8pI66)bUisthged>F@D;9S!`_AWHRu=QGei=mk zm|-t%tG+{X1YimXT$ED;32n47Y&`e}SVEi-8%f)UjlHclQ=<<*DAOuFsQant9?8*GEKUL5LmI&j=hWqg2|~$WwQYByCLn14V~gJzDDU z0*~)Vr=co`fQPRxx^*0{-6l5{0zNxKG(4VbmS)J?O9&fID$6L(ebJfnsbXR}9z0f{ zCCoi&UHhSb)C*tBv=xHAd?6ZUbhB11?6X@q8d?agCF@Jz9$QNnbmP$GGAjNuUH(DL zLqIL}O_n+?9gn^yfGD;HQ=!IB=fmrF4Ip)L zdU?sAM$Fm>P{DFLBW+mn+HAHOIl@J2{`hja$!yeOGGNS5uvbrY@7}LQA=M0#z_j|C81ad48XbRaxmslQL!&31F8-eH z$^z~M2A;KysV+5XomK|1RBw%hL${29((u7RiR5P#u{cBX$0rZK+(lz3knhSpD>lH~gXE}4 z$;q4Iy@+bWgYSB3hQ8mZhDtp!cN)IUMFrdn`CWOwI&SxPZmquc{OkBBreIEGZ_1Kw zza>2is_`u(xtN!a62)&a7SBCZyTv;bbv7V`38KF)Xl}`hl7JVKq?d%jpFe8*`4h{& z;Q;5=(I1b4K+E*bxmuU;hA&Im$|*-WYp~*@~$ezAB5aj4_HSTZG zrUy9!-=S)TyCG6@i)~+vY5o>JUgoHF&3hD+94ci9QmXoGIW<(CQ*s$P$EvSS6qVfl zk_4pr=HL7MHWx@u9}bB(-^oglD>XTHX31~nZ8h}Z>iT;P4|{EkmD01Rq_>|FP&uyl zQa&UiGMV}IO!v9J1c=)pq{Wpj#Nynj)){+99H`&X35U4Z(8u%|dqYh7uY?6u&=eJV z9e%xga>H+4LR{=5u?@1_4BnOMoU&(IgEXm9LR0Es4OhL|N*NNgLcZ2z`&V#mg8l2< zjJvVut^H``sd|6^+Ux$!=TxYZ*E|5d>^HPSMJHUa)vveN>fb`Ti#OhouWRLQKA%{4(!x z;%?6?zbj$CLx2B|`VNhcPB9eJeA zt5qmyN24$EoTl(4|1T6+rLk|K2si~=dW-Bt+ zJohEFRLSTJ)yRGR>Q!MGAnyqcTHRBaeJqs#+rPh#7EcD`0}xXa})uXd)~#00ah2n1bI14 zexl`;>BcNm3^VP&ozSt$rN$xi1i1=b&R7f(3H3O`S9X<$FW*-5@YD5-; zBYb+^qN$l7eT+bB){Y~bVpx|TUq&<};XCTowTndF+uaI+wX3xdyVvE(u6_6^~2XYshH=}l!Nhhyn1T1kaAeIA(bih zBifF7v4uBz!g^se%O#Tz46xn@2JaxQ^v^sT_A6=s8pZ&diR=7$t;AMJ zg8Czshm4yZO5Jhn^m+DLXH>^#-1E-rA<1`g&bTDX??g z`v4q~6bALdc?nUB(yO2l&}N0T@<$s)Jdc!GAW8u1hd_5HRVhApGN~dL*IRhY($vz zcfbcTgoufY^h}eAm^PAauX`p5pO+R=mQPAINk5f5CRp!KPH|fK4e`0eM+SE~z6@3U zEi>@wj@~duZtGgduY>LjHySa&Ibj1gt(J%n_zu*PeyJ8>2BX11rdoVFFr70YKmb#J zli)O0=5}uP*-Yxgbvwyj+EAL?*Mn`bVKf@VKMvdA7xmFaY=u@DTvlI@FgIy%+CoVxU%gG

      @EnRPxjZgE{FrSY=;i4{?4lIu!87c; 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 SR}?tFf+a7b0xp(*5C4DbK~aDJ literal 0 HcmV?d00001 diff --git a/icons/32-apps-cantor.png b/icons/32-apps-cantor.png new file mode 100644 index 0000000000000000000000000000000000000000..13a3eee78d910ef7a18fd9bdb6e9680de3b315ae GIT binary patch literal 977 zcmV;?11|iDP)uee`mCkPN_;%f(5DCND&*4ibq@O(WDY< zB+@2W)SE79$)ZKWh9*iZ#imh@h+w8PgoM&s2@)aNO3g?l;xThRi@EnY=gyrO743$T z+~nlkd%yqx{LXj2b1(esO}U+c8+&9dg{Q4MsQ~ia0j>2|>U+&IAd&)b|IzbN6|7iP z9&ErQaPj3#5J4Pc?uF5J?^$E+bH4Z7=XNamoJQI(V5fj7jvLgtFvZ<5_g$Yb#(lqz zu>{%*fM3`gGlcP*kt`GO>EtHh6Hc3L0QyV>GU;R_@Hf$qoWO6O4~0VP-`z-YQIWyS z?uEl)cJA71QOH8T4v-7|vWg`P4Gqz9ybVDGWWDCpiB>zFPsc~VK$8P~K{(9vilwx7 zTp%p4s&g0%bhKGl#sjgy5 z$rRc<&LaXFYd4TcBtZlvzDf9W074!C(P%e84AJI82RPhxklC|lfe2GeN|-aJj60Di zh+qyHn%1TSAu3W|IH*Z*7RY@e; z&DU?=0U?>xXsuBqXeA`IkVqsDbV^j)^hQL$rSRg_D`N3Do9gNqpP$c@XZ#<2Ya-)qT(kbC_=00000NkvXXu0mjfL+rdy literal 0 HcmV?d00001 diff --git a/icons/44-apps-cantor.png b/icons/44-apps-cantor.png new file mode 100644 index 0000000000000000000000000000000000000000..312fac06b55d18c5d8bc2ea1fd9233a0386da090 GIT binary patch literal 1596 zcmV-C2E+M@P)DP6;&9ApEE7J7h1fuv?T-u+Dc*s5#k34B-Ij? zC{Ys@B+A-_8)N({jB%mvT)QA@T$o5OSUwtvTY(r&vn(!ANw{5vFwO?>;B^ zyJdKQUE@Olw3P)I*F_v}ptxA2ueC_cjXi+mU6c3e(kvH9`m}*Q&HN2v=h&dv(RMAs zM3NAMn%m0{bB{-TA|QTd{9{L7Vm#;z=3D#B_5I_qXUnKQyF}x_+8%QhNF1i4FA1BN zpM>pL-vpG1N7*Fdx}cm;u+aj>%^nDJ3SdX30UeyTZ5qZ!MEMsR3uOUXq+$kmFVF!) z^gBbtu?(*SIx&8KQivFW{wTjGwiYv;M=1q~Kigm|#nwO^12hZpAxJ@D^NnlLH5>+K z2Tb-Q#vg<#LP;Zw#T5fh;eVDJ?BUeTnr0hD=*?oFH;b z)OR6;*AKml5=E=kH0A?J=;`UDS}k+()amX;ZAhY>Woyaot|Y5Lwgxv8=wG{*ua19% z!t+vvLePkY!eawGzjv>nwJ3{mXg|YQwx$g@Ws7OrM!S0fh|(Cbo}pyS&W8 zwFQQT2Dx%&j_H}1P?mxMU#m&zfXB2oC(5s{H<9$B%aFp*MsIg@ZQ(jQCMGz1=rwBf z8kj(__d zZp%f`G@DJ<^{+#TLMshgywpX9&Z4u}niE~%h7pM^>IC%eT{}7Q)|-rujsP$^GD4$q zhf=8oK&#clZMlG;L{VH=K(wIoU`6?BifO$ncF$-x7vY0|Wi+-?xwR7k&d^Ai zNwGEa4P_iMpqG}GI6HHm(yd#F)}Rz3ntHv?_a{!!qa0k__A_N>l@Qk4nI((PYneWr z0%&AlY}-~gZ`w?to$cGUMo&k=+K)1*2pwp?_&2k&vk>@m!ifUpu0Gstw`OyNV(~gR z7nj1EgrgcX+H(VRm_h#(LAcYXhyE+U3KF|3Lgd5R$fMoX;s+~qy-}my07QA2@cngY zXppfdwj&60b5~g`-Sk``oFB+S$28mdBn?SqX}AN_SU8z!h5zdHUk24mm8Kj)&G)E|>Y^&shsk zmaWkVl?Ish&%z}1?A9YJuOAQR?fmTv_Du}%`KKR;eZO3~%=;gF6ngavY%RDs^!I6w zK3$6OC#yJWT}J$&+k8n&uL=7LPc4)0Reb%)yJ273ZSvlJ&H5bFDj1T8*0UDf`n;ml z$a_&*S)#zKW6~Kyjw-om7#FCxP-!e;P7r#iwV<%p$+EQwcuN5&DB_=gkG|dg_VQoS utQv;=#dfCAtumTCBy5D3jbvRm1!w zlqPYWwaC=_Kyey7U{SI21n1Uz#f2QE|x zEh^mBodA>rR=zEFb@1d92ZG4~o;`Xje=TuHG$$czT{iiE6-cZwhKKw6Ieq3V7k~T- zgH2vf)>zBQ6K^7b5xgX_O>?nSCg7g50@<+V1NUv~qJH%%Kls2WYhHNyI0%R_VEvn< zvCM-&o^=7R$CvKlO>0)OWBWEfJo5=FR~q_ydg<)kib1$gtI@r4C&yoVoh*e27=r<9 zvO!sV50;7qip7>bmv$c!dUow%vUZXB-*t9B&`n$0t(^YoEF!`~{dVrqJd>6vK; zhlYrvXb!wFNuIb6j4>EJXWWjaEPS1=*e>5VagsaR+v)A@=JMr_>Fe%cWNe(-*?$2c ziUg4;*$BZ};o7wbQt;M-A(4|{MY2EC(_FUM6DT8r5q|#V64Ns?JhE>et5)5}g~?hB zS736o#-6@D)~#F1`nBuXySp!zkOLkoU}B&~1e?aLa01mOA$b`{}^ZZq>b722|9)IjnuKal=CLof57ZbNi0~z>S&V@)QwEMbUrq5GT(|k7g zIlun?8(^}|VI^W@Y@CttiA?juV-uLW5eChbaO1)J1KNsDeyLcU4t zJBbuuy89T_-{T==CBH_*mUg$QleqeI+CxI$_j5()_IC>=9Z~{TUF!7v#nWv?7jk}v zlDN+Xle9>|n0Nxmnzw~cM02W*qGuvp1Lx3<^%v6`Lfd3}G3 zMqU}qmL-$qs`9G3RMRv2`hBn8d;PvHi7H%x|Ib2yX#=Jze*<-RSe6vVWMsqO%f9tmo&YT|EHsBWXBtQZn zA<9<*v<5r|Taw_G#K&0~2fnxT(IvNCd)we-ZJ2b4YinzxL?WT?|IgJIJ^!cQ-Zvv| z?LOuf^C3e>gTO>kLX-_ak$?&rgpy(kg^ibNcIK^rY2AH+Gybdqnwpv<0BnAJV{1r4 zdP2P&B1k~{RY-$QKA5EecG$6F5xIZYq1TqB+aGR7Bob;eXU3!fw6wH1?d|Q6H{X5z z^2!Rzc~ELJV)QBW3IG~_hBOQ#=PJ~^n0x8dz;UOXiA)MWCX(9PX*iwZLhDf^f~ zLg4g?IFi&FAO;sH1pA%B!M~r39l#_3n5GE;=r0|u0V8Zc*jhtEpTWWc05lr}yHGql z698P-J>yC=r9MS!FnmLRiFp4cA^?z}NuL9g0&w)`Q3ilmw7ORa*sKv12*6BCSOY=` zay>+*MQ3yYKqwUY^CWR9m0|#x?$rIM%9LG>>&_$s>r*9fAOZ{x5(I{(sAh!EtG?is z$=Cr*A%r?QI>O0hQhlgy;V*}5-5?RN%2MFuA>kYEudAVy@)|27avz=biLHQN+0N9C zDV0$G_@{-}{fL0P@TkdSC=E!!uQcx&03d`cG1xN9Xkk#zz5IeJ9=kQsTIlHL2v5ci z!^E`7Vn8;Vm95vc_FsQfBDejm*OJq#BCg}PN3?)oh5?KmUIL^U#C|K`RmretyoGGtXLAUwxI`(a{m!a`4$JcJ;iv_=j-t-T=cxCgFjsJ4pU0oBQmqDvOB>;hU)9EzTz1!V9v~SboDx9r!zU8gF7170b8Bg!*aRSKjFd^w&!NG} zy6HRT+;~&EW$nW|f<7r4jne-8`&F=TCXBjYL@k%v~SYyR28TUU8n&yI?!9y4V1kwy`kSO`t5 zwdHuFnn67<+ta%6h1QR)S-t*_S5F3F+$yx`N9(QER@}M1m^*Y;EN1SA2!6w`-F`jn z5NtOL+YMvbVd;8(l?Hak;?~~(-S+aze_t^FUjvVyxSIg*$jbFiKYr-BwU$v4n@%-5 z!fYMzO1h{VO|GlLj^jz?YFo0|RZY`(#H=cQYW;5>{I{>Hy(9?bQ|>^JIFHWz;J5qt z{PD)Bs_-^3&)>2#Ws$)w8O zbI*b!d;YjAQf2KCLk`0v08m2vt$@}btwBPAg$4^ii4e#bEcRDKj9l-gjko_IosI;? z2fOjY(|eY=if3Dh>=i7?Ai)3_&@2E52*1mQW(~0ao}^Ua0}@8`xy-g3Pu$%x0D@Y4 zP_Sl3ZgURuW(lt?60I-RD${d*UN zL&$@bf&iV4r<4IBVlEnhePs8p%K*T#DhL1$cK0<8xpsqTSbaRf4uAn@KW=46nE4V^ z{H+}aF9MEV0*opOl5CbzwQ9(&mC`7{8};sKMQdN1X6BHAey68r4gk2W!vJuo^GJh$ zkR*(vfF?kUhRk@wfFM6Fm<%Co1Coy&8k$qS?kIqGJPrU5t{W9VSP-dzzfQzk$J3BW z7*JdqjsSq?)dK*E$4U_a0RlMqT2EkpM5ZXD3cYl#$1Ap8W)_H-AeWul~$kUdhs#> za#|4r00TrsN+DJ;Yu4KU5DJ9}02kxYyap@oH~3o04PU0H6~=CX;I@F07kpjF#rOxUU%g`{L}?l8L|c*SQ|vX*Zfg# zctGYym>8FoYLsE4YsQi#TL8b^&SWz3n$$JUg^SMl^#Bjd6d_m)&4Tc1 ze}N?gIC$0?QoCRkjl_p+uc6_KE#LqA4L1~nQWtpZ(wm!~3WsEujlm|6#~y1E02!mz z$PcNJX98;iSh-Z1>w)_}bIZaf%k{knK>5qrw|@13(6smqgM-dTy{KscaNvRA0osGq z9wa;f9ux$WS7lA>FBBKnESSIU=AZu8#!MzNrj2N8YolZ`X)n9`(`^NJfLvpEo?&Qc zKzU$hFg&mv`O6wmf;6+`G`(BO$CtKVy5`nz+>k$QFH|nS$Yvw^?p^WVKv&N{njz6= znzF|b)GxGufvbfGD|X{02Xh>kt(l)(^!;03*!~~mwZ1`n{=IvDIQM7Y{q<^xxiN;S zoM~EpLX#~Z6aZquky6R784?4tS?l~4mw#f-s&(Jkc{05d;sZaq;mcQbZ+^P9bgbB< z0jr!35HMI#U$bM@^~vTTP1)o(W}tlytZPLYuXlFer2d7YiSXdET!bebZO z2u+lTm+O7sIdQq1>{gzm@oFmcRY4#9vze4<^9$Osky$5C8xG07*qo IM6N<$g6TfH{{R30 literal 0 HcmV?d00001 diff --git a/icons/48-apps-kalgebrabackend.png b/icons/48-apps-kalgebrabackend.png new file mode 100644 index 0000000000000000000000000000000000000000..4c76e18f7a1bb9348c132ea0b0a2190b7ac47348 GIT binary patch literal 2645 zcmV-b3aa&qP)Px#32;bRa{vGh*8l(w*8xH(n|J^K00(qQO+^RS3kMZ53sAgLyZ`_I24YJ`L;(K) z{{a7>y{D4^014GeL_t(|+U;0-a8%V9Pr}o-+Cj8f6h#UZ6)Am8XPnwvrj-KOz0ZB! z-Mx=}XE$#G3E`0kL;@Hh5JDjklYkH~fThq1B?y5EsgznRg%)I>Qna)d!pnh#?CI|; zo82f`aJu^k%;e1cX7Ap6&biS>t+(~I-gfslZSv$KjpO>MEIU}`xbNe4 zl)^B5?i~j>Zk)<;+4xxPYTO<99(_k#{T5QdTbR+&h0)uCk6qb|fswU!>9e;=M-|T6ulNUw>MB}n4 zMsszZ(Y!3t$TFBJoPzNDog666^=5Wd%wI)ZM$=K1W8G<1_^MMBb7GCn zHkwnbWcQ~{uB>2_^Zx|K#u~p$^T{69U{qMR!0f~1_9X|^5n2%>za6?iUF^L|iYzl)R=Rgye^E?Hgs7Rk`O=irRh z&htGgkA=|>ESJ=S4VwR2zDaVU@7KE^Gt3}3{!ka}3=;(#y_Q+_VdUF4fFTs}7l3;Y zE4(o9whpN1=rKu6G~z2)Y$ZzrddToALb!UCUZql%34=Ku@+Zj-tXEi~rK>ufL4D%pVqVCu3 zoU7AJQoh9V{cL)D9~h>>z)x2wUh*q<_AOXwa}WgL9|*`#5-O#5@n|T};We-CCG*Rc z6Ugczr)X%%^<+o7FaMmvxQp155gl8)=4W^F0 zzG>uOV0s9xK-cvaS2jr(jW;yNbV40KqCG(OfTgdlBg?BdlQf(99_~E?gHl}v({G-L<{ZnbGbLc!}O~aNGczyx13lyS#Z32i|aI66~gAi#t1V zZ<{-Zm@haJKQQ^7A!qI=qEeMyE$!_xd zv;t~q=y#FbNnCTs6XUhx}GZYSMIQDN5Da3+q>ht&^;dh7(n+VTt*uZ`ts^4h8TU{j0I zBTz_6kq?Oa0X!cGqvifyqjm z!)nwDV5O1FW&%gc9ikY&8U+Ny=;gBKPy3OCi0VI~B6?kFYLbMn5ujNB^tpsp+G0g9 zr=mKA#$QC@6ZDTbP^bC{RyKLY2;24_a3FI6q%A6>2eaN_a!_W>O0 z=UcS~M3E-qm8mAFK;qc}IA#vQ32DU^S5^nqs#usjDFqQt$2HmL%#0XxAPxM71E`03 z!~$R=8~}~F$*rF{@G$}++Bq)1uO2p*={MDA$=vGBzDPHoMK} zLLOX2;&HRhwvyK!>A@0x78@V6PcoM9E>+1S{G33bf*EO z8!a8^xz_@W0KU}&Mgawo=eDNkxgqqPrLvn=u9v}pQE@u}<#`-NpL++B*Q);D1~`M# zc(YRwhal1F@{E=ss?DhS09_G;gTrFdbHW6Aa{Dg&d{Ak3(s7@wP*IZ5IdX-OBja;` zpENNAAF8(DBo(BSqel7+W%LY%Wrou-7|%lTiPKjIpjT)|#j_bOZs2WmOsDHdt5CXu zA+I8H&^(xOv;5u-Jf`C7cw7w;%}2r2PU(TqCudN+>0q3lI)J5a^NNND-1v|CNAdjU z+?RMUPJ06SW1QILi_9aoIrz{#$FRy1K&9lk9Kh$2pF%n>&=r7uz613cNo5Y;DAaBU z-}{-0j{{#y>7e%*$HtgP4+ln|Pjb9f>Jvz;X3BMx!oM^#3?{sXn#6Mt;9ygQWbSbD zydmjcYj%O}g9H5d4AHniX7ododRuSnZN06xh1>rCDF@^V==w(u00000NkvXXu0mjf DB2WpC literal 0 HcmV?d00001 diff --git a/icons/48-apps-luabackend.png b/icons/48-apps-luabackend.png new file mode 100644 index 0000000000000000000000000000000000000000..a41e6a93eb92a80fadfe085a96c81f6a80d8325e GIT binary patch literal 1546 zcmV+l2KD)gP)_1hr4dNbGrAv=iYPL`rt}#de6T5 z?7jZI*YK}Z_+MsMQbJrS6&MHdf#pCy@BxqmTmu{izD;aNDFbR$&rd-Pgbg4C$N*LV zeZa>)-Z=}n9QX|AbSPd7YzFE)KYRq-2GSE0K!u*_E5JYi@DsYuQDCnsp8@<0WIEpK z2PrhKJrOC;zkdK511OIwkDA$EYH9#YF_c#w%;??^pSle=$e_ zKzah3v;ZRsINt&w7Z?H#fc)ZfpAsK)vVl23f4UD_&jI$uR$f*DtAHh{xNQ!=L0~uV z4#?|{#Rh=FIC}j9jK*`~6yQo=r$eDEU?uRXMxtb74e%O>;Y+ep_l+g{fhv&kB%_d2 zYe*{z!Tx)I)gZf!wSS27&H|A3SWa9QL-|K^gOZRO_>_o$$+NotUQL82EOSo)*GH9i znb6h19($yb^+01lg-3xufnz`(aFP+8TR>`z{T>2t(ub`ePX)-tvH`e1pz?=-+DO=x zQC&A5sMn;3I(U7uT&TwGw6X?xA)xa6)V^H@v>b>gsHZ_5woE!zEo0P{$j;Ub>s`1U z*bsuP-yP?McL3Y;;X&QkD`UVSFN2KAZw~K&DL|Ms)|T&l%xf_8+HLv07wC2Y7_*#8 zjhaszDh%+*~Gr zOG5&12}rJwc@KD=mxAP3azR-XXcWLU`}CO**YJszdgV@jyJQfj9G(hD*Y;3gJ%W4VuJL9WsdQ!=9kP4|DibCPPwLw)9t zg>h=oM2Xt1z$VXlBe2$Z?o`HGq-InNycnZ)p0H4$)F^;F;ADp~$rS2eS=uFgfL7!A zLZAzH3up!wg52xabKF9$i=sNGDmk)o@2{uHB>I8#6le`_5%7lo)@A2EGGH;Qv8WFW z>BlQ?YmFPW6lgU!sL`w)*x_lln9^(+>-J{iS_g@nE@{-vyaIR}I3vc~=PhITUI5uf zRb+a4dw{N+DZd+I8zUd-)V$ITJQ1S{_n~F{W-owdZB>|wY#eykv2a!l<O6?0x0gwY+27KZHkOBM{fcqpPMoymbez{CvLp<+vNHwK}sA?dXx|KI&`dX<)m2u;K*0fWRr7%)l+jvvXvTh z9m;1ay=eEFF}+d`ycb(hS*xM4Isv8kM_P!i0~vPA$%~j2TOAxJhzVJNWC6D;m?fTu zz_7C0EkKinUAh1aYF;5IfD+&WgEjgAlrov!Wg>x-sMCZx6n2!Duhd{VWifE(OvLI2 zz2Yz=3%GGM3hfG`yqllk`^CCODsV0Vn#XBLzBj>SD}GE9T(NSLa^N&=K8@;lsYbF9 w;5wzmzp8^Ci|44b)dop14k;tth&L(!0#l7noT9P1zyJUM07*qoM6N<$f+L8z#{d8T literal 0 HcmV?d00001 diff --git a/icons/48-apps-maximabackend.png b/icons/48-apps-maximabackend.png new file mode 100644 index 0000000000000000000000000000000000000000..1438cdb635792253cc1cc416f6cab3e92a28d52b GIT binary patch literal 3516 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%0D*WP@&9DQ2f`fPO=qu8kWaeooGG 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%0D&Rx<>@whvc6T%NMC%GX!Q}}toq-5dyMrhB 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 Hu0mjf|3X(R literal 0 HcmV?d00001 diff --git a/icons/48-apps-rbackend.png b/icons/48-apps-rbackend.png new file mode 100644 index 0000000000000000000000000000000000000000..ecd3601730f17289fcdb620cd7fd75d77840e80f GIT binary patch literal 4716 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 literal 0 HcmV?d00001 diff --git a/icons/48-apps-scilabbackend.png b/icons/48-apps-scilabbackend.png new file mode 100644 index 0000000000000000000000000000000000000000..638d6f7feae1cd347fbcf08871c688e889f4818b GIT binary patch literal 2620 zcmV-C3d8k@P){CdqXPR z#EC;fT}*5)HrN;&y!Lw6d*9iaIepm0?9~{Pl2pnkS@xXEcfQ}5?|kPwb1VSK|FPHs zdV9aXeSP~-RmZ0vM}R~Uo4>~EZ~VCguxr;|9)I#Dq=W%C(DBk?@PCKHS&3#5uBv4X*gnKb=Z)6D0MRqOp&)_?-o%Q0M+jThrw z-r%`&F{aWwU9B4FqQ$$>H19_oFpLM)vomdRjPD|e~e0$6Le^A*3J#{&VjXc`468OmmP zE*9g>WD>JMpNwIVDf@h9ILx7*9(Hfqgl4xhdhHs=M@Km`Gef~xnOm(Iz##;?+-|-f z3UR;3v$SDuayYOH!B95K>@r5QY8qd^=N^9e;DdCpTZc^uqNx;ZUN6s{IKhQzbVYWo zdJ(%7g>9NfkJDMT+iOCw+wEqvrY+mQJrLkvPY+wxu0>T86d`Ey`FNnao8I>J72C0D z06|6C+oZnocdd9d4UeWRE&l7`)-+mcCS^HUH9*F)7%LPwUno#4FIWj=q+~dsXA#)y z^U)g&($(6EM^&qgnoFgajKxS73QLoqnNhEl2Xoz)QFTEQ#VpkNVVliGm zeVYGFO|96D6#-m-O_FMtnKcZ4AB*u}Hp@<@lY*37Gz|82cJi~nKK$i%@Wr+^?q9c# zpTGY;FJHb)x>&@tEM7TthN*a*Jsll5Rh8lCX@;hzi05($A&^b>lobQm0WS~)Y``Lr z016c#Da+!$OosO|8Eit(8w~Q@?(UND6$W&Ay?nc?i@|7=bg`7U6%2z9CMWq|auP)d zT3jwdJ|E$5m}DlyLNZA~*I7=Q0@#4vz!Sg&fD(lj1BaDX2_@dR5U5dgY7J6RJ9l1!!e z*U(T?fQC`X20U7ZaMslA01g8k4f+)=i}7TVw`OMQ>U7iO^~;xu=5lorrY#hrZ^sVW z*Q^1{0?Wd#D0D_5?B2O^*^pZI1|-k|Yz913$8iB@KpU_QxX?i1d_K?9r%$5_!Qn^* zkE$}C&-47)7=IccC(+0qgh13B@CBu>8A{zj|0Vzc29Se>xs0T=h?||54JkPrkMq;P zL4JMqECGjunQWHvWRirg*ZDp`bYX$h7cTInJ$vZfu%V>KG?|>4;os-ZExRW)1jqq{ zzzV$uO5r zQ#4Jo`8>x?oWSXD@YQ|$2>E=BT)M>buf4{}k&$K0Zvb#TJ@^N(5qJ{VQf?RpUIvCW zjqmt;>}_eGMNyd0bzWawN?SQoY>+b zcDtRnwl?-3Iz%KAAsUTx^5jV-Cnr}9U;#5goRT{!fK5^OhR4GppN~xr$5IG$0{6Pz zJRS`4ZYINcp-`pEX}5E*r-zPE2$!ms238dAZf|FIM+YY-Cdif-wvEwe)lpls*>F1?s5aYDncwec|Ni|PIdX)}n>V8<3Z`k|^ZA&WnPL3tUs9RS+)_4b z69QETYz^u}xlU~m_6ml<(9{&!LIHWbUI=E>X~yT~Sj^>?+6Dpvwr}4~BobKyw%Kfi z!(saR`tW!>RU6?gWur;cWJ=drFiqCi%w|zaW{O2FH;D75l)N}J#HL`7hqi6Q?{*W* zWO!wGn71!nAep}rlr77`Y_MBPDKSkG%d)Ul#Kl_%7|3L}FO}jEpAT>O)fc5?Lf3gQ zk>FyD`&^fit5^BeTW>KiHb$_eh1pb!Qba4HIOhQWBD!2AlnB;<-ka>eG~L8X*jym*nLM~`yq)G5N@F!6Yt(a}++rlwHT zmfHgW$Vplped+;jCZ7R((()O=CoMO^ zXnAu}6bFjxDy5?h?u0)cS-nn0Z9%a+mY&N1rR#e#c3OhF5Sv|ChEWAjb$j0MV!QfM zx~f;*L{yj8-OMkwm(;>4HV5uCca{F-K$dUnlgR|vCML+8PtfZBJRaZYZuF=N!!=1( zT?5&y>2ifl>Kf~kQc_sFjI_)Wrnl9Pt0hRPU}09>*VZbiA3)xuzVYKSlh9C4b(xeB eX&IRL1pfs>d`)2nXTymA00002neJV)*=c) zN&F8?s40>7Xd;G)##f?7V+edO5-<|+6=Rf#6*W<@bXyS>!JxqpG)6_EX-EVy^4K|k zxHEHS=FWZ0?zW|L4=KById|s#&iv+g=HBfBHLF?8CbKcS;g64dX*>cME4yyxW&`sS z+kxn^#vd_90>&eZ@v}$*fXS7C)GaV{=-8MAGaA;hur0Cwve$q#Jef7%ofEC$U_@%8 zMB22zNLx&wK9240>NDE3fc3U}7oJJPBQ2@{F;}?2BP008xHdr9?C>|Dae#Kkmj#cs zC<9VNFappH((2Ru4S=q;DuA}V((w3cfNLTbGqk=4Gms2AmiktFk=}R7P~T2`wYI=$Q2(ygcc5$OlEeUYTi3fD zAa2HFjcG?;H4(IZDy4o?Qxg`I2Z%K30xn~n$O%yF?fX4MKD?a3{V#6 z$P5{&pKHDbvu9tA{rv;MV`&Zpe0U|3o!Ici(?JU{5EvL(vM#0Ikyc(A)PdOmV?gWv zU4;S$iU)D-+rwhd_Ja@jnVzc;H!fO9A}@gE)WgJO~`CR@{!_&{sH698_*!6pJ7NZd=|3 zNbn#99)bmo6F37HSjYpUV;y{1H!e` ziUqk!V-lXY1SDONnflRX_z_B_Cc`lQaMA$WCHr-5f2;6miI+k6vzI24G>W3hSum#@w( z>YacD=QQf8Hu1`V;Pw^4*7-vGN`_BwNmI% z76kuu zBK1tqRq71z)_iHyx8tv#2Ed(VUlyqAS$IoJF{MuW`%>Rrhl2I`NB22_{&$q4~~Z`&Wizx6GVI6A((9|Yj79ox~G zpAqR_Tv%S224pRRMq3qFppTidXo+TDo0fpcH%9um+-Y3#=c%(5gfsrua#e%zd*Q*p z$@Ptqinl=XwEF5sG{#mv4Y*9L_LUjCVUiJ`W;LtXB)9(o(#u-3)%haZ00000NkvXX Hu0mjfl;&!{ literal 0 HcmV?d00001 diff --git a/icons/CMakeLists.txt b/icons/CMakeLists.txt new file mode 100644 index 0000000..ae37629 --- /dev/null +++ b/icons/CMakeLists.txt @@ -0,0 +1,19 @@ +ecm_install_icons(ICONS + 16-apps-cantor.png + 22-apps-cantor.png + 32-apps-cantor.png + 48-apps-cantor.png + 64-apps-cantor.png + 128-apps-cantor.png + 48-apps-juliabackend.png + 48-apps-kalgebrabackend.png + 48-apps-luabackend.png + 48-apps-maximabackend.png + 48-apps-octavebackend.png + 48-apps-pythonbackend.png + 48-apps-qalculatebackend.png + 48-apps-rbackend.png + 48-apps-sagebackend.png + 48-apps-scilabbackend.png + DESTINATION ${KDE_INSTALL_ICONDIR} + THEME hicolor) diff --git a/icons/hisc-apps-cantor.svgz b/icons/hisc-apps-cantor.svgz new file mode 100644 index 0000000000000000000000000000000000000000..5b39b1036b05225b947553e2b5d13fe3931c3aac GIT binary patch literal 2130 zcmV-Y2(9-YiwFP!000000L2(<5*t`B`XzM`=olbe#xH7NN$z&`LU|D;e5W| z@7<&Ux_Pml-&&6IaC38CKCf>q%L2Yx8OG6K)-2fWiqsIs(Oji!qq3@;V;9e7J$clV zN1A)`tfG9g$+Oa|%*sy#;v!yk)LNQ7HAFZFf;l2{LL8uQ%41f^gEL+VGEOZe2%$OP zddlml!b1wGxG0Rl4!MK+xA5&2v;eovcSWRDuu{31s^(w6eeIAAa^or~;UnE3i@5J|k4 zfg+e7K~32E8LkN$u3?8kZh)-ye3*!pF>jXG@eqHHa70kGmTYkoa5&bjjF+syDZGtn`-pN|jys*a9i zG2@83BJjI?4*+8*aJj&YbhtJp*9731~ z8^H&=3?>NMj^|U?3fy!mNm&dYK@CA3fwC)vutT|urB+J;3ng2nL#GL6H=N&$& z{AD2U2YnKAZ@}(dUU{9xFZnL@+4a6lPiZHt#C`87KhoLdYHzq4Bao)eBm5>v^rdHl zg9^_`OKgV+FyzAXZr}3D*MgDp0RDnD7hxY3q#9B=ApunGWu!|`P>m#8Hi!@yM(#s`;KeJr;1+@b(2BPFnL#qdz?q! zYRn8>8{!PJj|KRfN_;iUsCZ4;p1@-tq9Z?JV`m&6x*&lKlj;SjJJTE-{<(lKZ)?=gg?9NOgr7>)N+3`j)cG zE?c=)h8;M^$~+BXnHRAtT9jv=5vq}>?#6D$w$QtFcr=YKA7z~H!B0++FL@4$mAL*X zB7)l8f#imuVD;!37FhY7PI97i+YSk3`A)ZL&aQUB?cr?st|&A?Dvt_IY<}8p%Ex@a zF0|&VV%KVJl~m3~7V9K)z(Bp{4B)9+Rg;LK?ocK$%e<=e@y}GYPcl%K)AT%;;4}3! z6m9z>#3hP@zQQlyK#9(!bsKp|Hpz>MwdXcY*wJYHwBB4Dbvt)BYS<{hXaEoV{$|QS z6G?U$#$654au65VE8h=%EQ0l)qh z&NASe7Y-!UXIbqEbzWW>$wV+zC_w*i`L+*V?pfSx-oAnTW^F8D6N@n$S;%J0a+)Fh zS}zw4_(@8!V)&zG;N--8JQss2^I*arxal+4gg3c96+T0!RbOo#fgE}+eslkuUIpD% z>QFf`+|q@tk~}k#p8_3i$QlzT!87|vLTLo*Ixd&o zUCeK$zdg%vy%E&20@31;5$bVWc!hX-XaRa_kT6{Cs%i-Pcb;S++~ulhp;Miw$#+zH zHs-#t2{iIVARbu6a|6ba5H_^@!efE&S%d?O_|&G{MVN8|WH2FCYB_LUTAuA$jt2t* zS&~>-)VYx$3(931zM~we4Xf?Kuwah&U(M-+_!DRJ0zo_v&ZsAxdmh93z{CqU#rkki z;xX#ml(`sF;scDj5Y_?mY*>K>^@*=xgd*kzwq8Wd8=3^n7_TQ-zf(9kwlHW;Zw`8Z zohU&tq^|EnLmOCsvnX*XB2X3DgjtNXZ>kYcS)+i}lSbrT{@*M(5R8N+EoL(dnUAA~ z{d7E|pnoW4^to!`+VkMrNFWv_++1Z~Ed%T5|1{jku+=xAKA?nssexlN>SxZ`)S)9{ zn7+U+4(4`X_9CQ~1c=R0V*|YaaI8b=(WRSqD%3#Lr-3$TUDtJK3P1O{lzzDR4>}p1 IoZ=e*0M-61-2eap literal 0 HcmV?d00001 diff --git a/org.kde.cantor.appdata.xml b/org.kde.cantor.appdata.xml new file mode 100644 index 0000000..ace4a9f --- /dev/null +++ b/org.kde.cantor.appdata.xml @@ -0,0 +1,158 @@ + + + org.kde.cantor.desktop + CC0-1.0 + GPL-2.0+ + Cantor + كانتور + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + Cantor + xxCantorxx + Cantor + Cantor +

      KDE Frontend to Mathematical Software + واجهة كدي لبرامج الرياضيات + Frontal del KDE per a programari matemàtic + Frontal de KDE per a programari matemàtic + Uživatelské rozhraní matematického softwaru pro KDE + Eine KDE-Oberfläche für mathematische Software + Περιβάλλον χρήσης του KDE για το μαθηματικό λογισμικό + KDE Frontend to Mathematical Software + Interfaz de KDE para software matemático + KDE matemaatikatarkvara kasutajaliides + KDE:n käyttöliittymä matemaattisille ohjelmistoille + Interface KDE pour les logiciels de mathématiques + Interface de KDE de software matemático + Interfacie de KDE a Software Matematic + Frontend KDE untuk Software Matematika + Interfaccia KDE per software matematici + KDE -ის წინაბოლო მათემატიკური პროგრამებისთვის + KDE 수학 소프트웨어 프론트엔드 + KDE-Böversiet för Rekenprogrammen + KDE-frontend tot wiskundige software + KDE-grensesnitt til matematikkprogram + Nakładka KDE dla oprogramowania matematycznego + Interface para KDE de Aplicações Matemáticas + Interface do KDE para software matemático + Оболочка к системам компьютерной алгебры для KDE + KDE Frontend pre matematický softvér + KDE-jevo začelje za matematično programsko opremo + KDE-gränssnitt till matematisk programvara + Matematik Yazılımı KDE Ön Ucu + Графічна оболонка KDE до математичного програмного забезпечення + xxKDE Frontend to Mathematical Softwarexx + 数学软件的 KDE 前端 + KDE 數學軟體的前端介面 + +

      Cantor is a front-end to powerful mathematics and statistics packages. Cantor integrates them into the KDE Platform and provides a nice, worksheet-based, graphical user interface. It supports environments for KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab, and Qalculate!

      +

      كانتور هي الواجهة الأمامية لحزم الرياضيات والإحصاءات القوية. تدمجها كانتور في منصة كدي وتوفر واجهة مستخدم رسومية مبنية على ورقة العمل. وهو يدعم بيئات KAlgebra و Lua و Maxima و R و Sage و Octave و Python و Scilab و Qalculate!

      +

      El Cantor és un frontal a paquets matemàtics i estadístics potents. El Cantor els integra en la plataforma del KDE i proporciona una interfície gràfica d'usuari agradable i basada en fulls de càlcul. Admet entorns pel KAlgebra, el Lua, el Maxima, el R, el Sage, l'Octave, el Python, l'Scilab, i el Qalculate.

      +

      Cantor és un frontal per a paquets matemàtics i estadístics potents. Cantor els integra en la plataforma de KDE i proporciona una interfície gràfica d'usuari agradable i basada en fulls de càlcul. Admet entorns per KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab i Qalculate.

      +

      Cantor ist ein Bedienoberfläche zu leistungsfähigen Mathematik- und Statistik-Paketen. Cantor integriert sie in die KDE-Plattform und bietet eine grafische Benutzeroberfläche auf der Grundlage von Arbeitsblättern. Es unterstützt Umgebungen für KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab, und Qalculate!

      +

      Το Cantor είναι ένα περιβάλλον χρήσης για ισχυρά μαθηματικά και στατιστικά πακέτα. Το Cantor τα ενσωματώνει στην πλατφόρμα του KDE και παρέχει ένα όμορφο με βάση φύλλα εργασίας γραφικό περιβάλλον χρήστη. Υποστηρίζει περιβάλλοντα για τα KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab και Qalculate!

      +

      Cantor is a front-end to powerful mathematics and statistics packages. Cantor integrates them into the KDE Platform and provides a nice, worksheet-based, graphical user interface. It supports environments for KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab, and Qalculate!

      +

      Cantor es una interfaz para potentes paquetes matemáticos y estadísticos. Cantor los integra en la Plataforma de KDE y proporciona una elegante interfaz de usuario gráfica basada en hojas de trabajo. Permite usar entornos para KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab y Qalculate!

      +

      Cantor on võimsate matemaatika- ja statistikapakettide kasutajaliides. Cantor lõimib nad KDE platvormi ja pakub neile kena, töölehepõhise graafilise kasutajaliidese. Toetatud on KAlgebra, Lua, Maxima, R-i, Sage, Octave'i, Pythoni, Scilabi ja Qalculate! keskkonnad.

      +

      Cantor on käyttöliittymä tehokkaille matematiikka- ja tilastolaskentapaketeille. Cantor integroi ne KDE-ympäristöön ja tarjoaa mukavan työkirjapohjaisen graafisen käyttöliittymän. Cantor tukee seuraavia ympäristöjä: KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab, ja Qalculate!

      +

      Cantor est une interface pour des outils mathématiques puissants. Il permet d'intégrer ces outils au sein de la plate-forme KDE et fournit une interface graphique agréable. Il prend en charge les environnements pour KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab and Qalculate !

      +

      Cantor é unha interface gráfica para potentes paquetes de matemática e estatística. Cantor intégraos na plataforma de KDE e fornece unha boa interface gráfica de usuario baseada en follas de cálculo. É compatíbel com ambientes para KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab, e Qalculate!

      +

      Cantor es un interfacie a pacchettos potente de mathematica e statistica. Cantor integra illos in le platteforma de KDE e forni un agradabile interfacie de usator graphic, basate sur folio de travalio. Illo supporta ambientes per Kalgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab e Qalculate!

      +

      Cantor adalah ujung depan (frontend) paket matematika dan statistik yang unggul. Cantor mengintegrasikan mereka ke dalam Platform KDE dan menyediakan antarmuka pengguna grafis yang bagus, berbasis lembar-kerja (worksheet). Ini mendukung lingkungan untuk KAlgebra, Lua, Maxima, R, Sage, Oktaf, Python, Scilab, dan Qalculate!

      +

      Cantor è un'interfaccia a potenti pacchetti di matematica e statistica. Cantor li integra nella piattaforma di KDE, e fornisce una gradevole interfaccia grafica basata sui fogli di lavoro. Supporta KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab e Qalculate!

      +

      Cantor -ი სტატისტიკისა და მათემატიკის პროგრამების მძლავრი წინაბოლოა. Cantor-ი მათ KDE -ის პლატფორმაში აინტეგრირებს და მოგაწოდებთ სასიამოვნო, ელცხრილზე დაფუძნებულ ინტერფეისს, რომელსაც KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab და Qalculate-ის მხარდაჭერა გააჩნია!

      +

      Cantor는 다양한 수학 및 통계 패키지의 프론트엔드입니다. Cantor는 해당 소프트웨어를 KDE 플랫폼에 통합하고 워크시트 기반 그래픽 사용자 인터페이스를 제공합니다. KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab, Qalculate 환경을 제공합니다!

      +

      Cantor is en Böversiet för en Reeg deegt Mathematik- un Statistik-Paketen. Cantor integreert de na KDE un stellt en smuck graafsche Böversiet mit Arbeitblääd praat. Dat ünnerstütt Ümgeven för KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab, un Qalculate!

      +

      Cantor is een zogenaamd frontend tussen de gebruiker en krachtige pakketten voor wiskunde en statistiek. Cantor integreert die in het KDE-platform en is hiervoor een geschikte grafische tussenlaag (interface) op basis van een rekenblad (spreadsheet). Ondersteund worden omgevingen voor KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab, and Qalculate!

      +

      Cantor jest nakładką na rozbudowane pakiety matematyczne i statystyczne. Cantor integruje je z Platformą KDE i dostarcza przyjemnego, opartego na arkuszach roboczych, graficznego układu sterowania. Obsługuje środowiska takie jak: KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab oraz Qalculate!

      +

      O Cantor é uma interface para diversos pacotes poderosos de matemática e estatística. O Cantor integra-os na Plataforma do KDE e oferece uma interface gráfica agradável e baseada em folhas de trabalho. Suporta ambientes para o KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab e Qalculate!

      +

      Cantor é uma interface para os pacotes de matemática e estatísticas poderosa. O Cantor integra-as na plataforma do KDE e oferece uma interface gráfica agradável e baseada numa folha de trabalho. Ele tem suporte aos ambientes para KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab e Qalculate!

      +

      Cantor — программа для удобной работы с математическими и статистическими пакетами. Обладает графическим интерфейсом, позволяющим параллельно работать с несколькими документами. Поддерживаются системы компьютерной алгебры и языки KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab и Qalculate!

      +

      Cantor je frontend pre mocné matematické a štatistické balíky. Integruje ich do KDE platformy a poskytuje pekné, listovo založené grafické používateľské prostredie. Podporuje prostredia pre KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab a Qalculate!

      +

      Cantor je začelje za zmogljive matematične in statistične pakete. Cantor jih vgradi v okolje KDE in ponuja lep grafični uporabniški vmesnik, ki temelji na preglednicah. Podpira okolja za KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab, in Qalculate!

      +

      Cantor är ett gränssnitt till kraftfulla matematiska och statistiska paket. Cantor integrerar dem med KDE:s plattform och tillhandahåller ett snyggt, arbetsbladsbaserat, grafiskt användargränssnitt. Det stödjer miljöer för Kalgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab och Qalculate!.

      +

      Cantor güçlü matematik ve istatistik paketleri için bir ön uçtur. Cantor onları KDE platformunda tümleştirir ve güzel, çalışma sayfası temelli bir grafik arayüz sağlar. KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab, ve Qalculate gibi ortamları destekler!

      +

      Cantor> — графічна оболонка до потужних програм обробки математичних та статистичних даних. Cantor інтегрує ці програми до платформи KDE і надає користувачами зручний заснований на обчислювальних аркушах графічний інтерфейс. Передбачено підтримку роботи у режимі оболонок до KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab та Qalculate!

      +

      xxCantor is a front-end to powerful mathematics and statistics packages. Cantor integrates them into the KDE Platform and provides a nice, worksheet-based, graphical user interface. It supports environments for KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab, and Qalculate!xx

      +

      Cantor 是一个强大的数学和统计学工具包的前端。Cantor 将它们集成到 KDE 平台并提供了美观,基于工作表的图形用户界面。它支持 KAlgebra,Lua,Maxima,R,Sage,Octave,Python,Scilab 和 Qalculate 环境!

      +

      Cantor 是一套強大的數學與統計軟體套件的前端介面。Cantor 會將它們整合到 KDE 並提供一套工作表式的圖形介面。它之援 KAlgebra, Lua, Maxima, R, Sage, Octave, Python, Scilab 與 Qalculate 的環境。

      +
      + https://cantor.kde.org/ + https://bugs.kde.org/enter_bug.cgi?format=guided&product=cantor + https://docs.kde.org/?application=cantor + https://www.kde.org/community/donations/?app=cantor&source=appdata + + + Using Maxima backend of Cantor + كانتور يستعمل خلفية ماكسيما + Usant el dorsal Maxima del Cantor + Utilitzant el dorsal Maxima de Cantor + Použití podpůrné vrstvy Cantoru Maxima + Maxima-Modul in Cantor + Χρήση του συστήματος υποστήριξης Maxima του Cantor + Using Maxima backend of Cantor + Usando el motor Maxima de Cantor + Cantori kasutamine Maxima taustaprogrammiga + Maximan käyttö Cantorin taustajärjestelmänä + Utilisation du moteur Maxima de Cantor + Usando a infraestrutura de Maxima de Cantor + Usa retro-administration de Maxima de Cantor + Menggunakan Maxima backend Cantor + Usare il motore Maxima di Cantor + გამოიყენება Cantor-ის უკანაბოლო - Maxima + Cantor의 Maxima 백엔드 사용 + De Maxima-backend van Cantor gebruiken + Brukar Maxima-motoren i Cantor + Używa silnika Maxima Cantora + Uso da infra-estrutura de Maxima do Cantor + Usando a infraestrutura Maxima do Cantor + Использование системы компьютерной алгебры Maxima в Cantor + Používa sa Maxima backend z Cantor + Uporaba Maxima kot zaledja za Cantor + Användning av bakgrundsprogrammet Maxima i Cantor + Cantor'un Maxima arka ucu kullanılırken + Використання модуля Maxima Cantor + xxUsing Maxima backend of Cantorxx + 使用 Cantor 的 Maxima 后端 + 使用 Cantor 的 Maxima 後端 + https://cdn.kde.org/screenshots/cantor/cantor.png + + + KDE + + cantor + + + + + + + + + diff --git a/po/ar/cantor.po b/po/ar/cantor.po new file mode 100644 index 0000000..62d1a62 --- /dev/null +++ b/po/ar/cantor.po @@ -0,0 +1,4540 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the cantor package. +# +# Zayed Al-Saidi , 2022. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-01-22 17:58+0400\n" +"Last-Translator: Zayed Al-Saidi \n" +"Language-Team: ar\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Lokalize 21.07.70\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "زايد السعيدي" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "zayed.alsaidi@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "ألبث" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "ابدأ" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "أوقف" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "احفظ النتيجة" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "رسم متقدم" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "ارسم" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "المصطلحات" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "خيارات إضافيّة:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "ا&رسم" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "ا&حسب" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "المتغير:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "س" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "المرات: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "ال&حزمة" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "الحزمة:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "الحد السفلي:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "الحد العلوي:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&جبر خطي" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "الأعمدة:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "الصّفوف:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "المصفوفة:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "ارسم ثنائيّ أبعاد" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "متغير" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "الاسم" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "الدّنيا:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "الأقصى:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "ارسم ثلاثيّ أبعاد" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "المتغير الأول" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "المتغير الثاني" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "شغل سكربت" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "المعادلات:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "المتغيّرات:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "عامّ" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "تنفيذيّ:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "ممكّن" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, fuzzy, kde-format +msgid "GR" +msgstr "يون" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "التّوثيق" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "الخطأ: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "خطأ بنيوي" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "كانتور" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, fuzzy, kde-format +msgid "matplotlib" +msgstr "مات بلوت ليب" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, fuzzy, kde-format +msgid "bokeh" +msgstr "بوكيه" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "الدّوال" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "العنوان" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "عبارة" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "أضف" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "أزل" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "امسح القائمة" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "النّمط" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "الخطوط" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "النقاط" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "المخطّط الدّرجيّ" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "خطوات" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "نقاط" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "بلا" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "خيارات" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "أعلى يسار" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "أعلى يمين" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "أسفل يسار" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "أسفل يمين" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "أسفل" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, fuzzy, kde-format +msgid "Use Colors" +msgstr "ا&ستخدم الألوان" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "نوع الملفّات" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "لاتخ" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "مفقود %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "خطأ" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "تحذير" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "الدالة: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "تعبير" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "خيار" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "القيمة" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "عدد صحيح" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "منطقي" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "أرقام" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "المبدئيّ: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "ملف" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "تنسيق الكسر" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "منازل عشري" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "بالضبط" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "كسور" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "علمي" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "الدقّة" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "قدّر" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "راديان" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "درجة" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "جراديان" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "الخطوات" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "اعرض الشّبكة:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "نمط الرسم:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "عدّل المدخلة" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "أضف مدخلة جديدة" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "لا يمكن أن يكون الاسم فارغًا." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "اجلب توثيقًا جديدًا" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "لم يُعثر على ملفّ مساعدة كيوت المضغوط." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "التّوثيق مستورد بالفعل" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "عدّل" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "احذف" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "رجاءً أزِل هذا عبر GHNS." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "تثبيت ملفّات توثيق إضافيّة" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "الاسم" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "المسار" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "أضِف" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "الأيقونة:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "اختر أيقونة" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "الاسم:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "أدخِل اسمًا" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "اختر اسمًا..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "المسار:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "اختر ملفّ مساعدة كيوت..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "اختر ملفّ مساعدة كيوت..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "خطأ في فتح الملف %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "افتح ملفًا" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "ا&فتح مثالًا..." + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "خطأ" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "جلسة %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, fuzzy, kde-format +msgid "Calculating..." +msgstr "يحسب....." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "جاهز" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "التنسيق" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "تكبير" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "إبراز الصّياغة" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "الإكمال" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "أرقام الأسطر" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Functions" +msgid "Animations" +msgstr "الدّوال" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "احفظ ك‍" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "احفظ" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "أعد التّشغيل %1؟" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "مقاطعة" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "يمهّد..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[للقراءة فقط]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "ت&حرير" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&عرض" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&ورقة العمل" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "إ&عدادات" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&ملف" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&جديد" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "اللوحات" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "إ&عدادات" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "لون الخلفيّة" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "المبدئيّ" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "لون النّصّ" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "الخط" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "ثخين" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "مائل" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "كبر الحجم" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "صغر الحجم" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "حدد" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "صفّر إلى الافتراضيّ" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "اعرض النتائج" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "أخف النتائج" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "اعرض المساعدة" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "المظهر" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "مُقاطع" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "شريط البحث" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "اعثر على:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "ال&تالي" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "ال&سّابقة" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "استبدل:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "ا&ستبدل" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "ا&ستبدل الكلّ" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "البحث في:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&طابق الحالة" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "خطوط التسلسل الهرمي" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "خط الفصل" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "عائلة الخطّ:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "حجم الخطّ:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "خط الفصل الفرعي" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "خط القسم" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "خط القسم الفرعي" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "خط الفقرة" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "خط الفقرة الفرعية" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "الفصل" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "الفصل الفرعي" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "القسم" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "القسم الفرعي" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "الفقرة" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "الفقرة الفرعية" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "سمك الخطّ" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "رقيق" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "متوسط" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "ثخين" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "لون الخطّ" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "نمط الخطّ" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "تعذّر تحميل الصّورة %1" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "احفظ النتيجة" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "الصور (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "إعدادات الصّورة" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "افتح" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "العرض" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "الارتفاع" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "معاينة" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "مقاس الطّباعة" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "إعدادات الصّورة" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(آليّ)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "بكسل" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "القيمة" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "من:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "إلى:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "مطوّر" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "الواجهة" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "" + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "المستندات لفتحها." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "ادخل نمط التحرير" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "أغلق" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "انتقل إلى المطابقة التّالية" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "انتقل إلى المطابقة السّابقة" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "كلّ الملفّات المدعومة" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "كلّ الملفّات" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "الاسم:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "القيمة:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "مرشّح/البحث" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "حساس للحالة" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "حمّل ملفاً" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "احفظ النتيجة" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "محرّر السّكربتات" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "محرّر السّكربتات - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "لم يُعثر عليه" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "الأوامر" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "النّتائج" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "الأخطاء" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "النص" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "ابدأ" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "&ورقة العمل" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "إبراز الصّياغة" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "إبراز الصّياغة" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "أرقام الأسطر" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "أرقام الأسطر" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "المعادلات:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Markdown" +msgid "Markdown:" +msgstr "مارك‌داون" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "اعثر…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "احفظ النتيجة" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "" + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "خطأ في حفظ الملفّ %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "افتح الملف" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "حول إلى" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "الأمر" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "مارك‌داون" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "صورة" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "أدرج" + +#: worksheet.cpp:1916 +#, fuzzy, kde-format +#| msgid "Zoom" +msgid "Zoom In" +msgstr "تكبير" + +#: worksheet.cpp:1919 +#, fuzzy, kde-format +#| msgid "Zoom" +msgid "Zoom Out" +msgstr "تكبير" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "مقاس الطّباعة" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "&لون النّصّ..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "اللون" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "إ&براز النص..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "ال&خط" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "&حجم الخطّ" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&ثخين" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&مائل" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&تسطير" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "م&شطوب" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "حاذِ للي&سار" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "اليسار" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "حاذِ لل&وسط" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "الوسط" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "حاذِ للي&مين" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "اليمين" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&تسوية" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "مساواة" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"سيؤدي هذا الإجراء إلى إزالة جميع النتائج دون إمكانية الإلغاء.هل أنت متيقِّن؟" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "أزل جميع النتائج" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "أبيض" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "أسود" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "أحمر داكن" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "أحمر" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "أحمر فاتح" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "أخضر داكن" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "أخضر" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "أخضر فاتح" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "أزرق داكن" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "أزرق" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "أزرق خفيف" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "أصفر داكن" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "أصفر" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "أصفر فاتح" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "سماوي داكن" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "سماوي" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "سماوي داكن" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "أرجواني داكن" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "أرجواني" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "أرجواني فاتح" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "برتقالي داكن" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "برتقالي" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "برتقالي فاتح" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "رمادي داكن" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "رمادي" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "رمادي فاتح" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "انقل لأعلى" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "انقل لأسفل" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "هل ترغب حقاً في إزالة هذه المدخلة؟" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "أزِل المدخلة" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "اسحب المدخلة" + +#~ msgid "Defaults" +#~ msgstr "الافتراضيّات" diff --git a/po/bg/cantor.po b/po/bg/cantor.po new file mode 100644 index 0000000..3f930da --- /dev/null +++ b/po/bg/cantor.po @@ -0,0 +1,4513 @@ +# Bulgarian translations for cantor package. +# Copyright (C) 2022 This file is copyright: +# This file is distributed under the same license as the cantor package. +# +# Automatically generated, 2022. +# Mincho Kondarev , 2023. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2023-01-06 22:57+0100\n" +"Last-Translator: Mincho Kondarev \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 22.12.0\n" + +#, fuzzy, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Минчо Кондарев" + +#, fuzzy, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "mkondarev@yahoo.de" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Пауза" + +#: animationresultitem.cpp:41 +#, fuzzy, kde-format +msgid "Start" +msgstr "Начало" + +#: animationresultitem.cpp:45 +#, fuzzy, kde-format +msgid "Stop" +msgstr "Спиране" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Изчертаване" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, fuzzy, kde-format +msgid "Expression:" +msgstr "израз" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, fuzzy, kde-format +msgid "Additional options:" +msgstr "Допълнителни опции:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, fuzzy, kde-format +msgid "&Plot" +msgstr "Изчертаване" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, fuzzy, kde-format +msgid "&Calculate" +msgstr "Изчисление" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, fuzzy, kde-format +msgid "Variable:" +msgstr "Променлива" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, fuzzy, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, fuzzy, kde-format +msgid "Times: " +msgstr "Времена" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, fuzzy, kde-format +msgid "&Package" +msgstr "Пакет" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, fuzzy, kde-format +msgid "Package:" +msgstr "Пакет" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Долен предел:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Горен предел:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, fuzzy, kde-format +msgid "Columns:" +msgstr "Колони:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, fuzzy, kde-format +msgid "Rows:" +msgstr "Брой редове:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, fuzzy, kde-format +msgid "Matrix:" +msgstr "Matrix" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Променлива" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, fuzzy, kde-format +msgid "Name" +msgstr "Име" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Минимум:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Максимум:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, fuzzy, kde-format +msgid "Run Script" +msgstr "Изпълнение на скрипт" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, fuzzy, kde-format +msgid "Variables:" +msgstr "Променливи" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, fuzzy, kde-format +msgid "General" +msgstr "Общи" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Изпълним файл:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, fuzzy, kde-format +msgid "Enabled" +msgstr "Включено" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Документация" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Грешка: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Функции" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, fuzzy, kde-format +msgid "Title" +msgstr "Заглавие" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, fuzzy, kde-format +msgid "Expression" +msgstr "израз" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Добавяне" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, fuzzy, kde-format +msgid "Remove" +msgstr "Премахване" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, fuzzy, kde-format +msgid "Clear List" +msgstr "Изчистване на списъка" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Стил" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, fuzzy, kde-format +msgid "Lines" +msgstr "Редове" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Точки" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Хистограма" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Стъпки" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, fuzzy, kde-format +msgid "Dots" +msgstr "Точка" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, fuzzy, kde-format +msgid "Smoothing" +msgstr "Изглаждане:" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, fuzzy, kde-format +msgid "None" +msgstr "Без" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, fuzzy, kde-format +msgid "Sa&mpling rate" +msgstr "Дискретизация" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, fuzzy, kde-format +msgid "Options" +msgstr "Настройки" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, fuzzy, kde-format +msgid "Legend position" +msgstr "Разположение на легендата:" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Отгоре вляво" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Отгоре вдясно" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Отдолу вляво" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Отдолу вдясно" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Отвън" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, fuzzy, kde-format +msgid "Use Colors" +msgstr "&Използване на цветове" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Настройки на файл" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Тип файл" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, fuzzy, kde-format +msgid "PS" +msgstr "Пс" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, fuzzy, kde-format +msgid "EPS" +msgstr "eps" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, fuzzy, kde-format +msgid "SVG" +msgstr "SV&G" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, fuzzy, kde-format +msgid "FIG" +msgstr "фиг." + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, fuzzy, kde-format +msgid "missing %1" +msgstr "Липсва" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "ГРЕШКА" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, fuzzy, kde-format +msgid "WARNING" +msgstr "Предупреждение" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, fuzzy, kde-format +msgid "Function: %1" +msgstr "Функция" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "израз" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, fuzzy, kde-format +msgid "option" +msgstr "Опция" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "стойност" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "цяло число" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "булев" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, fuzzy, kde-format +msgid "number" +msgstr "Число:" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, fuzzy, kde-format +msgid "default: %1" +msgstr "По подразбиране" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, fuzzy, kde-format +msgid "file" +msgstr "&Файл" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, fuzzy, kde-format +msgid "Decimal" +msgstr "Де&сетичен" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Точно" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Pure" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, fuzzy, kde-format +msgid "Scientific" +msgstr "Научни" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Точност" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, fuzzy, kde-format +msgid "Radians" +msgstr "%1 радиана" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Градуси" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, fuzzy, kde-format +msgid "Gradians" +msgstr "%1 градиан" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, fuzzy, kde-format +msgid "Sampling rate:" +msgstr "Дискретизация" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Стъпки" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, fuzzy, kde-format +msgid "Legend Position:" +msgstr "Разположение на легендата:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Показване на мрежа:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Добавяне на нов запис" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Името не може да бъде празно." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, fuzzy, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Промяна" + +#: backends/qthelpconfig.cpp:275 +#, fuzzy, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Изтриване" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, fuzzy, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Име" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Път" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Добавяне" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Икона:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Име:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, fuzzy, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Въведете име." + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Път:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, fuzzy, kde-format +msgid "Error opening file %1" +msgstr "Грешка при отваряне на файла." + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Отваряне на файл" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "" + +#: cantor.cpp:149 +#, fuzzy, kde-format +msgid "&Open Example" +msgstr "Отваряне на &пример..." + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +msgstr[1] "" + +#: cantor.cpp:315 +#, fuzzy, kde-format +msgid "Error" +msgstr "Грешка" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, fuzzy, kde-format +msgid "Session %1" +msgstr "Сесия" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Изчисляване..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, fuzzy, kde-format +msgid "Ready" +msgstr "Готово" + +#: cantor.cpp:480 +#, fuzzy, kde-format +msgid "Changed" +msgstr "Променени:" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Запис на проект" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Форматиране" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, fuzzy, kde-format +msgid "Export to LaTeX" +msgstr "Експортиране като ф&айл Latex..." + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, fuzzy, kde-format +msgid "Zoom" +msgstr "Мащаб" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "" + +#: cantor_part.cpp:225 +#, fuzzy, kde-format +msgid "Syntax Highlighting" +msgstr "Акцентиране на синтаксиса" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Завършване" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Номериране на редове" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Анимации" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Запазване като" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, fuzzy, kde-format +msgid "Save" +msgstr "Запазване" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, fuzzy, kde-format +msgid "Restart %1?" +msgstr "Рестартиране" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "" + +#: cantor_part.cpp:690 +#, fuzzy, kde-format +msgid "Initializing..." +msgstr "Стартиране..." + +#: cantor_part.cpp:748 +#, fuzzy, kde-format +msgid "[read-only]" +msgstr "Само за четене" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, fuzzy, kde-format +msgid "&Edit" +msgstr "&Редактиране" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, fuzzy, kde-format +msgid "&View" +msgstr "&Изглед" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Настройки" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Файл" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, fuzzy, kde-format +msgid "&New" +msgstr "&Нов" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, fuzzy, kde-format +msgid "Panels" +msgstr "&Панели" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, fuzzy, kde-format +msgid "&Settings" +msgstr "&Настройки" + +#: commandentry.cpp:120 +#, fuzzy, kde-format +msgid "Background Color" +msgstr "Цвят на фона" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +msgid "Default" +msgstr "По подразбиране" + +#: commandentry.cpp:151 +#, fuzzy, kde-format +msgid "Text Color" +msgstr "Цвят на текста" + +#: commandentry.cpp:176 +#, fuzzy, kde-format +msgid "Font" +msgstr "Шрифт" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Получер" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Курсив" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, fuzzy, kde-format +msgid "Select" +msgstr "Избиране" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Връщане към подразбиране" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +msgid "Show Help" +msgstr "Показване на помощ" + +#: commandentry.cpp:356 +#, fuzzy, kde-format +msgid "Appearance" +msgstr "Външен вид" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, fuzzy, kde-format +msgid "Find:" +msgstr "Търсене:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, fuzzy, kde-format +msgid "&Next" +msgstr "&Следващ" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, fuzzy, kde-format +msgid "&Previous" +msgstr "&Предишен" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, fuzzy, kde-format +msgid "Replace:" +msgstr "Замяна:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, fuzzy, kde-format +msgid "&Replace" +msgstr "Заместване" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Замяна на &всички" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Търсене в:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, fuzzy, kde-format +msgid "&Match case" +msgstr "Зачитане на регистъра" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Фамилия на шрифта:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Размер на шрифта:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Глава" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Раздел" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Подраздел" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +msgid "Paragraph" +msgstr "Параграф" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Подпараграф" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Тънък" + +#: horizontalruleentry.cpp:303 +#, fuzzy, kde-format +msgid "Medium" +msgstr "Среден" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Цвят на линия" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +msgid "Images (%1)" +msgstr "Изображения" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, fuzzy, kde-format +msgid "Image Settings" +msgstr "Изображение" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, fuzzy, kde-format +msgid "Open" +msgstr "Отваряне" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, fuzzy, kde-format +msgid "Width" +msgstr "Широчина" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Височина" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, fuzzy, kde-format +msgid "Preview" +msgstr "Преглед" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Размер за отпечатване" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Изображение" + +#: imagesettingsdialog.cpp:40 +#, fuzzy, kde-format +msgid "(auto)" +msgstr "Автоматично" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Отворен файл с изображение" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Стойност" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "От:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, fuzzy, kde-format +msgid "To:" +msgstr "До:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, fuzzy, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Разработка" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Интерфейс" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "" + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Документ за отваряне." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Влизане в режим на редактиране" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "" + +#: pagebreakentry.cpp:28 +#, fuzzy, kde-format +msgid "--- Page Break ---" +msgstr "Край на страница" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, fuzzy, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Затваряне" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, fuzzy, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Преминаване към следващото съвпадение" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, fuzzy, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Преход към предишно съвпадение" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Всички поддържани файлове" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Всички файлове" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, fuzzy, kde-format +msgid "Name:" +msgstr "Име:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Стойност:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, fuzzy, kde-format +msgid "Case Sensitive" +msgstr "Чувствителен регистър" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +msgid "Load file" +msgstr "Зареждане на файл..." + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Не е намерен" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" +msgstr[1] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Команди" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Резултати" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Грешки" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Текст" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "Стартиране:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Акцентиране на синтаксиса" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +msgid "Show line numbers" +msgstr "&Номериране на редовете" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +msgid "Line numbers" +msgstr "Номериране на редове" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Търсене…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Показване на Html" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Показване на HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "" + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Грешка при запис на файла %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Отваряне на файл" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Преобразуване в" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Команда" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, fuzzy, kde-format +msgid "Image" +msgstr "Изображение" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Край на страница" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Хоризонтална линия" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Вмъкване след" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Вмъкване преди" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Вмъкване" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Увеличаване" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Намаляване" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Оригинален размер" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Цвят на &текст..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Цвят" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "&Открояване на текст..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Шрифт" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "&Размер на шрифта" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Получер" + +#: worksheet.cpp:2099 +#, fuzzy, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Курсив" + +#: worksheet.cpp:2111 +#, fuzzy, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Подчертаване" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Зачертан" + +#: worksheet.cpp:2133 +#, fuzzy, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "&Ляво подравняване" + +#: worksheet.cpp:2136 +#, fuzzy, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Ляво" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "&Центрирано" + +#: worksheet.cpp:2146 +#, fuzzy, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Център" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "&Дясно подравняване" + +#: worksheet.cpp:2156 +#, fuzzy, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Дясно" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Двустранно подравняване" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Двустранно" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "" + +#: worksheetentry.cpp:67 +#, fuzzy, kde-format +msgid "White" +msgstr "Празни" + +#: worksheetentry.cpp:67 +#, fuzzy, kde-format +msgid "Black" +msgstr "Черно" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Тъмночервен" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +msgid "Red" +msgstr "Червено" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Тъмнозелен" + +#: worksheetentry.cpp:69 +#, fuzzy, kde-format +msgid "Green" +msgstr "Зелено" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, fuzzy, kde-format +msgid "Dark Blue" +msgstr "Тъмно синьо" + +#: worksheetentry.cpp:70 +#, fuzzy, kde-format +msgid "Blue" +msgstr "Синьо" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Светло синьо" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Тъмножълт" + +#: worksheetentry.cpp:71 +#, fuzzy, kde-format +msgid "Yellow" +msgstr "Жълто" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Тъмен циан" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Циан" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Тъмна магента" + +#: worksheetentry.cpp:73 +#, fuzzy, kde-format +msgid "Magenta" +msgstr "Магента" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +msgid "Orange" +msgstr "Ориндж" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Сиво" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, fuzzy, kde-format +msgid "Move Up" +msgstr "Преместване нагоре" + +#: worksheetentry.cpp:429 +#, fuzzy, kde-format +msgid "Move Down" +msgstr "Преместване надолу" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, fuzzy, kde-format +msgid "Remove Entry" +msgstr "Премахване на запис" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "" diff --git a/po/bs/cantor.po b/po/bs/cantor.po new file mode 100644 index 0000000..fe94541 --- /dev/null +++ b/po/bs/cantor.po @@ -0,0 +1,5071 @@ +# Bosnian translation for kdeedu +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the kdeedu package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: kdeedu\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2014-01-31 20:51+0100\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"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" +"X-Generator: Launchpad (build 16807)\n" +"X-Launchpad-Export-Date: 2013-10-19 05:16+0000\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Senad Mulaosmanović,Alem Spaho,Samir Ribić,Vedran Ljubovic" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" +"sen@etf.ba,as15355@etf.unsa.ba,samir.ribic@etf.unsa.ba,vljubovic@smartnet.ba" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pauza" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Start" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Stop" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Spasi rezultat" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Napredno crtanje" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Crtaj" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Izraz:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Dodatne opcije:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Crtaj:" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Aktivna opcija" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Izračunaj" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Nađi izvod" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Promjenljiva:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Puta: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Paket" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Uvezi paket" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Paket:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integriši" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Donja granica:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Gornja granica:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "određen integral" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Linearna Algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Kreiraj matricu" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Kolone:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Redovi:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Izračunaj svojstvene vrijednosti" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrica:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Izračunaj svojstvene vektore" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Invertuj matricu" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "2D prikaz" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Promjenljiva" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "ime" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimum:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maksimum:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "3D prikaz" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "Prva promjenljiva" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "druga promjenljiva" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Pokreni skriptu" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Riješi jednačinu" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Jednačine:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Promjenljive:" + +#: backendchoosedialog.cpp:64 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Select the Backend" +msgstr "Ponovo pokreni Pozadinu" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"

      %1

      %2

      Vidi %3 za više " +"informacija
      " + +#: backendchoosedialog.cpp:125 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"

      %1

      %2

      Vidi %3 za više " +"informacija
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Postavi ovo kao zadanu pozadinu" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, fuzzy, kde-format +#| msgctxt "the url to the documentation Python 2" +#| msgid "http://docs.python.org/2/" +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "http://docs.python.org/2/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Uključi upravljanje varijablama" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "ugrađen crtež u radni list" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Julia script file (*.jl)" +msgstr "*.R|R skriptna datoteka" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Greška - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Julia process." +msgstr "Neuspjeli pokušaj pokretanja Sage" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Opšte" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Plot Integration:" +msgstr "Integriši" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, fuzzy, kde-format +#| msgid "" +#| "If true, plots will be displayed inside the worksheet. If not they appear " +#| "in a separate window." +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"ako je tačno, crtež će biti prikazan unutar radne stranice. inače u " +"odvojenom prozoru." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Uključeno" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Enable Variable Management" +msgid "Variable Management:" +msgstr "Uključi upravljanje varijablama" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Integrate Plots in Worksheet" +msgid "Internal Plot Format:" +msgstr "Integriraj grafike u radnom listu" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plots" +msgstr "Crtaj" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "PyPlot" +msgstr "Crtaj" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, fuzzy, kde-format +#| msgid "Scripts to autorun" +msgid "Commands to autorun" +msgstr "Skripte za automatsko pokretanje" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documentation" +msgstr "Dokument za otvaranje" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "http://docs.kde.org/stable/en/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Lista skripti koje se pokrećuna početku sesije" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Greška: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to python command" +msgid "Path to luajit command" +msgstr "Staza za python naredbu" + +#: backends/lua/luaextensions.cpp:20 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Lua script file (*.lua)" +msgstr "*.R|R skriptna datoteka" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Path to python2 command:" +msgid "Path to luajit:" +msgstr "Staza za python2 naredbu" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, fuzzy, kde-format +#| msgid "" +#| "Maxima is a system for the manipulation of symbolic and numerical " +#| "expressions, including differentiation, integration, Taylor series, " +#| "Laplace transforms, ordinary differential equations, systems of linear " +#| "equations, polynomials, and sets, lists, vectors, matrices, and tensors. " +#| "Maxima yields high precision numeric results by using exact fractions, " +#| "arbitrary precision integers, and variable precision floating point " +#| "numbers. Maxima can plot functions and data in two and three dimensions. " +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima je sistem za manipulaciju simboličkih i numeričkih izraza, " +"uključujući diferencijaciju, integraciju, Tejlorove redove, Laplasovu " +"transformaciju, uobičajne diferentne jednačine, sisteme linearnih jednačina, " +"polinome, i postavlja, liste, vektore, matrice i tenzore. Maxima postiže " +"precizne numeričke rezultate koristeči tačne razlomke, proizvoljne " +"preciznosti cijelih brojeva, i promjenljive preciznosti realnih brojeva. " +"Maxima moze predstaviti funkcije i podatke u dvije i tri dimenzije. " + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Put do Maxima izvršnog programa" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Greška: Previše */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Greška: Previše /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Greška: očekivano \" bprije ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, fuzzy, kde-format +#| msgid "*.mac|Maxima batch File" +msgid "Maxima batch file (*.mac)" +msgstr "*.mac|Maxima serijska datoteka" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Neuspjeli pokušaj pokretanja Maxime" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima se srušila. restartujem..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima se srušila dva puta u kratkom vremenu. Zaustavljam da bih pokušao " +"ponovno pokretanje" + +#: backends/octave/octavebackend.cpp:62 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Octave, please check if there is a " +#| "translated version (currently Czech and Japanese) and use the correct url" +#| msgid "http://www.gnu.org/software/octave/doc/interpreter/" +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "http://www.gnu.org/software/octave/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, fuzzy, kde-format +#| msgid "" +#| "GNU Octave is a high-level language, primarily intended for numerical " +#| "computations.
      It provides a convenient command line interface for " +#| "solving linear and nonlinear problems numerically, and for performing " +#| "other numerical experiments using a language that is mostly compatible " +#| "with Matlab." +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave je jezik visokog nivoa, prije svega namijenjen za numerička " +"izračunavanja.
      On pruža zgodan interfejs komandne linije za rešavanje " +"numerički linearnih i nelinearnih problema, kao i za obavljanje drugih " +"numeričkih eksperimenata koristeći jezik koji je kompatibilan sa većinom " +"Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, fuzzy, kde-format +#| msgid "*.m|Octave script file" +msgid "Octave script file (*.m)" +msgstr "*.m|Octave skript datoteka" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Sintaksna greška" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, fuzzy, kde-format +#| msgctxt "the url to the documentation Python 2" +#| msgid "http://docs.python.org/2/" +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "http://docs.python.org/2/" + +#: backends/python/pythonbackend.cpp:72 +#, fuzzy, kde-format +#| msgid "" +#| "

      Python is a remarkably powerful dynamic programming language that is " +#| "used in a wide variety of application domains. There are several Python " +#| "packages to scientific programming.

      This backend supports Python 2." +#| "

      " +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"

      Python je primjetno jak dinamički programski jezik korišten u mnogo " +"aplikativnih domena. Ima više Python paketa za naučno programiranje.

      Ova pozadina podržava Python 2.

      " + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, fuzzy, kde-format +#| msgid "*.py|Python script file" +msgid "Python script file (*.py)" +msgstr "*.py|Python skriptna datoteka" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Cantor python server." +msgstr "Neuspjeli pokušaj pokretanja Sage" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "plot.ly" +msgstr "Crtaj" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Dialog za crtanje" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funkcije" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Naslov" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Izraz" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Dodaj" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Ukloni" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Očisti listu" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "promjenjiva X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Stil" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Linije" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Tačke" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Tačke i Linije" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Okviri" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogram" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Koraci" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Svijeća" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Tačke" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Uglađivanje" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Nijedan" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monotono" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Prirodne kubne krive" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezijer" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezijer(monotono)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Rang funkcije" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Rang X" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, fuzzy, kde-format +#| msgid "Sampling rate" +msgid "Sa&mpling rate" +msgstr "Brzina uzorkovanja" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, fuzzy, kde-format +#| msgid "Step size" +msgid "Step si&ze" +msgstr "Veličina koraka" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Opcije" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Naslov crteža" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Oznake na x osi" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Oznake na y osi" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Legenda pozicije" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Sakrij legendu" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Gore - lijevo" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Gore - desno" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Dolje - lijevo" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Dolje - desno" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Ispod" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Izvan" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Prikaži mrežu" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Prikaži cijeli rub" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Upotrijebi boje" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Prikaži u liniji" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logaritamska x skala" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logaritamska y skala" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Opcije datoteke" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Snimi sliku u datoteku" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Vrsta datoteke" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Odredi iz naziva datoteke" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, fuzzy, kde-format +#| msgid "" +#| "Qalculate! is not your regular software replication of the cheapest " +#| "available calculator. Qalculate! aims to make full use of the superior " +#| "interface, power and flexibility of modern computers. The center of " +#| "attention in Qalculate! is the expression entry. Instead of entering each " +#| "number in a mathematical expression separately, you can directly write " +#| "the whole expression and later modify it. The interpretation of " +#| "expressions is flexible and fault tolerant, and if you nevertheless do " +#| "something wrong, Qalculate! will tell you so. Not fully solvable " +#| "expressions are however not errors. Qalculate! will simplify as far as it " +#| "can and answer with an expression. In addition to numbers and arithmetic " +#| "operators, an expression may contain any combination of variables, units, " +#| "and functions." +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! nije obična softwerska replika najjeftinijeg dostupnog " +"kalkulatora. Qalculate! teža punoj upotrebi nadmoćnog interfejsa, snazi i " +"prilagodljivosti modernim kompjuterima. Centar pažnje Qalculate! je u " +"potpunosti na izrazima. Umjesto unošenja svakog roja u matematički izraz " +"odvojeno, možete direktno napisati cijeli izraz i kasnije ga modifikovati." +"Interpetacija izraza je prilagodljiva i otporna na (sitne) greške i ako " +"pogriješite Qalculate! će Vam to raći. Nisu svi izrazi u potpunosti rješivi " +"bez greški. Qalculate! će pojednostaviti dok ne bude u mogućnosti da ga " +"izračuna.Osim brojeva i aritmetičkih operatora, izraz može sadržavati bilo " +"koju kombinaciju varijabli, jedinica, i funkcija" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Ako i kako se jedinice automatski konvertuju. Ako je tačno konvertuje se u " +"mjernu jedinicu iz SI sistema koja je najprikladnija (najmanjim iznosom " +"jedinica)" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Podrazumjevani ugao mjere za trigonometrijske funkcije" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Baza parsiranja i izračunavanja brojeva" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Rezultat će biti pojednostavljen ili faktorisan" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Racionalni brojevi bit će prikazani sa zarezom, kao razlomokom ili nečim " +"između" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Prikaži da red cifri broja se nastavlja u beskraj sa tri tačke umjesto " +"zaokruživanja (npr. 2/3 displays as 0.666666... umjesto 0.666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Upotrebi sve decimalne SI prefikse. Ako nije označeno prefiksi koji se ne " +"mogu množit sa hiljadu (centi, deci, deca, hecto) se neće automatski " +"koristiti" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Ako je tačno, negativni eksponenti će biti korišteni umjesto dijeljenja (npr " +"5/x^2 postaje 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Brojčani displej" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"ako je tačno, crtež će biti prikazan unutar radne stranice. inače u " +"odvojenom prozoru." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Da li treba boje koristi u crtežima" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Da li treba mreža biti na slici" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Da li treba puni rub biti izvućen oko crteža" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Širina linija u pikselima" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Broj interpolacijskih koraka koji su korišteni za crtanje" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Mod za presemplovanje u crtanju" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Stil crteža" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Legenda pozicije u crtežima" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate izvještava da ne može štampati. Da li je gnuplot instaliran?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "nedostaje %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 mora biti broj" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 mora biti cijeli broj" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 mora biti tipa bool" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "Nemoguća opcija za %1:%2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "pronađeno više izraza u jednoj komandi za crtanje (%1 i %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "GREŠKA" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "UPOZORENJE" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Nema funkcije, promjenjive ili mjerne jedinici sa navedenim imenom" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funkcija: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Interfejs za ctanje" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "Crta jednu ili više funkcija ili zajedno ili u odvojenom prozoru" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "izraz" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "Opcija" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "vrijednost" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "cijeli broj" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "logička vrijednost" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "broj" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "Podrazumjevano: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Ime funkcije" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Naziv oznake" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "oznake na x osi" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "oznake na y osi" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Slika za spasiti crtež u. Ako je prazna pokazuje crtež u prozoru na " +"zaslonu. Ako je inline = istinito prikazuje se bez obzira na tu opciju." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Format slike za snimanje. (jedno od auto, png, ps, eps, latex, svg, fig.)" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "Postaviti na Tačno za štampanje boja, Netačno za jednobojnu štampu" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "najmanja vrijednost na x osi" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Najveća vrijednost na x osi" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Da li će logaritamska skala biti korištena za x osu." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Da li će logaritamska skala biti korištena za y osu." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Logaritamska osnova za x osu." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Logaritamska osnova za y osu." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Da li je biti prikazana mreža na crtežu" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "Ako crtež će biti okružen granicama na sve strane (a ne samo ose)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Širina linija" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Mjesto gdje će legenda biti smještena. Jedno od nigdje, gore_lijevo, " +"dolje_desno, dolje_lijevo, dolje_desno, ispot, vani" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Presemlovanje crteža. Jedno od nikako, jednoznačno, csplines(povezivanje " +"svih tačaka glatko), berizier,sbezier (učini funkciju glatkom i " +"jednoznačnom, a zatim na nju primjenjuje berierov algoritam)" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Vrsta crteža. Jedno od linija, tačaka, tačkastih_linija, okvira, histograma, " +"koraka, svijećnika, tačaka." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Upotreba skale na drugoj x osi." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Upotreba skale na drugoj y osi." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Ako crtež mora biti izvučeni u istom prozoru, umjesto u novom prozoru." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Udaljenost između dvije interpolirane tačke. Takođe pogledajte korake" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Broj interpoliranih tački. Takođe pogledajte korak." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Ime promjenjive x. Ovo mora biti nepoznata vrijednost." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Snimi promjenjive u datoteku" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Snimi sve trenutno definisane promjenjive u datoteku. One mogu biti ponovo " +"očitane sa %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "datoteka" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "datoteka: datoteka za snimanje u" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Očitaj promjenjive iz datoteke" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Očitaj promjenjive iz datoteke koja je ranije napravljena s %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "Datoteka: datoteka za očitavanje" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Baza broja (npr binarna, oktalna, decimalna)" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Format razlomka" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Decimalni" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Tačno" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "razlomački" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Kombinovano" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Prikaz brojeva:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "čisto" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Naučni" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Tačnost" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Prikaz beskonačnog reda" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Upotrijebi sve SI prefike" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Upotreba negativnih eksponenata" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Procijeni" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Pretvori u odgovarajuću SI jednicu" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radijani" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Stepeni" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradijani" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Mod za strukturiranje" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Pojednostavi" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Faktoriši" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Jedinica ugla:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Iscrtavanje" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Prikazuje crtež inline" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Prikazuje pune granice" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Širina linija" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Brzina uzorkovanja:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Mod za presemplovanje" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Prirodne kubne krive" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Koraci" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Legenda pozicije" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Obojen crtež" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Prikaži mrežu:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Stil crteža" + +#: backends/qthelpconfig.cpp:45 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Unos komande" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Dodaj novu varijablu" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Path to python2 command:" +msgid "Add local documentation" +msgstr "Staza za python2 naredbu" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Document to open" +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Dokument za otvaranje" + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Path to python2 command:" +msgid "Download additional documentations" +msgstr "Staza za python2 naredbu" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Naziv" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, fuzzy, kde-format +#| msgid "Add" +msgctxt "@action:button" +msgid "Add" +msgstr "Dodaj" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Ponovo pokreni Pozadinu" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name:" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Naziv:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, fuzzy, kde-format +#| msgid "" +#| "R is a language and environment for statistical computing and graphics, " +#| "similar to the S language and environment.
      It provides a wide " +#| "variety of statistical (linear and nonlinear modelling, classical " +#| "statistical tests, time-series analysis, classification, clustering, ...) " +#| "and graphical techniques, and is highly extensible. The S language is " +#| "often the vehicle of choice for research in statistical methodology, and " +#| "R provides an Open Source route to participation in that activity." +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R je jezik i okruženje za statističko računarstvo i grafiku, sličan S jeziku " +"i okruženju.
      Pruža široku paletu statističke( linearnog i nelinearnog " +"modeliranja, klasičnog statističkog testa, analize vremenske serije," +"klasifikacije, grupisanja,...) i grafičke tehnike, i vrlo je proširiv. S " +"jezik je često sredstvo za istraživanje u statističkoj metodologiji, a R " +"pruža Open Sorce put za sudjelovanje u toj aktivnosti." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Greška pri otvaranju datoteke %1" + +#: backends/R/rextensions.cpp:22 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "R script file (*.R)" +msgstr "*.R|R skriptna datoteka" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Greška rasčlanjivanje komande" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Dvaput kliknite da biste otvorili dijalog za izbor datoteke" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R izvorne datoteke (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, fuzzy, kde-format +#| msgid "" +#| "Sage is a free open-source mathematics software system licensed under the " +#| "GPL.
      It combines the power of many existing open-source packages " +#| "into a common Python-based interface." +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage je besplatni open-source matematički softverski sistem licenciran pod " +"GPL.
      On kombinira snagu mnogih postojećih paketa u zajednički Python-" +"bazirani interfejs." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Put do Sage izvršne" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Uključi LaTeX slaganje" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Rezultat od %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Posljednji izlaz je bio:\n" +"%2" + +#: backends/sage/sageextensions.cpp:32 +#, fuzzy, kde-format +#| msgid "" +#| "*.py|Python script file\n" +#| "*.sage|Sage script file" +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" +"*.py|Python skriptna datoteka\n" +"*.sage|Sage skriptna datoteka" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Sage process se srušio dok je procjenjivao ovaj izraz" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Sage process se srušio" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Sage proces zatvoren tokom računanja izraza" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Sage proces izašao" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Neuspjeli pokušaj pokretanja Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting:" +msgstr "Uključi LaTeX slaganje" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Scilab, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.scilab.org/support/documentation" +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "http://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, fuzzy, kde-format +#| msgid "" +#| "

      Warning: this backend works only with Scilab version 5.5 or " +#| "later

      Scilab is a free software, cross-platform numerical " +#| "computational package and a high-level, numerically oriented programming " +#| "language.

      Scilab is distributed under CeCILL license (GPL compatible)" +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"

      Upozorenje: ovo pozadina radi samo sa Scilab verziju 5.5 ili " +"novijim

      Scilab je besplatni softver, više-platformski numerička " +"računalni paket i brojčano orijentisani programski jezik visokog nicoa.

      " +"Scilab se distribuira pod CeCILL licensom (GPL kompatibilna)" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to the Sage executable" +msgid "Path to the Scilab executable" +msgstr "Put do Sage izvršne" + +#: backends/scilab/scilabextensions.cpp:23 +#, fuzzy, kde-format +#| msgid "" +#| "*.sce|Scilab script file\n" +#| "*.sci|Scilab function file" +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +"*.sce|Scilab skriptna datoteka\n" +"*.sci|Scilab funkcijska datoteka" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Open file" +msgstr "Otvori datoteku slike" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "Download Example Worksheets" +msgid "Download Examples" +msgstr "Preuzmite primjer radnih listova" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Otvori primjer" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Pozadina nije pronađena

      \n" +"
      Mogli bi ste pokušati:\n" +"
      • Promjenu podeÅ¡avanja u konfiguracijskom dijalogu;
      • " +"
      • Instaliranjem paketa za sljedeći program:
      • %2
      " +msgstr[1] "" +"

      Pozadina nije pronađena

      \n" +"
      Mogli bi ste pokušati:\n" +"
      • Promjenu podeÅ¡avanja u konfiguracijskom dijalogu;
      • " +"
      • Instaliranjem paketa za jedan od sljedećih programa:
      • %2
      " +msgstr[2] "" +"

      Pozadina nije pronađena

      \n" +"
      Mogli bi ste pokušati:\n" +"
      • Promjenu podeÅ¡avanja u konfiguracijskom dijalogu;
      • " +"
      • Instaliranjem paketa za jedan od sljedećih programa:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Greška" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Pozadina %1 nije instalirana" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sesija %1" + +#: cantor.cpp:386 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to find the Cantor Part with error %1" +msgstr "Nemogu da nađem Cantor dio." + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Računam..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Spreman" + +#: cantor.cpp:480 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Changed" +msgstr "Rang X" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Close Cantor" +msgstr "Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save Project" +msgstr "Spasi rezultat" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "Plotting" +msgid "Formatting" +msgstr "Iscrtavanje" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Pozadina koja je koristena kao zadana" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Postavi tip kao da je unaprijed zadan" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Uradi sintaksno isticanje kao unaprijed zadano" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Uključi dovršavanje kao unaprijed zadano" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Uključi brojanje izraza kao unaprijed zadano" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Normalno animiraj promjene u radnom listu" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Automatski ponovo procjeni unos ispod trenutnog" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Snimi kao obični tekst" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Izvezi u LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Procjeni radni list" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Štampa pomoću LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Sintaksno isticanje" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Dovršavanje" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Brojevi linija:" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Functions" +msgid "Animations" +msgstr "Funkcije" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Ponovo pokreni Pozadinu" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Procjeni ulazne podatke" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Ubacivanje komandnog unosa" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Ubacivanje tekstualnog unosa" + +#: cantor_part.cpp:278 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Insert Markdown Entry" +msgstr "Ubacivanje komandnog unosa" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Ubaci LaTeX element" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Ubaci kraj strane" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Dodaj Sliku" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Expand All Results" +msgstr "Rezultati" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove All Results" +msgstr "Ukloni rezultate" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Odstrani trenutne ulazne podatke" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Pokaži skriptni Urednik" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Prikaži dovršavanje" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "Cantor dio" + +#: cantor_part.cpp:406 +#, fuzzy, kde-format +#| msgid "(C) 2009-2013 Alexander Rieder" +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2013 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, fuzzy, kde-format +#| msgid "*.cws|Cantor Worksheet" +msgid "Cantor Worksheet (*.cws)" +msgstr "*.cws|Cantor Radni list" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save as" +msgstr "Spasi rezultat" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Restart %1?" +msgstr "Ponovo pokreni Pozadinu" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Prekid" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Sesija Greška: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Inicijalizacija završena" + +#: cantor_part.cpp:690 +#, fuzzy, kde-format +#| msgid "Initializing Session" +msgid "Initializing..." +msgstr "Inicijalizacija Sesije" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Da li želite da učitate trenutni radni list na javni web server?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Pitanje - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Radni list nije spašen. Trebali bi ste da ga spasite prije učitavanja." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Upozorenje - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Pozadina nepodržava skripte." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Izmijeni" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Prikaz" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Radni list" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "&Postavke" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Datoteka" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Nova" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Paneli" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Postavke" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "Default" +msgstr "Podrazumijevano" + +#: commandentry.cpp:151 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Text &Color..." +msgid "Text Color" +msgstr "&Boja teksta..." + +#: commandentry.cpp:176 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "&Font" +msgid "Font" +msgstr "&Font" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, fuzzy, kde-format +#| msgctxt "@action boldify selected text" +#| msgid "&Bold" +msgid "Bold" +msgstr "&Podebljano" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, fuzzy, kde-format +#| msgctxt "@action italicize selected text" +#| msgid "&Italic" +msgid "Italic" +msgstr "&Kurziv" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Show Results" +msgstr "Rezultati" + +#: commandentry.cpp:338 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Hide Results" +msgstr "Rezultati" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Help" +msgstr "Prikaži %1 Pomoć" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Prekinuto" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Traka za pretragu" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Nađi:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Nova" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Prethodna" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Zamijeni:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Zamijeni" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Zamijeni &Sve" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Traži u:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Razlikuj veličinu slova" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Font &Size" +msgid "Font Size:" +msgstr "Veličina fonta" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Section" +msgstr "funkcija" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Subsection" +msgstr "funkcija" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Plot Style:" +msgid "Dot Line Style" +msgstr "Stil crteža" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgid "Use Colors" +msgid "Line Color" +msgstr "Upotrijebi boje" + +#: horizontalruleentry.cpp:351 +#, fuzzy, kde-format +#| msgid "Style" +msgid "Line Style" +msgstr "Stil" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "konfigurisati sliku" + +#: imageentry.cpp:256 +#, fuzzy, kde-format +#| msgid "Double click to open file selection dialog" +msgid "Double click here to configure image settings" +msgstr "Dvaput kliknite da biste otvorili dijalog za izbor datoteke" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Ne mogu učitati sliku %1" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Spasi rezultat" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Image" +msgid "Images (%1)" +msgstr "Slika" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Podešavanje slike" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Otvori" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Prikaži veličinu" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Širina" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Visina" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, fuzzy, kde-format +#| msgid "&Previous" +msgid "Preview" +msgstr "&Prethodna" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Veličina štampe" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Upotrijebi veličinu prikaza" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Podešavanje slike" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(auto)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Otvori datoteku slike" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Prikaži LaTex kod" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Put do latex izvršne" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Put do dvips izvršne" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Vrijednost" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "X variable" +msgid "" +msgstr "promjenjiva X" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Od:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Do:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Glavni naslov" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Skala abscise" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Skala ordinate" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Naslov crtanja:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDE sučelja za matematičke operacije" + +#: main.cpp:74 +#, fuzzy, kde-format +#| msgid "(C) 2009-2013 Alexander Rieder" +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2013 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, fuzzy, kde-format +#| msgid "Scilab and Python backends" +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Scilab i Python pozadine." + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, fuzzy, kde-format +#| msgid "Alexander Rieder" +msgid "Alexander Semke" +msgstr "Alexander Rieder" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlegebra pozadina" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave pozadina" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Kuttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Interfejs" + +#: main.cpp:86 main.cpp:87 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor icon" +msgstr "Cantor" + +#: main.cpp:92 +#, fuzzy, kde-format +#| msgid "Use this backend" +msgid "Use backend " +msgstr "Koristi ovu pozadinu" + +#: main.cpp:95 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documents to open." +msgstr "Dokument za otvaranje" + +#: main.cpp:130 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1" +msgstr "Greška pri otvaranju datoteke %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, fuzzy, kde-format +#| msgid "Syntax Error" +msgid "Cantor Math Error" +msgstr "Sintaksna greška" + +#: markdownentry.cpp:796 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Nemogu da nađem Cantor dio." + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Nova strana ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, fuzzy, kde-format +#| msgid "&Match case" +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "&Razlikuj veličinu slova" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor files" +msgstr "Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Jupyter files" +msgstr "Otvori datoteku slike" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, fuzzy, kde-format +#| msgid "file" +msgid "All files" +msgstr "datoteka" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Naziv:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Vrijednost:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgid "Add New Variable" +msgstr "Dodaj novu varijablu" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Učitaj varijable" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Save Variables" +msgstr "Smjesti varijable" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Remove Variables" +msgstr "Smjesti varijable" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, fuzzy, kde-format +#| msgid "SearchBar" +msgid "Search/Filter" +msgstr "Traka za pretragu" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Da li ste sigurni da želite ukloniti sve varijable" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +#| msgid "Loading failed." +msgid "Load file" +msgstr "Očitanjavnje nije uspjelo" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Spasi rezultat" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Ukloni rezultate" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"KDE tekst editor komponenta nije pronađena.\n" +"Molim provjerite vašu KDE instalaciju." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Urednik skripti" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Urednik skripti - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Nije nađeno" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Dosegnut početak" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Dosegnut kraj" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Zamijenjena %1 kopija" +msgstr[1] "Zamijenjene %1 kopije" +msgstr[2] "Zamijenjeno %1 kopija" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Komande" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Rezultati" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Greške" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Tekst" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX kod" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "Start" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Podrazumijevana pozadina:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "&Radni list" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "Uključi LaTeX slaganje" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting" +msgstr "Uključi LaTeX slaganje" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Uključi bojenje sintakse" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Sintaksno isticanje" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "Uključi dovršavanje" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Brojevi linija:" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Brojevi linija:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "ugrađen crtež u radni list" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Jednačine:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "Ponovo provjeri ulazne podatke automatski" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown:" +msgstr "Ubacivanje komandnog unosa" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "Uključi LaTeX slaganje" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, fuzzy, kde-format +#| msgid "Find:" +msgid "Find…" +msgstr "Nađi:" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert to Text Entry" +msgstr "Ubacivanje tekstualnog unosa" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Copy result" +msgstr "Ukloni rezultate" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Prikaži izvršene" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Prikaži kod" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show HTML Code" +msgstr "Prikaži kod" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Html" +msgstr "Prikaži %1 Pomoć" + +#: textresultitem.cpp:90 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show HTML" +msgstr "Prikaži %1 Pomoć" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Nemogu napraviti Eps datoteku. Možda će vam trebati dodatni paketi" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Spasi rezultat" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Ne može pisati datoteku %1" + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, fuzzy, kde-format +#| msgid "Cannot write file %1." +msgid "Cannot write file." +msgstr "Ne može pisati datoteku %1" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Greška pri spašavanju datoteke %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Greška u učitavanju latex.xsl stila" + +#: worksheet.cpp:1327 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1." +msgstr "Greška pri otvaranju datoteke %1" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Open File" +msgstr "Otvori datoteku slike" + +#: worksheet.cpp:1350 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the selected file for reading." +msgstr "Greška pri otvaranju datoteke %1" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Postoje problemi sa %1 pozadinom,\n" +"molimo vas provjerite konfiguraciju ili instalirajte potrebne pakete.\n" +"Samo ste u mogućnosti pogledati ovaj radni list." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert To" +msgstr "Ubacivanje tekstualnog unosa" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Commands" +msgid "Command" +msgstr "Komande" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown" +msgstr "Ubacivanje komandnog unosa" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Slika" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Prelom stranice" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, fuzzy, kde-format +#| msgid "Points and Lines" +msgid "Horizontal Line" +msgstr "Tačke i Linije" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +#| msgid "Drag Entry" +msgid "Hierarchy Entry" +msgstr "Prevuci element" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Insert After" +msgstr "Ubacivanje tekstualnog unosa" + +#: worksheet.cpp:1856 +#, fuzzy, kde-format +#| msgid "Insert Before" +msgid "Insert Before" +msgstr "Ubaci prije" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Ubaci" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "Veličina štampe" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Move Entries Down" +msgstr "Ubacivanje tekstualnog unosa" + +#: worksheet.cpp:1933 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate Entries" +msgstr "Procjeni ulazne podatke" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Entries" +msgstr "Ukloni stavku" + +#: worksheet.cpp:1947 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Collapse Command Entry Results" +msgstr "Ubacivanje komandnog unosa" + +#: worksheet.cpp:1948 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Expand Command Entry Results" +msgstr "Unos komande" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Remove Command Entry Results" +msgstr "Unos komande" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Scripts to autorun" +msgid "Add Command Entry To Execution" +msgstr "Skripte za automatsko pokretanje" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "&Boja teksta..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Boja" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "&Isticanje teksta..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Font" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Veličina fonta" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Podebljano" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Kurziv" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Podvučeno" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Precrtano" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Poravnaj &Lijevo" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Lijevo" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Poravnaj &Centrirano" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Centrirano" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Poravnaj &Desno" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Desno" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Obostrano" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Obostrano poravnaj" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove all results" +msgstr "Ukloni rezultate" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +#| msgid "Ready" +msgid "Red" +msgstr "Spreman" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Dark Orange" +msgstr "Rang X" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Orange" +msgstr "Rang X" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Light Orange" +msgstr "Rang X" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, fuzzy, kde-format +#| msgid "Do you also want to export the images?" +msgid "Do you really want to remove this entry?" +msgstr "Da li želite proslijediti slike?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Ukloni stavku" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Prevuci element" + +#~ msgid "Animate Worksheet" +#~ msgstr "Animiraj radni list" + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Kad je uključeno, Cantor će automatski provjeriti svaki ulazni podatak " +#~ "ispod trenutnog." + +#~ msgid "Defaults" +#~ msgstr "Podrazumijevano" + +#~ msgid "Enable Line Numbers" +#~ msgstr "Broj linija:" + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Uključi animaciju radnih listova" + +#, fuzzy +#~| msgid "Plot" +#~ msgid "Plot.ly" +#~ msgstr "Crtaj" + +#, fuzzy +#~| msgid "Package:" +#~ msgid "Graphic Package: " +#~ msgstr "Paket:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      KDE način za rad Matematike" + +#, fuzzy +#~| msgid "Document to open" +#~ msgid "Documentation:" +#~ msgstr "Dokument za otvaranje" + +#~ msgid "Show %1 Help" +#~ msgstr "Prikaži %1 Pomoć" + +#, fuzzy +#~| msgid "Path to Maxima:" +#~ msgid "Path to Julia:" +#~ msgstr "Staza do Maxima" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Integriraj grafike u radnom listu" + +#~ msgid "Clear Variables" +#~ msgstr "Obriši varijable" + +#~ msgid "Right click here to insert image" +#~ msgstr "Desni klik ovdje za ubacivanje slike" + +#, fuzzy +#~| msgid "Configure Image" +#~ msgid "Choose Image" +#~ msgstr "konfigurisati sliku" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Potvrda - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Unos teksta" + +#~ msgid "LaTeX Entry" +#~ msgstr "Latex unos" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Ubacivanje tekstualnog unosa" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Staza za scilab-adv-cli naredbu (Upozorenje: Scilab verzija mora biti " +#~ "5.4 ili novija )" + +#, fuzzy +#~| msgid "Insert Image" +#~ msgid "Insert Image Attachment" +#~ msgstr "Dodaj Sliku" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Ubaci latek ulaz" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Staza do programa Octave" + +#~ msgid "Path to Maxima:" +#~ msgstr "Staza do Maxima" + +#, fuzzy +#~| msgid "Failed to start Sage" +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Neuspjeli pokušaj pokretanja Sage" + +#~ msgid "Path to Sage:" +#~ msgstr "Staza do Sage" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Staza za scilab-adv-cli naredbu" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Neka Cantor prati kreiranje/uništavanje varijabli" + +#, fuzzy +#~| msgid "Integrate Plots in Worksheet" +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "Integriraj grafike u radnom listu" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Staza do programa Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Staza do Octave" + +#~ msgid "Unnamed" +#~ msgstr "Neimenovano" + +#, fuzzy +#~| msgctxt "the url to the documentation Python 2" +#~| msgid "http://docs.python.org/2/" +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "http://docs.python.org/2/" + +#, fuzzy +#~| msgid "" +#~| "

      Python is a remarkably powerful dynamic programming language that is " +#~| "used in a wide variety of application domains. There are several Python " +#~| "packages to scientific programming.

      This backend supports Python 2." +#~| "

      " +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "

      Python je primjetno jak dinamički programski jezik korišten u mnogo " +#~ "aplikativnih domena. Ima više Python paketa za naučno programiranje.

      Ova pozadina podržava Python 2.

      " + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Izaberite pozadinu za korištenje:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Pozadina sa kojom je ova datoteka generisana nije instalirana. Treba %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Objavi radni list" + +#~ msgid "Waiting for Image..." +#~ msgstr "Čekam sliku..." + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "Ne mogu otvoriti datoteku %1: Nepoznat Mime tip" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|LaTeX dokument" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantor Radni list" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Server za Cantor R pozadinu" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Upotreba:snimiPromjenjive u datoteku" + +#~ msgid "Saving failed." +#~ msgstr "Neuspjelo snimanje" + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Upotreba:ocitajPromjenjive iz datoteke" + +#~ msgid "Loading failed." +#~ msgstr "Očitanjavnje nije uspjelo" + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2013 Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "Staza za python naredbu" + +#~ msgid "Cantor Server for R" +#~ msgstr "Cantor Server za R" + +#~ msgid "Path to python2 command:" +#~ msgstr "Staza za python2 naredbu" + +#~ msgid " Enable Variable Management" +#~ msgstr " Uključi upravljanje varijablama" + +#~ msgid "" +#~ "

      Warning: this backend works only with Scilab version 5.4 or " +#~ "later

      Scilab is a free software, cross-platform numerical " +#~ "computational package and a high-level, numerically oriented programming " +#~ "language.

      Scilab is distributed under CeCILL license (GPL compatible)" +#~ msgstr "" +#~ "

      Upozorenje: ovo pozadina radi samo sa Scilab verziju 5.4 ili " +#~ "novijim

      Scilab je besplatni softver, cross-platforma numerička " +#~ "računalna paket i na visokoj razini, brojčano orijentirano programiranje " +#~ "jezik.

      Scilab se distribuira pod CeCILL licensom (GPL kompatibilna)" + +#~ msgid "(C) 2009-2012 Alexander Rieder" +#~ msgstr "(C) 2009-2012 Alexander Rieder" + +#~ msgid "Scilab backend" +#~ msgstr "Scilab podupirač." diff --git a/po/ca/cantor.po b/po/ca/cantor.po new file mode 100644 index 0000000..d9a4ae6 --- /dev/null +++ b/po/ca/cantor.po @@ -0,0 +1,4803 @@ +# Translation of cantor.po to Catalan +# Copyright (C) 2009-2022 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Orestes Mas , 2009, 2010, 2011, 2012. +# Josep M. Ferrer , 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022. +# Antoni Bella Pérez , 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-08-07 12:01+0200\n" +"Last-Translator: Josep M. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.12.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Orestes Mas Casals" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "orestes@tsc.upc.edu" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pausa" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Inicia" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Atura" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Desa l'animació resultant" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Animacions (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Gràfiques avançades" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Gràfica" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Expressió:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Opcions addicionals:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Gràfiques" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Opció activa" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Calcula" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Deriva" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variable:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Vegades:" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Paquet" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importa un paquet" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Paquet:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integra" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Límit inferior:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Límit superior:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "Integral definida" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "À&lgebra lineal" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Crea una matriu" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Columnes:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Files:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Calcula els autovalors" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matriu:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Calcula els autovectors" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Inverteix la matriu" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Gràfica en 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variable" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Nom" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Mínim:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Màxim:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Gràfica en 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1a. variable" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2a. variable" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Executa un script" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Resol les equacions" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Equacions:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variables:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Selecció del dorsal" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Versió recomanada: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Vegeu %2 per a més informació." + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      No es compleixen completament diversos " +"requisits: %1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Fes-lo el dorsal predeterminat" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia és un llenguatge de programació d'alt nivell i rendiment per a " +"la computació tècnica, amb una sintaxi que és familiar per als usuaris " +"d'altres entorns de computació tècnica. Proporciona un compilador " +"sofisticat, execució en paral·lel distribuïda, precisió numèrica i una " +"extensa biblioteca de funcions matemàtiques." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"El camí al Julia especificat a la configuració de l'aplicació cal que apunti " +"directament a l'executable. No es permeten els enllaços simbòlics. " +"Proporcioneu el camí correcte a la configuració de l'aplicació i torneu-ho a " +"intentar." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"El Сantor no ha pogut determinar la versió del Julia per a %1. Especifiqueu " +"el camí correcte a l'executable del Julia (no es permeten enllaços " +"simbòlics) i torneu a provar-ho." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Esteu intentant usar el Cantor amb el Julia v%1.%2.%3. Aquesta versió del " +"Cantor es va compilar amb el Julia v%4.%5.%6. Apunteu a aquesta versió del " +"Julia o recompileu el Cantor usant la versió %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Camí al Julia natiu REPL" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Habilita la gestió de les variables" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Integra les gràfiques en el full de treball" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Paquet gràfic per a l'assistent «Plot»" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# El Gadfly no admet les gràfiques en 3D" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Fitxer de script del Julia (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Error - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"No s'ha pogut iniciar la sessió amb Julia per un problema intern del " +"«julia», ja que manca el fitxer intern - «%1»" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" +"No s'ha pogut iniciar la sessió amb Julia per un problema intern desconegut" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "El procés del Julia ha aturat el seu funcionament." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Ha fallat en iniciar el procés del Julia." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" +"Ha fallat la comunicació amb el procés del Julia per motius desconeguts." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Actualment està implementat el GR per al Julia (https://gr-framework.org/), " +"un entorn de treball d'aplicacions de visualització. Primer cal instal·lar " +"aquest paquet, si encara no s'ha fet. Per això, executeu Pkg.install(\"GR\") " +"al Cantor o en un REPL del Julia. Cal tenir en compte que aquesta operació " +"pot trigar una estona i és millor portar-la a terme al REPL del Julia que " +"pot mostrar el progrés actual de la instal·lació del paquet." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "General" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Executable:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Integració de les gràfiques:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Si està activat, les gràfiques es mostraran dins del full de treball. " +"Altrament apareixeran en una finestra externa." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Habilitat" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Gestió de les variables:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Controla la creació i destrucció de les variables i mostra les variables " +"existents al plafó de variables." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Format intern de les gràfiques:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" +"Format intern de les gràfiques, si s'ha activat la incrustació de les " +"gràfiques." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Paquet gràfic a utilitzar a l'assistent «Plot»" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Paquet per a l'assistent «Plot»" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Plots" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Executa automàticament" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Ordres a executar automàticament" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Documentació" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra&language=ca" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "" +"Llista de scripts a executar automàticament al començament de la sessió" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Error: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Això executa ordres automàticament, que s'executaran en iniciar un full de " +"treball nou. Poden ser útils per a carregar els mòduls necessaris, canviar " +"l'entorn, etc." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"El Lua és un llenguatge ràpid i lleuger de creació de scripts, amb " +"una sintaxi senzilla de procediment. Hi ha diverses biblioteques en Lua " +"dirigides a les matemàtiques i la ciència." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Camí a l'ordre «luajit»" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Fitxer de script del Lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Camí a «luajit»:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +# skip-rule: barb-igual +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" +"

      Sistema d'ajuda del Maxima

      Funció apropos

      Cerca noms " +"del Maxima que apareixen a qualsevol lloc dins d'ells; name ha de ser " +"una cadena o símbol. Així, apropos(exp) retorna una llista de tots " +"els indicadors i funcions que tenen «exp» com a part del seu nom, com ara " +"expand, exp, i exponentialize. Així, si només es pot " +"recordar part del nom d'una ordre Maxima o variable, es pot utilitzar " +"aquesta ordre per trobar la resta del nom. De la mateixa manera, podeu " +"escriure apropos(tr_) per trobar una llista de molts dels commutadors " +"relacionats amb el traductor, la majoria dels quals comencen per tr_." +"

      apropos(\"\") retorna una llista amb tots els noms del Maxima." +"

      apropos
      retorna la llista buida [], si no es troba cap nom." +"

      Funció describe

      describe(cadena) és equivalent " +"a «describe(cadena, exact)», troba un element amb el títol igual (sense " +"distingir entre minúscules i majúscules) a la cadena, si hi ha algun " +"d'aquests elements.

      describe(cadena, inexact) cerca tots els " +"elements documentats que contenen la cadena en els seus títols. Si hi ha més " +"d'un d'aquests elements, el Maxima demana a l'usuari que seleccioni un " +"element o elements a mostrar.

      ? foo (amb un espai entre ? i foo) és equivalent a describe(\"foo\", exact), i ?? " +"foo és equivalent a describe(\"foo\", inexact)." +"

      describe(, inexact) dona una llista de tots els temes " +"documentats en el manual en línia.

      describe cita el seu " +"argument. describe retorna cert si es troba alguna " +"documentació, altrament fals.

      Funció exampleexample(tema) mostra alguns exemples de tema, que és un " +"símbol o una cadena. Per obtenir exemples d'operadors com if, do, o lambda l'argument ha de ser una cadena, per exemple " +"example(\"do\"). example no distingeix entre majúscules i " +"minúscules. La majoria dels temes són noms de funcions.

      example() retorna la llista de tots els temes reconeguts.

      El nom del fitxer " +"que conté els exemples ve donat per la variable d'opció global " +"manual_demo, que per defecte és \"manual.demo\"." +"

      example cita el seu argument. example retorna fet llevat que no es trobin exemples o no hi ha cap argument, en aquest cas " +"example retorna la llista de tots els temes reconeguts." + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"El Maxima és un sistema per a la manipulació d'expressions " +"simbòliques i numèriques, incloent-hi la derivació, integració, sèries de " +"Taylor, transformades de Laplace, equacions diferencials ordinàries, " +"sistemes d'equacions lineals, polinomis, conjunts, llistes, vectors, matrius " +"i tensors. El Maxima aconsegueix resultats numèrics d'alta precisió gràcies " +"a la utilització de fraccions exactes, enters de precisió arbitrària i " +"nombres de coma flotant de precisió variable. El Maxima pot fer gràfiques de " +"funcions i dades en dues i tres dimensions." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Camí a l'executable «maxima»" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Error: Massa */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Error: Massa /*" + +# skip-rule: t-sp_pc +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Error: s'esperava \" abans de ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "S'està esperant el resultat de la gràfica" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Fitxer de procés per lots del Maxima (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "No s'ha pogut iniciar el Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "El Maxima ha fallat. S'està reiniciant..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"El Maxima ha fallat dues vegades en poc temps. Es deixarà de reintentar " +"l'engegada" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"L'Octave de la GNU és un llenguatge d'alt nivell orientat " +"principalment al càlcul numèric.
      Ofereix una línia d'ordres útil per a " +"resoldre problemes lineals i no lineals numèricament, i per a efectuar " +"altres experiments numèrics emprant un llenguatge que és altament compatible " +"amb el Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Fitxer script de l'Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Error de sintaxi" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Ha fallat la prova d'integració de les gràfiques." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "Es desactivarà la integració de les gràfiques." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"La integració de les gràfiques no funciona perquè el Cantor ha detectat que " +"l'Octave no pot crear gràfiques, ja que no hi ha cap dorsal gràfic per a " +"ell: s'ha arribat a aquesta conclusió per la sortida buida de la funció " +"«available_graphics_toolkits()». Sembla que cal instal·lar paquets " +"addicionals del SO, com el «gnuplot», «fltk» o «qt» per a la possibilitat de " +"crear gràfiques." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"El Python és un llenguatge de programació dinàmic especialment potent " +"que s'empra en una gran varietat de dominis d'aplicació. Hi ha diversos " +"paquets de Python per a la programació científica." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# El Bokeh no admet les gràfiques en 3D" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Fitxer de script en Python (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "El servidor de Python del Cantor ha aturat el seu funcionament." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Ha fallat en iniciar el servidor de Python del Cantor." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"Ha fallat la comunicació amb el servidor de Python del Cantor per motius " +"desconeguts." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Per a usar els gràfics integrats amb el paquet Matplotlib, primer cal " +"instal·lar el paquet de Python «matplotlib»." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Per a usar els gràfics integrats amb el Plot.ly cal instal·lar el paquet de " +"Python «plotly» i un executable especial de l'«orca» compatible amb el Plot." +"ly. Vegeu l'article «Static Image Export» a la documentació del Plot.ly per " +"als detalls." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - diàleg de les gràfiques" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funcions" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Títol" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Expressió" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Afegeix" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Elimina" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Neteja la llista" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Variable X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Estil" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Línies" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Punts" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Punts i línies" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Quadres" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histograma" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Passos" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Espelmes" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Punts" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Suavitzat" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Cap" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monòtona" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Splines cúbics naturals" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bézier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bézier (monòtona)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Interval de la funció" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Interval X" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Freqüència del &mostratge" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Mida del pa&s" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Opcions" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Títol de la gràfica" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Etiqueta de l'eix X" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Etiqueta de l'eix Y" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Posició de la llegenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Oculta la llegenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Superior esquerra" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Superior dreta" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Inferior esquerra" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Inferior dreta" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Sota" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Exterior" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Mostra la graella" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Mostra la vora completa" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Usa colors" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Mostra inclosa" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Escala X logarítmica" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Escala Y logarítmica" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Opcions de fitxer" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Desa la gràfica a un fitxer" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Tipus de fitxer" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Detecta'l pel nom de fitxer" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +# skip-rule: t-ad_maj +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"El Qalculate! no és un programa que imita el funcionament de la " +"calculadora més barata. El Qalculate! pretén treure profit de la potència, " +"flexibilitat i superior interfície dels ordinadors moderns. El centre " +"d'atenció de Qalculate! és la introducció d'expressions. En lloc d'introduir " +"cada nombre d'una expressió matemàtica per separat, podeu escriure " +"directament l'expressió completa i modificar-la més endavant. La " +"interpretació de les expressions és flexible i tolerant a fallades, i si mai " +"us equivoqueu el Qalculate! us ho farà saber. Tanmateix, les expressions no " +"resolubles totalment es consideren errors. El Qalculate! les simplificarà " +"tant com pugui i respondrà amb una expressió. A més de nombres i operadors " +"aritmètics, una expressió pot contenir qualsevol combinació de variables, " +"unitats i funcions." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Si cal convertir les unitats automàticament, i com. Si és cert, converteix-" +"les a les unitats del SI més adients (el mínim nombre d'unitats)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Unitats angulars predeterminades en les funcions trigonomètriques." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "La base dels nombres interpretats i avaluats." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" +"Especifica si el resultat de l'avaluació se simplificarà o factoritzarà." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Especifica si els nombres racionals es mostraran amb decimals, com a " +"fracció, o quelcom intermedi." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Mostra que la sèrie de dígits d'un número continua indefinidament emprant " +"tres punts en lloc d'arrodonir-lo (p. ex.: 2/3 es mostra com 0,666666... en " +"lloc de 0,666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Usa tots els prefixos decimals del SI. Si és fals, NO s'empraran prefixos de " +"forma automàtica si aquests no són múltiples de mil (centi, deci, deca, " +"hecto)." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Si és cert, s'usaran exponents negatius en lloc de quocients (p. ex.: 5/x^2 " +"esdevindrà 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Presentació numèrica." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Si és cert, les gràfiques es mostraran dins del full de treball. Altrament " +"apareixeran en una finestra separada." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Si s'han d'usar o no colors a les gràfiques." + +# skip-rule: t-sc-plot +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Si s'ha de dibuixar o no una graella." + +# skip-rule: t-sc-plot +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Si s'han de dibuixar o no totes les vores al voltant de la gràfica." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Amplada de les línies, en píxels." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Nombre de passos d'interpolació que s'usaran en fer les gràfiques." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Mode de suavitzat de les gràfiques." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Estil de les gràfiques." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Posició de la llegenda a les gràfiques." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "El Qalculate informa que no pot imprimir. Teniu instal·lat el gnuplot?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "falta %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 ha de ser un nombre." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 ha de ser un enter." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 ha de ser un booleà." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "Opció no vàlida per a %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "s'han trobat múltiples expressions en una ordre plot (%1 i %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "ERROR" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "AVÍS" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "No existeix cap funció, variable o unitat amb aquest nom." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funció: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Interfície de creació de gràfiques" + +# skip-rule: t-sc-plot +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Dibuixa la gràfica d'una o més funcions, incloses o bé en una finestra " +"separada." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "expressió" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "opció" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "valor" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "enter" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "booleà" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "nombre" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "omissió: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "El nom de la funció" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Etiqueta del títol" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "Etiqueta de l'eix X" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Etiqueta de l'eix Y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Imatge on desar la gràfica. Si ho deixeu buit, mostrarà la gràfica en una " +"finestra de la pantalla. Si «inline=true» es mostrarà la imatge sense tenir " +"en compte aquesta opció." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"El tipus d'imatge a desar. Pot ser «auto», «png», «ps», «eps», «latex», " +"«svg» o «fig»." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" +"Establert a «vertader» per a les gràfiques en color, i a «fals» per a les " +"monocromàtiques." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Valor mínim de l'eix X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Valor màxim de l'eix X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Si cal emprar o no una escala logarítmica per a l'eix X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Si cal emprar o no una escala logarítmica per a l'eix Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Base logarítmica per a l'eix X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Base logarítmica per a l'eix Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Si s'ha de mostrar o no la graella de coordenades." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Si la gràfica ha d'estar totalment envoltada per vores (no només els eixos)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Amplada de les línies." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"On s'ha d'ubicar la llegenda de la gràfica. Ha de ser Cap, Superior " +"esquerra, superior dreta, Inferior esquerra, Inferior dreta, Sota o Exterior" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Suavitzat de la gràfica. Ha de ser «Cap», «Únic», «Csplines», «Bézier» o " +"«Sbézier»" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"L'estil de la gràfica. Pot ser «línies», «rodones», «línies i punts», " +"«quadres», «histograma», «escala», «espelmes» o «punts»" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Usa una escala a l'eix X secundari." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Usa una escala a l'eix Y secundari." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" +"Si la gràfica s'ha de visualitzar inclosa, en lloc d'una finestra nova." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Distància entre dos punts d'interpolació. Vegeu també «escala»." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Nombre de punts d'interpolació. Vegeu també «escala»." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "El nom de la variable X. Cal que sigui una variable desconeguda" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Desa les variables a un fitxer" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Desa totes les variables definides actualment en un fitxer. Podeu carregar-" +"lo més endavant amb %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "fitxer" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "fitxer: el fitxer on s'ha de desar" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Carrega les variables des d'un fitxer" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" +"Carrega les variables des d'un fitxer que ha creat prèviament l'usuari %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "fitxer: el fitxer a carregar" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Base numèrica:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Format de les fraccions:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Decimal" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Exacte" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Fraccionari" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Combinat" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Presentació numèrica:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Pur" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Científic" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Precisió" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Indica les sèries infinites:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Usa tots els prefixos del SI:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Usa exponents negatius:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Avalua" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Converteix a les millors unitats del SI:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radians" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Graus" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Graus centesimals" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Mode d'estructuració:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Simplifica" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Factoritza" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Unitat dels angles:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Gràfica" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Mostra les gràfiques incloses:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Mostra les vores completes:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Amplada de les línies:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Freqüència de mostratge:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Mode de suavitzat:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Splines cúbics naturals" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Passos" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Posició de la llegenda:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Gràfiques acolorides:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Mostra la graella:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Estil de la gràfica:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Modifica l'entrada" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Afegeix una entrada nova" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "El nom no pot estar buit." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Afegeix una documentació local" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Obtén la documentació nova" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Baixa documentacions addicionals" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "El fitxer d'ajuda comprimida de les Qt no és vàlid." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Ja s'ha importat la documentació" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Modifica" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Suprimeix" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Desinstal·leu-ho via GHNS." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Instal·la fitxers de documentació addicional" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Nom" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Camí" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Afegeix" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Icona:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Seleccioneu una icona" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Nom:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Introduïu un nom" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Seleccioneu un nom..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Camí:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Seleccioneu un fitxer d'ajuda de les Qt..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Seleccioneu un fitxer d'ajuda de les Qt..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +# skip-rule: t-sp_in, t-pu_desp +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" +"

      Sistema d'ajuda de l'R: help() i ?:


      La funció " +"help() i l'operador d'ajuda ? de l'R proporcionen accés a les " +"pàgines de documentació de les funcions R, conjunts de dades, i altres " +"objectes, tant pels paquets de la distribució R estàndard com pels paquets " +"de col·laboracions.

      Per accedir a la documentació de la funció lm (model lineal), per exemple, teclegeu l'ordre help(lm) o " +"help(\"lm\"), o ?lm o ?\"lm\" (és a dir, les cometes " +"són opcionals).

      . Per accedir a l'ajuda d'una funció en un paquet que " +"no està carregat actualment, especifiqueu, a més, el nom del paquet: per " +"exemple, per obtenir la documentació de la funció rlm() (model lineal " +"robust) del paquet MASS,
      help(rlm, package=\"MASS\")
      .

      Els " +"noms estàndards de l'R consisteixen en lletres en majúscules i minúscules, " +"nombres (0-9), guions baixos (_), i punts (.), i han de començar amb una " +"lletra o un punt. Per obtenir ajuda per a un objecte amb un nom no estàndard " +"(com l'operador d'ajuda ?), cal posar el nom entre cometes: per " +"exemple, help('?')o ?\"?\".

      També podeu utilitzar la " +"funció help() per accedir a informació sobre un paquet a la vostra " +"biblioteca: per exemple, help(package=\"MASS\"), que mostra un índex " +"de pàgines d'ajuda disponibles per al paquet juntament amb una altra " +"informació.

      Les pàgines d'ajuda per a funcions normalment inclouen " +"una secció amb exemples executables que il·lustren com funcionen les " +"funcions. Podeu executar aquests exemples en la sessió R actual a través de " +"l'ordre example(): p. ex., exemple(lm)." + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"L'R és un llenguatge i un entorn per a computació i gràfiques " +"estadístiques, similar al llenguatge i entorn «S».
      Ofereix una àmplia " +"varietat de tècniques estadístiques (modelatge lineal i no lineal, tests " +"estadístics clàssics, anàlisi de sèries temporals, classificació, " +"clustering...) i gràfiques, i és altament extensible. El llenguatge S és " +"sovint el vehicle escollit per a la recerca en metodologia estadística, i " +"l'R ofereix una via de codi obert per a participar en aquesta activitat." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "S'ha produït un error en obrir el fitxer %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "Fitxer de script de l'R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "S'ha produït un error en analitzar l'ordre" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "URL a la documentació local de l'R" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Feu doble clic per a obrir el diàleg de selecció de fitxer" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|Fitxers font en R (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"El Sage és un programari matemàtic lliure sota la llicència GPL.
      Combina la potència de la munió d'aplicacions de codi obert existents amb " +"una interfície comuna basada en Python." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Camí a l'executable «sage»" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Habilita la composició tipogràfica del LaTeX per al dorsal Sage" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Resultat de %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"L'última sortida ha estat: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Fitxer de script en Python (*.py);;Fitxer de script del Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"No s'admet la versió %1.%2 del Sage. Actualitzeu la instal·lació a les " +"versions acceptades per a fer que funcioni amb el Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Ha fallat en determinar la versió del Sage. Si us plau, comproveu la " +"instal·lació i la sortida de «sage -v»." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "El procés Sage ha fallat mentre s'avaluava aquesta expressió" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "El procés Sage ha fallat" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "El procés Sage ha fallat mentre s'avaluava aquesta expressió" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "El procés Sage ha fallat" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "No s'ha pogut iniciar el Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "Composició tipogràfica del LaTeX:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"La sortida en LaTeX del Sage no sempre és correcta i, per tant, la " +"composició tipogràfica del LaTeX es pot desactivar per a millorar " +"l'experiència" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"L'Scilab és un programari lliure multiplataforma de càlcul numèric, i " +"un llenguatge de programació d'alt nivell orientat a la manipulació de " +"nombres. L'Scilab es distribueix sota una llicència CeCILL (compatible amb " +"la GPL)." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Camí a l'executable «scilab»" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +"::Fitxer de script de l'Scilab (*.sce);;Fitxer de funció de l'Scilab (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "El fitxer %1 ja està obert." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Obre un fitxer" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Descarrega exemples" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Obre un exemple" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Ves al full de treball anterior" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Ves al full de treball següent" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Tots els fitxers admesos (*.cws *ipynb);;Full de treball del Cantor (*.cws);;" +"Bloc de notes del Jupyter (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      No s'ha trobat cap dorsal

      \n" +"
      Podeu provar de:\n" +"
      • Canviar l'arranjament al diàleg de configuració;
      • " +"
      • Instal·lar els paquets del programa següent:
      • %2
      " +msgstr[1] "" +"

      No s'ha trobat cap dorsal

      \n" +"
      Podeu provar de:\n" +"
      • Canviar l'arranjament al diàleg de configuració;
      • " +"
      • Instal·lar els paquets d'algun dels programes següents:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Error" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "El dorsal %1 no està instal·lat" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"S'ha instal·lat el dorsal %1, però és inactiu. Comproveu la instal·lació i " +"la configuració del Cantor" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sessió %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Ha fallat en cercar la Part del Cantor amb l'error %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "S'està calculant..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Preparat" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Canviat" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "Hi ha múltiples fulls de treball oberts sense desar. Els voleu tancar?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Tanca el Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "El projecte actual s'ha modificat. El voleu desar?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Desa el projecte" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "S'està donant format" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "El dorsal que s'usarà de manera predeterminada" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Fes per omissió la composició tipogràfica" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Fes per omissió el ressaltat de la sintaxi" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Habilita per omissió la compleció" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Habilita per omissió la numeració de les expressions" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Anima per omissió els canvis en el full de treball" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Habilita per omissió l'anàlisi d'expressions matemàtiques dins de $$..$$ en " +"entrades de Text i Markdown (cal que «pdflatex» estigui instal·lat)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Reavalua automàticament les entrades a sota de l'actual" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Demana confirmació en reiniciar el dorsal" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Desa el format de text enriquit de les entrades de text, en desar el full de " +"treball en el format bloc de notes del Jupyter" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Usa l'estil antic del Cantor d'emplaçament de les entrades" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Mostra els errors d'anàlisi d'expressions matemàtiques incrustades" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Límit de línies visibles per al text dels resultats" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Tipus de lletra de jerarquia per al capítol" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Mida del tipus de lletra de jerarquia per al capítol" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Cursiva del tipus de lletra de jerarquia per al capítol" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Negreta del tipus de lletra de jerarquia per al capítol" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Tipus de lletra de jerarquia per al subcapítol" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Mida del tipus de lletra de jerarquia per al subcapítol" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Cursiva del tipus de lletra de jerarquia per al subcapítol" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Negreta del tipus de lletra de jerarquia per al subcapítol" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Tipus de lletra de jerarquia per a la secció" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Cursiva del tipus de lletra de jerarquia per a la secció" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Negreta del tipus de lletra de jerarquia per a la secció" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Tipus de lletra de jerarquia per a la subsecció" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Cursiva del tipus de lletra de jerarquia per a la subsecció" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Negreta del tipus de lletra de jerarquia per a la subsecció" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Tipus de lletra de jerarquia per al paràgraf" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Cursiva del tipus de lletra de jerarquia per al paràgraf" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Negreta del tipus de lletra de jerarquia per al paràgraf" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Tipus de lletra de jerarquia per al subparàgraf" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Cursiva del tipus de lletra de jerarquia per al subparàgraf" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Negreta del tipus de lletra de jerarquia per al subparàgraf" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Desa com a text net" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Exporta a LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Avalua el full de treball" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Compon emprant LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Ressaltat de la sintaxi" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Compleció" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Números de les línies" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Animacions" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Matemàtiques incrustades" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Reinicialitza el dorsal" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Avalua l'entrada" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Insereix una entrada d'ordre" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Insereix una entrada de text" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Insereix una entrada de Markdown" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Insereix una entrada del LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Insereix un salt de pàgina" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Insereix una imatge" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Redueix tots els resultats" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Expandeix tots els resultats" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Elimina tots els resultats" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Elimina l'entrada actual" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Mostra l'editor de scripts" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Mostra la compleció" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Full de treball del Cantor (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Bloc de notes del Jupyter (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Desa com a" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Desa" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Es perdran totes els resultats disponibles dels càlculs. Esteu segur que " +"voleu reiniciar %1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Reinicio %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Interrupció" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Error de sessió: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Inicialització completa" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "S'està inicialitzant..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[només de lectura]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Voleu pujar el full de treball actual a un servidor web públic?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Pregunta - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" +"El full de treball no s'ha desat. Hauríeu de desar-lo abans de pujar-lo." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Avís - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Aquest dorsal no admet scripts." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Edita" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Visualitza" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Full de treball" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Configuració" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Fitxer" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Nou" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Plafons" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Arranjament" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Color del fons" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Per omissió" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Color del text" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Tipus de lletra" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Negreta" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Cursiva" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Augmenta la mida" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Disminueix la mida" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Selecciona" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Restableix als valors predeterminats" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Mostra els resultats" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Oculta els resultats" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Mostra l'ajuda" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Aparença" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "S'ha interromput" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Barra de cerques" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Cerca:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Següent" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Anterior" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Substitueix:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Substitueix" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Substitueix-ho &tot" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Cerca a:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "Fes concordar les &majúscules" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Tipus de lletra de jerarquia" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Tipus de lletra de capítol" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Família del tipus de lletra:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Mida del tipus de lletra:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Tipus de lletra de subcapítol" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Tipus de lletra de secció" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Tipus de lletra de subsecció" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Tipus de lletra de paràgraf" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Tipus de lletra de subparàgraf" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Capítol" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Subcapítol" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Secció" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Subsecció" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Paràgraf" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Subparàgraf" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Estableix el nivell de jerarquia" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Estil de línia sòlid" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Estil de línia de guions" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Estil de línia de punts" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Estil de línia de guió punt" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Estil de línia de guió punt punt" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Gruix de la línia" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Prima" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Mitjana" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Gruixuda" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Color de la línia" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Estil de la línia" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Configura la imatge" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Feu doble clic aquí per a configurar les opcions de la imatge" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "No s'ha pogut carregar la imatge %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Desa la imatge resultant" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Imatges (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Paràmetres d'imatge" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Obre" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Mida de la visualització" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Amplada" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Alçada" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Vista prèvia" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Mida d'impressió" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Usa la mida de la visualització" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Configuració de la imatge" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(auto)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr " px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Obre un fitxer d'imatge" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Mostra el codi en LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"No s'ha especificat cap camí a l'executable «%1». Proporcioneu el camí " +"correcte a la configuració de l'aplicació i torneu-ho a intentar." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"El fitxer «%1» especificat com a executable del %2 no existeix. Proporcioneu " +"el camí correcte a la configuració de l'aplicació i torneu-ho a intentar." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"El fitxer «%1» especificat no apunta a cap executable. Proporcioneu el camí " +"correcte a la configuració de l'aplicació i torneu-ho a intentar." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"El programa %1 no ha finalitzat l'execució després de %2 mil·lisegons durant " +"la prova d'integració de les gràfiques." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" +"Ha fallat en obrir el fitxer %1 durant la prova d'integració de les " +"gràfiques." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" +"Ha fallat en analitzar el resultat durant la prova d'integració de les " +"gràfiques." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Camí a l'executable «latex»" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Camí a l'executable «dvips»" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Valor" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 bytes>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Des de:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Fins a:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Títol principal" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Escala d'abscisses" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Escala d'ordenades" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Títol de la gràfica:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Aquest és un contingut no admès pel Jupyter de tipus («%1»)" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "El procés %1 ha mort inesperadament. S'han perdut tots els càlculs." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"El procés %1 ha mort inesperadament amb el missatge «%2». S'han perdut tots " +"els càlculs." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Heu triat el funcionament per al paquet gràfic %1, però el funcionament no " +"es pot activar a causa de requisits que manquen i, per tant, s'ha desactivat " +"la integració per a aquest paquet. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Frontal del KDE per a aplicacions matemàtiques" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" +"Mantenidor
      Adaptació a les Qt5/KF5, dorsals de l'Scilab i el Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Desenvolupador" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Autor original
      Mantenidor (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Dorsal de KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Dorsal d'Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Interfície" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Icona del Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Usa el dorsal " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Documents a obrir." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "No s'ha pogut obrir el fitxer %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Entra en el mode d'edició" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Neteja els adjunts" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Error matemàtic del Cantor" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Ha fallat en llegir la imatge «%1». Error «%2»" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Salt de pàgina ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Ves al contingut" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Cerca mitjançant les paraules clau..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Cerca al text de la pàgina de documentació actual" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Restableix el nivell de zoom al 100%" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Tanca" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Salta a la coincidència següent" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Salta a la coincidència anterior" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Coincidència distingint majúscules i minúscules" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "El fitxer s'ha baixat correctament a Baixades." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "La baixada s'ha fet correctament" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Fitxers del Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Fitxers del Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Tots els fitxers admesos" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Tots els fitxers" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Nom:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Valor:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Afegeix una variable nova" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Carrega les variables" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Desa les variables" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Elimina les variables" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Cerca/Filtra" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Distingeix majúscules i minúscules" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Coincideix tota la paraula" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Esteu segur/a que voleu eliminar totes les variables?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Carrega un fitxer" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Desa el resultat" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Elimina el resultat" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"No s'ha trobat cap component d'edició de text del KDE;\n" +"si us plau, comproveu la vostra instal·lació del KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Editor de scripts" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Editor de scripts - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "No s'ha trobat" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "S'ha arribat al principi" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "S'ha arribat al final" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "S'ha substituït %1 instància" +msgstr[1] "S'han substituït %1 instàncies" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Ordres" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Resultats" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Errors" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Text" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Codi en LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "En iniciar:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" +"Crea un full de treball nou per al sistema del dorsal seleccionat. Si no se " +"selecciona cap, es demana a l'usuari sobre quin sistema utilitzar en iniciar." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Dorsal predeterminat:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Full de treball:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" +"Activa la composició tipogràfica del LaTeX per als resultats dels càlculs, " +"si ho permet el sistema del dorsal" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "Composició tipogràfica del LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Activa el ressaltat de la sintaxi" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Ressaltat de la sintaxi" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "Activa la compleció de la sintaxi" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Mostra els números de les línies" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Números de les línies" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Activa les animacions del full de treball" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" +"Si està activada, les entrades de text s'alinearan amb la vora del full de " +"treball i no amb la vora de l'indicador" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "No sagnis les entrades de text" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Usa el format de text enriquit a les entrades de text en desar en el format " +"bloc de notes del Jupyter" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "Avaluació:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"Si s'activa, es demanarà confirmació a l'usuari abans de reiniciar el " +"sistema del dorsal" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" +"Si s'activa, totes les entrades sota de l'actual s'avaluaran automàticament" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "Reavalua automàticament les entrades" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Nombre de files en el resultat (0 sense límit):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Nombre màxim de files visibles al resultat d'una entrada d'ordre. Useu 0 per " +"a treballar sense limitacions." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" +"Activa la composició tipogràfica del LaTeX per a les expressions " +"matemàtiques a les entrades del Markdown" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "Expressions matemàtiques via el LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" +"Notifica quan fallin les representacions de les expressions matemàtiques" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Cerca…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Objectius de cel·les en brut" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Afegeix un objectiu personalitzat" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Converteix a una entrada de text" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Converteix a cel·la en brut" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Tipus MIME de l'objectiu:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Copia el resultat" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Mostra renderitzat" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Mostra el codi" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Mostra el codi HTML" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Mostra una alternativa en clar" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Mostra l'HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Mostra l'HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" +"No s'ha pogut renderitzar el fitxer EPS. Potser necessiteu programes " +"addicionals" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Desa el text resultant" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "Fitxers de text (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "No s'ha pogut escriure al fitxer %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "No s'ha pogut escriure al fitxer." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Hi ha hagut un error en desar el fitxer %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"En mode de només lectura el Cantor no pot garantir que l'exportació sigui " +"vàlida per a %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "S'ha produït un error en carregar el full d'estil latex.xsl" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "No s'ha pogut obrir el fitxer %1." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Obre un fitxer" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "No s'ha pogut obrir per a lectura el fitxer seleccionat." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" +"El fitxer seleccionat no és cap fitxer vàlid de projecte Cantor o Jupyter." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "El fitxer seleccionat no és cap fitxer vàlid de projecte Cantor." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Aquest full de treball es va crear usant el Python2 que ja no està acceptat. " +"S'usarà el Python3." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "El Python2 ja no està acceptat" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"No s'ha trobat el dorsal %1. No és possible l'edició ni l'execució " +"d'entrades." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Hi ha alguns problemes amb el dorsal %1.\n" +"Si us plau, comproveu la vostra configuració o bé instal·leu els paquets " +"necessaris.\n" +"Només podreu visualitzar aquest full de treball." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"El Cantor no admet blocs de notes del Jupyter amb una versió inferior a 4.5 " +"(s'ha detectat %1.%2)." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"El Cantor no admet blocs de notes del Jupyter amb una versió superior a 4.5 " +"(s'ha detectat %1.%2)." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Aquest bloc de notes es va crear usant el Python2 que ja no està acceptat. " +"S'usarà el Python3." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "un objecte amb claus: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "no és un valor JSON d'objecte" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "s'han trobat dades incorrectes (%1) que no és una cel·la del Jupyter" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "El fitxer no és un bloc de notes vàlid del Jupyter" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Esquema de bloc de notes del Jupyter no vàlid: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Converteix a" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Ordre" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Imatge" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Salt de pàgina" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Línia horitzontal" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Entrada de jerarquia" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Insereix després" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Insereix abans" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Insereix" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Apropa" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Allunya" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Mida original" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Mou amunt les entrades" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Mou avall les entrades" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Avalua les entrades" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Elimina entrades" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Redueix els resultats de l'entrada d'ordres" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Expandeix els resultats de l'entrada d'ordres" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Elimina els resultats de l'entrada d'ordres" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Exclou l'entrada d'ordres de l'execució" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Afegeix una entrada d'ordre a l'execució" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "&Color del text..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Color" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "&Ressaltat de text..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Tipus de lletra" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "&Mida del tipus de lletra" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Negreta" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Cursiva" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Subratllat" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Barrat" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Alinea a l'es&querra" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Esquerra" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Alinea al ¢re" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Centre" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Alinea a la &dreta" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Dreta" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Justifica" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Justificat" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"Aquesta acció eliminarà tots els resultats sense la possibilitat de " +"cancel·lar. Esteu segur?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Elimina tots els resultats" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Blanc" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Negre" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Vermell fosc" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Vermell" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Vermell clar" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Verd fosc" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Verd" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Verd clar" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Blau fosc" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Blau" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Blau clar" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Groc fosc" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Groc" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Groc clar" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Cian fosc" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Cian" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Cian clar" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Magenta fosc" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Magenta clar" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Taronja fosc" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Taronja" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Taronja clar" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Gris fosc" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Gris" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Gris clar" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Mou amunt" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Mou avall" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Esteu segur/a que voleu eliminar aquesta entrada?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Elimina l'entrada" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Arrossega l'entrada" diff --git a/po/ca/docs/cantor/create-dlg.png b/po/ca/docs/cantor/create-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..ab3209ce3a05a119edda494e78d6dd7a7cdc946b GIT binary patch literal 9071 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 a0@?1ZYi+5a7YQe50Lrg56e{K4hyD+~bpTud literal 0 HcmV?d00001 diff --git a/po/ca/docs/cantor/differentiate-dlg.png b/po/ca/docs/cantor/differentiate-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..fa6bdb1075ae2c8ddc960bc622b4afab81c1b0d4 GIT binary patch literal 9560 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 literal 0 HcmV?d00001 diff --git a/po/ca/docs/cantor/index.docbook b/po/ca/docs/cantor/index.docbook new file mode 100644 index 0000000..0d0fff4 --- /dev/null +++ b/po/ca/docs/cantor/index.docbook @@ -0,0 +1,1563 @@ + +ATEX"> + + +]> + + + +El manual del &cantor; + + + Alexander Rieder alexanderrieder@gmail.com +&traductor.Antoni.Bella; + + + +2009 +Alexander Rieder + +&FDLNotice; + +16 de desembre de 2020 +Aplicacions 20.12 + + +El &cantor; és una aplicació destinada a proporcionar una agradable vista del full de treball a altres paquets de matemàtiques de programari lliure. + + + +KDE +kdeedu +matemàtiques +matemàtica +Cantor +Julia +Lua +Maxima +Octave +Python +Qalculate +R +Sage +Scilab + + + + + +Introducció + +El &cantor; és una aplicació que us permetrà utilitzar les vostres aplicacions de matemàtiques preferides des d'una elegant interfície de full de treball integrada amb el &kde;. Proporciona diàlegs per a ajudar amb les tasques habituals i us permetrà compartir els vostres fulls de treball amb els altres. + + + +Ús del &cantor; + +Captura de pantalla: +Aquí hi ha una captura de pantalla del &cantor; + + + + + + Captura de pantalla + + + + + + + +Característiques del &cantor; + + Una intuïtiva vista del full de treball per a avaluar les expressions. + Els resultats de la gràfica dibuixada es mostren dins del full de treball. + Una estructura fàcil basada en connectors que permet afegir diferents dorsals. + Integració d'«Obtén novetats candents» (GetHotNewStuff) per a permetre descarregar (o carregar) fulls de treball d'exemple. + Escriure una fórmula matemàtica emprant &latex;. + Ressaltat de la sintaxi segons el dorsal. + Els diàlegs d'assistent basats en el connector per a ajudar amb les tasques habituals, com ara integrar una funció o introduir una matriu. + + + + +Els dorsals del &cantor; +El &cantor; ofereix diverses opcions per als dorsals que vulgueu utilitzar. Les opcions dependran del que vulgueu aconseguir. +Actualment hi ha disponibles els dorsals següents: + + Sage: + + El «Sage» és un programari matemàtic lliure sota la llicència GPL. Combina la potència de la munió d'aplicacions de codi obert existents, amb una interfície comuna basada en Python. Per a més informació, vegeu https://sagemath.org. + + + + Maxima: + + El «Maxima» és un sistema per a la manipulació d'expressions simbòliques i numèriques, inclosa la derivació, integració, sèries de Taylor, transformades de Laplace, equacions diferencials ordinàries, sistemes d'equacions lineals, polinomis, conjunts, llistes, vectors, matrius i tensors. El «Maxima» aconsegueix resultats numèrics d'alta precisió gràcies a la utilització de fraccions exactes, enters de precisió arbitrària i nombres de coma flotant de precisió variable. El «Màxima» pot crear gràfiques de funcions i dades en dues i tres dimensions. Per a més informació, vegeu http://maxima.sourceforge.net. + + + + R: + + L'«R» és un llenguatge i un entorn per a computació i gràfiques estadístiques, similar al llenguatge i entorn «S». Ofereix una àmplia varietat de tècniques estadístiques (modelatge lineal i no lineal, proves estadístiques clàssiques, anàlisi de sèries temporals, classificació, clustering...) i gràfiques, i és altament extensible. El llenguatge «S» sovint és el vehicle escollit per a la recerca en metodologia estadística, i «R» ofereix una via de codi obert per a participar en aquesta activitat. Per a més informació, vegeu https://www.r-project.org. + + + + Julia: + + El «Julia» és un llenguatge de programació d'alt nivell i rendiment per a la computació tècnica, amb una sintaxi que és familiar per als usuaris d'altres entorns de computació tècnica. Proporciona un compilador sofisticat, execució en paral·lel distribuïda, precisió numèrica i una extensa biblioteca de funcions matemàtiques. Per a més informació, vegeu la documentació de Julia. + + + + &kalgebra;: + + El &kalgebra; és una calculadora gràfica basada en MathML, la qual s'inclou amb el projecte d'educació del &kde;. Per a més informació, vegeu https://edu.kde.org/kalgebra/. + + + + Qalculate!: + + El Qalculate! no és un programa que imita el funcionament de la calculadora més barata. Qalculate! pretén treure profit de la potència, flexibilitat i superior interfície dels ordinadors moderns. El centre d'atenció de Qalculate! és la introducció d'expressions. En lloc d'introduir cada nombre d'una expressió matemàtica per separat, podeu escriure directament l'expressió completa i modificar-la més endavant. La interpretació de les expressions és flexible i tolerant a fallades, i si mai us equivoqueu, el Qalculate! us ho farà saber. Tanmateix, les expressions no resolubles totalment no es consideren errors. El Qalculate! les simplificarà tant com pugui i respondrà amb una expressió. A més de nombres i operadors aritmètics, una expressió pot contenir qualsevol combinació de variables, unitats i funcions. Per a més informació, vegeu http://qalculate.github.io/. + + + + Python2 i Python3: + + El Python és un llenguatge de programació dinàmica molt potent que s'utilitza en una àmplia varietat de dominis d'aplicació. Hi ha diversos paquets de Python per a la programació científica. + El Python es distribueix sota llicència Python Software Foundation license (compatible amb la GPL). Per a més informació, vegeu el lloc web oficial. + + Aquest dorsal afegeix un element addicional al menú principal del &cantor;, Paquet. L'únic element d'aquest menú és PaquetImporta un paquet. Aquest element es pot utilitzar per a importar paquets de Python al full de càlcul. + + + + + Scilab: + + L'Scilab és un programari lliure multiplataforma de càlcul numèric, i un llenguatge de programació d'alt nivell orientat a la manipulació de nombres. + L'Scilab es distribueix sota llicència CeCILL (compatible amb la GPL). Per a més informació, vegeu https://www.scilab.org/. + + Necessitareu Scilab versió 5.5 o superior instal·lada al vostre sistema perquè aquest dorsal sigui utilitzable. + + + + + Octave: + + L'«Octave» de &GNU; és un llenguatge d'alt nivell orientat principalment al càlcul numèric. Ofereix una línia d'ordres còmoda per tal de resoldre problemes lineals i no lineals numèricament, i per a efectuar altres experiments numèrics utilitzant un llenguatge que és altament compatible amb «MATLAB». Per a més informació, vegeu https://www.gnu.org/software/octave/. + + + + Lua: + + El «Lua» és un llenguatge de creació de scripts ràpid i lleuger, amb una sintaxi de procediment senzilla. Hi ha diverses biblioteques en «Lua» dirigides a les matemàtiques i la ciència. + Per a més informació, vegeu https://www.lua.org/. + Aquest dorsal només admet luajit 2. + + + + + + + +L'espai de treball del &cantor; + + + Captura de pantalla de l'espai de treball en el &cantor; + + + + + + Captura de pantalla de l'espai de treball en el &cantor; + + + + +La interfície del full de treball del &cantor; consisteix en tres parts: + La barra de pestanyes, des d'on podreu canviar entre els fulls de treball oberts. + Un plafó d'ajuda, on es mostrarà ajuda per a una ordre específica si introduïu ?? ordre, describe(ordre) o example(ordre) (dorsal Maxima). + Un plafó «Gestor de variables» on podreu veure la llista de totes les variables disponibles en el full de treball actual. Els plafons «Ajuda» i «Gestor de variables» es mostren com pestanyes a la barra lateral d'una finestra del &cantor;. El gestor de variables es pot utilitzar només per als dorsals de Maxima (si està habilitat a la pàgina Maxima en el diàleg de configuració ArranjamentConfigura el &cantor;...), &kalgebra;, Octave, Python2, Python3, Qalculate i Scilab. + El full de treball mateix. + + + +El full de treball +El full de treball és l'àrea bàsica per a treballar amb el &cantor;. Utilitzant-lo, podreu introduir expressions, permetent als dorsals realitzar els càlculs i veure el resultat. Les ordres dels fulls de treball accepten dependre del dorsal escollit, de manera que haureu d'aprendre la sintaxi apropiada del dorsal (el botó Mostra l'ajuda us hi durà directament). Si coneixeu l'ordre, però necessiteu informació addicional, podeu escriure «? ordre», i apareixerà l'ajuda contextual a la dreta del full de treball. Per a veure alguns exemples de fulls de treball, podeu anar a l'element de menú FitxerDescarrega fulls de treball d'exemple, i descarregar fulls de treball que han publicat altres usuaris. +Per a controlar cada entrada d'ordre en el full de treball, podeu utilitzar els botons de control que es mostren a la part dreta del full de treball quan passeu per sobre del camp d'entrada amb el cursor del ratolí. Hi ha tres accions bàsiques per a cada entrada: Avalua l'entrada per a actualitzar el resultat dels càlculs per a l'entrada. Arrossega l'entrada per a moure l'entrada a un altre lloc del full de treball actual i Elimina l'entrada per a eliminar l'entrada del full de treball actual. +La configuració i l'alineació del tipus de lletra de les entrades en el full de treball es poden canviar utilitzant una barra d'eines que hi ha a sobre del full de treball. + + Configuració + El menú Arranjament permet canviar algunes opcions de configuració de l'aparença del vostre full de càlcul actual. + + + Compon emprant LaTeX + + Aquesta opció canvia la manera en què es presentaran els resultats. Si s'activa, el resultat passarà a través del sistema &latex;, per a produir fórmules visualment atractives. Per exemple, 3*x^2*sqrt(2)*x+2/3 es convertirà en + + + + 3*x^2*sqrt(2)*x+2/3 + + + + + + Ressaltat de la sintaxi + + El ressaltat de la sintaxi augmenta la llegibilitat del codi, ressaltant en colors diferents les paraules clau o els parèntesis coincidents. + + + + Compleció + + Quan aquesta opció està activada, el &cantor; mostrarà les possibles complecions per a l'ordre que esteu escrivint quan premeu la tecla . Si només hi ha una opció, s'inserirà la resta de l'ordre. + + + + Números de les línies + + Aquesta opció controla si les diferents expressions han de tenir un número al davant. Això us permetrà recuperar més resultats -en el Maxima, per exemple, això es fa amb l'ordre %O1. + + + + Anima el full de treball + + Aquesta opció controla si s'utilitzaran les diferents animacions per a ressaltar els canvis en un full de treball. + + + + Matemàtiques incrustades + + Aquesta opció controla si es representen expressions matemàtiques dins de $$..$$ a les entrades de Text i &Markdown;, i està habilitada de manera predeterminada (cal tenir instal·lat pdflatex). + + + + + + + +Els diàlegs de l'assistent +Hi ha diversos diàlegs d'assistent implementats al &cantor; per a alleujar algunes de les operacions bàsiques. +Es pot accedir a aquests diàlegs utilitzant els elements del menú principal. Cada dorsal té els seus propis diàlegs d'assistent. + +El diàleg Creació d'una matriu + + Captura de pantalla del diàleg «Creació d'una matriu» en el &cantor; + + + + + + Captura de pantalla del diàleg «Creació d'una matriu» en el &cantor; + + + +Aquest diàleg es pot utilitzar per a introduir matrius. Podeu definir les dimensions de la matriu i els seus elements. +És possible navegar entre les cel·les ràpidament durant l'entrada de dades utilitzant la tecla . + + +El diàleg Operació amb matrius + + Captura de pantalla del diàleg «Entrada d'una matriu» en el &cantor; + + + + + + Captura de pantalla del diàleg «Entrada d'una matriu» en el &cantor; + + + +Aquest diàleg permet introduir el nom de la matriu per a calcular els seus vectors propis (autovectors), els valors propis (autovalors) o invertits de la matriu. El valor predeterminat (%) s'utilitza per a referir-se al resultat anterior de càlcul o d'entrada de dades. + + +El diàleg Diferenciació + + Captura de pantalla del diàleg «Diferenciació» en el &cantor; + + + + + + Captura de pantalla del diàleg «Diferenciació» en el &cantor; + + + +Aquest diàleg permet introduir l'expressió de la funció a diferenciar, el nom de la variable i l'ordre de la derivada. + + +El diàleg Integració + + Captura de pantalla del diàleg «Integració» en el &cantor; + + + + + + Captura de pantalla del diàleg «Integració» en el &cantor; + + + +Aquest diàleg permet introduir l'expressió de la funció a integrar, el nom de la variable i els límits d'integració (per a la integral definida). + + +El diàleg Resol les equacions + + Captura de pantalla del diàleg «Resol les equacions» en el &cantor; + + + + + + Captura de pantalla del diàleg «Resol les equacions» en el &cantor; + + + +Aquest diàleg permet introduir equacions a resoldre (cada equació en una línia separada) i les variables a determinar (separades per la coma). + + +El diàleg Importa un paquet + + Captura de pantalla del diàleg «Importa un paquet» en el &cantor; + + + + + + Captura de pantalla del diàleg «Importa un paquet» en el &cantor; + + + +Aquest diàleg permet introduir el nom del paquet a importar (&pex;, numpy per a Python). + + +El diàleg Gràfiques + + Captura de pantalla del diàleg «Gràfica» en el &cantor; (pestanya Funcions) + + + + + + Captura de pantalla del diàleg «Gràfica» en el &cantor; (pestanya Funcions) + + + +Les opcions en aquest diàleg se separen en dos grups utilitzant pestanyes. La pestanya Funcions permet introduir funcions a la gràfica. +Per a introduir una nova funció, feu clic a Afegeix. Feu doble clic a la cel·la Títol i introduïu el títol, llavors feu doble clic a la cel·la Expressió i introduïu l'expressió de la funció. + + Captura de pantalla del diàleg «Gràfica» en el &cantor; (pestanya Opcions) + + + + + + Captura de pantalla del diàleg «Gràfica» en el &cantor; (pestanya Opcions) + + + +La pestanya Opcions s'utilitza per a definir les opcions de gràfica i llegenda. Podreu afinar gairebé totes les opcions de la gràfica per a obtenir un aspecte agradable de la vostra figura. + + +El diàleg Gràfica en 2D + + Captura de pantalla del diàleg «Gràfica en 2D» en el &cantor; + + + + + + Captura de pantalla del diàleg «Gràfica en 2D» en el &cantor; + + + +Aquest diàleg permet introduir l'expressió de la funció, la seva variable i els límits per a aquesta variable. + + +El diàleg Gràfica en 3D + + Captura de pantalla del diàleg «Gràfica en 3D» en el &cantor; + + + + + + Captura de pantalla del diàleg «Gràfica en 3D» en el &cantor; + + + +Aquest diàleg permet introduir l'expressió de la funció, les seves variables i els límits per a cada variable. + + + + + +Referència d'ordres + + +La finestra principal del &cantor; + +El &cantor; té els elements de menú comuns del &kde;. Per a obtenir més informació, llegiu la secció sobre El menú Ajuda en els Fonaments del &kde;. + +A continuació es llisten els elements de menú addicionals o especials que hi ha al &cantor;. Recordeu que alguns menús només es mostren per als dorsals que tenen la implementació corresponent. + + +El menú Fitxer + + + + &Ctrl;N Fitxer Nou +Crea un full de treball nou amb el dorsal predeterminat. + + +Fitxer Nou Dorsal +Crea un full de treball nou amb el dorsal escollit. + + + &Ctrl;O Fitxer Obre... +Obre un full de treball nou admès amb el diàleg de fitxers. + + +Fitxer Obre'n un de recent +Tria un full de càlcul d'una llista de fitxers utilitzats recentment. + + +Fitxer Descarrega fulls de treball d'exemple +Obre el diàleg per a descarregar exemples enviats per altres usuaris del &cantor; amb Obtén novetats candents (GetHotNewStuff). + + +Fitxer Obre un exemple +Obre el diàleg per a escollir un exemple a carregar. Els exemples s'han de descarregar abans amb Fitxer Descarrega fulls de treball d'exemple. + + +Fitxer Desa com a text net +Permet desar el full de treball actual com a un document de text sense format. + + +Fitxer Exporta a LaTeX +Permet desar el full de treball actual com un document de &latex;. + + +Fitxer Publica el full de treball +Obre el diàleg per a publicar el vostre full de treball actual i posar-lo a disposició d'altres usuaris del &cantor; a través de Obtén novetats candents (GetHotNewStuff). + + +Fitxer Executa un script +Permet carregar i executar els scripts de procés per lots per al dorsal actual. + + + + + + + +El menú Visualitza + + + +Visualitza Plafons +Permet canviar la visibilitat d'algunes pestanyes a la barra lateral. Les opcions són: + + Navegador de fitxers + Alterna la visibilitat de la pestanya Navegador de fitxers a la barra lateral. + + + + Ajuda + Alterna la visibilitat de la pestanya Ajuda a la barra lateral. + + + + Gestor de variables + Alterna la visibilitat de la pestanya Gestor de variables a la barra lateral. + + + + +&Ctrl;+ VisualitzaApropa +Apropa el full de treball actual en un 10%. + + + &Ctrl;- Visualitza Allunya +Allunya el full de treball actual en un 10%. + + +Visualitza Mostra l'editor de scripts +Obre la finestra de l'editor de scripts de procés per lots per al dorsal actual. + + + + + + +El menú Full de treball + + + + &Ctrl;E Full de treball Avalua el full de treball +Activa l'avaluació de tot el full de treball. + + + &Maj;&Intro; Full de treball Avalua l'entrada +Activa l'avaluació de l'entrada actual. + + + &Ctrl;&Intro; Full de treball Insereix una entrada d'ordre +Insereix una entrada d'ordre nova a sota de la posició actual del cursor. + + +Full de treball Insereix una entrada de text +Insereix una entrada de text nova a sota de la posició actual del cursor. + + +Full de treball Insereix una entrada de Markdown +Insereix una entrada de &Markdown; a sota de la posició actual del cursor. + + +Full de treball Insereix una entrada de LaTeX +Insereix una entrada de &latex; a sota de la posició actual del cursor. + + +Full de treball Insereix una imatge +Insereix una imatge a sota de la posició actual del cursor. + + +Full de treball Insereix un salt de pàgina +Insereix el salt de pàgina a sota de la posició actual del cursor. + + +Full de treball Redueix tots els resultats +Replega tots els resultats de l'entrada d'ordres. + + +Full de treball Expandeix tots els resultats +Expandeix tots els resultats de l'entrada d'ordres. + + +Full de treball Elimina tots els resultats +Elimina tots els resultats de l'entrada d'ordres. + + + &Maj;∇ Full de treball Elimina l'entrada actual +Elimina l'entrada actual del full de treball. + + + + + + +El menú Àlgebra lineal + + + +Àlgebra lineal Crea una matriu +Obre el diàleg assistent «Creació d'una matriu». + + +Àlgebra lineal Calcula els autovalors +Obre el diàleg assistent «Introducció del nom de la matriu» per a calcular els seus propis valors i dimensions de les multiplicitats dels valors propis en l'ordre corresponent. + + +Àlgebra lineal Calcula els autovectors +Obre el diàleg assistent «Introducció del nom de la matriu» per a calcular els seus valors propis, dimensions de les multiplicitats dels valors propis i els vectors propis en l'ordre corresponent. + + +Àlgebra lineal Inverteix una matriu +Obre el diàleg assistent «Introducció del nom de la matriu» per a trobar la inversa de la matriu. + + + + + + +El menú Calcula + + + +Calcula Deriva +Obre el diàleg «Paràmetres de la diferenciació». + + +Calcula Integra +Obre el diàleg «Paràmetres de la integració». + + +Calcula Resol les equacions +Obre el diàleg «Introducció de paràmetres» per a resoldre equacions lineals i no lineals. + + + + + + +El menú Paquet + + + +Paquet Importa un paquet +Obre el diàleg «Importació d'un paquet». + + + + + + +El menú Gràfiques + + + +Gràfiques Gràfica +Obre el diàleg «Paràmetres de la gràfica». + + +Gràfiques Gràfica en 2D +Obre el diàleg «Paràmetres de la gràfica». + + +Gràfiques Gràfica en 3D +Obre el diàleg «Paràmetres de la gràfica». + + + + + + +Els menús Arranjament i Ajuda +El &cantor; té la configuració comuna al &kde; i els elements dels menús Arranjament i Ajuda. Per a obtenir més informació, vegeu les seccions sobre El menú Arranjament i El menú Ajuda en els Fonaments del &kde;. + + + + + + + +Preguntes i respostes + + + + L'element de menú Compon emprant LaTeX no està disponible. + No tots els dorsals admeten totes les opcions. La versió actual admet la sortida &latex; per als dorsals Maxima, Qalculate! i Sage. + + + Tinc instal·lats el Sage/Maxima o altres CAS admesos, però no apareix el dorsal corresponent. + + Una possible explicació és que el &cantor; no detecta correctament la ubicació. Aneu al diàleg ArranjamentConfigura el &cantor;... i canvieu el Camí a l'aplicació adequada sobre la pàgina del dorsal. + + + + Quin nom tan peculiar. Què té a veure amb les matemàtiques? + El &cantor; deu el seu nom al matemàtic alemany Georg Cantor, el creador de la teoria de conjunts. + + + + + + +Crèdits i llicència + +&cantor; +Copyright del programa 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +Copyright de la documentació © 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +Traductor/Revisor de la documentació: &credits.Antoni.Bella; &underFDL; &underGPL; + +&documentation.index; + + + diff --git a/po/ca/docs/cantor/integrate-dlg.png b/po/ca/docs/cantor/integrate-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..470258f97cbcd8251f5d74784b407ad1e322663c GIT binary patch literal 16914 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 literal 0 HcmV?d00001 diff --git a/po/ca/docs/cantor/matrix-dlg.png b/po/ca/docs/cantor/matrix-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..a7d8c8869526020df75bba95a0ade03edbfa5bea GIT binary patch literal 5337 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 G|NjPIJ@ecE literal 0 HcmV?d00001 diff --git a/po/ca/docs/cantor/plot3d-dlg.png b/po/ca/docs/cantor/plot3d-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..fdacc2073d7b3354547bd79fd936ec094737daa8 GIT binary patch literal 13361 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

      r4Dy~P-yXAxP zbvcH&%l~waX0_I-%_V3X)_ssRTuIc*I`_IVZY3btCB#(d>pu7+ilB z>83z&5~yo*(%RZ;!1g5E)0K_SJ6@7;@DhuZX%HJ?y&i8zj}accc}>e%XlhYT2N@o3 zFEyDgVsI1#@u_1MHyodd6%L*biSx!);KZ$#5*;*57S@j2x5fh*Yp@reFo5AsSE+Zk z`(4)-bGc@Cb{(yMkeq~77bdSG2jVnn{owN7}&FO{0j2 zLIB>K1^Rp)Cy#hc8F;J^G`=r6>o~$Doe{a;>_*1y=$#(Sj>q>tJsn8Be@kLi z*BpMbGR&AHy1V^N&{uxB0*jQ2wj?e6@<`J?&%X(uOiMX+xqGI=N`KUfCJx-)3W|(H zkdcq-P4*$c+_M@M%3Y1*ZE$0{9b0+-MUvJb%#<&&;gVoHHea z2vP7;ns0?vcO@bD6@NFU77JzSYMaegs;|LAwagPo@f~}_b;}P*Lf=YP=C}Kcz*vD7 zv8yKI-Vez=`_t_C zqi9?Fe?t^fFx zDC=XPjkW~h)@T7J|k4{eT@U>M5U6X&R zQtZ!Y5jP{^fDZ>`_Y*t<8Jq%S%-A@I#m0o!kuHqg7H$Z9W^C5gUYO(lMC>n0u`|>uGpkrf@8ey{Ul5h{zCy2Z|@mD z>N^s1o=XL*Ik1)Y%cM}(EL5a06%rs z``$?p^~MzZ$MWxgZ>3Y?uGj0dkODFwzt&y_IiMo=5VaoD(y&Cs75AJRY8}Cg%Vd`r z%(gm3qvz(x{c$-hhHmh6o3|sORKF7pE$c7W>=bum%-^v*q9^hRdROo7srL`mHdezW zUxcZqVyiE+^R@?JgL)@)(zJFV~394|4y2k3g%i}xp!q(Y}}fU z>RvcBhkhqNr%?{9{$w_VExr0Rj$3&g|%d0eAk4h`FN+L@8;!J52PhA9BFYT5ZLA5ns z?%KwE-!5FwVK(Sh?*AZ@-keqdu;w*eYro%k?!P=Zu3LH=A04)gFbE>BWN1g5oZ7uV zLuc{363i`o7c$o5j{ew&C&x6^&CWKO98O5@Sz5~D;j&YH<2{dYw9(FUVsXh?$S*Bb zZ@`eb*B=EG?j0Vy^YG;4QU_ADwKCICmb1xD3Y%kh`yTlZF-!cZpuJd6CwZ!wq8#%A zT`jfM4ct+rxh<54W!Q*Um(xlV@eRE2YqD4v)nhS}l}aIqY}WF8{(V5qpWT3rE4geu zM9fjg9FQ$ruNKdqm96S>O0T_hN!Hg9g*WW2y|dMgb7X)Tf3=60xogx<9=@}&2!;ZL z`}{;X{B=zS^PWz!K8<bfn)lzNcv^>lO zJ5fTbi|)TQ^)eoonhIF1f?j8H2^|k~wc$~kt&JPwo5wt=Ws$O`Bi+c2JGL7az?S0E%jVGAf3Sj5Ez0|o~DCmCy+W5ZnO&wTy95IYBl+0qqN)@n3rAT*U99`h2TsJT2T zCOWYI2fY8}C3(rgt^-Ajp6>xgD@%G(2Xz4H87&^cATjY2BK+*ii<>N=6Pn8|{Wifm zen-cyMqAWia-yr=*%HcyCKD|PEG65;EG_}`Ojtx`_?#=*HG)m3+9yKB#L58O6il&7 z{oSqbB*yiAO-=3eHXH!U+?A1pP68noV$-g%E*PKJ7a->itg-jkC3-W@is7~Lzdpoo zR9ISsWh1UIsViKnM^T{Z9nIw6aXD5v;r6HsR}ItqRw{u%v&4y;&Ml4v{LUw-!8SQ~ z(6`wgsWM0(`k0Uzd0Wk3u8qwYO^r>D7~ogEWp1p7*Z57 z^lI2qJSW%jU`N>{#1p3NDuMPcBqdnh0@M2?*e;guU&&jYr+=^H;f&+mzn$;UD||x} zf3P}k7sl`c!dkg2Lwc!7Q@tbze@-)9&}qL$Sk9T3weCeU6cPGq`0no3OE{3XZBIB6 zjE~@m(#3is-O&`DMpDiUg2R?!ov<2?x{R7#`sZ0&gExLQBQNWCEUFzXc=fd7fR1}G z;n(CdYv(T&&7EanVKcgY1)Hb9j7Qdo-Zd#=dCuEQgV*0vwSPxohhBr?c%|L$?(TGs z+gB z)VXc8>|b46+?Y*ay-OnontpsXfuLL+!S?Kn z-TKq57_BRYfBFOOOD!$XD>F}nj<=1#K2@7>iJ+66hI?#EqIYuph^5KR=D_tL5@p5x zh0m?wEO0R=qINhz2|2$4(IcGIi|-sMJpd0 zle=4-$ugewt%r1NC-)?(2xXRC+IGw<#P_Jf5!wdQGr~C{NK0cOPOLD1N+p{rnFWPcETuG_6w*~j_ zd93YGYlTyMyW+Ah1W{5*NT}u9xC<5PEbTN9G1UMz$#Ld1qm$-Suwh|9QGuIAP6U%&ej z=xJ_($=!u9SR$;q$E)4C`^A)*C6nG^Qk?A;xUntcD@f z&wv99a=G|dJ zVVPl-e02xCN#=r%^EHF^9K)x+FIP3~IOKIT;jPXT&n^ySg%Or78miZW341*@C77DA zciUc$1h0{7X{HsN`YP z^2`m5K$ij2ziZ64ib+i&=W8+LbA#7)RGfLy-99IrTU&A{*+rT9GI`+}C+3kPj>?DN z^_FIhAugqS7Lv|hq*1KnADR5412xtCm#?*Yn?TDY0Q46QKa+T7=Iq)Fgs3}PC!0Jh z=kwd|T`w)r+h>HvV$2K=)4kR3KC1oEnsE#PV(Xb@pw*%6$<7o82m{d|@Vl2RJ7~&K zG?Un2gxeM;>*XvQAF;+qmH;zl)7-h7U4jvGq)0aBqTK4q@QfkZQKyDp8&+VZ9Tn z_2%(K2FtX+AD(&BPhz?p@3>i#;mUQS=~h(G4MIWmKCSkZ%)imDj)V`P39WunT}*=~ z4@Dr1R4l+ckX7zb*LmT+n8Ypq3=&(Im~Sc2Nk8#Wor}Y9m!rk-d3IF|jw#K=RhavUd>C>#L-E;YlYIT3$?#$!~++PPcVC9Ab|&vK=ex4$>}z>i>S|U z--k_MAyO*kQQy7I`P@kYvVA@8?-C3C#Enp4_9cwy9uh`nzg(>n$}K!=JUjO*%xQTU zB$$Y#^TmLR*;#L*^Mj?a*eX6+^Tm*}H?iKm(f~{T{%I{awl+GQN6^u7O+xW7IihWL zd~+Q}?lvt4q>DBqH&)%*Z3x|6`6|Ma#@(9gzNGrwR?JPy|*!A|J)>yzt`PO(_|9hL^71Uk$#fu!wpxa%s`oX>eC7(J7P7nr6Ks2PxOD>+=;>Sh(lf zK)w5bWo~aQwQqZvkLu}atBXQozRdM+VJH{jl}&}DyjZp3ejnkVE(bN>@^3A`CMBOx z);O+p`vT%dL|UgFn5Nu!G!3TURg8BBxA zRDL;L>u`}Qo+ulh@(1A*c|~6^87Dk5^#k2VTYy6@XnU;BZ;|srUy%VbyI?vSuQu*ed8@{tfAht zsQ{`50=GbJW;PR~$+Z+W%cT^=F6E81qXBk!kF~Td$OpaiZwgxrKE+;x36|4&!p&Pn z%ynvRAU>+P&l8zYrVodQhcsy`P3CipR7+YGmWT~6S`P#-zuS~Iw?X!YBcO*m`hOJF z@mBD!I#sy=+IsGaz{CGx$6Ar6OKND7y{&JY#;QDkNqbGeK|}2#rQ{wo2Nl=JzslN3 zhDtbO$)uDV#q=?B(IR>Ce-mkLl~8GYMk8oKEr_tig0RLuGt5A!YtEdmSQ3{?<;n`k&XEg602#)D;4^ z$OfUlYtZ>l_Mb%Vza1y~4-WVPDvkv}$QU8_Kaz%v&~YrfXR1P=|E<@5n4XUPJM@1w zd`ka~mX>yZe}8`MR=Fo!$eSoGI}_IOv5Hny`{Qz9EWhfK?7Vz)6{aEG)jB!-mL1N2 z)v_TZK3C~qeEPqP{1EG&>%$)zp_Y;!V^WMsg8yG^y<>D{!PYI@ankA7HafP^v2EM7 zo+KUHHai_Zv2EM7ZRh5k@0|CX@80*<9((LjyH?GrTDxk^RdXW|f)!^ugwfi@>4gm;46>`0qEzu!8LG zh3B;Y`2`*+@q2Rpa-%&0_n<23A6gsrQe6`h=-mR{3?`d7iHU)Qd&WUbzPAT52U7zP z9+h{+I>?Ew!_Ze{K^JQ+L1Hn;gh`Uy$Hzfk2jkl(2c}F|lqCOC4a!$Fr6%G-yUH|F z5m?Bfp`pJUW7v5tE^LGAg^1_bK_w)H#l@wC#qFykB7ClA$e>LhJgmjCQ9TlBfJtL} zj+`IMH4tL(cs)T*X4hLE?~aZvSGPig6Is)ZpWh<07(gZ_ChCbPO#XR{hY(aamk#-h zQ}63NI%=Wh8rB|!{-Q(__fFOS#5Kjxg2>4stodH$s*Z@69aurM9y71wwBTfXZHahW z-Bi*&w5@5LCMV8UuP^zvuKSoLw}$`bFt%4El6;}^Uw!e<8)bP2xfQ!N758%(zVEC)?-npO zH#c|5WXvRB{GU%Gj%hy^zldYPIC-aO9OCvbPVv7BhyK<;7MG9_c^bDDt|d{_82gKf z5dH9AzEnjds2SX~KK34_BE>zL6jsH&49f1*hZym@GFtJ@DXCkPhJ94B6ew6>(0VB;ppId8Q%)uJNx#a_aqqobQj zNZ6Tt_*6mzL$rwUeu0aH;jU+zaA?sCw5Y@Wa7{31(L)j@F4|TqRsmJ(>8bJ=w=_02 z#TJf+vs%b^S#7}Nb4(PNDG>fQ3Uh2Ad}-X?2Q0QVI#~Cy6XcF>hhN;J`LL^*r}L#j zLqhY)f%x-38*+jSvhjGiRu5ZU?V#CzFv6#HCKiKjl5F%_7b6dS^tYQWlL((!ARRo@ z+ic~xh=7PI4Sl4K#RkOl^Y2xFe$UMH8uYghsdqu79a+0B_FKNL*BqY+U*Z`g6bFP7 zK_({Q%XcJLHeI1SpD=7fSDOPJ@9WRCIwW?xwPGJoOS>EDvjw2KiXuS^sgjH?bCaWw&UpNgqW#+=gt`ycI^nw|>z~}klb?R(rUGdAx(*A2GYR@f7sAcL)VxG%Wyo*#!MGb1Q7Aj^*??B@X zVhlJ+YRIx2En3Mz-Rbl1KKfj))>IEHcLj<3$Y)&9pBKc~o~hADZKgyWW;K7ADZEvG zpLW7z(}xz7^FiJfgYV0gsIA)D5<)!^AHOqMBuwRjWoPRMsrDW)a8REoDWy5)=d&8j-Up8(yXbm5wli4XPai9;b-3K)%k)R#~>-Gi8Zkg>R72UU8`fdjuP8T~Ae3!WHyfz!T-sV~*-M>uN zn$k&28Akj{4N2eN4D5D*+BVW~2y}IF3%Gqs(PunR(WZ7?EGTy@)P?I6`c!bYID!6w z$BCPzDcjW(HG1U<)h-9BoDRI3z(0#Rjf{I=Q}9G2T$sfwx!`sN@D%b9HCXu9Ay01gM59Cpb zy0ntnbUNaa`yRB zxS_=ao3zaSmSCpW7vFebXrxIGX!9YE&E^W54Qbd8G0SuSbf2bn(wFR9s6jMa7M$$| z#U5^SFL*FtZERR`Xjp(y$n}0)cJ}Ems$C6s2yxWd;hA!s^|f8b{PJE`7XSH(>yy<9 zBZA`FyCD=}e*{E8bU%=yS;Gf{;Z!7m3JynY0P zFc>~DY=?a6;st%hW0Zo4O(i-$w*-FR@ib)$PNI2yuzy4jDnQP=jYE`A=-mXtjb4wu z8>M!0flK&9W3cOr{rw44r4-v$wV6(RcX{_NDsmUJk5zM_6g{axS#mfbD%3!Ka@%)o zV#V>dXoq#!?m}ydNeiUIPgm6EF5P~uvbi+rL*vMmc$~&uY-Bvs@VTKeb$vIYET@?0 zR;oCY)TQf*ntB&Mzee|LO@v8uqC*uU1G{z!sVQ6B`zcoa>Q5isi46|B&l1S_I10TP z!T(5oV>M?&I`C*kyhj19fqsFz?$>@uK&Z19+;u_1(Bfvq0X=CV&eIA(K?9ZB_=Nhg z?29*SXjezTh(+T6rwRWB;Xy~@SG5!(q%>}fZ3k6td7F9WN;53QMNxN88EbGPj$Z>l z)jYXZsJGWe{&*ApcGly!kcG;={XX&Tn_noNoJvD!N?=iwiHSiRG{NMHP-c^QRAoPs z+Ps}L&`aavh?nyVN0(}EDJuu}dq!x#;f2Wj`YdvdJrv&UiQ9#4#R*6R)p~Nn489KV z-%_^dIJwse>>Kr}+8uJ~V=6#`+SGT(=K%LkU!h`JQ0%NJy`gW4;>{>PdUF=rJ9|cH ztu)Q=pS{%A&V~4n(u??VX|N`q*v;BRKM-{h4q1v$n~r%fxOH|RpV^cYDySvLa?bW0 z#p|hCG2PG041Tw-9x7BWp{H7cJra8rC+gh2V6rO-FK_67(>|f@t8oqtq3dl?8m2@C z_SKvw|6999Jf*>k6|_G!xjDe@V>Kp*N`VX6KvXT&Hc_&{aGbKWj>APl`r~YDWLW-Ucvl4n%u_IXsFBe zitgEX^pRo(0bW?u_LoEOXM6-<)>gjG*nIE- z0a+06H6dcxgD!HBwkbjHtI=DoMR3@zcu~V(IK;O-vew*=D8s~Zby!STMk~#=d|JFi zv4C652Q$~6IU>KRxrYjKcYfEw%cb;b1Xv$0wD+XlkSqi)>Fki8l39lLMt=MHPux0; z6%d>ZVtB(tkcMAbKZ6tWsDEHD;^ildvikT!z@#|b9f_=k%L+#K!B#*;^$xLJAew0p zG*mnyb*)%YG%`&{9BODqBXpw}Y4#!|IhD!(_^=Vp>VY^tytNcM(@ zn&8myi?22}92H9#z-0F({dhc(#hpBgnWow;o^sRU4lH=~zM5vP*c$4;KaasmVB0y? zfkNW`;AEMbQ&T%S70u7tL#5V};u#&Ghy>1v<7zh|gjxH2me^*8v&FeXW_-v99UhA1 zdKk=a8k+>|O#gslzD-p{_ zfE!CdRli#cNo!A`yz;I3^_GA!F0>n~s$YFOe5`%GZyG)tdAagm^{V=aryk&0hT9<9 zETOp|{a8wf*_egQgZac^9*^OvhFgu<6e^MtayG%yC$67h%eglRLD1`}2nidiz7x#o zMqwzeDB^2I@0MS1N&c-EN5EuGn9gEBoEY$rgn{|aW5r(=^}4LWBBBPHeqjDL6QBD6 z&)mL6*mIlnWc)^h(;^Tk#*{Qe!4ZEj@l_2UfY8s)rJ~1Z{np2%gZC^I={%=|H`kO* z=*@sobgiC+1^9*q^w`=k>wl=_0H^5`g9`(08PBt1LS5knPsxchU$4p9s;RUY+!87D z20o_NmwZ_(ti^H(f3(75Y;upEtGs+p2(tzg(g6 zWIybI>d7jE@|WX{+n0RflR`F*Z?&7_V?4tB_-`%cokcX^B~Rv?Eu^kCpwzf$Y=);5 z>+{_bo=@EcY9T7Um*N$(!|R=P%=^%W1}34GzL=48adGRsF?lCk5sLDE*O@6f15doW z;5&;t4n=zBB^;3!cFe|wfM`ae3Zy=I3*n|fW&DbabXu0jAAZ;Aq>+85bmVFB!VwV> z>B&*KU08{&V=_$WhVnI>aB`~V(}o8IZ&Z!A|8Bw!Bea|7A6NG#g(RN*1@2|GJ=F-@ zdG9o$+PqdMyUd)8V7z_zMZCoKf2hFj=G*6y-K1hhD68?Q-=nXaS2?YIi{MnZCxnaU z^RYMj-oRo>y^-+&&OHWg|UaIp#_Rdd#yrs>h}!HdOT11EBJ2W`}99r17=Qh5|1Ut_+qU0oDP(0`A?X@yzl zfD|I0LVsJVFA@F+U$yj_>LymJ~@{0n_Ip3WlhOeyFsDxllEG1s2l z@LFD3tIkZ25&JR7EebwARGH`))O@I%=)}BRSUeKsTgz_$eYpoYkJDnYg4!dqW?N1=VJ;&{!yt%7D5q!xo0II#a%QFq_!9go26Q%C+@W$QPR|S0Cm7`Js!ghDKE)sZLR`Q=C-l**960yl4?E_ z?%^&tDp2)O4(~d?#I;0p@Br$`e5dqB`ePxd_$X7Z`FaBQ%iW0^iA@{v6b0iw~cEkAKtlir1?Y`8GhezLVL4$XLLUE9`;UO>3ZePm_0v_ z2IH|9i)C=lXUOT3+xJW+IkoxfmYFQyhmCx>VZpicncp_B zu7bVnM+zjvzQSHUMG#hMa-pGW)5j?qZ7O3!mZZD2!~<>Tf6oTivJ|}GuO`&^6;D@3 z%3nR{$wJ2Rygv$ez3U-%VIM69*W|RwdFks}GA~&IhTtQf8?5+xYw?eKB2<+gVaQ!d z42xC8n%um6u-3l^DCQgKti8CITwFpOUs=G-XkcfY`gXBSXpe}XD+d228hJ}! zk*fhP1bX$aq|t8A}JE40Yd!%-ncG^~N!J2FIdm3~p*rY!_ z()qE5;VnkI5`980liE-BO>yh zI&6&tho2PNEEA6y2IV%c<0vc~kz7u8LPGO-FMovgBg;MDN^GZ*{1}{}*|>f2n50aJ z?t=neN4!u~BZ-4yRmia2G;y^tq8)*2dV?f=H)LX4cVFi_m4iZ!2YD@yzT^w%u9YJA z3waba)<=1&nknjDQfEfX;#zpZrWEL8)b9sks|D>m!Nmc0t>&3>k)NhO^}%^M@1HLm zuYzNI=wtj5pIs(^kMtA+J*&;GD7RHPw(p>pLS0_7so5`~YA9aIr*BS_p>A*SJ~<|F z;G}+LLS2Ri9m@Mu+Nc!Uje#Rl)WZEsZ#x3xMZ$xp&3FcWrXP$0e_A~vck^7EGBpO| z8WUEg#MZ@7++s%E`lLi{t+WB&GnT3>rae#_CD(3=%rjk^DA-TCBI&nz-NBS4=Ja;P zy;0v<*u_5u%~kS=_Yo!2y9lZwkfQ)q30B_c~cG8cJ5_urUSBDK_B=KG{@CA*K# zaIm!1Yp0_@e6tVbo_HB&oWs%;O4TYti<)ZtLk+3Hx2ugwI&rtC!JxzT5WTblgR)Pv z!p58B*)zsS{!IBCNR-D<|~%GDVTh=DPMpMD#F882Sfd42>#p??uuDY?m!j71lgQ-H<&BsgRQQzPsDpHx+Z^n4Dg=T&R7;NsJ)! zT2b0?IgS45Q_WIO>KGf@#iT16#fNlckVNKYJu;x#e*V(z8`Fc^ot^YwyRZOUt&5x<4;xY31C@P@mu6QrK;F(tWMcVXer^0?RL$ zMTEjq93!n%xhl(1E(nIL*guN0`%Y8fRB0gTslE6|lEgjqE9`IW2a3$G-jp7d)Yke3 zknr#lSZ|y+_pUS;&m;~C4v%fK_mqv1(if$<#o1Q#o)9PS_{P$#9-)0PiD*{pdXQzS ziR6{4G+^HjD-3q$ZSQDH4|@h=*61kU)c`6y>T!7Ncx)IC4s4_nM+;5Kxt7N~79k6! z+<$(s2izxbXB$J3*S$zeqa}y{l}bnCYc@`mo2eAm?Lf=mVMogpug{jS1p3`t6?ZmT z&v+08S_d#V?0b?&NcxG|T(sFH3&{c!7sWw=_>&3-v)TOKo^SrV4B=$V;k-^!FRE*11_tHDTTV0;J`H`+ZkQ#;C#AJJUPh?W@X_2> zu6!HR%|U*DG5c|i)t{me_2cJ>bkbEQv}-0px9UAdNzWL`%wTAWOCCuz+QAdH%*^1( zAJFqx=OW2)xmX3(mnu9#u$+*h@wZ5ptH$M~51tRdD2Z8pQb$$u7NNk-*8F2OIx231 zWNXJJPeY?X2j78971t$dCg8MaQB6IH^i0g;2-mHLLuppf0 zjq7ZFu!Asx<|La6m?mk-y<$X`jO{IA0+8X;GrfbV5kM^aTYVGHo&4Xq07Dw}HZ2CQ zm@sY;m=5yW`gR%1Is6~Qod_OL?1RAlw$QSzObU8FIyQ}$_l$Hq8NUZWt2-URyh8P7 zh)><=8&PMrXX=Y*_WfHplEzHO3KE4_!Jq^#UmtXHkLH-i2==_Xm(uQiN8Qha(W%F= zA1I+w^Drpptz&avql=Ms+U?`VmGPXAV2k!)Pu=c1~e)mVGqcjb?XaI znrF_@$+OX52O?MSI^!>d#mIL~>BlydvY}uH&8$)!0IEAde7! z$}rcVw*zv+OG{R$1d~jOuC`U!Qlc9|;F5qPUS*My%yR zL`Q>voG%y`l4eS47E?EXiZ7_+)62V0qtzHW_mpuPf<*hsTE3p|Pf*O8v_fRli{Iu@rzO-Q{&tcrY~6G7ZWnJr~RxOJ-jq* z!Rkr8(U1gAw<2CvcqF>M0Z3BO5#q1SS3?;XZUqD|^=?L*5Nigz1F+^OlQj-blqy-!Okc7Y6bV!|aD@wL5pSc*u6l+%?F2WO#?XB3l@)irXj|3GfC~@SUp)S~` zAUM%fg3hCDHl1ZlFbj<(QO|GF-H)KodWw($0gBQW%&I0Qy0^mnXz^XQgoxuGNyGzz zFOZ}B1OrnDeELTz#3>D$O@b9%hR=M2vRjJyCf?e(*Hlo~KBjfRFz<sACfqQ$fQczd4JNhcoqo4W8dmCYg@ zbFOuzRsqS28s%wfTwjc~gi_wqGC`%`FcvSbYWJgza^i!y7j<-4)c(pP{|=F2QzGh$ zg{8B{$-A1zb3VBCsM?{-i!uX-t!}Eioz7&n;5epc-w@Qt$fh8eo?qnv_S4gD`6{l= zc}!r@YKTYFQ6cB@%b3=rD*P96O0`oTpYMLjvXeT6&? z8VADwxy@*u4j0E;>e>0bQj&X|GYQQ}utH(HTyV@%279|Ugl2cy2a zdX|^!0u5PCEBtQWi zY8}j1j1FFqKO|VICG+xm=!CVnDm^KwNqTqGH&!~p(x3bhCK^!>S?1H+$)S|aM;Oyz zd*QizZH5(v6iM@_HDm#>N7%rT&x{TGQQ4#$vI9uGqCKlv+psU^ z*hi4#=eLI(267f7jTRkspGNK6yduaFTH_|Sut}t6QcA?5YN=_O zP8y3x>NGMqbXCADA}af#Tr%OH#~nu5kIc~1*Vk)0ektXW_E)ewT{sf^?Z*$~w>w5h zpcZN6MH)cPyC+lnjkeuFr)U7+4o7=5_un9hZx;*gi-w*xE?q|KEI+7{hHqaL8qT11 zbo=R)UFWvs%g{ZNFAR4(R@dm)(|^y^8@{CBD$u^V1poviP;3j+823qXcD|IwQ01^R zI@*%0erM}{->ZoK6%BJl;#y}Q014?2G!<7qUAg}Dz}{8>R;!g`M?b>yyppyuXxGn0EzX?-%NR|bt~3(8 z3`}3y6}e^|9pOUtyTg|mi#G>0;$tyI0t&#RoRd(KLTWa@)d;JV{~;36n#JpS;o6>| zj$SKPux?;fJ+fzaNL)|*uQ!d?ElgOSO)^3K{oG<5`*FPS{abdW+w6?26q-`@=kin> zr#YV@?`G`7jhvZQ8-7t&N&RgMCk`^y+S0#_d3N%wGY8WEaWj0v<4ge)ymfD zyz|=p_iW7XVs0t5gLbz=S2U$nF0O+T>I>=`7BUwUKkrWpdZAmqQn*WU7?7-Gc{VFn z6`$q|eO6GcIpU|q^bC(P?|DiW!e2@{kg*_5Dr3-TpuC@KJ94U$hy(cZvXFC0Bl2OJ zhr+&c0tZD@IhyweL}>>y01+-}3w0y4InT@uNIGQ@^$FuNHSLpg*r>ZU)}2`z{1=F6 zg7NUd^$Lre4gyV-8VuQHzG3NY6`OwoZe7VEQ~MvvB&3}g1#mUklH(%s&98LXN4_sB zoNI&}ppj@i-WpC|zK!%}<2h#$_PdPqEzKL+O%DnqTZk(Y^hWs})GETLr)ethRnEt+ zFmgX1AD$nbH0EpGOeVZ59Tx2#3|u}N4!9<|x#E_Eu~c4LYgdJrg=_LZU{fDfl9Y#6 zX)}XYK$|X}RRd}-()~hQmJe85mdAk+lUMRDO8{;=kfFSO&W`@^!cG0Q&P}3sn zLwgLyrx^qYar?%rC55>KEms9JPrJF@-=%(@@a!PgDl?p7R2~*>_mf6voMKd8+pfS@ zpm)OcK}%)swV%Bdd6bJcrf6_MdSsEt@`8xC+pV`GZQpYEw<)%^X5g3vX4ESF!!uOb zQY~fOup0?@e{FJ#T4_FlQ%1k0}7T}4JaO>m@QjqG5v+eAZ4*f*!2L?r+<2swfhd_ zu1bYI!-PuGhTEq6U*hSjf3AlB#rhd+SF~8NjiUlYQ}eC9Pno<;Hf^d;PJ@nnbc%aA zD4)*;K5|#=Wu-mvL}IjBI%0E?J?XqaKNKlVnk;g=L19SFSx8X*Vz%%DsSAc$mFy}7BaH%ZZA7N>&VIi|vEkMuc@JTq3(xIF=<~F_e zjI5`oVV35nUXJuALRc*F?H9dtOI_74wnfaMykRuiF^{Gq)t{wq&oK_4#IhvZ=rNIum(jk!%lTqo!NpLqOA%b(1U zmNIvy=(~bJ>9ZzOEyHk|%#f)L=br3wK(x9ke4Yox(|FcXLVk#$dQk+HnfQZt}rl#GbZcGp4S$vZ#zQobX_g zVOC(<*!#n(-LWIgUui$$DI8z5Qstl8{p~g4p!B#PWUKw9yL$+4zh|)El+Mbg8q%mQ zD>nMpxsH7)%ST-H-`SwBUTq1fb^6>+0Ch(T*)#mGQCW&}5Jx5JGhM2%V4 zid~Kfa>v%X##EJB^iUvq=(O8udPR$ADxqdR)@wJT<>xvTwV!*mkrA=YO8Y zH#=yxk0Nh|%-Z<&TLC?Am8!G`4j-WCD(dcmA6IcC%BAYp)h!ql(R*&%^R=((-^sSx z_3+K9;kg~nvId^3SB6i>b*wpv42Yp>5}@%@q}uec=%fkXWJ8J4y=^0ufpTS1T!uY@ zK@D>X;6{#B(x+Auvz~cz-dDe#h*!Q7^*~g|r2pjlP-loi%85Rh?!`T}t*v;htv2$o z+sZ8mB0Y};1kV4?U?7+snZ>PlVwmcCyUL7{j@tJ^f_9?Cm5bJG+_Td`@M zMJIcA4uWw1KzyV<&@T4nRr8!R)f1095r}oP|5#rt)vXjQ>I0N1caZw0*LA8`Tc`KU zDdkQLO$cC+vgTG>cMR^Vi-3A^J-twY;lHb!d3YGI7o?3a1Rag-DXU#C+z%$W(8bws z=;b0Z_+I!L^PLhld!L}RmtO?~=QFO3-K08w`-3)!dp1&dda!BEo4?|dU^{31?lTpK zG(IV{OQ$qBz(HT~`kh~<@4@$LNVa~-iESMnEOr}fh)`s$H>8)!$#+7!BrufVi7u)Y zmPxq1Q)1<&@(~bEFtGW49~M@e*9w$G2>q>oe{mkj8#jgVg9DLCHl%o@&s7ZRBbo?^ zADEB;YK7hI-#eo@@iW>4kcVJE_Sy9xFL*P#vT%#JA~MjT+K7iTR$m_pIG&bnoMm5Z z02MU|Jk<=JO;Mw-*}Q&n1PEpmy}gv z;2~kllN4hUMs7m&->1Au!st5fE;*fBepBmM41L@h*iQ@4kj=Ik{k5Kr}Q@B?GYamfKrbOR7Q-V`h;uSveXz1w#t-YacG3$G}Tn zUT3?}mXR^aZ&i9bMXLo!h4=RW-fTPYn!d{>)$NwCPM`zM2I0HLSQI1h- zY&(S@WYE7tynukHHr*egIFYH~a`}Pn@pFhDNz|j3^hy$OO6+3)FHp_#?2TxG^KmZ( zUNP2}jQoM03tD7WQ7cu8iv00#BKvURT&u)m?~50etm5Y1CIP1IkA49$2aXJXdrQ&j zbo7EWfpI)=1xjCZKPxq^?)veEG#C1`-fGd)$GeeAHmjwQ=53d`Mb;_TIY70}W;T5Q z&D+8KM*@0Dny-)2Be2f-`ptvfmp2T}H(Wd@MgcpNGCDxSGU0?ZXP4MF(q}}A)K41x zZd!Y}GeSRyOPQLIRx*3#y9D%3-$erW>cL+C89z_WLy3o_%t$z?UrN|-mRjF5)6@NP zt7z8S7lw&Tu0GZZs6S<@gqyqKaP;(a%T5woX((0d%sDeCamn0AOUMIoIl~~^AC{L| zVMR78Qw<`#l3tn*j%2L2lK{=ncgXM*n&GCfgdx4$Z&Dbvo zhVE(PG7tAj5@qVIH7bGiUQcuHC;|>Jo_CR?AAwUw=oP$nZyd3fy-EQV`%dq3ql`et5Ic&FOxK384-L%E#=NNwmrw5T$#bPeV$l*)9 z6)qx(FI^`8;MWO9dC+ejUa#`y!VXj_CB$!F36At5|9d^<&_@zKI{PO0KhV>kJD0sx zWQIMnp6+_tSePWSGF46$Q+-u$Z$KBds^p0hV`%e(D zgkA$GP(uGyPGhN!OT;l&Yn^Z`BsiGwaAWj<6hz_|axC~iFYfoyl$Xkq^28dXet%_t z74ZO8giXBTyE=dUa!VMW{d;q}!mBMYCRJYqmO9k{;qtatO>?I6!iN+1TqKkJ21^nr zBl&L&z6`mtM2fvs1}*?brvGW!RUvqt8T!refM6u9V#wMGcV=sPM)2k2)+^-xRgG69 zz*!V8-t<9^i~GjsKSuq_wtrr_z(LO6Z*jTIgzE4ewbYEd+~%{fDZXH5O{^jQzlv-< zBZWpq?a!6Wn!B_dE*4u$d^Ph2_?#sg2pW~XNm9GG&AwjNcQx{<_jPfoA%wWKI zhrV`HLFAJ?*oTqn)T&$p?N_Ic_EY``*?$7u76^_i(9tv`x|c;UDYfLaY$CC>PmYM{ z98)kTEC0u_-x@0a!LmOv2x8e~iC8?d_iH%yY;huq^YmxNDRIabGuz$KMkXXVSaPw-_TR)N7`uE8 zQQ2Gaj4!70zed-;ia%W+126k4l-NkqnPI-97vN1h4B-!?g=ce!<%gK>T@MY@2~D_4MR zFhrB<+Z7Gt{cN5UjZCH!2HP@5`#HJv=3*2NZ(5g`_JGYx-#MOqskN18fQKEeL$>iojp}}&Rz+{U zsK5c=Z@Ay3NGs<03Yd>y=S3^^TEj1MS!vGV7Kbo|zjAs=z9byj8+?MQJqZ;Vn>M%n zH`%S9hN3*yTdT#jeoTg7G+FEUE2@SCZgluR#_o?@?8)>@FtWUxwcc$T8V zj{b;alxd$n@>gf}#O&m~DkwUHK-Z%aO)-32_L>g3*o-dv!^GIqN^>?J93`X1+?mm+ z(0M0ZP9S<)!Z)UVj|8$XB7PV6HlNc4@kjmYknpYlYUj~MAOY!17H+cG;6PzIJ5zcz zd+@l$l+Ny@=rK5K;|U3_=;>;<6oJz00i?0qPPoFzel~}a%MDA2>7Zmz%u#=W=Yriz z=!ybQL%|5i7mm`eq^R~%3lwUg-q`$3oGqp-BI|lZylJEqXjaAV>&ADXi~l!s36A%| zF!531-yUZ2cUP@DkmcfleX!uDmOYyPWSK8uW0Z;vL}E*XFn2^J0DV8D3NX$}j`E-bl!AB0ZC!Mb3r(yU|;xBdcA0=81eEv!l zwsD<~Fu2lnHY!!LLSA95uJ38@sVopz)J3M(*RZ4w6~O|K<+~@6^d6}n{oJT zKy(V=WBJPz+gEP-i6#tG?Q9W(T7G9#f&RczCHP~W5hKC%cgpd0?h){i(K$ zi(|;c9d@dykMunS5EM;C6%p5Ieh&+#=rp>67H(#mox0g42bgJEWj9{`c4b>=WLE|r z6brft-XdZYA!J`p5E8USp19vPTGlhbv=cQy){U-QDM`ojrr|A-@%;PHH}^^B=B4?< z*NkvNV4Y!9NJ{Gya7xy8O;Y)IBQd(QXW41QO&0Yh@_4+E+SCGF)W86QT5Ic>Zbvp1 zo|Swyo04u9a)cpeQm5h$T#s2buDbEw8|Xhke*(6|NWSg#Q($wd+YK%Fsp#pGD|hIXPE2(y!Nkl-g{Gt^Q0RXq)+!* zLM^5uTZurDV&@ak;%p(&YBijvUA2a+9G`5Va^JIlgGGvWTmGd;5IAW)9~-PV8K8r5 z%+44ZJ!?8m#51yg)-?cfFj0HIM;_G|002C=)580p{6m z5AWU+Ut))Kg0j0v$Aj_O3=N5(i7;eWP378UfJb2u`L&Lt#vLT-qc3@HUidz&L56;zRY`-A)PN6-u z1?_$$vA?~a$S1&psBS&eYKfKECLcSCa7!rA{PFKxfC9mN|D}wC;q&ja&RuFdU=D7L z%q5#pfJZYN%MPtMbKIRO!MN_(eI?Z1hr0oi4?=-$!M!mOI>dvc?(XR$W=J>&R`+w0 z1zJwY5(GA;lB@`U)W}tj=(JAJd>O208%8c)R(v}>lV*&(*T8G=<)W;CVr{^6J;FhD zzA9b%^Wrb1a@O+*I^+EoT2#Hq-<|{ugY!eU1KdFNu#`YZ?KQe0dJ^sY=!x7t*mq@N zKHp!7NZr*~8GS}o%iARXd)?y%es|5zdG+Y&+E4K{5vmK$DSwV-?2>o-Rzs7nt@XL- z0S3cSi286?Yy~-w)PH-n^P3nye&;y+Rm4t_->yzFX<$c}#lFHmlcv zR$(|@p4Q;7(P_(65s}Y(&LldsC5BinZ#YPfkKNkFx>_cUL4}S=nPwzQ$xME4MVgE; zc<73uCx1ue9fs!zEC~;B`d;sF-DuEnuah=3G^(UJX`k7|qQ^T3nwR@U>71YfFj|IM z43INfygf_h_&e*mqrRkoNXy29Z={x`_530$6sGqKE?pXC~n!u#OJ864mdPYD8@~Z>I?n zE?87aVcT~lT7r{y`Ng+0`QG0se4hOGVPuZvXP4eYqU?Ts^PtPxvA#iwaDb~m#9(>~ zxJP|HqJByIZO>?CupQTDY$-n3>-4u-r3x8@j?=@x_B2D?w4WMT-z_@vv~$UEVN@TFzP`v`&v;we#DBpkx!RPvX-*EGnHIo^S?y< z=J>BdDRf%WuK2u%-ppqOjru`+rA+XjZ=4G6&;w_4gUnm+8Q|wnWTXypv|CK`?kJ_Z zPaDezvTV4Ujb=1;gT!_p=9EOX(U+1XvHZt0lVC`vy!o}@`;7@nw7-3PM7%#%-W*n` z&K0XadhqFJ;@t1ylv5~ez!^B? z1#q@KIv=<_Siii22RD8aL%?SEp!-Q$W6SL1mbgO%^Kou%njl-Ph}j>iQo=;zyL%lB zussh6pU)?kXn}@7w~W7=Tdmz5^pDfEca=^oCO2As4!qSjny-`iav3bO9ALWUU>lj< zRpV+m;JXak6@UG+tR;x1wsR~z{F2^mlbdL*11Fj-1p}fjQ@RDl{05TA)`OWZCW=IW zzV2~&8~p6OmC0lrrw2}#BJe4s9PNCbn(c_+s16%|7?+bI;lLuU_k0t9yOj)%{l0@2RTy?$Zz8 z_?_W-%K2-vQ!9d>n^A)^6a@I;azCc{I5AV9AIW(wz9z$sO?LK7&!&e}s}#ICXn{P>*WR*)X`6Pe{op-^(s?e|cz8Mb22Fl*!?|d1wz{(HlogO) z!y3p*`2QlmAINThKzD>DtF6Xl;WJxC&mm^aD{$@Z=|c6MPv)z1vf86Hj-L8^-tOZ= zIGx^blWo_DIBt+?!Yr-vbgrr76KYjXa~ zhifim*50kKM-55??hJ4_jl`-9sua5SxPRcPExir)7}^{iQo{LV=?9H!eI<5(2^SwG zz*B+}ciO?Iz7e#{d}e3<9qVDN`$NwlyBXoLAGaEjHWxMp;@7Vd|aK$RQcLx!xTN7T)dpOZ#IHZ>0U1Mjtj9#}hf|GnqCu4eDOtu3dZ%pqp zZwVZVrI%dADW6?E<&jKyqiUb#1k9U&Wc>W1@9*gJ7^A6?g7wvc+MIDndY>aB5Ua4e z8vRoM&fO(T$X&j3>EnU~l~k!6MxPJ;?>Ml0b$QEdyRT8a%^xEW(rcdCcVW3c1}`sD z%Quc@JdRf$kJ^iY)_Zy+U%6|;W_JQ6N>vm{F12P6_C#-cXW5I35{dCEWY2D zHq%f#-fAGzsTzs>o`Q#>!223ib(6yWsnt~4e@v&X^8xeuh91yR%%550CAB0CzdTjz zE6AD26Zqq99-qc#@ccqaOpD6_Eo-OllM$Y!Noz89X{iY!W z&X9Wwou5UvRP5M3S0+iUVwY*7&3y}4?5f6~v9)hT6TjO364w5&erOF0wWQ8g&Yo@4 z62dn2MG5N_)Hr>%fjo%Di_v&znkMZTxxe~t)T_we<_Wxbx|4XMLX;Mkp&5*Z2+j{) zXUyhcZbqB~FEV?N0G79&*%?}tX@@9dsqP?0w-Y|OD^olAKX7_h67_Bt?-5O>F64fw z0(aOO5m(%`GG5+JWyRjng$G*+vk{Tu#Li}*9!$v1`0hh*A9&D{XOW=j6|cxWj~p7r z@R5I2^9#SxC;Ov*{$XE(MJS7nv233@^GmE#nU*y8=&H5TJ+l8}SMf%!7djQ8sw~Tj z#nf;R@wLT(ukK!F;Wx*UcO*y4uGlBz;=dIxKedb>#D|AIy~)R*?r|E!lmuvhz~%d8 zgru)jWbye1qG(tE62FwyTTqKE&o!0l)P4)PYui;vANK6OzctvUR!b_^uM@M}HkiD% z=OUbGl7X+Q&&g#i|}T~{obFMGIDhp`Sr&xIMhBy=PPJ-xWVv@ zhCa%Ku|dBhg+4#gd^~!SsYaI5%@dhQ_9C(Ulrb!5yv-306LbrURZ(!Icl^*yfdT?( z2i?4?W&MJ5%c?T8dP!nU=FsGE1@j))r0kmQZAUH==|gJ7hD~NBO?)5;Fi2E zDh!2dQD_e}p`VtO==5&<{kj6Ehk=FNZPiNokxt^z&VvbP6>Nk*UALUskCjqA^UWY! zd6m|?OBI5I@tV({vqok<>?7oE}YAJfT=qe=izyBeD>goW~Yq7kFd48Ij zxoOsOG-#oSN}t5*#;O&KO(vh%Mw>ZYel_O&A~uqJ=YzGjAss$N33JC35pMpP|2umw z+V;E?PbG5{*5MMgwsJJ1%%*bmVEU{a)#SbMGJhk7fWU4ssUTM^lR17uhT?3=A|qCsjSeVoA*^K`2>ouWfdzR=(ib*7=%Joj z%rT%7^^)Vzvmo;JDl2)o8#Wc|@GL>0>bZ?-wmZjFNU4$ig2j44C3nI~6LLS4ufpeOVYpcP~Be&h6 z_rWA;i{i*qXP))3C2!H%gU*q_N)YoL%!xyfm}(FEBG2Zv z7*gdTlJ;@!HR$*ud^)2I$VTv43I7-V`b#b82Sp{D8B=ls1;DV)(pY`pQA0(MFs{S@ z%^(N3-AJ!LdVx|({&~3EfS6Z@v|A)gC9Vf zdhJ1(zEcG{^M*-yYO>Y!+M1uNb&bKMnVh|#oGmZ9_4@@dhWiNv%Pc?B_-J){fyf_m z#=@np4eLfC&Kvl#HVfJLGs0!~{k2uh6+U2<%m_#iz;M#}9B}yGPzBGEL`wmRub4xH zA_O;+6!EDqOHlY}91+#mR|7g&-$t=2g}+#fvOSODoaISai)$S75^?o4WtgwuI+g>NWf-yr-{eO0;A+J; zvT%=WeW!xFj^;?fq?*aF>%}pK1T zvc-ZIACr*Ih@*u&sfUhG@Z4a(P$5_dPnPg@8#e(| zpLYZT=v~tRB|h&N-bm?UX+=(s9eq_2C#H zlw#IW|8}N<6Yaf8;?Kg>CUj>n`0K~YE8J9zJ@b7`opKnRu@G8->1HBJX7j^|;7j8Z z0kzO?2zm#qpPO#sJIO@&m#G)uFZRthf4I`Ex^2spMpm!o6Cu+{0?9SmfG6ua1}<03F}kmzCQ!K9 zn^CHI*6a>2ZvBn)t8*r+_I(IJiaRksjim%tPLd|+=KnYphI(Nmfkn5>W;;;pX*??w z2cxZh@(F`$!3yDUW;;r~d^jx{xp*&u*_hmXiZU3vmVgPE;=2Zo{>RdOpV&Zf&o{5w zP#2nX1iS{D);wVG57-!VFi|d4Y*ti|?310Wv!L$#)ZWA1{*K?hcrH_`N74ywNp7D5 zr4E(y4~y?bgugHprA{Q!QoDN%>B8GBevI`c83kdvYFX3p(4fI3li^LwIKVz&tIwCo zbJRR|szti=*A5nH&&t;ps^|yV3(8jX_>TGXyX$`)%Cg;VhuoSK{p2h!$Oa{m6 zEpIIj#AuIEW~*7G0j}Q5=m(#rxrgig8c(;{AL@0f4Fqa3Fy*;1Tk~OBdyn*S&XO^E z0v1(OdsBV7_2yWy$Hqu9Kn4#52Y1&nNvRfpF{TINH1o{XRK9!gH-Yf=3^ch0Ic6@^ zmYzSX7{6uK8??3Cg3A)ukW!HKNk3qRrrNgDX8Qsy;?sDdz^A*SOD|`e{y5MINIZ_= za%a-a{^_t_bphgsryDv48G_<RFh!+A$HVS0AZP+0GRjFHXWN~7fW&zNi>^KJ@ECp%TJmMD6y{HiH8JgCqa zI5P>69#U{qMW`uP`#TjGCh{}OB^@=uaIk9$_D`hxO>yrn*nhn8PTiHoScr_ca6;VT zy!M?fCR8(<@NHKqLNcIOZSaxhI=ar5fITapA$tUs?*l1jTo_~twMM1wd;-0R_@RiUxmrO0i ztJ;@m^Cv1(Xf)6TwqCMJ$_(X3G*7*Qs)d`Oh%Dqae9z1BXeM{yIr5v{<05sO)xSL= z#?bL#$h$C5)r}lnRL5)#EDJSUy_{kC zp#I!cXwz9q13;CIkj>&*u1)LMtiVk86NCX|?k`yF@<`~4UZhENy6*OJK(F5cmh zqB(+I0p%X|cg#cxWlXG(G9Aqp^r64FFB}l8L*N=r00Arbcr12Tt_O^<55`E8K^?+Y zvv-)yss6#81W%V(FrjwXBc>2uu)Gp+bW!|(w{1|DRvNd~(6q$hzHOm6*Tf&gS&ejA zNSCKKvY7mm!aM$IKmyjL+CQWaPYPOEUhU}6%eSvHBHNq^{!+Wsq$SbY`amARhZ6uu zP^hPmgHah*S(JN9Xu*i*zzV*ciFI*yI214O!0$`8X$J-kJaw9?DxSWjgxmjX^+3*- zUMSh$ytk$76{TR-fitGZ3k|sw|E<$zIox=SdCg$LW#e2w} zf+9?{3W zZV*o9cXWkd32`xuv0+RKK1D@^ladRx>p>!Qy1C~^n?oyA$r2T1cL*!Kanm*>zsEG~ zw9e9X2lR6fsdrh^4hhvsP<_%2lC8s+sSXeP?n3+YH4#VPBrj$%YM2AuQj1YV}m#M^5h1niCC4#IyKaJ%@{(72p};Avlit< z_s!^9ITf+Q`s&JQaAu#^G_oR7L{^gZ0u7*_@RSp^H-6c7OwF>xy(XO(mIwZCutrFh z80vZOjV!E5o!0@;@f@7N(;CK0W;jctPlE8t2lQvBse@5bq>gX0w-iP#B~M+qg-Uxm z12a{qf*1Q-zcux2uF20$jg~m7#q=8Zw`j`|&7b?=i4pXj4?XKj^P?8Oe@-650Nv}B z!0~lnSU{jP4jjELxV3vH?rR5LpbVmr5+@d+J8HvWK^^AL1IYjYq0_W9JVn>#iL>(Z;+cM8dz4ktdpZL7&K_@39R8){^v z0*F{T(Wub(CrgdksXgPTP|kkHXZpZcE01up87Ih{Adp%W$3 z7D{kV7XKHpO{A|-sQBxpFYW;t!|c;H%;y@dJ#KwYnUtwe`i_-G$Yrrib#QP*nla^! zBRQ~SB9V~P29^U+lm~4zT_0)8h=VA7u}BPb_J37XacIa?DxFio!$?8_Z{ zVaZwkhllB(AW{@NX7OBDzkbv&=Br+f~kk=gun(PbKcxKK`0C z(zwzwo4X{Nifz_8c6~OPF%EY5DL!Dx*UYsVYJPvvJ6UE|$?}V{%UA4ERAeO6fG0HN zTQu0owCj%Gfv++Q0wob|A69}2zYK6yy{Rsga^3=8RlZ<#6;sM3MAUYEQ+jpx07&{U zAwHyIPE+xGo}~}bxLCH~W)A&I;*npBBkrS6hWXPmi)B$!!<>AM1>uKdQ!RBluT9kZ z*e*h~*8|Jk7sw zIA3(Gd~fip^BzUIlDrg8DkpP~`rF4|)kB4DIjeXuTrB;JY*NMMUPrs1u~m@ zBNn%Tx;bQf2Pwb)Bk^fbcI5m?Od%KXN{mwDJRvm#z5hLd`&h?zvSz9Fth(q2eNx6z z;{7ick)tM)*mumoYXR;!-W^zs(OSY;3jvtdBQxGRIvw&x!O~XJpVeiCJjpGuKMGhH zT?g9iEJo2#YQn}B%;pj(#pKf4Bz@?ic-Vn&7C1vnY`&hw&(z+V#>0%dvS{KVi^~1D|@<3*!Btbe)%YVdu`qc9mE5gQ^aZ)2}g0vf}5O z4Cm%BFdjH#Jtn6Lu5Sm=uP>oThX}pprK^SR;08L!jsHc=h~82n`)(}0^SY6lfv00- zJrMiSc8T30&@`Znm(fdAN=~io8cpVw`-YASVYm~CbUtHdAJkWw5=W*d@>jXi%Ql&$ zLscwLv3@7)mFv1Mkg3PS8$Tx`8eVITXRk_!N(M)|_g>4ko&qF3qe;Jy^NeJe0scyP zR~|S1yvZlg*Axzk$Hi=}=e9nF#j5@1tDB1KzEwr$efJApzttrxq2lAD-s$8aE2ZMA zlB{u|l^$3P(o5VPwtowO+7s@0o;6SePJE*t7{me)i+n#yBp)t*5HbmUr-vVW5~ne1?iB6*sO!u z%0xH~*ABMTAICH#!*g&Cr^J;~%=kQ8 z3E8Bvr%tMYSu*voLY|`ChNd83|0=MRiO~Xry=QsVgiZ& z`up%y4%%tK{5mC>q%sM~037*^r28KSWkf$)&D3NrDub}UPx{9t79qXnM&FtiHOhJa z_x$XTZ)>D4JnI@2U%$)q{B@mA>&-KM`+k$>&!Cz3&z_L8oYNc9A1MF@Yn=|%+k?rT zbpZSJ)2*Akwo8z8scW@YzZ?e|?Xxf?)s6!rAAU-798MO-`9xO1*1$-`veymSYOE73)Khv8EElMMJcg?Yl&7M^=c?Mr60@h>vIl{V z281&=Xj;M%H@6$mtXYl=bd|Cm#jTLUKJcyN)3E16(v9FF`89$vc7WI*2KX;hy}nl3 z8uQf|H0&VbvEDXcQ~kRb>gtza<^uE@^xTVic$xS{!~20JVl<)a2-cM91Cwnqcrp%D ziu9*@Ht81wge-Ea{MrUSLwXv)Pd_O;YO*d%?KEr2&>Ro+-_cK@m<5nhZ7g6EMN|Ey zd8*=)ZFfpTBtxLOHa7Mq`#;;!6IHQZv;H>VlLM4jMY^yaodP-5*PVJ%0Ub=}s`zV2 zgi5G|gdq`x`F%i2&jx2o!KEBn7K36b09_$S`nML6WZ2xp1i~VcklnHBh7<}-ETh9O zjOSKV7ZAg91oGOhGd}y0Z+#yfWE4pbTAL<&v<2BpI}SJ=y4V>yIM2y^b>+)wbM=$x z(&6~*;BHObqZV0Mq)O(e#+sqT#Y{UPq91SlHc}JzD+}w+#F{jeqXnmPq17-+riYaj zDvyq?yZN57>|)5PiIBJjRVmaut(K{<}zC3FD!%1v8*RuM5hEvw>4svptO zeM^EV4l^CTvxdP&Yu zPdz(FB(7+ksPo&`oUxK@hR=}gBaU0t--Xzu5`lo#ZSxIhU>`s;{%we}aEu;336)uL zYJZ=rgl+u=KSo(o`Or@3-Qh|ys>}3%o8vZ9?egUD|LDTjek;QwDhr}w00S} zx#{z_LtFIa2DO@sQPbr9%)!X${Ayl?sdcS40}N4@l%U<3n?b2OyXRh*dGiCPUE)Oy z4sB{DtsDMGrlx zJ6Y%~P=mu1_!JKwa$9!2Cs69w$8LWd&T!xBTKoD)2Q>H6@3=C&N0RrSf~Alv31Cl@ z&*I2GX|Vir`Kty$4`2i3KGB+~aUy?hf$>((_=1|gwLrM`3E7)H5~N&je2d(C!3BoA zb~^vzq-m$KEiQyzNqZFCX_Yl=TUhEfNb)3We$X>?e~S>SkyG(|xJ;eV3Vsm~odg9kq6$k#(u za8(ruiIyn6*SAR4Cf;i;CED0P>Sg}a|<;)0gIe_4N15)@rFIof|Z!bYd@wR#N zPQ?{o*COa!T@gaLr250QW~0bduvPW`yjEn&o-_tVKO~1YGyyiO$ZG}+*oWK8Afhaa zj6(Bwx^c~@Ar6m?TL`j8^r2y(X!6VJJu(#-o1<`uD0_g#wk(UcBXpM>Z)kHYsPNqf z3XYFMV6JsyAJ9gt>d++0A=0KdBGud|GeK5=%N=?OpqJ2dJ4bls<~F9q33Tb1mSIY% zDK;m_nEKLBP1)Tkj7&rA4exsaSo!t#F>3t3iVn{i};g2|xwc=h1kag<8jO{ItZT@(kn<=IfdL;==s@ z(1r;Z!}`^f+9N?%)$_o+aTQh9O8S`&LOk&!2+KQ>hqlQ2ZCK;eE`1vjn5oU2R!nry zVh*l+g3%EXX%?UR16ntG#?CQlzK{==M9=Lo+bh(yg`ueZp^b$+9nfFj_< zsN9?UXLd7e)|7+Wa0Nj^A}zH(f+@Xsz(LoAe~f~{0hq{$s>3dm5PtWgiVwjzTp=+Q z$Ev&x!!gEyWI5j9By^TPeZ_^ejq9GFPcsV&Vd2BMhxom3DBGOQO#KvDgworDpnw+Y zR!xNNnFz+C={Dq@s*HZT2-%b)DgwrRHhj+M+#%d~qkKf6CctfiyXC~R3w9Ezr(lJ< z>Ql@5I#MUw-Gq=r055o|NoGeU3R?DprPpjo-qDjE!Ls z($RtKmVbKEAHct1ZR2v+r`Mu(-P;duLM2k2D%+Ej zH5)HESjNQ3&bE`x*gNaNYI{IdxWEV500n8Cbl__LWQ+g?i;act2lf3Su4-VCWmE!h zWz`3K_yI$*U^9znGlIZzzz$XUro@rF0u9rC=YWC5fg3HIRO^{ORT}S6p3D|ioFi?< z*LR@echqUl3a$YGf`YDpdn=Qo&Ab)|G*l1g!KxF)N}+4if2EK6$ogYQ#@Ue;J0VU6 z*B;%G;tlR%c_IZ+`-?w78&_mlb?1m=7`8oZSF98)NRUsrA**C5mg;u2nS1L*K#!k- z1i}OS4%b%_`8Q?0B+p62)?GG-H7g2E*X=j^H#oqjJ@`bD>!@zdwu->vMdh-?4sLI2 zliy{SnB5T<#DW8c;HWLntN>iE0<}}1fBtD`bRXW>JH81R(?1qF0M}nZSXJ}nE~v?r?;^dmW?+*`DT{W>{Ao<~F~pAX(`9B#4Qk5slZ!LrK2m!f5vlqOkk`Z5I>0u(T6$WCcxlTz(D{fnOVh>$V{h(b5wuc%CfC zAN8b0?kWWYUak|PFPdRq;(}#){uv^=LXElt-H?k`UT=s$;PSeVwi5{UPkatYp$rrkzkayz0kr-i)zC=W` zPaUft8-an8b^@HpRac99NSo+es?FE%qLwbYudOtiuUqLn=*u#O8rBC%1QeZU0?{vW z`qIh%j-a>7{`HpYk-?I){1r*L08>(yj@qpIxJYzC1I^19cOW=b{v4Q0rgSi~G9+zp zf$xevb9^P;=f&>`os6!ToC_*!U}TwR&53KP`4ho)|A*);h#wi|=Wm$J?SsPP(2?;E zLEKNsH3Xh-fEBa{Fy5^&!0rGJ-^siyjkB1JD&`a#pkgD;*X5G#ZiThW``GkhC8)bp z%53?Gt}kzF@MyNd)aTZRm3`iIta}V2S0p$Z#jJ>skqBr6%Meik{5LX6Yzp~zRDW6I zYv_-W`L8hz3K~mAVhFH~5X?)VbhzS~nBPe&f;XlG&QX1I?h)xWxDF6r)%>kV_lZ=a zUa{nO4|kh>sv^p_AR{BkWoRs82*uT^+$|TvKrY1qeq_uq>7Ah9b|FHW$+=FGT-Elo z*Z8~tEC7>9nG-=A*zRSt^vjwss`mVF0rhkVh$#hTm*tES@>#$?WvSF&_ACMyzXGqt5jo6~S%(_{<-soe3fRFb~=epXOH+;U~jou@V7 zte&s}mT3(Cfr>l?Nz2978~)CY_@Se+7b8nCcsdaiOm))Ko!|dlHh)`W~0Nw6$ zzCk)Mu1xbce1od>mMp$1%O`KllUqZZ2QfkgrQ5B}t+Jt1#S2F}>8|tCI?CV)8Qf@( zwW^^XQ{>x4N{z99j%Hh>DbpGD1(68*A%7$WipLqEMq-&uSBLhJFw?%c2fr`7!<(2VVGOfXz*UY(>%2^O?O0Noi7NmagkAN=eb@W;+`=#PX+qrqwP2hwsk}1J#T$m@|TJ24!5K(Wj>k zd98aeb~$-vlWH9gV5AC_fh?|H{^I3EGPi%{xWyaWmanfCua%wZ zOzLB9h~!?~_ne_}4YoU)D~N1&DJwkxm6hR%0y{<*ivY+(c!196e;%GbC{^08Feqoc zpT^2F3wudZ4?R@C4Xr@sXK>+ksjV37)#c%aorPRgK$@~Cq1;*ogzDDu0Njj=1WPQf zzRhOP+_|h>2@kXJtTXLaj8_LMPx9U@{{DO^t!nC0+N4JM>f21E7*n0dtnDCvf=-d7 zvNDImXEbBfcJI(D(K*J#nrP_XCFTA+ z8FlH0~m^aKDH7 z590o52;MjS`(~+z_6-p%XRAx8xH{U@ z{ps&Z68XS|Ny0npwF4Zf`Y@NdM$>&{QxV=^i+_w~4BNS%U{u!=x@-ExBQ3O4@Hu~s zjCE~W=M}Fpc#k<^&Ywir09XUYeYd*O0^J(znHu%KAH@6wRYH@KeJjhW9sRe$@o@|4 z#)IF#)63^LiXuIRV$ZQ%u_e%)(o4YS5h!{AXFqkxr|HH@Er+D8@ug7Y0Q*^WvO8Q3 zyxgA%c-Yo{C1&4h%k{niRf4U)S7V=dep7&s=oY%)gsJI##GqU^LkrjQN8QkK2G*fczlTD|c7?Z7|EIf0k%Asu#S|5I zbI8wD1H{F0#tkn+9D(*Gr_xFqPdQzHodCviAL|9YCv0BAv2)NN$7=r@_ipWZa4d&j z`71!FSsEX~R>fN&5n3nm2qL8B@r*gJSW>=pfJ55Kw!&YoP?1_6s}m8}n*I#t7?K?P zpCZUHXg}mSJKj6_`Cz&tEL49S#ntYXNV9T#?gd4-P$sS|P6U3JuAoCrWB2^4+?&;U z^8@k>*xrJ}RZsPH-wc2e?ePL4NnJF~KfKT0dh$o)@*8Yk25hQrjiaJ1thyZ#BM)C7 z!jgeF00@)A5c9>!0?u_x7PD;;Bd(9u+XS5$%uMrC4y24o#m?b|Fp^_t>r@+K8I!9VWm%W0be z2XY<1hjw4>5euOlLKZKY!_&Q>qbJ%P1P+>ljwrN^ieaI7b?0gr)le0IsM=(Lx`M!i z&RRY@Gwv<}FqJ9c1lXI5HrGorNj9V3`o0>L48>Wsf-nSbeOTUum<(S3dI={4u;Mu7zu-K_@fkvIU5 zN)OI$GtyAsdIGCYz6c6~V|nI!{{S(9NSqbaByC1uc>3PKHI~_#bPh;G_^m^%rcy^! zc-Zvl0lAI3zSnS&7^CZ8oY3O6HQcCH%uanmOVtDyV)(w&>_J0&eP$W}7m7?&#Pq1U zN3|6nJWOX>)THmZ|7EDj6=jw9)Xw+y^;TqG9ghfQ5O$|?OYLrJf?>$^&hR3YXR6Lv7iL=C`rD{j& zYOWH-LAJNhbKlItTMp-CkErgL-865s2rR$}t%h=2r+-5seKWT>18JL;z#TDVSFFET zEbdQ`Z35OKGX~PqeOo>y8Z-eyadG+U>EEtD?#w(xVOANvds0%(|67Li`UyNMlV?k7 z?~FH7B<83*_Z^WSsbK42b{n(dp5)JCN+?0`V?f`lGbW=me^g_Fj9-6NzufK;Nsgth zbUHWA?yE;P2RZ0jw~}`k5#~ zISKX$(029*p;D?T(C@p_!>~Fk?9KW%y@m+;2_B7hV%?j^ZNrh6eY+nwwKFm~vBxe7 zlNPz2A92mq*>lFdr$;N0-838RimeOB)44E>nbq?23eTmzJVDH2J`kAEH~fFjbz&}7 zkx>o#3XgY{%zj@v`t)iH*L-~;?pAHjM@H(P5d1|mpq2WICksqLoc1c@GN&w3bL;3$ z3#h)-2p*t|IQRy8|KTF?2n0aSIKfx0^pz^2H~h{(^xtZ-J}5Ne7N)1+9`2N&HfgR{ z%>$ydc#}O@QL~xnlC3fc-qh-4@Ags$<3ggx1AhDf9wm`K?c4Io} zjP(49I>?yp%0baMnD$ab3+1i*c%wZ?dIB*>XIrD|$$ID$fUlyCBCP|lK1h!6;1c?U=Fn1IP}s>LXI zl6OYUshIfWWQjgS+kTRv5srH+esu|vyAqK1m`p~ODOPExOHgkz-3`|A)BGsbSaOcA z=VaQMSSD9BM7dO-35%TXqA+-Dl|7+aPPCJnJHjX`gi3Vafw?FLWVS_AU zrb1}gLWoXEf<}5mqCX3P%SRhi`8ATno{2X3qbQ&LQwcp*Qf;l?;)&m4$V4OnQOM4% zKBM~Ek0x}EB2h4|UoW?j-jb(s5U|IOeaaUsb3gQ$YL5 z7+}QZKtH80TD#@v#dDVi=W0<(wTluWI$d-(Bu5@-qtO=0|4wxNA_l+00i-Vu-_4%+ z{kp_Kikg}XC%jt~M2^HzqlJHBZbHmF3ai;%{b3h1%J;qMQb4(GjG{PMs6>bnjb?b? znKVZcugB4U2&Qx6dKG(X{{sd;asOR|lN`B~e*#Et+c{OwjK_uU7&IQYFfAV(gn3_? zQsRueU5Y6vqAqov$`7C2&Lx2M(!-@VBH;ST9k~7uu(cKJyd~~FCx@*T@$9@nxP;;R+AO`fAz`Nq&tJ+qz%nko>r7uCQtZ5X3|g4^2+(7ApQmyDmp_O?cXg zu=Kg>kZ(zt(D*`ca`d5nk>;T=&auO8cB|Rny8J*IsKS03S5fzad;hvJQ|^fdmB=}i z64e2olKgX}B=T-)7V1S(LM(@N#X|dsLu$`}&YYq>6=J3V;s=vT!N3^dY75dX38Zq6B*XPAjN(4FFlc~CRZ#d>Tve^8kp*Lq7C1vUiz zmk;`DluX=@Z(*%$P7N$KF3_xha?eYkN_Ju^w(RfHcb7ogw%vDle)4jJ@qd2cQ9k5X zn+yrhD=j0uykWL5Jm5#_!eRFv4p|*BdIPD}ug5&g+}#Q;pdl(E<3y>a%?IaZJxI1QfN3R%&bBdm7cc(hkECj1p1K zRdFuZIXUHO$=)Xg908P(@}`;9AI9(l)!Blks`2d_S^d~3Kz(>|&oCfAKah}%g_O6GqEXT)Hi0Zr*yiwV%st3A z;dVlNlv8a*UHjRUf;f@ZXOxi|i|XcwG!TEbk`QP+C3hWolq?j4U$$@|lGFNW0w$^8 zc{~uwXyDgJ5PDd1M&Bn?5jQsw6n)`0jFU(CV0QxX<^E}9N;0fJ2!8e-8bKh?Y$wxnka$(*t9&`zarG;Tc7!)z`jd%H zyU|`4KwBvL{ST5?9+M9xt_Uk@AV(iuV&W1Np)X$!uOJLb>`?yHqFNpQvsUGy_eudS z#~kI2@*cfib;XBvic3QS3^EpUec2H*m(Hl#ycWawlpn~(LAZ(Hx`H=1yd3Z{butTm$05ofViO3zAuT)Uq`d63 zTNP2yc*CB*|_nq*1{^k~P;Q#a1I!fM5lE4ibS(fNRM zO-U&}MuQlut6`0+^faCkriwLmHRhm4dO!m|9Tf3Y9pm=6Lnm9F8I1Kwnm_W`H_fo7 z^NS{KoC6eM{}2mVF458CcO&uKmb%cX5G}gJ8mP{MEA`k%n0;Smp0bf0gY`v zB3CP778)$n(-BV07Sy*_P~2xb;aJTit?$MQ*l%3T?QRvc!h>z3c=#}>DfC~$4d$>nZ%#O} z?Vj4_@+?|I`LO}B8ZG&N4O9==Z-a!(;2Na#gevamrjf(@?VTB)HaUL($IQz1X+hW_ z1LSR|uOBDBvmZqia-x~v};OXNjwJ4gmNpNxlu17F*4lN_zJP9PWBZT zpAF)K9b_5T5@t>vOWQ1blC^@VtO3L07We%C#a~kPQcO1oZ3$9}E6#Oyx~2ZJ3XGbac7;&TjM_Axly!YOK8f*jvHIPI0kvR zs|mVr6WGnk3fu@-ddMDku7OG9L7Vb{D??4)<@-DoK=a<0d>Y&GnLUz8b~^(%B~cHb z2i42AOaxu=ikqkOn$&X_ww*H0uld-YZ>xe0#d5v8Ua4+#dDQ2KTG{!#PVa)xRueiE ze@vi@E0zohs(?v>k|Ea6{7<$N0a}nQ{MpeT(3pycYpEQR=uezI=2r$qQufEru3WQ# z_!F?JA{o)L%1~G3_eW8rv$^~vxVrM-7dD%T(q5vGu4EUL8swM?I54gb38sS~A~I@3 zb2G<_gkUg7*CHJ}j36YVU#Y?I9}lcWk5R&V3`Zyx%?_7kds{5GEUy5O8*Gxe4nj_70{U?%h;p2E2n6k(zy;h zvg2vyI~mts1nl4P(Ab==qp4PoHMZ(GA^4&wQZox=pG^H9tyu!Q6d-(@n6~bG;5!5S zBemJ>)?$M9evm-Yl?CjIXFk9k!7NVzRap>(vd;{_d&|Tc)7o+4=b0T928e6i0+FTn z*8YDC`5VdASEIKs*n=uT&FSGaM?zWeagIA3g#TSLOG(>;f4u)x@D77LGIHsLG-K&l zqO|t8psPpM?B3B%IQs{EL=qo!0#!MSYFjibE2A2tkLaM7$AfOv%TPY!y3|*PXO2&6 zSr#IsAgf(;*3XsUA_%_%#fWbpTG-_IDf(H+t*rFCUj6w)(BZ%1#CK=r0;IHGI_8DU zWk(^wC31b)3!;G*r1apZv_O_s{>R!nppsryG{r^rJV+rZn}uCH{9bpEQR_H6Spe_) zt30G+bwf~0zbV13w9BY<&l;Z&kJ!z0QBg8HrJ_k<6k?=gS=wC3M0dJ+85;e9+*(78 z)~?_w!NLqG+8Ko~a+M;fZ0d+4;WFs^?|Q04$8;@m@h4W_!WS&oX6nug=cfuKeI#0& z=V1jpAeBIATYtzOG$tlOwMG9|F#0!5w9Whmfi0R;%|whyDniUd4u>p5f_bZ=wpUmn z$xQRPXi@v{PpcFnKdrW}B(LVs69tfh<=P4n)j0jC5U`+o=mPaig^ld~KWu#kP-Q!_ z?!dqRgS)%S;O_3OgS#`hyUXD2KDfKP>&D&P-Pyq7-2dJ8?mg#JrB>})wX@RcB%Mz8 zm+m5Df)X1$i`j2Dt@wU0sk`=Yb1-H31Kl+kJI1gUY!!|#h3CZ|=~0pi7amEmeGfX$nYDLV<^MpvHd82hqx2Owp<$C{fAOAETY;BSez;Q>Bwh8K$KY(`9 zHB4D3qlZRW_Y4GDVBC#y-&LyxkUS7RTylQjEV@LDB?;C^d^w`GLU~zWNP3n-<6RDG zY0Dy{e!*m9^sA^d-6DDOS8Ks7lrx8wYWZa&x+P+@ZjZpW(JyFl26jn^Og}UB-GT(% zrIDsbrUsShazjw-9t1=E7LoPR4LlP~sm4`{7{l(!`eiJB$?l2~uM<|tpC4QGaYJuv zNx;m2aNP!lc8PM=**}8bNy^~ zbSL@sYK)Ng+xr}}Y;8VJFmQ7%DAJ>9%PsIrs|pW;UhmKPCV-|Jg2={TqZ60ivoQ*o zMq#y`c^KiYnKolVB&jIBEWa9jt3S#gaT)Qw)svk&3{O`e(vVzmcS#iw?&4^Xjl1cm zJ6<^Ldzwg1mnl5Lpr4(52Gx?Q-mYIH#6!E@?U!_jC2n~jcMkCM{%}HK=gsaJ5;mE| zhKy5~u7Ac{AEVlgn=>ONM5PTc?-n??1-3bK{!@ziauH2M#x1n74t7jTPI!fni=h?^ zUTbW{Y<2pGBKj) z^*sbCf9Lu!*SuJ&&k?hYIV4(#lh=s1J3ySR-s%)iyL8-g#e|Mi95>{6#iP6E7m+`J zW+?47l3ufPoZ8WkLXV3qVim5TbCzL28)N4VhStsV$?b3%36vag~AL(BjW2Yg*T? z?4Gr6L60aBXpNIp2bE0aQV!^G_D!50_d7rRZ3hKRiL=%-xA!{5=hvcRLW z=WBLeY|JLT!ces#c1?!7*snT-9!yG~cvv4!!?Cra^cVFkZNb&(^N(@Fz1#dzc?$-j zX|rp3C7&4~i}6f(yViRDKnfS$=>Hr^$jVk*|Gk^Ok@~^dnj-OcI1$hTj6E$a2YYqP z(t=+`30kAx0v6UnFe}wh`j|mm0tXNG9lMQ=S3uqh3(SBJsjr`2MuOV*cN0eHK#wbs z8${#9#@4ov)7H%OhajIhzF+wjf1o(`QII2qwp75o+Sjx+t!02OC-Zz=3=OhB)dFRe z?ark(yVnP9o+3CxxDtW@8_jw6Ltqgn|H@>O&F(Q=SGZ@7pQQ1Ye;TW&Fr|7L$pdCq z@J$IzpPSWB7l8#?L1EWyO3|rTJ&O&wM7K`pG-l<#_RV0!(R@`ittPlN?8Ois=%yl) z{SQS}1|+^t0e@>)Wfp~iG(S?S`V!-jSGLfm;$W&^3#uNy(RRt^pC*5o(o*E|t|8IH zugEIGB~@o?>4OIS+maY84&Oyp*@DQ(k;F{pe5-_)o2@?$IK{QHfDemODb$CvKPp{p zWFCv3N&(+6RYCUIsBxGOX^gl}OrXK$+-0@s6mlKect}|)tLw4a^=Zs{%&>t?vKW#e zKRU$R9O}gPx!B7^gVK>ie*V?bY2T>IZ_LGq*BN^Y#-Ld2OGcUuwm+u420(shbA*LI z;u&n_MgAnH3|L-e(>H^iPpG>wW1-%KCL{0+3K(JsUBzP14k>v7=vZ^8E;Ps<*OBwsV zpSIF1Dg_$$`X$0TU(>UVnP$5B)$Ao#eI{E^z3a02<4zMMZKpI&s7|q`21b_!Bo61d zEqhLEq_TcdED;{wz(~KzlU?7JV*J$b$VI+xQ+}s{A((Kc4;6R_GVcF%82if;3KE4E z5z!p#dX1tm^K>0Y!u{;QBRhbi`iTTmrAL3+P122Mgsey zg1fuT3n2v5e2uF#FC=p#9QyaKeHBp^O*kE`TM-getvDcx2OQr>_R!t0#rxjcMtkXLYhk{W&1Wdytck5-V z;z(SjKf|5QF>flDok^=$;*7mvLKR<3WDz_}lF@89!s-(#G2^@w7dDo{;Ei;Lf3>`x zb3^*J5XTv=Ok3jGMyWyJ@9>hs#X@MT-2x88$Fh8mTrwjPbg2SgB5ht}J zu$cEPqad|-w<8Zp4uCX|`gIOHHmu4N#N&mM^E$`aD$-&QbsbIheNo2ut5S5$)2tVJ zEeUh0(By9fF=%Tq(_Wc@L54ASRKJ?D|9MFJuUi>c4M&x^zHs z@L-oy0QCU`*OPcSp0Op0`Ad`kCb>Vs7#2{r)P`FJmKaa-tiDk1PRIn}AGWw+lid8` zwe-3eqWWhZ?d1By7OUTXw4d~7v>ol@{XRDx1upVnrQH34n7^)w=zaz1kpkWhv2xd4 z`?qye3PN(0?#0^%Lc?@RMe$2x6*KC(2aE#7but2*)INGvjG-BPwiV0Q+VKzZg9t=Y zmrx4Eo-yr1ul0vq%w`P8WJ#$9cZvxVgdeXp%QS2q?IzymFe3x5KLk6#(}}MJ+EsOq zS{@1%^+iVGgW30Jqi{N8c>Pqp_wroAbLs%xF{QKr{h(Q7Rqta))Z&* zEzJ#*!XxIk2mNA;Q<(;}EP7ra#oTh$B;)+e{?p)Sr zPygy=JnMYHvB}!(t*MZrH?}p6;6o@-Eax7$K!&gq;KL#^7<|41%#`hnqmYml3SQZ? zyWOnOTigoZaM>eZhj8R^%aAGWQt)di5-BnUe!M_8Z4K}OZ^l^HWT?m^HI5a8ViJ=A z`%$pk>f2v55~BX}ll<9-9@XF{nEncs70P&`X-&t?Zs=FWW3<=XW5N%K!Wpdj>M&i3 zLQYp8(cf9rX~%bqbFXsm#|};DXe}{8^zpKGQ{|v|@UA9NeAE1)QYybc9v9>FWVgWD zPHz>-Fl%Z!8O=1+*COvpnK)*Qjv}@-hL248n2E(*cwTVH9b#u>&h|4Auu6eV`yZZN zgR#G;Y@L{aWD*_lI6;dwD=!r4pCrib=P>=gb{_I9Z!QY3{#Xsr^`sKg*5Grh!as1q za>>n&<9`-THX{5%3VTdSDLmSwGLXTojNgF|5S>AV&!Q4nDJLW6y4N$)nLs>nJQg~P zQe93(Rq3F@nb*{R?ieD#$?{(o!(6><&>CbA$d-Yh3a|WiJ$fAEzp2Mc%aaNY*A$3A zEgUgEhw{gWQomDCmhlGW*A|5nJ9R{`zKDp=v&KsY_nz|p237RSPfT5Kkb(;z6%9q% z$1W#}k4EU~QbCjokkOKU;(cGxR1@{&tLTDDhqq=E-6TjZHoPHrnDL0sBHGuWQmKj( zvF`-|L|~(#uArOP(TEsy!C6kf>dod67Bo08NkhH7An1rhVgkK{u~e*gb=Lb;v}M%4 zRc7I0&6R;>)*db1QSf(XS~lBd7cc}V8E-RvBfWLD z{S8_~kpvbWpGP>*TjdBsXCTs+nE7G_WFFbe?rw(57I!tr!+~o!O<3{z`kE>5m_4s1 zU!sySkmUWx#WQ(NyXx1a)3S|}^5!O2+e^%ikRhVTe0b_1QL_sL836&M$b9w}QtRiT zgR}+9)rI^+_PgIY$_V5{TMH^{-nc=IEJ|~>Hhu?{h4O0wv5AkI$SNm`{?^rWv>R?A zV4bK~FZCi{!)y5(B{b-PmFvB?TO^?k=G?Ou4O7j2$W*Av@b&$#giI*WZyUr4){x!v zRo@=n7na`&V-jqj1%T;Xu4sf!7F)$VwI+t_n1{NA2%@}2XFG(5UAcz_N0B(!FpE`T zwdiuqqPA9A(5f7v2?+}B=EsJD1Iq#>XO0;it&!-IpP3PrzE;uc4CX^JMBt|7R3v|e z`QAQDO_z_b4Y(lSHwp=M`Vsp8q@v}?x%Cq@p0hrV3|3vf1?ew=bUO%vs1ia*OaO=7 zEiIlc$2`#(?J80ysd;ZcrV~u0!n|s`!^y+?H8r6GT_u|ttm{vS<#O!HN%jo>zs z9kA9yo9;1l#It*}9eE%-2#z*>q+YT$)Qtb<8wBSe#sGK!K$+Yz#&nQ&pX!yfQu9zk z>R7@_*O_!&1jW;4S2VgnY$#xB2BVE-`*{9~iX-X)+4CAk=_#mOoAg?jE2`Y_mj#zQ z!Jz||99=!ah(8d!lLMBnqKEd#hiF$NrT+ZjwUT4*;;*`W)3~f*O|};%U*ec66gJyX zu_*4G9*n7M|FAODytCO&(0!Q(mHFAqEJQ8GS%uzGoa}cc#%8y>4ACD}uWzjzk`~{V zt9ap9xb~Jk%Up24hWhY}8T-wrQhQ1sPGX<_xVBn3~AX@sI;8*0b8K67=eVVOut3&jM0Kj8>45{=V zEp=~1gfHbpi!+@1ifE$c*F`!qqU{{yU8HzW;tHn(HwQ9b-5*N^X{qn3;0IS=hji=A z2Yr;YE%92DBt1jv>#XCMtdRtQhY;l6nBj18gG_Slhiw{+g27Y5YBgNT#XSBbXKLYUg0NTXTdxM^eIEOO+q3;B#fF zc3(y>w1ngOTRKb`?RYt^I-@yYQ&ggeBeegb=PaM;0aB+=tu|NZ(LLw}RKBro^N69F zBv$B+O9@|v{JgU84q-VZ&yUT$!@KR}0Lr!p6;i@O5ypzoKla+Z zF60$CZ8z;l)G19Jg$R#xez1L0M|s!5vByyg0Spa*eclDu2alYC^n?iuQjMNyX6&-- z8~`)629ek!l*Veu0|+A-kqi>8+fm70VuG}R8cIDkhMM6&_LR?t#Xu?{qz{W7HZ0cE z2kl5<3(TbAPZ>UYtq6gV43P=)@7ATAjNKN`_ucs<<(EmYiW?g%TT4^OBfc2O-a<96 z8gtPCzIsXLM8=uElhMo^XxxR68v2yqHfzkF5# z_j%5Y3r|8nVds<%R=W4nD z3f}ifcc-3?V~AONfZ^*Ghr~(Ou&=CnY5>?R=3oAQJmh*BSOVCAJVYdL7_BdK;}7)8 z@>vOc6flD$x@3AA*LqhKrM()&PyzyWQBFh^Ks{4oijnRw~8=W25MhaLq( zKfFvPZwHSw&uiX*IL%}DVqL)Lq*&?on2GNqDbD*)b7U^?k z;5tTF%>DS+th3NQ8867V5q})mwFz9C5#x)j19eLg&q@_HV(}4(s)xGy*z}{4OM1O> z)|yq^rNu4PEY_&F6e#$tRZc9A->y8tIboJU(x`2AqE*4sID`S!?PCOI4Vu2;r>*;) zhEqkv{!Q=#LmyBK*GD=LNgXJqy_(O?AFCXiS)qMUmq@yW#zZ{--;Z^2-@4rOgRCt2 z(}A-GR{6X!+<|_&SVrE)78w!o`%oy()^gtJOx7|?prd0;Lmj`p9L&?x9?s*TGjR59 zlVMIB+)1Z&9R1PUndEnCBTLxhCA>soeMWhakvbRp4(mRSgqmKQw>es35$W^2wTWNj$e6=x6cAZE zN9Xz8KU!^M!w_Elr-p2L5Xtoj)=XI=^tH|nL7Prcv?R_fAa=y*H?0`SC_(hc5kF3* zW-O+uVBINVf8456E27${^8@ONw_AtAP$xNU)Z`zND%5^DS^f`Nl4}?AcxPJLKkL6u zMWWyZ);w;Gt~HS;@v)zWbjVuXETMNkL-Q_UXC!LMncO+p-+PPeWG8XzgkzBRQq-Ed z%IqvzBD*E4JiXS|lipqk&WyJZrg~F$Jk_Mzg#+j2f|xTLGK~_*Tqqe!Imv`E)rM(Y z(0A_Bb#t#3UwEp9DKaxs6+@I=90`AzWE1N%dLQq-@fk`GAHEnJZM1hPNQk<5Sk76B zb9>N`6n%}WeP!o~SmSX~<5l|;H#FoNFJ*&#GpJ-j!NCw272lda@;-d_O8z!(#L24} z*asQ#ibJEU&|D*v+P*n?_tVGcK^NNt`8<87Dvci2!c>)LbDGNv4 zDUBOmCL6l3$Ra>Us-Ds_UN6gJ%+=@I#b^FwRLN`Owb(Z6bYC zM(TmY2di(nR~m_B9sLEZ`b+~_$;FoFw=)=}XYUF3h9pO4JCgZRSd!DM{RFoVniH*f z_WGB|wTVn<)PoBo4wJY;OLqjdWL2Y?+%IuN*|&z)bfnrA^JMF6?IYMqy=E&}CjGgp z4I6Sr(p=fuW6>i>igImh$IZjrzW&(MsxoA5@42*7!;-(zsIr5BSPkQadBgUBtJ`UY(+1NyckJQw26a5)Tp(<H^kcV=aF=iC+h2ujh==II?q|BGfM40l!Qs4F#2h?KJImsky9G z&MeKlcy&ZII2MVOCeiQP$B6){jwDeHVliGf9NJ{23m&yKP1tr9O^INmmjd&y$q&}A z&z;Gg9?5ssS-0y2)M^rv7F4nCWouq9&nx|VhG$*-3^}fJl9zJFm+<&}ln=MvE~Lk^ zwg~FSug&~fA$!9ajr|TceEn5{r_f2-aO8n*wpcZwW8W6O9S#W4WOLwTcBJQ+H(md9 zKVz}S?U_{x9rK7Ho@+)nnYap0^lXZ<*+ANbSP(c^XKKdM)Y%yNP8%$L+wcTtBnW|q z_Tompjdf6bdi*_}QDKX}OA-~sp{2UIULXXxy-*6^3Tp zm1wLxN-}NNXbeC1Z;IUsYU@!~jo^Zyyi=VN8O`5RnCW|Ex1PXoc9j7eVd02Gv4g zm(vx6GbM0)ZP_#^9|{3cEBHrmAem|mCdo9hRHIC>dgVB0G3WuKj?>ef%~#W1ZfL@+ z8m?9kHNU5G=yuvIy|lw6>|M?kBTY<&EL_fo5RE|yu)tw1&T}|fU8z9*bVQ7kQsUL) zeT=!GqwR@NXKtz{^cH$^E+io>`%x=j1tFdsJZ})wtk1KR?0X!$$+P}t=i-(}L;I1xbqae)2jT}r@mMTLXRCOfCf=VgdnM)nJ;%N81B zZ&O-AjaBIU!PY);XPYbiZ61(5EL%j!2b!$IKA~)N+#$Uj!^ROtKs^U18-p)9JwemN zK0WC^o#4J{$elf?p8yw-yNfGh@6gG0u=47(;c#@?aXC z9DS{jN-HverAgG-n=>z8spJkRFmojU`q~+T{?McOkh_Wbe9FrTeu-SGr-Vx+(3OEuu_B(Am$dP-O-jbL1v?NK-KxF;zGoC|H)uclSZwZp9etd_Xy; z9O9iU=Y`)|X{)J5agCnWtlbI{EHy_p+0EUuO{Mqh0}YQL$p`Wgffly4hqFp#m&V)g zwOxwZqFKhouBz1DvILYib|#0k8ST5#(KRK*NK*W@aj^v31V6O5MROhtf;lsp3m%I& zRSsC@>Jp`oJEWqMrrZ)&+>;)0L}Io+KzoFdtp!Z47ty}^$-38mNFX6dendjUiBOqC zE{~*S^p|}D44Mqk$gA{giOS7;w+HiZMeT6%z~hPJbB6YV^(wa#P}T^#lkFE@b#H5~ zP6x$s+s!*Ul^A5FX3G6$pg|D0Tk}#GI{9wedDI&gfZTEMLJs4Nca~|fM?IU<`nB8^ z!ViB(04sGrdrWGJ0?sQc8OjlE)IBJ`M+wDixoX38}-sX1Zq;E44P%DBdKoS|?JGT#^+4d?*Fr=8m;`Rf+&U zsl&^F51JQXkqd%Omn$qG;9D%4i{35n@i|?GSaDkRJDlJN2|F`;S||C^zHSD^UkhOr zz+yeNut?ezZn}wvo55cO&k$`*W7HLu5ZiPkt}gpuuFTP( zFGJPeOKkz&j|!k#>ybAbk6`-EZimEFY}E?KPnInflNN*X+tUg!n4w{_*#`4h+e`J9 zY}T-vpf;@bE}gg5=P z6_)wqJ7Gw67Y2jarAeqN4iYxRgK$zENyFYt3$(jedDl7S^5|Yk!a8B7&?xRhb@!6o z)Q4^LH}+l57FL3~qP2o9CkvL+X+XuQzPZzBg*@}B8n09+w7%`HpcPoEFz%Y-AlpN6 zq@^vl4Yx?ZrfG1O{xls$PaY*B7Te_CmUaWdQKzf%?x!z@uJ{f2)@o?fAUUP7E1wC3 zL@W0ZMm_KhP}qJSZ&9nW(crYN6GDo+$;yXhJUS_LBolZ2`105bJuH_Q!(zuwyEdfd zg@JbNCzI6Fe#mGy#g{^_2bGmlFWi+SbetD~*T5V{u+#fdeTI}N_kFDrhqo&<=-cwB zl{1p~ArzeSaf&<+63&kbP($I7?acH@p&@0zBZ^u^sCl7+(RjxP6>(C#@f-!kVgu3$ zx368V;CKNm)>mdRhhTCUv9cYSW`b&BDq=qd8mc~9ALR;f%$yv1z7(LOv-lx;#3SAZ zaxk4M>-^MCgjPd+k}6WBdcRC4B!=z_bHpL25+cFyEQQ-dH6PD5V+451Z~zD9}3Yu|&TKWE9eT2}CIUz{CXw-Q}Dg(_ukC!D`d3Ku0|;=pJ>pGB_NvQhAnL zO10zd>bn-|2K_+|I$Ic=QG9bjqZ zBHmQvEB(QJJzhnV_Co8>3G@}oRK1>QK)ot=XgVz^&UGmaX{KymEF(B{_6R>@{oYV3A8XC zDKQB$|Jib{5GeswOlA8f&&5k}z}%S7i4=iO6GRn-IJr(cOAUaX)!|*DV^~EmQ?CbPR3LA4&AxdI(|JGNB-c16s(w9-wA$ZxBokcOGcsL?nOx!d8!nH`ALP9W#*>Df@kt4GFEFo zWZYK$xis3Ln?-jYH91FTZr|=l*tC=j#bWRKMe|KtHCQxt?9-<@SBePD@rw`*|H0L@ z_*fuH2J?LcOe6K}wIm17<%Zd!dEY2+oVi-;UgV;~57BTsTy73*CiNe}wl-!nL&jL_(i&amETXnk(%&w(-PuOpF#o*!0SRtGkNiVq2j9keAQl&Tl| z3kt0Umfv_*MZJDRkd-cxrKTGoqJAkm1VlykGyixTjU5T=BcJm*bSZAxzbIwvWsYX+ z@+|4*Q1v2iyuR+^lC#R;>x#!MvaZu@X}~$RlrO7IVrPlm5zb126zbP`$Wqdsv0Uh1 z{LV634j;Y{>r3Y4R^tH943*sc$Gz~~DWnhu?gUyVxODS*{E6km?zSy{$YQS&hp8D!Jzyt^qiwqP1-H>EzC z<^w4@^l2tihvj`Ef^mhN(~wO1KtXZyY81^}lKE$-SFHE7JK}Vm-x7dXK72BEicyG(-kbA ziOUSLF$ZGt(TmU34eTzLg3v5Dvr6Xcj~xQc-)Bk4;Ibtbj*47!YN1n;d!JsXWIH$a z`Mb>NVV0`gtCXnQV?gRMrK%rV%ycL@SR^_O zAiR-}b#2JD8{%Rqx8b3h_7^_~F%%M}pQIf*&WmRY_Vf8Ttj%2)xhnywlKUp&G|O5R zoGf1ro;Hz8yw%e6C)UE&KVb2#LKRAi%}$bp0>W3CI&$Agk~$w5-sM=j`^W&^9i_$x%8DTIqOeY!XuMrCeE-(nh!S zc4u_2kkQ=oA^Z&~^1!f2nk84Xbc^*8Ko>)A^Ytk)SRO( z^TP%hxVuI@AfJKd_w2Tv1?`_SHk`uu#kqLbcl@Yq`9zI;ccr(ot;@Kg2uA@bNV}a= zZC!?4E^<6Ld(~MaEef@KqAZT=uS~Z;Lpl8_seWlZ-|qiziTD^5FX9(-oJ2L7B9Q+T zq?)1#ZMeLLIhVy9LsmdnW$noGjw;JFPNF$7trP|0VVcU=9+<-_r7<4h8D z6$7sPC1yl3PQ}JmKda~ElH%9$10D*lTWR*Qr#|^8AEw}O;I1d12Pk#^oR;1#Qp+_>+lvKu3spJL ziq^0TcCVsRzzAQr=ZP-5c+gJ}b-dwj)+c?a*=Fq8L^f><^KoC{?4(OHy7VB*eON|P zEwd2sP*tF3DWIYssLjWa;k@+Bh^-^av@(}amShAK^Ir_?@Mk0+{3Xm zb#_0SN%m>ry0seC+{J+%n~zJ%+Zrd;JZz8Cwn=A3Lzv{-JQfrp*W7}4*IIpbSqqef zt&c6jSO3@BkyX0g_d%&U3oX3Y1aUz*U=LvPLnJ7f{AO>$BX@(r&EYig`F>%oNa1xY z^^vRjb4lOZ$exzsm&L}#Kh5ncSTr9|?CYkRsNA+=H}KY9t_41Byv0f6h9y|PF;>`n zw`lSF?pw9O6l|`aNgCT)EekII0Hf#oYS2s1tb5Ck8@WRb z9BS^9wAd4d*+4I$=(+NDo>b$}Qf;Ndw>u6w_cUD{4(KLW*F>GR4Ws9j&T6x}l7k)XG139JxJ4g><+6ojFs3WTbYJ8`IwuzUT5IJo zEzaJ|IF4k#oqJ?PBi~BY5{NYb?jYnM_J-O!RxLO44mFfCIDuI&{y%Kk6m>Bho}9A# z%ZHm>9eT{%JuTA=OZ>g6TDjkPUb#R0qw~kk^`jF#7=yv^A-DG=4a3WclEJ1|`O;}O z_4~T2u*u6$*7$>$BV5bd*zZ+~Y#bcbCDv{{W4yJ#hu>%kspJlq7AT|ZSjej$9AA!H zOq_?A78G|!`>JI3Qqpd_oNweiRiH7ktQ<~LqRrRA9sXLfxoLe^aOs1Z*T^Y+hfWJc z$J45KZ}4NRT%#<=RRtAXAi#-C^AQH5`&q$$Hi-t;}zf>7JYs&WlQeRaG{ud*rU(J>(R7 zcJx%j)k3a4pF6oOWwQsn8{#V?Dpez`;W`QHeWtkpbP8M++U8GR z=PKTj_BA?jES8K~gI%3=?~n$Dn~qFyr{4OqP>%bBvmwT&jZf5~|K}3EdUws+$n5KF z(j`)dRk?Nd!`NcWgYe$}r%zeCE(DK6SIII85rp|6p_`h^~e*RM# z+f!#(BVGKGtO`!B=*yLXpzfigweGRJ%~h;fZ`Y=_H)74%<%iIg*fMjLdvT&X0||wy zpPM)P*B$5n0`7`=lXk3}u$pQ%z&B4@+ClcKm0Qf2u<%dBy_nTMAK850e*a(@ALbKntIX;EH|=fUu`Sa1sQfasdtvc@1&v|vA-y zXW+XlT8qDSi$kNkTu|^pocX0FrVk(YJZLVd^ICzs2iw?7r8|0!-fCsrc&jsbG~e59 zH%J<@b$?dJtJy7o8PSFcEjkDyMS1r_W|!704QsKkZUu+q7Z(?ovG_6ezFMfdP%kT@ z0PH<$Q!7!bpbs*8sU1!no>4`KHx$n!+nWmU>a+v3ypRRF$6A4tBH>H-eG^V}U>SJX zuY_{P;^&1d0hak2MVG^=(!m%>QXSvIihjvm^kVOeNyE)mmyR)~-Z_VzE$y%^t_oXK z7`M3+f=-Ljd0zDvW35m1m&;{Tjkzp()SdGlY--?RjMXW`Zqlz(yH?bL< zedhm9%6~fY`K0*G@4RQ@$@7Ta_>L@=G@TIlts(#)7T+Tly-j6kz&}OD|2Z!qP>cE> zyd(fUfW(-r(|_=UbK@Qzrkp6=IgMa_V>E^TWpW%B{qu+^5>ZBbe4|6m-_2oaALrj1 z_xEMEpa{u7y}e7hV0Ijq86Jt%IL{uSCQYylkq^Ks|3AGQfmguzfc^6KE=LR&44bKxgEEE+~%f}~&LxZWCO-~C{<%PWK{a6gJ{br^z zkB-jugHz0=wDD*x#=7$CAy8DNx%_H;=u=8XKB*X8Qq9FqmdGH zyJ(*A%Ds8KY!;V0+w?(FD#TOKwh105v$&LeZ@Q*4I2)bLGu7o(b5LNylspiJ-yDf6 z;JcNJLrz?M$hBGJ$B{f(ut)y~wSGHDw$42qOksbdodVY8Pwz^m1M#>=SMIl!ecC^B zxs7jT^W3KLF})vCTD2H8m!w3HT%<{MZA&$8p$j^#cC>H$Ktju@F9<3w)v^iy+Pn9* zsb%1ZSrIS?G8gjYcZF{qXrZxswaEVWqW*tVYwH5i499Y+T9pyKx7MCXZ)+!-$<^aP z&Zr(|)L}wWb1qD4Z~m+<7<*0YTvD7Vyg%iq z;;eEO?DC&}QAErFA;Z&%id&q`4lZB*Oh2?0CGMMN#VBWNi3&k06?ws8d+dMm${&n*qu#^(tf8)b6=pXe zm>E!E;&No6={>4kH0#3(a%!KJ-;lya6P}iT z5r$XzNE8P2RV4MY36?h$#B+e^J^F|D`Xm+T5PDMs@OPUF&#ba-sSaAY;_O2=rW?7& za_zp~YHds-`*tR@?qP#?EUv{}$EM5-VlK58ZSxVAw;lqKo$PVZUp051v^y zp!&jLSNPrCNh`)FsW^ndW%7oDaveCa9P#Zsw3;5yYF}(c$_W?}L@cME(ajw@8W|ZG zh|7?v9G2SWiy5D;SSI{S$@#ojj*F79IzUis_{Xw?0TA>6wr!v3z)Fe4o=S%0o zGsQ_cCeZkNbUnRzMr0*OSErGS{IO6Y%!NaOkh1J7>8tGOhzYvSC;JGPWt-WBBqcd7 z{ER8i&jU0yXw0d^Cf#f*?TR)Gzm`1OR651E{C%n+_z^*&aHO!21l_E{TdLPN^KebJ z%rtA#>7+cORZu0Wc8rS7(4OrMHCR4duLE!v=kpu@L(gW~*cR?7g7+}AxXXjBESuNs zg+hN+t>vmV4AnXEX^qdq@3g>m$`#z0Hc(tFwE~Lw>{6$um<93h0TiaXz3ACN-Gdea zt)OwtqSYP)M65%HOyixSN^`${f`oA0Po4rxP>hE1m=33S-*IN&fYtEn0x2@!Suhkw z2jIMw8UNIvY^$I!m_naT>9`s%_aZiDBi#S^FR#v`GNiEC9>1DPZ|wCDdzoIX1UOy& zNK_*az^&WRPpyIOATQsW6*aaSUhT_t3I#XpBB)(9Z0|f0N>g)W;Mx_T`dY!2^@-!! z$!3R9>1akXTn(Jc?H~_Ot2od)^qZ4;4XVK=E}5@_HU5r8Rt0^~!m)X!mCJO%9}ibC z6`?!%C}c8Sron6}_KUdf`IK3W=V37_qR*4_NoIlT(Qsj$yqLt!J9l7T@bBY7;RZsS znk-jynf%LY^_@%1P*NdR2O6(5m7JA@SV;utpyBBuYhaLk?!o$bV>~OQ&=b&Sf#=#8 z@=IvrXN}+lG8=Kx0{1{6tsI3a-?fshE^0mLgSD&*VEr$yt~bJp*`GY z-$VOlpj+49<-^C+vrMT`Dt{z;$QcUR5WmpO?l^N=Io#&j{pyzrZ=BMd_)G?Po0}26 z;6B-Ysx;7>*V(JHd!!~O3}~{hB8&7-v1;vi zX6VUg!$D5PHx7OI_(z?8+S!)co?dqipxJ(GIkmj9k6gaGjfN1YdA$K-EwQw{qLC8; ztgdqhOu>E_>h6nSoM}%jeYD+tu~+*0h#~l;gIkqeO~u2Gs!*pb zeD5wm;2C~&qyM-p(=F+mG`PW+N#(Aw>{(rZd&QHpr}?`|_#p$*z@$DA@>-VNNs__Q zJ$b(RY&U7?SwJnfeo$fdDDQFdy1Hrd{k4JwY5ZfXG|X^J?KyA1i)J=X`=4}afoN(` zv*xBB7wO`VKc4HoHdc5xQKz(ae4WTT`0=TxQT(IMrveTI;zgt{CWnywm?tSN!fmx) zGSe# z;Qqv>nyZg<67NU84j(b;9dkadrSXBaz#fP$#^z@(t48{rIoj zcjH6+lV$z_VKN4x=-sNaoZHXs(d49NWcrd(aDQk|MSQ1_hovRW*v(Mu$w)jEKc~h1TUnw8_q*m>z&hN3ix@7a>Fj)SJ-v9gIOdlZ3 zl={btq%AYKsJ?7SKs;OFU}2Fa7A-9;jnWiFd0FH5-iTo&3cRR^3OlO5nT$?$VCYn4 z<&VDMZW6=Uj*{wP$K72-W~SnZVJbp3#HsMAja{b4Tplv-?uZpf+y5JQkzt517u&G? zsRdBL^cFM5yTdmyeQ=94NSxMiJw#>(yIJ&KPQmka-XRUj^(>o?UuWscxdwwB1gQ0P zc-{t}4PSTSQEAPXyVu`?0#_uQ!}{Wi#$9^?ILKmLMFRwUbYJ0IY3n#RlafjK`{3>{ zYxCWwk9tbb#z)+~(3`1*?f8H(N9O~r!#0MYmbdnsh;SJ*~r!B}WUUV5rPTPAsO8f_qqjMC|?!F**Fg5^C6!11L z9~WzX2atD*)ti){%4?Lo)U8C@4D$xUkh(Cxa~N;RGxel;W*!(uz`E?yr{Nr4y518m z>V_(}h%Ro2AWfP8Gv)-1f7u*&HGAJYVNh$p9TGmJYpF~!^j8@F%byfGU{jHu$F6vj zD#`6LSwj6+mA1hHlL?Q$eY^27!z>>kCQcBLE0CShgw#?-stN6EhM#F^!of+ZUSS_N zg=`!T0&RsYT*pMm)=afNj=PO{Sas^Z9KgS&onU6E6pHE?wYeMRFZmSI+K}Vs`#je?+TqJm)Qa41pq8 z@erTI@pmpSLv8K|T`!fv&BQjs=s-%OM+rXvseGo8My(JQt6w76vm2{rvzgmWk&ywh zvu%N>s)3wj>(0itG>*d!4@FZRh`;d8CU;a#3yDb(bCAgTJu4IR_rh6fLK-Uev*{jw z^f4G?Vpq)R8p9*xOdQ!k_+bcyI(XUByR3V@o{vN_5(|3wMG-AnI=l* zbxDdy65s1>M8-ctiBF`y(DhEo{3Ij>yHV+nWvhb}P(|~IeIb&SiEyq~lq^m>q4&;~ zqToz^=!E|wctX)Ew!e`rXklh|uu~j7btrT%NpA_*@<_x+&CcUB?@b_Xw%$i=?G#EgHHcn{yTKfG|gz;ixE>( z+hO21^cdcX_c)A(#JhTbywdVE0wbQ{Af&m6!0mU*eoNvmwf?(kG!hk5-W9vgtxIVexM|Wji*%zdo#2*MDfPmK#o( zJ&Kv8eaZ2y3vURsZ||&hPavRr=>F5W=^*fk%sfpFEI9Ju;ap->;6=YGr>g3i4e6VQuIGWKRAH=u+)85 z$0hX%)l~fEE@}VhL0{xYpw619crq-1QiXW(zWI zbc}m}3QD<+7%Lk@>RxfY1viOeIwb{=+ikRJVtI z?@%d5*ict44{sC4TI>?mJTl`yFc@WsMvT%fidXGn9&oyf;Yb|MQ;kVbd-bbIQgl0V zf4<@|1j=U=QN@g`h|g&1@=J`i`kRf+p$s3z0`lROk^$M4`(@6jqin%k&J0x8gtl>) zUz?FewfA=Jm7HZfcGFOam6#mh+WC~HKxGUv|zWP&bdTWBun%`f!zvGg#>zfQl z^8R7l8yZLx4WP39uk-=kRdS5Aj*gAdNhwM2=lUNJVFfh-1Jgl!yg2zt@)xdlgt>C| z4k$~euC=aWD37Md1Iwhwrta3sE0YmE0=bPK)Yf8CxuZ|O0*6B9KIymZu~<>A9RN$%;C}j{+PirU**9M(V!zHA#nR5T`0GVXkrt)`74D@99e{tRXvIXbeX-*R{ zP6=y2G_-mn;vEa38*`&N=Ny`^#_B>}9ZxcuqOEiQ+gewVyd3ZO}v>%HPyPIK&;wI=Abk(%-RGk}46 zOE?|oaDuS0;5Kghm3%uH-GU`^%~(uho5-s9G+kbw6)s*Hw78QUD<Ux9#Vs`c%}#+o&PEPS%=a#Jnvl|fud z3eoR=`<>D2nJz&wS8u(5SeKPJX*1!!1mX&J1(Mrq2bOZk+c;D^2RJ5}rs zz3R)0+vV*o0UKegnV{sA1%H8cnLs?i?1(E7i})WVmB9yG^{#XIz>hKV&8Vp!w7KaO zWu0j!oNRf$zLTAi!LcL&>{anafctwK3t{r;B4)^=iRE7Du9<3jCdJW~NB^1=$EIO7 zF3!&?MTacgZ;~03MCjd=+7lpBBm?36hGUs-FD!Y_kJ{LbKGeyO?5G*M+pv6u5yQUz zd2m+`jsh&tU)vtYff*G-c4LKRqm%#0Re&QXbmT#ns=8bc4=EKf7EAJ53YyVI2eLP& zuWq)nFEk=qpy3N-gQm9EtDK&W^}nKzkR{ouV`o3TSieN=N}d8j^@Qi)BTdzGTw6GJ zhi43ZM`>T}*$cF{yRODPok6Ngx6Zl3;bQPy^CH4j$wX~WIS&}gQmi$a3ttkjzn(WP zb3U2;znF%rn5ti3$>~?M()I~zo6O&>?ByQhquXR7OHjaiqR_o5M@wG6yRU#|sD3oB z?o*9DlM7snxA*HieL>&#_oo``QM&yWW^6@}YsqkJxl-NG)1|cVRo1DyLdyv*#_&mV zaiAN9hC1v~-*9Qy3nQ1M`s1;j3j0u(R(vdzN*4wi&%a28e*h&Rzk`x$ZbI|lodUIL z2Z~2jw6T{QrS0{Ei3=%kqwOAF0)OS+t4&R6cl3TaAaHc_I@*N+1I93n07o!1PMiziEW`7m%$}*KhmVcEg;$ zj6Vdb43tTp!T|bH1U~&!G*;)?r%~z?_XOpkIfB=aa(a7$68*UU;B>N@I&v1vr0(hg za_!K3V{=yC+llWvgjGKr3JNxUC3n-Z+Wt3%uzdQaj6HZ)Uaz(OgEbHH{GS7ul%wgw zTa&zSkC5q6G?_)kA7chYR&V92Ctt4j3xmGb+s&;z_v@km8| zB`*e_8}`ZhGnr&n>j@92_gZ{92pMAm^8QeJslAdt~?a>Aw_CkIf7OVBfCEssW z$l*v?{VqFB0P_dde}@AIgNj{ZAFN>H_egto258B;7KZ$N>HENSQdfXebedOtHiEy; zC#=`AILlWi zMCG=YM3jXv=u2?)HeZ&2wQR7FEfu7O;gkX~TrA807X5BP_{;M40Vu|=;&psZX6(v5i7W-nkt=Y2>o6SGoW>>bSGl>M?N3{q2rp6wWC>$|SoW_P0 z24r!_gk0m5;8v{kV;~hQ-Q}l<)4ULMkG0;aj>36}C++Rwo1DXuvr=6k;9>qkjUGBg zt@BiKWJ(;!P`BSA7!x!!&wG`lz3rQA8u!|tN-*4-j?6xtKnasA1@o+JIB3QQ5bhwmDUe6F2E zg~dqVw(9{ZWuX@5_KqZZ#Ig8l9BD#*g;J?7uJPZ+u>WK52t3^8{2Ke6;WM2=20R4F z*|O9N&D;C=bp%vB_b!K5t(nmOm><$d&dPyw2|`*okfhtng==Bo0>LW!SuYp%zqyT} z(~fqVeCTjj+CTu?h)pz%(B<`O)Q6RR454Zq?57Yj$NhH{7IVh;Wq4i-!wL|HmBX2> zAs5nQqSk=`RZ34q7T2%Y}$QZ+w&fe)u_?oS^lyT6Ob*+m#$_v9bmU*eV_CC@dZj<>J} zD++|^IrayG)Quq?((LN|s)t@Wh}1;y-A{+vj+?!aEq8azEi}&G#$iyqy;Jw)`3x7W zJ#I(Pr-CAcd;7Y9_Sq%VBCUc5O4&3dXiDB)F_$!;5}tI_PeL)RppLu1G~XrGgG#L` zM&^zT4O7*7$*9UZ8kODD+#6|}bf*~GlrTnpWZQOj>&7OsF(%bDHm^s49(Lenhc%@v zLLpAlXi|cRO|Q6nhYQ-=im`g*9b8l*Uem^~${Jm04W|1lnIy^8$AkI>VbubW%FwY_ zxM%htpc9k%d<^s#oMf9N_TJtvdn;K(U)~s;os9<|g>wbpK}t|(f&q3RO~|ID4+{@n zFK1@i&<@o(jw11 z|I`AEFn6_O-_2O6q$bF3CpM0I`HL4vx?X%TESVowH6r~V9%!Ws*86S2{fmMBM9D{6 z!SmLB$;2PV3jH1F9vJ;C)*xs#XQfVtcS1=GNGMOLFVG*dqR1@=xymy$wzjvH3qziB z0S%i=$CBmRdQAGllv}iaf(;f}zTzt&;c;=<5UW-+6(d0DQT;xS5E3TFaVrcVys;A+ z4U#U#yTfSEa))H=pk8-n6wJf!t@c|%#?Nw3np;Wt*Xf9~?&ry(A}UII6}#{?IrGVQ z+*P&3_h(@`-FmV?Ran{=FcCh*SgchtTdP$f%DpeK67RYkTzPeym5gO5y7)n3cOCPh z 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, 2009, 2010, 2011, 2012. +# Josep M. Ferrer , 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022. +# Antoni Bella Pérez , 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-08-07 12:01+0200\n" +"Last-Translator: Josep M. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.12.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Orestes Mas Casals" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "orestes@tsc.upc.edu" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pausa" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Inicia" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Para" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Guarda l'animació resultant" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Animacions (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Gràfiques avançades" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Gràfica" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Expressió:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Opcions addicionals:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Gràfiques" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Opció activa" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Calcula" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Deriva" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variable:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Vegades:" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Paquet" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importa un paquet" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Paquet:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integra" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Límit inferior:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Límit superior:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "Integral definida" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "À&lgebra lineal" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Crea una matriu" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Columnes:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Files:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Calcula els autovalors" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matriu:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Calcula els autovectors" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Invertix la matriu" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Gràfica en 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variable" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Nom" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Mínim:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Màxim:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Gràfica en 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1a. variable" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2a. variable" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Executa un script" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Resol les equacions" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Equacions:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variables:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Seleccioneu el dorsal" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      " +msgstr "

      %1

      Versió recomanada: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Vegeu %2 per a més informació." + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      No es complixen completament diversos " +"requisits: %1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Fes-lo el dorsal predeterminat" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia és un llenguatge de programació d'alt nivell i rendiment per a " +"la computació tècnica, amb una sintaxi que és familiar per als usuaris " +"d'altres entorns de computació tècnica. Proporciona un compilador " +"sofisticat, execució en paral·lel distribuïda, precisió numèrica i una " +"extensa biblioteca de funcions matemàtiques." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"El camí a Julia especificat en la configuració de l'aplicació cal que apunte " +"directament cap a l'executable. No es permeten els enllaços simbòlics. " +"Proporcioneu el camí correcte cap a la configuració de l'aplicació i torneu-" +"ho a intentar." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"El Сantor no ha pogut determinar la versió de Julia per a %1. Especifiqueu " +"el camí correcte cap a l'executable de Julia (no es permeten enllaços " +"simbòlics) i torneu-ho a provar." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Esteu intentant utilitzar Cantor amb Julia v%1.%2.%3. Esta versió de Cantor " +"es va compilar amb Julia v%4.%5.%6. Apunteu a esta versió de Julia o " +"recompileu Cantor utilitzant la versió %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Camí a Julia natiu REPL" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Habilita la gestió de les variables" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Integra les gràfiques en el full de treball" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Paquet gràfic per a l'assistent «Plot»" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# El Gadfly no admet les gràfiques en 3D" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Fitxer de script de Julia (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Error - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"No s'ha pogut iniciar la sessió amb Julia per un problema intern de «julia», " +"ja que falta el fitxer intern - «%1»" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" +"No s'ha pogut iniciar la sessió amb Julia per un problema intern desconegut" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "El procés de Julia ha parat el seu funcionament." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "No s'ha pogut iniciar el procés de Julia." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" +"Ha fallat la comunicació amb el procés de Julia per motius desconeguts." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Actualment està implementat el GR per a Julia (https://gr-framework.org/), " +"un entorn de treball d'aplicacions de visualització. Primer cal instal·lar " +"este paquet, si encara no s'ha fet. Per açò, executeu Pkg.install(\"GR\") en " +"Cantor o en un REPL de Julia. Cal tindre en compte que esta operació pot " +"tardar una estona i és millor portar-la a terme al REPL de Julia que pot " +"mostrar el progrés actual de la instal·lació del paquet." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "General" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Executable:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Integració de les gràfiques:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Si està activada, les gràfiques es mostraran dins del full de treball. " +"Altrament apareixeran en una finestra externa." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Habilitat" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Gestioneu les variables:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Controla la creació i destrucció de les variables i mostra les variables " +"existents en el quadro de variables." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Format intern de les gràfiques:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" +"Format intern de les gràfiques, si s'ha activat la incrustació de les " +"gràfiques." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Paquet gràfic que s'ha d'utilitzar en l'assistent «Plot»" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Paquet per a l'assistent «Plot»" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Plots" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Executa automàticament" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Ordres que s'han d'executar automàticament" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Documentació" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra&language=ca" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "" +"Llista de scripts que s'han d'executar automàticament al començament de la " +"sessió" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "S'ha produït un error: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Açò executa ordres automàticament, que s'executaran en iniciar un full de " +"treball nou. Poden ser útils per a carregar els mòduls necessaris, canviar " +"l'entorn, etc." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua és un llenguatge ràpid i lleuger de creació de scripts, amb una " +"sintaxi senzilla de procediment. Hi ha diverses biblioteques en Lua " +"dirigides a les matemàtiques i la ciència." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Camí cap a l'ordre «luajit»" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Fitxer de script de Lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Camí a «luajit»:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +# skip-rule: barb-igual +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" +"

      Sistema d'ajuda de Maxima

      Funció acostes

      Busca noms " +"de Maxima que apareixen a qualsevol lloc dins d'ells; name ha de ser " +"una cadena o símbol. Així, acostes(exp) retorna una llista de tots " +"els indicadors i funcions que tenen «exp» com a part del seu nom, com ara " +"expand, exp, i exponentialize. Així, si només es pot " +"recordar part del nom d'una ordre o variable de Maxima, es pot utilitzar " +"esta ordre per a trobar la resta del nom. De la mateixa manera, podeu " +"escriure acostes(tr_) per a trobar una llista de molts dels " +"commutadors relacionats amb el traductor, la majoria dels quals comencen per " +"tr_.

      acostes(\"\") retorna una llista amb tots els noms " +"de Maxima.

      acostes
      retorna la llista buida [], si no es troba " +"cap nom.

      Funció describe

      describe(cadena) és " +"equivalent a «describe(cadena, exact)», troba un element amb el títol igual " +"(sense distingir entre minúscules i majúscules) en la cadena, si hi ha algun " +"d'estos elements.

      describe(cadena, inexact) busca tots els " +"elements documentats que contenen la cadena en els seus títols. Si hi ha més " +"d'un d'estos elements, Maxima demana a l'usuari que seleccione un element o " +"elements que s'han de mostrar.

      ? foo (amb un espai entre ? i foo) és equivalent a describe(\"foo\", exact), i ?? " +"foo és equivalent a describe(\"foo\", inexact)." +"

      describe(, inexact) dona una llista de tots els temes " +"documentats en el manual en línia.

      describe cita el seu " +"argument. describe retorna cert si es troba alguna " +"documentació, altrament fals.

      Funció exampleexample(tema) mostra alguns exemples de tema, que és un " +"símbol o una cadena. Per a obtindre exemples d'operadors com if, " +"do, o lambda l'argument ha de ser una cadena, per exemple " +"example(\"do\"). example no distingix entre majúscules i " +"minúscules. La majoria dels temes són noms de funcions.

      example() retorna la llista de tots els temes reconeguts.

      El nom del fitxer " +"que conté els exemples ve donat per la variable d'opció global " +"manual_demo, que de manera predeterminada és \"manual.demo\"." +"

      example cita el seu argument. example retorna fet llevat que no es troben exemples o que no hi haja cap argument, en este " +"cas example retorna la llista de tots els temes reconeguts." + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima és un sistema per a la manipulació d'expressions simbòliques i " +"numèriques, incloent-hi la derivació, integració, sèries de Taylor, " +"transformades de Laplace, equacions diferencials ordinàries, sistemes " +"d'equacions lineals, polinomis, conjunts, llistes, vectors, matrius i " +"tensors. Maxima aconseguix resultats numèrics d'alta precisió gràcies a la " +"utilització de fraccions exactes, enters de precisió arbitrària i nombres de " +"coma flotant de precisió variable. Maxima pot fer gràfiques de funcions i " +"dades en dues i tres dimensions." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Camí cap a l'executable «maxima»" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "S'ha produït un error: Massa */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "S'ha produït un error: Massa /*" + +# skip-rule: t-sp_pc +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "S'ha produït un error: s'esperava \" abans de ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "S'està esperant el resultat de la gràfica" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Fitxer de procés per lots de Maxima (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "No s'ha pogut iniciar Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima ha fallat. S'està reiniciant..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima ha fallat dues vegades en poc temps. Es deixarà de reintentar " +"l'iniciada" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"Octave de la GNU és un llenguatge d'alt nivell orientat principalment " +"al càlcul numèric.
      Oferix una línia d'ordres útil per a resoldre " +"problemes lineals i no lineals numèricament, i per a efectuar altres " +"experiments numèrics emprant un llenguatge que és altament compatible amb " +"Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Fitxer script d'Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "S'ha produït un error de sintaxi" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Ha fallat la prova d'integració de les gràfiques." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "Es desactivarà la integració de les gràfiques." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"La integració de les gràfiques no funciona perquè Cantor ha detectat que " +"Octave no pot crear gràfiques, ja que no hi ha cap dorsal gràfic per a ell: " +"s'ha arribat a esta conclusió per l'eixida buida de la funció " +"«available_graphics_toolkits()». Pareix que cal instal·lar paquets " +"addicionals del SO, com «gnuplot», «fltk» o «qt» per a la possibilitat de " +"crear gràfiques." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python és un llenguatge de programació dinàmic especialment potent " +"que s'utilitza en una gran varietat de dominis d'aplicació. Hi ha diversos " +"paquets de Python per a la programació científica." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# El Bokeh no admet les gràfiques en 3D" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Fitxer de script en Python (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "El servidor de Python de Cantor ha parat el seu funcionament." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "No s'ha pogut iniciar el servidor de Python de Cantor." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"Ha fallat la comunicació amb el servidor de Python de Cantor per motius " +"desconeguts." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Per a utilitzar els gràfics integrats amb el paquet Matplotlib, primer cal " +"instal·lar el paquet de Python «matplotlib»." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Per a utilitzar els gràfics integrats amb el Plot.ly cal instal·lar el " +"paquet de Python «plotly» i un executable especial de l'«orca» compatible " +"amb el Plot.ly. Vegeu l'article «Static Image Export» en la documentació del " +"Plot.ly per als detalls." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - diàleg de les gràfiques" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funcions" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Títol" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Expressió" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Afig" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Elimina" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Neteja la llista" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Variable X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Estil" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Línies" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Punts" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Punts i línies" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Quadros" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histograma" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Passos" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Espelmes" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Punts" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Suavitzat" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Cap" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monòtona" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Splines cúbics naturals" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bézier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bézier (monòtona)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Interval de la funció" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Interval X" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Freqüència del &mostratge" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Mida del pa&s" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Opcions" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Títol de la gràfica" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Etiqueta de l'eix X" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Etiqueta de l'eix Y" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Posició de la llegenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Oculta la llegenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Superior esquerra" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Superior dreta" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Inferior esquerra" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Inferior dreta" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Davall" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Exterior" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Mostra la graella" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Mostra la vora completa" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Utilitza colors" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Mostra inclosa" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Escala X logarítmica" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Escala Y logarítmica" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Opcions de fitxer" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Guarda la gràfica a un fitxer" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Tipus de fitxer" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Detecta'l pel nom de fitxer" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +# skip-rule: t-ad_maj +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! no és un programa que imita el funcionament de la " +"calculadora més barata. Qalculate! pretén traure profit de la potència, " +"flexibilitat i superior interfície dels ordinadors moderns. El centre " +"d'atenció de Qalculate! és la introducció d'expressions. En lloc d'introduir " +"cada nombre d'una expressió matemàtica per separat, podeu escriure " +"directament l'expressió completa i modificar-la més avant. La interpretació " +"de les expressions és flexible i tolerant a fallades, i si mai vos " +"equivoqueu Qalculate! vos ho farà saber. Tanmateix, les expressions no " +"resolubles totalment es consideren errors. Qalculate! les simplificarà tant " +"com puga i respondrà amb una expressió. A més de nombres i operadors " +"aritmètics, una expressió pot contindre qualsevol combinació de variables, " +"unitats i funcions." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Si cal convertir les unitats automàticament, i com. Si és cert, convertix-" +"les a les unitats del SI més adients (el mínim nombre d'unitats)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Unitats angulars predeterminades en les funcions trigonomètriques." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "La base dels nombres interpretats i avaluats." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" +"Especifica si el resultat de l'avaluació se simplificarà o factoritzarà." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Especifica si els nombres racionals es mostraran amb decimals, com a " +"fracció, o alguna cosa intermedi." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Mostra que la sèrie de dígits d'un número continua indefinidament emprant " +"tres punts en lloc d'arredonir-lo (p. ex.: 2/3 es mostra com 0,666666... en " +"lloc de 0,666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Utilitza tots els prefixos decimals del SI. Si és fals, NO s'empraran " +"prefixos de forma automàtica si estos no són múltiples de mil (centi, deci, " +"deca, hecto)." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Si és cert, s'utilitzaran exponents negatius en lloc de quocients (p. ex.: 5/" +"x^2 esdevindrà 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Presentació numèrica." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Si és cert, les gràfiques es mostraran dins del full de treball. Altrament " +"apareixeran en una finestra separada." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Si s'han d'utilitzar o no colors a les gràfiques." + +# skip-rule: t-sc-plot +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Si s'ha de dibuixar o no una graella." + +# skip-rule: t-sc-plot +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Si s'han de dibuixar o no totes les vores al voltant de la gràfica." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Amplària de les línies, en píxels." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" +"Nombre de passos d'interpolació que s'utilitzaran en fer les gràfiques." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Mode de suavitzat de les gràfiques." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Estil de les gràfiques." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Posició de la llegenda a les gràfiques." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate informa que no pot imprimir. Teniu instal·lat gnuplot?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "falta %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 ha de ser un nombre." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 ha de ser un enter." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 ha de ser un booleà." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "Opció no vàlida per a %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "s'han trobat múltiples expressions en una ordre plot (%1 i %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "ERROR" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "AVÍS" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "No existix cap funció, variable o unitat amb este nom." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funció: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Interfície de creació de gràfiques" + +# skip-rule: t-sc-plot +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Dibuixa la gràfica d'una o més funcions, incloses o bé en una finestra " +"separada." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "expressió" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "opció" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "valor" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "enter" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "booleà" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "nombre" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "predeterminat: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "El nom de la funció" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Etiqueta del títol" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "Etiqueta de l'eix X" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Etiqueta de l'eix Y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Imatge on guardar la gràfica. Si ho deixeu buit, mostrarà la gràfica en una " +"finestra de la pantalla. Si «inline=true» es mostrarà la imatge sense tindre " +"en compte esta opció." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"El tipus d'imatge que es guardarà. Pot ser «auto», «png», «ps», «eps», " +"«latex», «svg» o «fig»." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" +"Establit a «vertader» per a les gràfiques en color, i a «fals» per a les " +"monocromàtiques." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Valor mínim de l'eix X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Valor màxim de l'eix X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Si cal emprar o no una escala logarítmica per a l'eix X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Si cal emprar o no una escala logarítmica per a l'eix Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Base logarítmica per a l'eix X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Base logarítmica per a l'eix Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Si s'ha de mostrar o no la graella de coordenades." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Si la gràfica ha d'estar totalment envoltada per vores (no només els eixos)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Amplària de les línies." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"On s'ha d'ubicar la llegenda de la gràfica. Ha de ser Cap, Superior " +"esquerra, superior dreta, Inferior esquerra, Inferior dreta, Davall o " +"Exterior" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Suavitzat de la gràfica. Ha de ser «Cap», «Únic», «Csplines», «Bézier» o " +"«Sbézier»" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"L'estil de la gràfica. Pot ser «línies», «rodones», «línies i punts», " +"«quadros», «histograma», «escala», «espelmes» o «punts»" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Utilitza una escala en l'eix X secundari." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Utilitza una escala en l'eix Y secundari." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" +"Si la gràfica s'ha de visualitzar inclosa, en lloc d'una finestra nova." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Distància entre dos punts d'interpolació. Vegeu també «escala»." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Nombre de punts d'interpolació. Vegeu també «escala»." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "El nom de la variable X. Cal que siga una variable desconeguda" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Guarda les variables a un fitxer" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Guarda totes les variables definides actualment en un fitxer. Podeu carregar-" +"lo més avant amb %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "fitxer" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "fitxer: el fitxer on s'ha de guardar" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Carrega les variables des d'un fitxer" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" +"Carrega les variables des d'un fitxer que ha creat prèviament l'usuari %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "fitxer: el fitxer que s'ha de carregar" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Base numèrica:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Format de les fraccions:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Decimal" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Exacte" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Fraccionari" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Combinat" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Presentació numèrica:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Pur" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Científic" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Precisió" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Indica les sèries infinites:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Utilitza tots els prefixos del SI:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Utilitza exponents negatius:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Avalua" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Convertix a les millors unitats del SI:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radians" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Graus" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Graus centesimals" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Mode d'estructuració:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Simplifica" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Factoritza" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Unitat dels angles:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Gràfica" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Mostra les gràfiques incloses:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Mostra les vores completes:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Amplària de les línies:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Freqüència de mostratge:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Mode de suavitzat:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Splines cúbics naturals" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Passos" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Posició de la llegenda:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Gràfiques acolorides:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Mostra la graella:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Estil de la gràfica:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Modifiqueu l'entrada" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Afig una entrada nova" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "El nom no pot estar buit." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Afig una documentació local" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Obtín la documentació nova" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Baixa documentacions addicionals" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "El fitxer d'ajuda comprimida de les Qt no és vàlid." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Ja s'ha importat la documentació" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Modifica" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Suprimix" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Desinstal·leu-ho via GHNS." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Instal·la fitxers de documentació addicional" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Nom" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Camí" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Afig" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Icona:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Seleccioneu una icona" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Nom:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Introduïu un nom" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Seleccioneu un nom..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Camí:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Seleccioneu un fitxer d'ajuda de les Qt..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Seleccioneu un fitxer d'ajuda de les Qt..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +# skip-rule: t-sp_in, t-pu_desp +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" +"

      Sistema d'ajuda d'R: help() i ?:


      La funció " +"help() i l'operador d'ajuda ? d'R proporciona accés a les " +"pàgines de documentació de les funcions R, conjunts de dades, i altres " +"objectes, tant per als paquets de la distribució R estàndard com per als " +"paquets de col·laboracions.

      Per a accedir a la documentació de la " +"funció lm
      (model lineal), per exemple, teclegeu l'ordre " +"help(lm) o help(\"lm\"), o ?lm o ?\"lm\" " +"(és a dir, les cometes són opcionals).

      . Per a accedir a l'ajuda " +"d'una funció en un paquet que no està carregada actualment, especifiqueu, a " +"més, el nom del paquet: per exemple, per a obtindre la documentació de la " +"funció rlm() (model lineal robust) del paquet MASS,
      help(rlm, " +"package=\"MASS\")
      .

      Els noms estàndards d'R consistixen en lletres " +"en majúscules i minúscules, nombres (0-9), guions baixos (_), i punts (.), i " +"han de començar amb una lletra o un punt. Per a obtindre ajuda per a un " +"objecte amb un nom no estàndard (com l'operador d'ajuda ?), cal posar " +"el nom entre cometes: per exemple, help('?')o ?\"?\"." +"

      També podeu utilitzar la funció help() per a accedir a " +"informació sobre un paquet en la vostra biblioteca: per exemple, " +"help(package=\"MASS\"), que mostra un índex de pàgines d'ajuda " +"disponibles per al paquet juntament amb una altra informació.

      Les " +"pàgines d'ajuda per a funcions normalment inclouen una secció amb exemples " +"executables que il·lustren com funcionen les funcions. Podeu executar estos " +"exemples en la sessió R actual a través de l'ordre example(): p. ex., " +"exemple(lm)." + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R és un llenguatge i un entorn per a computació i gràfiques " +"estadístiques, similar al llenguatge i entorn «S».
      Oferix una àmplia " +"varietat de tècniques estadístiques (modelatge lineal i no lineal, tests " +"estadístics clàssics, anàlisi de sèries temporals, classificació, " +"clustering...) i gràfiques, i és altament extensible. El llenguatge S és " +"sovint el vehicle escollit per a la recerca en metodologia estadística, i R " +"oferix una via de codi obert per a participar en esta activitat." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "S'ha produït un error en obrir el fitxer %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "Fitxer de script d'R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "S'ha produït un error en analitzar l'ordre" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "URL cap a la documentació local d'R" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Feu doble clic per a obrir el diàleg de selecció de fitxer" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|Fitxers font en R (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage és un programari matemàtic lliure davall la llicència GPL.
      Combina la potència de la munió d'aplicacions de codi obert existents amb " +"una interfície comuna basada en Python." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Camí cap a l'executable «sage»" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Habilita la composició tipogràfica de LaTeX per al dorsal Sage" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Resultat de %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"L'última eixida ha sigut: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Fitxer de script en Python (*.py);;Fitxer de script de Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"No s'admet la versió %1.%2 de Sage. Actualitzeu la instal·lació a les " +"versions acceptades per a fer que funcione amb Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"No s'ha pogut determinar la versió de Sage. Comproveu la instal·lació i " +"l'eixida de «sage -v»." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "El procés Sage ha fallat mentre s'avaluava esta expressió" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "El procés Sage ha fallat" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "El procés Sage ha fallat mentre s'avaluava esta expressió" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "El procés Sage ha fallat" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "No s'ha pogut iniciar Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "Composició tipogràfica de LaTeX:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"L'eixida en LaTeX de Sage no sempre és correcta i, per tant, la composició " +"tipogràfica de LaTeX es pot desactivar per a millorar l'experiència" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab és un programari lliure multiplataforma de càlcul numèric, i " +"un llenguatge de programació d'alt nivell orientat a la manipulació de " +"nombres. Scilab es distribuïx davall una llicència CeCILL (compatible amb la " +"GPL)." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Camí cap a l'executable «scilab»" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +"::Fitxer de script de Scilab (*.sce);;Fitxer de funció de Scilab (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "El fitxer %1 ja es troba obert." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Obri un fitxer" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Descarrega exemples" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "O&bri un exemple" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Ves al full de treball anterior" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Ves al full de treball següent" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Tots els fitxers admesos (*.cws *ipynb);;Full de treball de Cantor (*.cws);;" +"Bloc de notes de Jupyter (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      No s'ha trobat cap dorsal

      \n" +"
      Podeu intentar de:\n" +"
      • Canviar la configuració en el diàleg de configuració;
      • " +"
      • Instal·lar els paquets del programa següent:
      • %2
      " +msgstr[1] "" +"

      No s'ha trobat cap dorsal

      \n" +"
      Podeu intentar de:\n" +"
      • Canviar la configuració en el diàleg de configuració;
      • " +"
      • Instal·lar els paquets d'algun dels programes següents:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "S'ha produït un error" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "El dorsal %1 no està instal·lat" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"S'ha instal·lat el dorsal %1, però és inactiu. Comproveu la instal·lació i " +"la configuració de Cantor" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sessió %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "No s'ha pogut buscar la Part de Cantor amb l'error %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "S'està calculant..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Preparat" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Canviat" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" +"Hi ha múltiples fulls de treball oberts sense guardar. Els voleu tancar?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Tanca Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "El projecte actual s'ha modificat. Voleu guardar-lo?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Guarda el projecte" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "S'està donant format" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "El dorsal que s'utilitzarà de manera predeterminada" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Fes com a predeterminada la composició tipogràfica" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Fes com a predeterminat el ressaltat de la sintaxi" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Habilita de manera predeterminada la compleció" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Habilita de manera predeterminada la numeració de les expressions" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Anima de manera predeterminada els canvis en el full de treball" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Habilita de manera predeterminada l'anàlisi d'expressions matemàtiques dins " +"de $$..$$ en entrades de Text i Markdown (cal que «pdflatex» estiga " +"instal·lat)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Torna a avaluar automàticament les entrades davall de l'actual" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Demana confirmació en reiniciar el dorsal" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Guarda el format de text enriquit de les entrades de text, en guardar el " +"full de treball en el format bloc de notes de Jupyter" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Utilitza l'estil antic de Cantor d'emplaçament de les entrades" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Mostra els errors d'anàlisi d'expressions matemàtiques incrustades" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Límit de línies visibles per al text dels resultats" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Tipus de lletra de jerarquia per al capítol" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Mida del tipus de lletra de jerarquia per al capítol" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Cursiva del tipus de lletra de jerarquia per al capítol" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Negreta del tipus de lletra de jerarquia per al capítol" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Tipus de lletra de jerarquia per al subcapítol" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Mida del tipus de lletra de jerarquia per al subcapítol" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Cursiva del tipus de lletra de jerarquia per al subcapítol" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Negreta del tipus de lletra de jerarquia per al subcapítol" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Tipus de lletra de jerarquia per a la secció" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Cursiva del tipus de lletra de jerarquia per a la secció" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Negreta del tipus de lletra de jerarquia per a la secció" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Tipus de lletra de jerarquia per a la subsecció" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Cursiva del tipus de lletra de jerarquia per a la subsecció" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Negreta del tipus de lletra de jerarquia per a la subsecció" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Tipus de lletra de jerarquia per al paràgraf" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Cursiva del tipus de lletra de jerarquia per al paràgraf" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Negreta del tipus de lletra de jerarquia per al paràgraf" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Tipus de lletra de jerarquia per al subparàgraf" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Cursiva del tipus de lletra de jerarquia per al subparàgraf" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Negreta del tipus de lletra de jerarquia per al subparàgraf" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Anomena i guarda text net" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Exporta a LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Avalua el full de treball" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Compon emprant LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Ressaltat de la sintaxi" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Compleció" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Números de les línies" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Animacions" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Matemàtiques incrustades" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Reinicialitza el dorsal" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Avalua l'entrada" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Inserix una entrada d'ordre" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Inserix una entrada de text" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Inserix una entrada de Markdown" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Inserix una entrada de LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Inserix un salt de pàgina" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Inserix una imatge" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Reduïx tots els resultats" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Expandix tots els resultats" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Elimina tots els resultats" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Elimina l'entrada actual" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Mostra l'editor de scripts" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Mostra la compleció" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Full de treball de Cantor (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Bloc de notes de Jupyter (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Anomena i guarda" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Guarda" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Es perdran totes els resultats disponibles dels càlculs. Segur que voleu " +"reiniciar %1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Voleu reiniciar %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Interrupció" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "S'ha produït un error de sessió: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Inicialització completa" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "S'està inicialitzant..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[només de lectura]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Voleu pujar el full de treball actual a un servidor web públic?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Pregunta - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" +"El full de treball no s'ha guardat. Hauríeu de guardar-lo abans de pujar-lo." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Avís - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Este dorsal no admet scripts." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Edita" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "Vi&sualitza" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Full de treball" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Configuració" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "Fi&txer" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Nou" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Quadros" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "Con&figuració" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Color del fons" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Predeterminat" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Color del text" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Tipus de lletra" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Negreta" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Cursiva" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Augmenta la mida" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Disminuïx la mida" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Selecciona" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Restablix als valors predeterminats" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Mostra els resultats" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Oculta els resultats" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Mostra l'ajuda" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Aparença" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "S'ha interromput" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Barra de busques" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Busca:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Següent" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Anterior" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Substituïx:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "Su&bstituïx" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Substituïx-ho &tot" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Busca a:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "Fes coincidir les &majúscules" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Tipus de lletra de jerarquia" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Tipus de lletra de capítol" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Família del tipus de lletra:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Mida del tipus de lletra:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Tipus de lletra de subcapítol" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Tipus de lletra de secció" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Tipus de lletra de subsecció" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Tipus de lletra de paràgraf" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Tipus de lletra de subparàgraf" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Capítol" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Subcapítol" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Secció" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Subsecció" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Paràgraf" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Subparàgraf" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Establix el nivell de jerarquia" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Estil de línia sòlid" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Estil de línia de guions" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Estil de línia de punts" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Estil de línia de guió punt" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Estil de línia de guió punt punt" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Gruix de la línia" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Prima" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Mitjana" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Gruixuda" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Color de la línia" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Estil de la línia" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Configura la imatge" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Feu doble clic ací per a configurar les opcions de la imatge" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "No s'ha pogut carregar la imatge %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Guarda la imatge resultant" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Imatges (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Paràmetres d'imatge" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Obri" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Mida de la visualització" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Amplària" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Alçària" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Vista prèvia" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Mida d'impressió" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Utilitza la mida de la visualització" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Configureu la imatge" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(auto)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr " px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Obri un fitxer d'imatge" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Mostra el codi en LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"No s'ha especificat cap camí cap a l'executable «%1». Proporcioneu el camí " +"correcte cap a la configuració de l'aplicació i torneu-ho a intentar." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"El fitxer «%1» especificat com a executable de %2 no existix. Proporcioneu " +"el camí correcte cap a la configuració de l'aplicació i torneu-ho a intentar." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"El fitxer «%1» especificat no apunta a cap executable. Proporcioneu el camí " +"correcte cap a la configuració de l'aplicació i torneu-ho a intentar." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"El programa %1 no ha finalitzat l'execució després de %2 mil·lisegons durant " +"la prova d'integració de les gràfiques." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" +"No s'ha pogut obrir el fitxer %1 durant la prova d'integració de les " +"gràfiques." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" +"No s'ha pogut analitzar el resultat durant la prova d'integració de les " +"gràfiques." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Camí cap a l'executable «latex»" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Camí cap a l'executable «dvips»" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Valor" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 bytes>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Des de:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Fins a:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Títol principal" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Escala d'abscisses" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Escala d'ordenades" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Títol de la gràfica:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Este és un contingut no admés per Jupyter de tipus («%1»)" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "El procés %1 ha mort inesperadament. S'han perdut tots els càlculs." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"El procés %1 ha mort inesperadament amb el missatge «%2». S'han perdut tots " +"els càlculs." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Heu triat el funcionament per al paquet gràfic %1, però el funcionament no " +"es pot activar a causa de requisits que falten i, per tant, s'ha desactivat " +"la integració per a este paquet. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Frontal de KDE per a aplicacions matemàtiques" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Mantenidor
      Adaptació a les Qt5/KF5, dorsals de Scilab i Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Desenvolupador" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Autor original
      Mantenidor (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Dorsal de KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Dorsal d'Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Interfície" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Icona de Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Utilitza el dorsal " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Documents que s'obriran." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "No s'ha pogut obrir el fitxer %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Entra en el mode d'edició" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Neteja els adjunts" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Error matemàtic de Cantor" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "No s'ha pogut llegir la imatge «%1». Error «%2»" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Salt de pàgina ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Ves al contingut" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Busca mitjançant les paraules clau..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Busca al text de la pàgina de documentació actual" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Restablix el nivell de zoom al 100%" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Tanca" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Salta a la coincidència següent" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Salta a la coincidència anterior" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Coincidència distingint entre majúscules i minúscules" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "El fitxer s'ha baixat correctament a Baixades." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "La baixada s'ha fet correctament" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Fitxers de Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Fitxers de Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Tots els fitxers admesos" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Tots els fitxers" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Nom:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Valor:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Afig una variable nova" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Carrega les variables" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Guarda les variables" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Elimina les variables" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Busca/Filtra" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Distingix entre majúscules i minúscules" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Coincidix tota la paraula" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Esteu segur/a que voleu eliminar totes les variables?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Carrega un fitxer" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Guarda el resultat" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Elimina el resultat" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"No s'ha trobat cap component d'edició de text de KDE;\n" +"comproveu la instal·lació de KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Editor de scripts" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Editor de scripts - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "No s'ha trobat" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "S'ha arribat al principi" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "S'ha arribat al final" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "S'ha substituït %1 instància" +msgstr[1] "S'han substituït %1 instàncies" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Ordres" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Resultats" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Errors" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Text" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Codi en LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "En iniciar:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" +"Crea un full de treball nou per al sistema del dorsal seleccionat. Si no " +"se'n selecciona cap, es demana a l'usuari sobre quin sistema utilitzar en " +"iniciar." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Dorsal predeterminat:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Full de treball:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" +"Activa la composició tipogràfica de LaTeX per als resultats dels càlculs, si " +"ho permet el sistema del dorsal" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "Composició tipogràfica de LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Activa el ressaltat de la sintaxi" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Ressaltat de la sintaxi" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "Activa la compleció de la sintaxi" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Mostra els números de les línies" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Números de les línies" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Activa les animacions del full de treball" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" +"Si està activada, les entrades de text s'alinearan amb la vora del full de " +"treball i no amb la vora de l'indicador" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "No sagnes les entrades de text" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Utilitza el format de text enriquit en les entrades de text en guardar en el " +"format bloc de notes de Jupyter" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "Avaluació:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"Si s'activa, es demanarà confirmació a l'usuari abans de reiniciar el " +"sistema del dorsal" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" +"Si s'activa, totes les entrades davall de l'actual s'avaluaran automàticament" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "Torna a avaluar automàticament les entrades" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Nombre de files en el resultat (0 sense límit):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Nombre màxim de files visibles en el resultat d'una entrada d'ordre. " +"Utilitzeu 0 per a treballar sense limitacions." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" +"Activa la composició tipogràfica de LaTeX per a les expressions matemàtiques " +"en les entrades de Markdown" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "Expressions matemàtiques via LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" +"Notifica quan fallen les representacions de les expressions matemàtiques" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Busca…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Objectius de cel·les en brut" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Afig un objectiu personalitzat" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Convertix a una entrada de text" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Convertix a cel·la en brut" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Tipus MIME de l'objectiu:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Copia el resultat" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Mostra renderitzat" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Mostra el codi" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Mostra el codi HTML" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Mostra una alternativa en clar" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Mostra l'HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Mostra l'HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" +"No s'ha pogut renderitzar el fitxer EPS. Potser necessiteu programes " +"addicionals" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Guarda el text resultant" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "Fitxers de text (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "No s'ha pogut escriure en el fitxer %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "No s'ha pogut escriure en el fitxer." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "S'ha produït un error en guardar el fitxer %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"En mode de només lectura Cantor no pot garantir que l'exportació siga vàlida " +"per a %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "S'ha produït un error en carregar el full d'estil latex.xsl" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "No s'ha pogut obrir el fitxer %1." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Obri un fitxer" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "No s'ha pogut obrir per a lectura el fitxer seleccionat." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" +"El fitxer seleccionat no és cap fitxer vàlid de projecte Cantor o Jupyter." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "El fitxer seleccionat no és cap fitxer vàlid de projecte Cantor." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Este full de treball es va crear utilitzant Python2 que ja no es troba " +"acceptat. S'utilitzarà Python3." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python2 ja no es troba acceptat" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"No s'ha trobat el dorsal %1. No és possible l'edició ni l'execució " +"d'entrades." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Hi ha alguns problemes amb el dorsal %1.\n" +"Comproveu la vostra configuració o bé instal·leu els paquets necessaris.\n" +"Només podreu visualitzar este full de treball." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Cantor no admet blocs de notes de Jupyter amb una versió inferior a 4.5 " +"(s'ha detectat %1.%2)." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Cantor no admet blocs de notes de Jupyter amb una versió superior a 4.5 " +"(s'ha detectat %1.%2)." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Este bloc de notes es va crear utilitzant Python2 que ja no es troba " +"acceptat. S'utilitzarà Python3." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "un objecte amb claus: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "no és un valor JSON d'objecte" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "s'han trobat dades incorrectes (%1) que no és una cel·la de Jupyter" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "El fitxer no és un bloc de notes vàlid de Jupyter" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Esquema de bloc de notes de Jupyter no vàlid: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Convertix a" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Ordre" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Imatge" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Salt de pàgina" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Línia horitzontal" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Entrada de jerarquia" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Inserix després" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Inserix abans" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Inserix" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Acosta" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Allunya" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Mida original" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Mou amunt les entrades" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Mou avall les entrades" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Avalua les entrades" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Elimina entrades" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Reduïx els resultats de l'entrada d'ordres" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Expandix els resultats de l'entrada d'ordres" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Elimina els resultats de l'entrada d'ordres" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Exclou l'entrada d'ordres de l'execució" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Afig una entrada d'ordre a l'execució" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "&Color del text..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Color" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "&Ressaltat de text..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Tipus de lletra" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "&Mida del tipus de lletra" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Negreta" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Cursiva" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Subratllat" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Barrat" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Alinea a l'es&querra" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Esquerra" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Alinea al ¢re" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Centre" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Alinea a la &dreta" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Dreta" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Justifica" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Justifica" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"Esta acció eliminarà tots els resultats sense la possibilitat de cancel·lar. " +"Esteu segur?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Elimina tots els resultats" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Blanc" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Negre" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Roig fosc" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Roig" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Roig clar" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Verd fosc" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Verd" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Verd clar" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Blau fosc" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Blau" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Blau clar" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Groc fosc" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Groc" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Groc clar" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Cian fosc" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Cian" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Cian clar" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Magenta fosc" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Magenta clar" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Taronja fosc" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Taronja" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Taronja clar" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Gris fosc" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Gris" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Gris clar" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Mou amunt" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Mou avall" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Esteu segur/a que voleu eliminar esta entrada?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Elimina l'entrada" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Arrossega l'entrada" diff --git a/po/cs/cantor.po b/po/cs/cantor.po new file mode 100644 index 0000000..778ecf5 --- /dev/null +++ b/po/cs/cantor.po @@ -0,0 +1,4561 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Pavel Fric , 2010. +# Vít Pelčák , 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020. +# Tomáš Chvátal , 2013. +# Vit Pelcak , 2021, 2022, 2023. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2023-02-08 12:53+0100\n" +"Last-Translator: Vit Pelcak \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 22.12.2\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Vít Pelčák, Pavel Fric, Miroslav Hrončok" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "vit@pelcak.org, pavelfric@seznam.cz, miro@hroncok.cz" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pozastavit" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Spustit" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Zastavit" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Uložit výsledek animace" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Animace (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Pokročilé vykreslování" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Vykreslit" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Výraz:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Další volby:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "Vyk&reslit" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "S&počítat" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Derivovat" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Proměnná:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Časy:" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Balíček" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importovat balíček" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Balíček:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integrovat" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Spodní mez:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Horní mez:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "určitý integrál" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Lineární algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Vytvořit matici" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Sloupce:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Řádky:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Vypočítat vlastní hodnoty" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matice:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Vypočítat vlastní vektory" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Převrátit matici" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Vykreslit dvojrozměrně" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Proměnná" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Název" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimum:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maximum:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Vykreslit trojrozměrně" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1. proměnná" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2. proměnná" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Spustit skript" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "ŘeÅ¡it rovnice" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Rovnice:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Proměnné:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Nastavit toto jako výchozí podpůrnou vrstvu" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Cesta k vlastní REPL Julia" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Začlenit nákresy do pracovního listu" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Soubor se skriptem julia (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Chyba - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Obecné" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Program:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Povoleno" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Balíček pro asistent grafu" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Grafy" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Automatické spuštění" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Dokumentace" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Chyba: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Cesta k příkazu luajit" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Soubor se skriptem Lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima je systém pro zpracování symbolických a početních výrazů, " +"počítaje v to derivování, integrování, Taylorovu řadu, Laplaceovu " +"transformaci, běžné diferenciální rovnice, soustavy lineárních rovnic, " +"mnohočleny, řady, seznamy, vektory, matice a napínače. Maxima přináší vysoce " +"přesné číselné výsledky díky použití přesných zlomků, celých čísel kvůli " +"doplňkové přesnosti a čísel s pohyblivou desetinnou čárkou kvůli proměnlivé " +"přesnosti. Maxima dokáže nakreslit funkce a data ve dvou a třech rozměrech. " + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Cesta ke spustitelnému souboru Maximy" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Dávkový soubor Maxima (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Nelze spustit Maximu" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima spadla. Spouští se znovu..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima během krátké doby spadla již dvakrát. Pokusy o její spuštění byly " +"zastaveny" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave je vysokoúrovňový jazyk, určený především pro matematické " +"výpočty.
      Poskytuje pohodlné rozhraní přes příkazovou řádku pro řešení " +"lineárních a nelineárních číselných problémů a pro vykonávání jiných " +"početních experimentů užitím jazyka, který je z větší části kompatibilní a " +"Matlabem." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Soubor se skriptem Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Chyba ve skladbě" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Soubor se skriptem v Pythonu (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funkce" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Název" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Výraz" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Přidat" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Odstranit" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Vymazat seznam" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Proměnná X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Styl" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Čáry" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Body" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Body a čáry" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogram" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Kroky" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Tečky" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Vyhlazování" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Žádný" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Vzorkovací frekve&nce" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Velikost k&roku" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Možnosti" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Název grafu" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Pozice vysvětlivek" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Skrýt vysvětlivky" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Vlevo nahoře" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Vpravo nahoře" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Vlevo dole" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Vpravo dole" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Dole" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Vně" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Zobrazit mřížku" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Použít barvy" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Možnosti souborů" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Typ souboru" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Zobrazení výsledku." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "chybí: %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "CHYBA" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "VAROVÁNÍ" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funkce: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "výraz" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "volba" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "hodnota" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "celé číslo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "binární" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "číslo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "výchozí: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "soubor" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Desetinný" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Přesně" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Zlomkový" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Složený" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Zobrazení výsledku:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Čistý" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Vědecké" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Přesnost" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Indikovat nekonečné řady:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Vyhodnotit" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radiány" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Stupně" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradiány" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Režim strukturování:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Zjednodušit" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Faktorizovat" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Jednotka úhlu:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Vykreslování" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Vzorkovací frekvence:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Kroky" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Pozice vysvětlivek:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Zobrazit mřížku:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Styl zákresu:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Upravit záznam" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Přidat nový záznam" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Název nesmí být prázdný." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Získat novou dokumentaci" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Soubor komprimované nápovědy Qt není platný." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Dokumentace již byla importována" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Změnit" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Smazat" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Prosím, odinstalujte jej pomocí GHNS." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Nainstalovat dodatečné dokumentačních soubory" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Název" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Cesta" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Přidat" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Ikona:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Vyberte ikonu" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Název:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Zadejte název" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Vyberte název..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Cesta:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Vyberte soubor Qt Help..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Vyberte soubor Qt Help..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R je jazykem a prostředím pro statistické výpočty a křivky, který je " +"podobný jazyku a prostředí S.
      Poskytuje velkou rozmanitost " +"statistických (přímočaré a nepřímočaré modelování, klasické statistické " +"testy, rozbor časové řady, třídění, seskupování,...) a kresebných technik, a " +"je vysoce rozšiřitelný. Jazyk S je často zvoleným prostředkem při zkoumání v " +"oblasti statistické metodologie, a R poskytuje cestu, jak se s pomocí " +"přístupu otevřeného zdrojového kódu zúčastnit na této činnosti." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Při otevírání souboru %1 došlo k chybě" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "Soubor se skriptem R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Chyba při načítání příkazu" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|Zdrojové soubory R (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage je svobodný matematický programový systém s otevřeným zdrojovým " +"kódem licencovaný pod GPL.
      Spojuje sílu mnoha stávajících balíčků s " +"otevřeným zdrojovým kódem do společného rozhraní založeného na Pythonu." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Cesta ke spustitelnému souboru Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Výsledek %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Posledním výstupem bylo: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Soubor se skriptem v pythonu (*.py);;Soubor se skriptem Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Během počítání tohoto výrazu proces Sage spadl" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Proces Sage spadl" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Během počítání tohoto výrazu byl proces Sage ukončen" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Proces Sage byl ukončen" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Sage nelze spustit" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "LaTeXová sazba:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Cesta ke spustitelnému souboru Scilab" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Soubor se skriptem v Scilab (*.sce);;Funkční soubor Scilab (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Otevřít soubor" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Stáhnout příklady" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Otevřít příklad" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Nenalezena žádná podpůrná vrstva

      \n" +"
      Můžete vyzkoušet:\n" +"
      • Změnu nastavení v dialogu nastavení;
      • Instalaci " +"balíčků pro následující program:
      • %2
      " +msgstr[1] "" +"

      Nenalezena žádná podpůrná vrstva

      \n" +"
      Můžete vyzkoušet:\n" +"
      • Změnu nastavení v dialogu nastavení;
      • Instalaci " +"balíčků pro následující programy:
      • %2
      " +msgstr[2] "" +"

      Nenalezena žádná podpůrná vrstva

      \n" +"
      Můžete vyzkoušet:\n" +"
      • Změnu nastavení v dialogu nastavení;
      • Instalaci " +"balíčků pro následující programy:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Chyba" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Podpůrná vrstva %1 není nainstalována" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sezení %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Počítá se..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Připraven" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Změněno" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" +"Je otevřeno vícero neuložených pracovních listů. Přejete si je uzavřít?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Zavřít Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Současný projekt byl změněn. Chcete jej uložit?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Uložit projekt" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Formátování" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Podpůrná vrstva používaná ve výchozím nastavení" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Sazbu zapnout jako výchozí" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Zvýrazňování skladby zapnout jako výchozí" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Povolit doplňování jako výchozí" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Povolit číslování výrazů jako výchozí" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Automaticky přehodnotit záznamy nalézající se pod stávajícím" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Exportovat do LaTeXu" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Vyhodnotit pracovní list" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Zvětšení" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Sázet pomocí LaTeXu" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Zvýrazňování syntaxe" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Doplňování" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Čísla řádků" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Animace" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Restartovat podpůrnou vrstvu" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Vyhodnotit záznam" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Vložit příkaz" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Vložit text" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Vložit položku Markdown" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Vložit položku LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Vložit zalomení stránky" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Vložit obrázek" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Odstranit současnou položku" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Ukázat editor skriptů" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Zobrazit doplňování" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Pracovní list Cantoru (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Uložit jako" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Uložit" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Restartovat %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Přerušit" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Chyba sezení: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Spuštění dokončeno" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Probíhá inicializace..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[pouze ke čtení]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Přejete si načíst současný pracovní list na veřejný server?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Otázka - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Pracovní list není uložen. Měl byste jej před načtením uložit." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Varování - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Tato podpůrná vrstva nepodporuje skripty." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Upravit" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "Po&hled" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Pracovní list" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Nastavení" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Soubor" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Nový" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Panely" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "Na&stavení" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Barva pozadí" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Výchozí" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Barva textu" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Písmo" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Tučné" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Kurzíva" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Zvětšit velikost" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Zmenšit velikost" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Vybrat" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Obnovit výchozí" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Zobrazit nápovědu" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Vzhled" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Přerušeno" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Najít:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Následující" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Předchozí" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Nahradit:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "Nah&radit" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "N&ahradit vše" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Hledat v:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Rozlišovat velikost" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Rodina písma:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Velikost písma:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Kapitola" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Podkapitola" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Oddíl" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Podsekce" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Odstavec" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Pododstavec" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Tloušťka čáry" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Tenký" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Střední" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Barva čáry" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Styl čáry" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Nastavit obrázek" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Nelze načíst obrázek %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Obrázky (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Nastavení obrázku" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Otevřít" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Velikost obrazovky" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Šířka" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Výška" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Náhled" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Velikost tisku" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Nastavení obrázku" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(automaticky)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Otevřít soubor obrázku" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Ukázat kód LaTeXu" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Cesta ke spustitelnému souboru latex" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Cesta ke spustitelnému souboru dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Hodnota" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 bajtů>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Od:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Komu: " + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Hlavní název" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Název grafu:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Rozhraní KDE pro matematické aplikace" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Správce
      Qt5/KF5 port, Podpůrné vrstvy Scilab a Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Vývojář" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Původní autor
      Správce (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Podpůrná vrstva KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Podpůrná vrstva Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Rozhraní" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Ikona aplikace Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Použít podpůrnou vrstvu " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Dokumenty k otevření" + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Soubor %1 nelze otevřít" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Spustit režim úprav" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Zalomení stránky ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Zavřít" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Přejít na následující výskyt" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Přejít na předchozí výskyt" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Všechny podporované soubory" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Všechny soubory" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Název:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Hodnota:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Přidat novou proměnnou" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Načíst proměnné" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Uložit proměnné" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Odstranit proměnné" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Hledat/Filtrovat" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Rozlišovat velikost písmen" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Porovnávat celé slovo" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Načíst soubor" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Uložit výsledek" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Odstranit výsledek" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Nelze nalézt součást textový editor KDE.\n" +"Prosím, prověřte svou instalaci KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Editor skriptů" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Editor skriptů - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Nenalezeno" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Příkazy" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Výsledky" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Chyby" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Text" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Kód LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "Spuštění:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Výchozí podpůrná vrstva:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Pracovní list:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Povolit zvýrazňování syntaxe" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Zvýraznění syntaxe" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Zobrazit čísla řádků" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Čísla řádek" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "Analýza:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Najít…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Kopírovat výsledek" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Ukázat vykreslené" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Ukázat kód" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Zobrazit HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Zobrazit HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Soubor Eps nelze zobrazit. Možná vám chybí nějaké balíčky" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "Textové soubory (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Nelze zapsat do souboru %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Nelze zapsat do souboru." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Chyba při ukládání souboru %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Chyba při načítání stylopisu latex.xsl" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Soubor %1 nelze otevřít." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Otevřít soubor" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Vybraný soubor není platným souborem projektu Cantor." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"S jádrem %1 jsou jakési potíže.\n" +"Prosím, prověřte své nastavení, nebo nainstalujte potřebné balíčky.\n" +"Budete si moci prohlédnout jen tento pracovní list." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Převést do" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Příkaz" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Obrázek" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Zalomení stránky" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Vodorovný oddělovač" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Vložit po" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Vložit před" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Vložit" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Přiblížit" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Oddálit" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Původní velikost" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Odstranit záznamy" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Barva te&xtu..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Barva" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Zvý&raznění textu..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Písmo" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Velikost &písma" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "T&učné" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Kurzíva" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Podtržené" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "Přeškr&tnuté" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Zarovnat &vlevo" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Vlevo" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Zarovnat &doprostřed" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Na střed" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Zarovnat &vpravo" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Vpravo" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "Do b&loku" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Do bloku" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Bílá" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Černá" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Tmavě červená" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Červená" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Světle červená" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Tmavě zelená" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Zelená" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Světle zelená" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Tmavě modrá" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Modrá" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Světle modrá" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Tmavě žlutá" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Žlutá" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Světle žlutá" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Tmavě modrozelená" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Azurová" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Světle azurová" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Tmavě fuchsová" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Purpurová" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Světle purpurová" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Tmavě oranžová" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Oranžová" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Světle oranžová" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Tmavě šedá" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Šedá" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Světle šedá" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Přesunout nahoru" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Přesunout dolů" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Opravdu si přejete odstranit tento záznam?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Odstranit záznam" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Přesunout záznam" diff --git a/po/da/cantor.po b/po/da/cantor.po new file mode 100644 index 0000000..d05417d --- /dev/null +++ b/po/da/cantor.po @@ -0,0 +1,5087 @@ +# Translation of cantor.po into Danish +# Copyright (C) 2009 This_file_is_part_of_KDE +# This file is distributed under the same license as the kdeedu package. +# +# Anton Rasmussen , 2009, 2010. +# Martin Schlander , 2010, 2011, 2012, 2013, 2014, 2015, 2016. +# Jan Madsen , 2010. +# Claus Christensen , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2016-05-28 16:30+0100\n" +"Last-Translator: Martin Schlander \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Anton Rasmussen,Jan Madsen,Claus Christensen" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" +"anton_rasmussen@yahoo.dk,jan-portugal@opensuse.org,claus_chr@webspeed.dk" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pause" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Start" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Stop" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Gem resultat" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Avanceret plotning" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Plot" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Udtryk:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Yderligere indstillinger:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Plot" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Indstilling aktiv" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Beregn" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Differentiér" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variabel:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Tider: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Pakke" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importér pakke" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Pakke:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Intregrér" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Nedre grænse:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Øvre grænse:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "bestemt integral" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Lineær algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Opret matrix" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Kolonner:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Rækker:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Beregn egenværdier" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrix:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Beregn egenvektorer" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Invertér matrix" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Plot 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variabel" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Navn" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimum:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maksimum:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Plot 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1. variabel" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2. variabel" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Kør script" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Løs ligninger" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Ligninger:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variabler:" + +#: backendchoosedialog.cpp:64 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Select the Backend" +msgstr "Genstart backend" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"

      %1

      %2

      Se %3 for mere " +"information
      " + +#: backendchoosedialog.cpp:125 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"

      %1

      %2

      Se %3 for mere " +"information
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Gør denne til standard-backend" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, fuzzy, kde-format +#| msgctxt "the url to the documentation Python 2" +#| msgid "http://docs.python.org/2/" +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "http://docs.python.org/2/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Aktivér håndtering af variable" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Integrér plot i arbejdsark" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, fuzzy, kde-format +#| msgid "Lua script file (*.lua)" +msgid "Julia script file (*.jl)" +msgstr "Lua script-fil (*.lua)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Fejl - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Julia process." +msgstr "Kunne ikke starte Sage" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Generelt" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Plot Integration:" +msgstr "Intregrér" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, fuzzy, kde-format +#| msgid "" +#| "If true, plots will be displayed inside the worksheet. If not they appear " +#| "in a separate window." +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Hvis true, så vil plots blive vist inde i arbejdsarket. Hvis ikke vil de " +"dukke op i et særskilt vindue." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Aktiveret" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Enable Variable Management" +msgid "Variable Management:" +msgstr "Aktivér håndtering af variable" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Integrate Plots in Worksheet" +msgid "Internal Plot Format:" +msgstr "Integrér plot i arbejdsark" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plots" +msgstr "Plot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "PyPlot" +msgstr "Plot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, fuzzy, kde-format +#| msgid "Scripts to autorun" +msgid "Commands to autorun" +msgstr "Scripts i autokørsel" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Documents to open." +msgid "Documentation" +msgstr "Dokumenter der skal åbnes." + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "http://docs.kde.org/stable/en/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Liste over scripts der skal køres automatisk ved sessionens begyndelse" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Fejl: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, fuzzy, kde-format +#| msgctxt "Lua official documentation" +#| msgid "http://www.lua.org/docs.html" +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "http://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, fuzzy, kde-format +#| msgid "" +#| "

      Lua is a fast and lightweight scripting language, with a simple " +#| "procedural syntax. There are several libraries in Lua aimed at math and " +#| "science.

      This backend supports luajit 2.

      " +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"

      Lua er et hurtigt og letvægt scripting-sprog, med en simpel procedural " +"syntaks. Der er adskillige biblioteker i Lua som er rettet imod matematik og " +"videnskab.

      Denne backend understøtter luajit 2.

      " + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Sti til kommandoen luajit" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Lua script-fil (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Path to luajit command:" +msgid "Path to luajit:" +msgstr "Sti til kommandoen luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, fuzzy, kde-format +#| msgid "" +#| "Maxima is a system for the manipulation of symbolic and numerical " +#| "expressions, including differentiation, integration, Taylor series, " +#| "Laplace transforms, ordinary differential equations, systems of linear " +#| "equations, polynomials, and sets, lists, vectors, matrices, and tensors. " +#| "Maxima yields high precision numeric results by using exact fractions, " +#| "arbitrary precision integers, and variable precision floating point " +#| "numbers. Maxima can plot functions and data in two and three dimensions. " +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima er et system til manipulation af symbolske og numeriske udtryk, " +"inklusiv differentiering, integrering, Taylor-rækker, Laplace-" +"transformationer, ordinære differentialligninger, systemer af lineære " +"ligninger, polynomier, mængder, lister, vektorer, matricer og tensorer. " +"Maxima giver høj præcision i numeriske resultater ved at bruge eksakte " +"brøker, vilkårligt præcise heltal og variabelt præcise tal med flydende " +"komma. Maxima kan plotte funktioner og data i to og tre dimensioner. " + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Sti til programmet Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Fejl: For mange */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Fejl: For mange /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Fejl: Forventede \" før ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Maxima-batchfil (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Kunne ikke starte Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima brød sammen. Genstarter..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima brød sammen to gange inden for et kort tidsrum. Forsøger ikke at " +"starte igen" + +#: backends/octave/octavebackend.cpp:62 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Octave, please check if there is a " +#| "translated version (currently Czech and Japanese) and use the correct url" +#| msgid "http://www.gnu.org/software/octave/doc/interpreter/" +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "http://www.gnu.org/software/octave/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, fuzzy, kde-format +#| msgid "" +#| "GNU Octave is a high-level language, primarily intended for numerical " +#| "computations.
      It provides a convenient command line interface for " +#| "solving linear and nonlinear problems numerically, and for performing " +#| "other numerical experiments using a language that is mostly compatible " +#| "with Matlab." +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave er et højniveausprog, der primært er tiltænkt til numeriske " +"beregninger.
      Det giver en bekvem kommandolinjegrænseflade til løsning " +"af linære og ikke-linære problemer numerisk og til at udføre andre numeriske " +"eksperimenter med brug af et sprog der oftest er kompatibelt med Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Octave-scriptfil (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Syntaksfejl" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, fuzzy, kde-format +#| msgctxt "the url to the documentation Python 3" +#| msgid "http://docs.python.org/3/" +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "http://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, fuzzy, kde-format +#| msgid "" +#| "

      Python is a remarkably powerful dynamic programming language that is " +#| "used in a wide variety of application domains. There are several Python " +#| "packages to scientific programming.

      This backend supports Python 2." +#| "

      " +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"

      Python er et bemærkelsesværdigt kraftfuldt, dynamisk programmeringssprog, " +"der bruges til mange forskellige slags programmer. Der er adskillige Python-" +"pakker til videnskabelig programmering.

      Denne backend understøtter " +"Python 2.

      " + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Python-scriptfil (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Cantor python server." +msgstr "Kunne ikke starte Sage" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "plot.ly" +msgstr "Plot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - plotdialog" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funktioner" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Titel" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Udtryk" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Tilføj" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Fjern" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Ryd liste" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "x-variabel" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Stil" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Linjer" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Punkter" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Punkter og linjer" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Bokse" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogram" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Trin" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Candlesticks" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Prikker" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Udglatning" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Ingen" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monoton" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Naturlige kubiske splines" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (monoton)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Værdimængde" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Definitionsmængde" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Sa&mplingfrekvens" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Skridts&tørrelse" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Tilvalg" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Plottets titel" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Etiket til x-aksen" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Etiket til y-aksen" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Signaturforklaringens position" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Skjul signaturforklaring" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Øverst til venstre" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Øverst til højre" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Nederst til venstre" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Nederst til højre" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Under" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Udenfor" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Vis gitter" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Vis fuld ramme" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Brug farver" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Vis i arbejdsarket" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logaritmisk x-skala" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logaritmisk y-skala" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Tilvalg for filer" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Gem plot i fil" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Filtype" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Udled af filnavn" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, fuzzy, kde-format +#| msgid "" +#| "Qalculate! is not your regular software replication of the cheapest " +#| "available calculator. Qalculate! aims to make full use of the superior " +#| "interface, power and flexibility of modern computers. The center of " +#| "attention in Qalculate! is the expression entry. Instead of entering each " +#| "number in a mathematical expression separately, you can directly write " +#| "the whole expression and later modify it. The interpretation of " +#| "expressions is flexible and fault tolerant, and if you nevertheless do " +#| "something wrong, Qalculate! will tell you so. Not fully solvable " +#| "expressions are however not errors. Qalculate! will simplify as far as it " +#| "can and answer with an expression. In addition to numbers and arithmetic " +#| "operators, an expression may contain any combination of variables, units, " +#| "and functions." +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! er ikke en sædvanlig softwaregengivelse af den billigste " +"lommeregner, der findes. Qalculate! stræber imod at gøre fuld brug af en " +"moderne computers overlegne brugerflade, styrke og fleksibilitet. Det " +"centrale element i Qalculate! er udtrykseditoren. I stedet for at angive " +"hvert tal i et matematisk udtryk for sig kan du skrive hele udtrykket " +"direkte og senere ændre det. Fortolkningen af udtryk er fleksibel og " +"fejltolerant, og hvis du alligevel gør noget forkert, så fortæller " +"Qalculate! dig det. Udtryk, som ikke kan beregnes helt er dog ikke fejl. " +"Qalculate! vil forenkle dem så meget som muligt og svare med et udtryk. Ud " +"over tal og regneoperatorer kan udtryk indeholde enhver kombination af " +"variable, enheder og funktioner." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Om enheder skal konverteres automatisk og hvordan. Hvis true, så konverteres " +"der til den bedst egnede SI-enhed (den med de færreste enheder)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Standard for vinkelenhed til trigonometriske funktioner." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Base for fortolkede og beregnede tal." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Om beregnede resultater skal forenkles eller faktoriseres." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Om rationelle tal skal vises med decimaler, som en brøk eller en mellemting." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Vis at et tals sekvens af decimaler gentages periodisk med tre prikker i " +"stedet for afrunding (fx vises 2/3 som 0.666666... i stedet for 0.666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Brug alle dekadiske SI-præfikser. Hvis false, så bliver præfikser, som ikke " +"er et mulitplum af tusind (centi, deci, deca og hekto) ikke anvendt " +"automatisk." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Hvis true, så bruges negative eksponenter i stedet for division (fx bliver 5/" +"x^2 til 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Numerisk visning." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Hvis true, så vil plots blive vist inde i arbejdsarket. Hvis ikke vil de " +"dukke op i et særskilt vindue." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Om farver skal bruges i plots." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Om der skal plottes et gitter." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Om der skal tegnes en fuld ramme omkring plottet." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Bredde af linjer i pixels." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Antal interpolationsskridt, der skal bruges ved plotning." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Udglatningstilstand for plots." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Plotstil." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Position af signaturforklaringer i plots." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate siger, at den ikke kan udskrive. Er gnuplot installeret?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "mangler %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 skal være et tal." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 skal være et helt tal." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 skal være en boolesk værdi." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "ugyldigt tilvalg til %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "fandt flere udtryk i en plotkommando (%1 og %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "FEJL" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "ADVARSEL" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Der findes ingen funktion, variabel eller enhed med det angivne navn." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funktion: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Brugerflade til plotning" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Plotter en eller flere funktioner enten i arbejdsarket eller i et separat " +"vindue." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "udtryk" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "tilvalg" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "værdi" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "helt tal" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "boolesk værdi" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "tal" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "standard: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Funktionens navn" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Etiket til titel" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "Etiket til x-akse" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Etiket til y-akse" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Billede, som plottet skal gemmes som. Hvis den er tom, så vises plottet i et " +"vindue på skærmen. Hvis inline=true, så vises billedet uanset, hvad der er " +"valgt her." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Den filtype, som billedet gemmes som. En af følgende: auto, png, ps, eps, " +"latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "Sæt til true for at lave farvede plots, false for sort-hvide plots." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Mindste værdi på x-aksen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Største værdi på x-aksen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Om x-aksen skal have en logaritmisk skala." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Om y-aksen skal have en logaritmisk skala." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Basen for den logaritmiske skala på x-aksen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Basen for den logaritmiske skala på y-aksen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Om der skal vises et gitter i plottet." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "Om plottet skal omgives af en ramme på alle sider (ikke blot akser)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Linjebredden." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Hvor signaturforklaringen skal placeres i plottet. En af følgende: none, " +"top_left, top_right, bottom_left, bottom_right, below, outside" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Udglatning af plot. En af følgende: none, unique, csplines, bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Plotstil. En af følgende: lines, points, points_lines, boxes, histogram, " +"steps, candlesticks, dots" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Anvend skala på den anden x-akse." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Anvend skala på den anden y-akse." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Om plottet skal tegnes i arbejdsarket i stedet for i et nyt vindue." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Afstand imellem to interpolationspunkter. Se også steps." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Antallet af interpolationspunkter. Se også step." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Navnet på variablen på x-aksen. Dette skal være en ukendt variabel" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Gem variable til en fil" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Gem alle de variable, som er definerede i øjeblikket i en fil. De kan " +"genindlæses med %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "fil" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "fil: navnet på filen, der skal gemmes til" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Indlæs variabler fra en fil" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Indlæs variabler fra en fil, som tidligere er blevet oprettet med %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "fil: den fil der skal indlæses" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Talbase:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Format for brøker:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Decimal" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Eksakt" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Brøk" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Kombineret" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Numerisk visning:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Ren" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Videnskabelig" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Præcision" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Indikér uendelige rækker:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Brug alle SI-præfikser:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Brug negative eksponenter:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Beregn" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Omregn til bedste SI-enhed:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radianer" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Grader" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Nygrader" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Struktureringstilstand:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Forenkl" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Faktorisér" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Vinkelenhed:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Plotning" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Vis plots i arbejdsarket:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Vis hele rammer:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Linjebredde:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Samplingfrekvens:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Udglatningstilstand:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Naturlige kubiske splines" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Trin" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Placering af signaturforklaring:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Farvede plots:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Vis gitter:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Plotstil:" + +#: backends/qthelpconfig.cpp:45 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Kommandofelt" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Append Text Entry" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Tilføj tekstfelt til sidst" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Path to luajit command:" +msgid "Add local documentation" +msgstr "Sti til kommandoen luajit:" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Documents to open." +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Dokumenter der skal åbnes." + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Path to luajit command:" +msgid "Download additional documentations" +msgstr "Sti til kommandoen luajit:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Navn" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, fuzzy, kde-format +#| msgid "Add" +msgctxt "@action:button" +msgid "Add" +msgstr "Tilføj" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Genstart backend" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name:" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Navn:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, fuzzy, kde-format +#| msgid "" +#| "R is a language and environment for statistical computing and graphics, " +#| "similar to the S language and environment.
      It provides a wide " +#| "variety of statistical (linear and nonlinear modelling, classical " +#| "statistical tests, time-series analysis, classification, clustering, ...) " +#| "and graphical techniques, and is highly extensible. The S language is " +#| "often the vehicle of choice for research in statistical methodology, and " +#| "R provides an Open Source route to participation in that activity." +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R er et sprog og miljø til statistisk beregning og grafik, der minder om " +"sproget og miljøet S.
      Det tilbyder en bred vifte af statistiske (lineær " +"og ikke-lineær modellering, klassiske statistiske test, analyse af " +"tidsserier, klassificering, clustering, ...) og grafiske teknikker og kan i " +"høj grad udvides. S-sproget er ofte det valgte værktøj indenfor forskning i " +"statistisk metodologi. R giver en open source-måde at deltage i den " +"aktivitet." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Fejl under åbning af filen %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "R script-fil (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Fejl under fortolkning af kommando" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Dobbeltklik for at åbne filvælgerdialogen" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R-kildefiler (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, fuzzy, kde-format +#| msgid "" +#| "Sage is a free open-source mathematics software system licensed under the " +#| "GPL.
      It combines the power of many existing open-source packages " +#| "into a common Python-based interface." +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage er et system af frit open source matematik-software licenseret under " +"GPL.
      Det kombinerer styrkerne fra mange eksisterende open source-pakker " +"i et fælles Python-baseret interface." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Sti til programmet Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Aktivér tekstsætning med LaTeX" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Resultat af %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Det sidste output var: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Python-script-fil (*.py);;Sage-script-fil (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Sage-processen brød sammen under evaluering af dette udtryk" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Sage-processen brød sammen" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Sage-processen afsluttede under evaluering af dette udtryk" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Sage-processen afsluttede" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Kunne ikke starte Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting:" +msgstr "Aktivér tekstsætning med LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Scilab, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.scilab.org/support/documentation" +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "http://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, fuzzy, kde-format +#| msgid "" +#| "

      Warning: this backend works only with Scilab version 5.5 or " +#| "later

      Scilab is a free software, cross-platform numerical " +#| "computational package and a high-level, numerically oriented programming " +#| "language.

      Scilab is distributed under CeCILL license (GPL compatible)" +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"

      Advarsel: denne backend virker kun med Scilab version 5.5 og " +"nyere

      Scilab er en fri software-pakke til numeriske beregninger på " +"mange platforme og et højniveau-programmeringssprog orienteret mod numerisk " +"programmering.

      Scilab distribueres under CeCILL-licensen (som er " +"kompatibel med GPL)" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to the Sage executable" +msgid "Path to the Scilab executable" +msgstr "Sti til programmet Sage" + +#: backends/scilab/scilabextensions.cpp:23 +#, fuzzy, kde-format +#| msgid "Scilab script file (*.sce);;Scilab function file (*.sci)" +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "Scilab-scriptfil (*.sce);;Scilab-funktionsfil (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Åbn fil" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "Download Example Worksheets" +msgid "Download Examples" +msgstr "Download eksempelark" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "Å&bn eksempel" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Ingen backend fundet

      \n" +"
      Du kan prøve at:\n" +"
      • Ændre indstillingerne i indstillingsdialogen;
      • " +"
      • Installere pakker for følgende program:
      • %2
      " +msgstr[1] "" +"

      Ingen backend fundet

      \n" +"
      Du kan prøve at:\n" +"
      • Ændre indstillingerne i indstillingsdialogen;
      • " +"
      • Installere pakker for et af de følgende programmer:
      • %2
      " +"
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Fejl" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Backenden %1 er ikke installeret" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Session %1" + +#: cantor.cpp:386 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to find the Cantor Part with error %1" +msgstr "Kunne ikke finde Cantor Part." + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Beregner..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Klar" + +#: cantor.cpp:480 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Changed" +msgstr "Definitionsmængde" + +#: cantor.cpp:564 +#, fuzzy, kde-format +#| msgid "Multiple unsaved Worksheets are opened do want to close?" +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "Flere ikke gemte arbejdsark er åbne. Vil du lukke?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Luk Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Det aktuelle projekt er blevet ændret. Vil du gemme det?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Gem projekt" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "Plotting" +msgid "Formatting" +msgstr "Plotning" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Den backend der bruges som standard" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Aktivér som standard sætning af tekst" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Brug som standard syntaksfremhævning" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Aktivér fuldførelse som standard" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Aktivér nummerering af udtryk som standard" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Animér ændringer i arbejdsarket som standard" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Genevaluér automatisk indgangene under den aktuelle" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Gem klartekst" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Eksportér til LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Evaluér arbejdsark" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Sæt tekst med LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Syntaksfremhævning" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Fuldførelse" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Linjenumre" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Pause Animation" +msgid "Animations" +msgstr "Sæt animation på pause" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Genstart backend" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Evaluér felt" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Indsæt kommandofelt" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Indsæt tekstfelt" + +#: cantor_part.cpp:278 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Insert Markdown Entry" +msgstr "Indsæt kommandofelt" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Indsæt LaTeX-felt" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Indsæt sideskift" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Indsæt billede" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Expand All Results" +msgstr "Resultater" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove All Results" +msgstr "Fjern resultat" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Fjern dette felt" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Vis script-editor" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Vis fuldførelse" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, fuzzy, kde-format +#| msgid "*.cws|Cantor Worksheet" +msgid "Cantor Worksheet (*.cws)" +msgstr "*.cws|Cantor-arbejdsark" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Gem som" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Gem" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Restart %1?" +msgstr "Genstart backend" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Afbryd" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Sessionsfejl: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Initialisering færdig" + +#: cantor_part.cpp:690 +#, fuzzy, kde-format +#| msgid "Initializing Session" +msgid "Initializing..." +msgstr "Initialiserer session" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Vil du uploade dit nuværende arbejdsark til offentlig web-server?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Spørgsmål - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Arbejdsarket er ikke gemt. Du skal gemme det før upload." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Advarsel - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Denne backend understøtter ikke scripts." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Redigér" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Vis" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Arbejdsark" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "&Indstillinger" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Fil" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Ny" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Paneler" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Indstillinger" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "Default" +msgstr "Standardindstillinger" + +#: commandentry.cpp:151 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Text &Color..." +msgid "Text Color" +msgstr "Tekst&farve..." + +#: commandentry.cpp:176 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "&Font" +msgid "Font" +msgstr "&Skrifttype" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, fuzzy, kde-format +#| msgctxt "@action boldify selected text" +#| msgid "&Bold" +msgid "Bold" +msgstr "&Fed" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, fuzzy, kde-format +#| msgctxt "@action italicize selected text" +#| msgid "&Italic" +msgid "Italic" +msgstr "&Kursiv" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Show Results" +msgstr "Resultater" + +#: commandentry.cpp:338 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Hide Results" +msgstr "Resultater" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Help" +msgstr "Vis hjælp til %1" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Afbrudt" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Søgelinje" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Find:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Næste" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Forrige" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Erstat:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Erstat" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Erstat &alle" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Søg i:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Versalfølsom" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Font &Size" +msgid "Font Size:" +msgstr "Skrift&størrelse" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Section" +msgstr "funktion" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Subsection" +msgstr "funktion" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Solid Line Style" +msgstr "Fuldførelsesstil:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Dot Line Style" +msgstr "Fuldførelsesstil:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgid "Use Colors" +msgid "Line Color" +msgstr "Brug farver" + +#: horizontalruleentry.cpp:351 +#, fuzzy, kde-format +#| msgid "Style" +msgid "Line Style" +msgstr "Stil" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Indstil billede" + +#: imageentry.cpp:256 +#, fuzzy, kde-format +#| msgid "Double click to open file selection dialog" +msgid "Double click here to configure image settings" +msgstr "Dobbeltklik for at åbne filvælgerdialogen" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Kan ikke indlæse billedet %1" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Gem resultat" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Image" +msgid "Images (%1)" +msgstr "Billede" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Billedindstillinger" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Åbn" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Visningsstørrelse" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Bredde" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Højde" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, fuzzy, kde-format +#| msgid "&Previous" +msgid "Preview" +msgstr "&Forrige" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Udskriftstørrelse" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Brug visningsstørrelse" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Billedindstillinger" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(auto)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Åbn billedfil" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Vis LaTeX-kode" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Sti til programmet latex" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Sti til programmet dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Værdi" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "X variable" +msgid "" +msgstr "x-variabel" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Fra:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Til:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Hovedtitel" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Skala på X-aksen" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Skala på Y-aksen" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Plot-titel:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDE-brugerflade til matematiske programmer" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Vedligeholder
      Qt5/KF5-portering, backends til Scilab og Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, fuzzy, kde-format +#| msgid "Alexander Rieder" +msgid "Alexander Semke" +msgstr "Alexander Rieder" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Oprindelig ophavsmand
      Vedligeholder (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra-backend" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave-backend" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Brugerflade" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Cantor-ikon" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Brug backend " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Dokumenter der skal åbnes." + +#: main.cpp:130 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1" +msgstr "Fejl under åbning af filen %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, fuzzy, kde-format +#| msgid "Syntax Error" +msgid "Cantor Math Error" +msgstr "Syntaksfejl" + +#: markdownentry.cpp:796 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Kunne ikke finde Cantor Part." + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Sideskift ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, fuzzy, kde-format +#| msgid "&Match case" +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "&Versalfølsom" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, fuzzy, kde-format +#| msgid "Uploading successful" +msgid "Download Successful" +msgstr "Upload gennemført" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor icon" +msgid "Cantor files" +msgstr "Cantor-ikon" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "Open file" +msgid "Jupyter files" +msgstr "Åbn fil" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, fuzzy, kde-format +#| msgid "file" +msgid "All files" +msgstr "fil" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Navn:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Værdi:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgid "Add New Variable" +msgstr "Tilføj ny variabel" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Indlæs variabler" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Save Variables" +msgstr "Gem variabler" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Remove Variables" +msgstr "Gem variabler" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, fuzzy, kde-format +#| msgid "SearchBar" +msgid "Search/Filter" +msgstr "Søgelinje" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Vil du virkelig fjerne alle variabler?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Indlæs fil" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Gem resultat" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Fjern resultat" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"En teksteditor-komponent til KDE kunne ikke findes;\n" +"tjek venligst din KDE-installation." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Script-editor" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Script-editor - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Ikke fundet" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Nået begyndelsen" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Nået slutningen" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Erstattede %1 forekomst" +msgstr[1] "Erstattede %1 forekomster" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Kommandoer" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Resultater" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Fejl" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Tekst" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX-kode" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "Start" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Standard-backend:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "&Arbejdsark" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "Aktivér tekstsætning med LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting" +msgstr "Aktivér tekstsætning med LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Aktivér syntaksfremhævning" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Syntaksfremhævning" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "Aktivér fuldførelse" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Linjenumre" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Linjenumre" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "Integrér plot i arbejdsark" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Ligninger:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "Genevaluér indgange automatisk" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown:" +msgstr "Indsæt kommandofelt" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "Aktivér tekstsætning med LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, fuzzy, kde-format +#| msgid "Find:" +msgid "Find…" +msgstr "Find:" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert to Text Entry" +msgstr "Indsæt tekstfelt" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Copy result" +msgstr "Fjern resultat" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Vis renderet" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Vis kode" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show HTML Code" +msgstr "Vis kode" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Html" +msgstr "Vis hjælp til %1" + +#: textresultitem.cpp:90 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show HTML" +msgstr "Vis hjælp til %1" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Kan ikke vise EPS-fil. Du har muligvis brug for yderligere pakker" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Gem resultat" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Kan ikke skrive filen %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Kan ikke skrive filen." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Fejl ved gemning af filen %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Fejl ved indlæsning af latex.xsl-stilark" + +#: worksheet.cpp:1327 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1." +msgstr "Fejl under åbning af filen %1" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +#| msgid "Open file" +msgid "Open File" +msgstr "Åbn fil" + +#: worksheet.cpp:1350 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the selected file for reading." +msgstr "Fejl under åbning af filen %1" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Der er problemer med backenden %1.\n" +"Kontrollér din opsætning eller installér de nødvendige pakker.\n" +"Du vil kun kunne se dette arbejdsark." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert To" +msgstr "Indsæt tekstfelt" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Commands" +msgid "Command" +msgstr "Kommandoer" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown" +msgstr "Indsæt kommandofelt" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Billede" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Sideskift" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, fuzzy, kde-format +#| msgid "Points and Lines" +msgid "Horizontal Line" +msgstr "Punkter og linjer" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +#| msgid "Drag Entry" +msgid "Hierarchy Entry" +msgstr "Træk felt" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Insert After" +msgstr "Indsæt tekstfelt" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Indsæt før" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Indsæt" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "Udskriftstørrelse" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Move Entries Down" +msgstr "Indsæt tekstfelt" + +#: worksheet.cpp:1933 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate Entries" +msgstr "Evaluér felt" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Entries" +msgstr "Fjern felt" + +#: worksheet.cpp:1947 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Collapse Command Entry Results" +msgstr "Indsæt kommandofelt" + +#: worksheet.cpp:1948 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Expand Command Entry Results" +msgstr "Tilføj kommandofelt til sidst" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Remove Command Entry Results" +msgstr "Kommandofelt" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Add Command Entry To Execution" +msgstr "Tilføj kommandofelt til sidst" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Tekst&farve..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Farve" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Tekstfrem&hævning..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Skrifttype" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Skrift&størrelse" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Fed" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Kursiv" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Understreg" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Gennemstreg" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "&Venstrejusteret" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Venstre" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "&Centreret" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Centrér" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "&Højrejusteret" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Højre" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Justér" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Justér" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove all results" +msgstr "Fjern resultat" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +#| msgid "Ready" +msgid "Red" +msgstr "Klar" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Dark Orange" +msgstr "Definitionsmængde" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Orange" +msgstr "Definitionsmængde" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Light Orange" +msgstr "Definitionsmængde" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, fuzzy, kde-format +#| msgid "Do you also want to export the images?" +msgid "Do you really want to remove this entry?" +msgstr "Vil du også eksportere billederne?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Fjern felt" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Træk felt" + +#~ msgid "Animate Worksheet" +#~ msgstr "Animér arbejdsark" + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Hvis aktiveret vil Cantor automatisk evaluere hvert felt under det " +#~ "aktuelle." + +#~ msgid "Defaults" +#~ msgstr "Standardindstillinger" + +#~ msgid "Enable Line Numbers" +#~ msgstr "Aktivér linjenumre" + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Aktivér animationer i arbejdsark" + +#, fuzzy +#~| msgid "Plot" +#~ msgid "Plot.ly" +#~ msgstr "Plot" + +#, fuzzy +#~| msgid "Package:" +#~ msgid "Graphic Package: " +#~ msgstr "Pakke:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      KDE's måde at lave matematik" + +#, fuzzy +#~| msgid "Documents to open." +#~ msgid "Documentation:" +#~ msgstr "Dokumenter der skal åbnes." + +#~ msgid "Show %1 Help" +#~ msgstr "Vis hjælp til %1" + +#, fuzzy +#~| msgid "Path to Maxima:" +#~ msgid "Path to Julia:" +#~ msgstr "Sti til Maxima:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Integrér plot i arbejdsark" + +#~ msgid "Clear Variables" +#~ msgstr "Ryd variabler" + +#~ msgid "Right click here to insert image" +#~ msgstr "Højreklik her for at indsætte billede" + +#, fuzzy +#~| msgid "Configure Image" +#~ msgid "Choose Image" +#~ msgstr "Indstil billede" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Bekræftelse - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Tekstfelt" + +#~ msgid "LaTeX Entry" +#~ msgstr "LaTeX-felt" + +#, fuzzy +#~| msgid "Text Entry Before" +#~ msgid "Insert Entry Before" +#~ msgstr "Tekstindgang før" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Indsæt tekstfelt" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Sti til kommandoen scilab-adv-cli (Advarsel: Scilab skal være version 5.4 " +#~ "eller nyere)" + +#, fuzzy +#~| msgid "Insert Image" +#~ msgid "Insert Image Attachment" +#~ msgstr "Indsæt billede" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Indsæt LaTeX-input" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Sti til programmet Octave" + +#~ msgid "Path to Maxima:" +#~ msgstr "Sti til Maxima:" + +#, fuzzy +#~| msgid "Failed to start Sage" +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Kunne ikke starte Sage" + +#~ msgid "Path to Sage:" +#~ msgstr "Sti til Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Sti til kommandoen scilab-adv-cli:" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Lad Cantor holde øje med oprettelse og fjernelse af variable" + +#, fuzzy +#~| msgid "Integrate Plots in Worksheet" +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "Integrér plot i arbejdsark" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Sti til programmet Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Sti til Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Unavngivet" + +#, fuzzy +#~| msgctxt "the url to the documentation Python 2" +#~| msgid "http://docs.python.org/2/" +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "http://docs.python.org/2/" + +#, fuzzy +#~| msgid "" +#~| "

      Python is a remarkably powerful dynamic programming language that is " +#~| "used in a wide variety of application domains. There are several Python " +#~| "packages to scientific programming.

      This backend supports Python 3." +#~| "

      " +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "

      Python er et bemærkelsesværdigt kraftfuldt, dynamisk " +#~ "programmeringssprog, der bruges til mange forskellige slags programmer. " +#~ "Der er adskillige Python-pakker til videnskabelig programmering.

      Denne backend understøtter Python 3.

      " + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Vælg den backend der skal bruges:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Den backend, der blev brugt til at oprette denne fil, er ikke " +#~ "installeret. Den skal bruge %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Udgiv arbejdsark" + +#~ msgid "Waiting for Image..." +#~ msgstr "Venter på billede..." + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "kan ikke åbne filen %1: Ukendt MIME-type" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|LaTeX-dokument" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantor-arbejdsark" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Server til Cantors R-backend" + +#~ msgid "R Server" +#~ msgstr "R Server" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Brug: saveVariables fil" + +#~ msgid "Saving failed." +#~ msgstr "Gemning mislykkedes." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Brug: loadVariables fil" + +#~ msgid "Loading failed." +#~ msgstr "Indlæsning mislykkedes." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2013 Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "Sti til kommandoen python:" + +#~ msgid "Cantor Server for R" +#~ msgstr "Cantor-server til R" + +#~ msgid "Path to python2 command:" +#~ msgstr "Sti til kommandoen python2:" + +#~ msgid " Enable Variable Management" +#~ msgstr " Aktivér håndtering af variable" + +#~ msgid "Could not start the server." +#~ msgstr "Kunne ikke starte serveren." + +#~ msgid "Start Animation" +#~ msgstr "Start animation" + +#~ msgid "Restart Animation" +#~ msgstr "Genstart animation" + +#~ msgid "Append Latex Entry" +#~ msgstr "Indsæt LaTeX-input til sidst" + +#~ msgid "Append Image" +#~ msgstr "Indsæt billede til sidst" + +#~ msgid "Append Page Break" +#~ msgstr "Indsæt sideskift til sidst" + +#~ msgid "Other" +#~ msgstr "Andet" + +#~ msgid "And %1 more..." +#~ msgstr "Og %1 mere..." + +#~ msgid "Main Toolbar" +#~ msgstr "Hovedværktøjslinje" + +#~ msgid "Popup" +#~ msgstr "Pop-op" + +#~ msgid "The style used for Completion" +#~ msgstr "Stil der bruges til fuldførelse" + +#~ msgid "Insert Command Entry Before" +#~ msgstr "Indsæt kommandoindgang før" + +#~ msgid "Command Entry Before" +#~ msgstr "Kommandoindgang før" + +#~ msgid "Help" +#~ msgstr "Hjælp" + +#~ msgid "Show Help Panel" +#~ msgstr "Vis hjælpepanel" + +#~ msgid "Error uploading File %1" +#~ msgstr "Fejl under upload af filen %1" diff --git a/po/de/cantor.po b/po/de/cantor.po new file mode 100644 index 0000000..6a8fea9 --- /dev/null +++ b/po/de/cantor.po @@ -0,0 +1,5223 @@ +# Burkhard Lück , 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021. +# Frederik Schwarzer , 2009, 2010, 2011, 2012, 2016, 2017, 2020, 2022. +# Panagiotis Papadopoulos , 2010, 2011. +# Peter Rüthemann , 2010. +# Rolf Eike Beer , 2011. +# Rene Landert , 2012. +# loisspitz , 2020. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-07-23 23:07+0200\n" +"Last-Translator: Frederik Schwarzer \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 22.07.70\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Deutsches KDE-Übersetzerteam" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "kde-i18n-de@kde.org" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Anhalten" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Starten" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Stopp" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Ergebnis speichern" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Animationen (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Erweiterte Grafikausgabe" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Grafik" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Ausdruck:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Zusätzliche Einstellungen:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Grafik" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Einstellungen aktivieren" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Berechnen" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Differenzieren" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variable:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Ableitung:" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Paket" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Paket importieren" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Paket:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integrieren" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Untere Grenze:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Obere Grenze:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "bestimmte Integrale" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Lineare Algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Matrix erstellen" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Spalten:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Zeilen:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Eigenwerte berechnen" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrix:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Eigenvektoren berechnen" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Matrix invertieren" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "2D-Grafik" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variable" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Name" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimum:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maximum:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "3D-Grafik" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "Erste Variable" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "Zweite Variable" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Skript ausführen" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Gleichungen lösen" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Gleichungen:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variablen:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Modul auswählen" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Empfohlene Version: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Weitere Informationen finden Sie auf %2.
      " + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Einige Voraussetzungen sing nicht erfüllt: " +"%1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Auswahl als Standard-Modul einstellen" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia ist eine leistungsstarke höhere Programmiersprache für " +"technische Berechnungen, mit einer Syntax, die den Benutzern von andere " +"technische Berechnungsumgebungen bekannt ist. Sie bietet einen " +"hochentwickelte Compiler, verteilte parallele Ausführung, numerische " +"Genauigkeit und eine umfangreiche mathematische Funktionsbibliothek." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"Der in den Anwendungseinstellungen angegebene Pfad zu Julia muss direkt auf " +"die ausführbare Datei verweisen. Symlinks sind nicht erlaubt. Bitte geben " +"Sie den richtigen Pfad in den Anwendungseinstellungen an und versuchen Sie " +"es erneut." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Сantor konnte die Version von Julia für %1 nicht ermitteln. Bitte geben Sie " +"den richtigen Pfad zur ausführbaren Datei von Julia an (keine Symlinks " +"zulässig) und versuchen Sie es erneut." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Sie versuchen, Cantor mit Julia v%1.%2.%3 zu verwenden. Diese Version von " +"Cantor wurde mit Unterstützung von Julia v%4.%5.%6 kompiliert. Bitte zeigen " +"Sie auf diese Version von Julia oder kompilieren Sie Cantor mit der Version " +"%1.%2.%3 neu." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Pfad zum nativen Julia-REPL" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Variablenverwaltung aktivieren" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Grafiken in das Arbeitsblatt integrieren" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, fuzzy, kde-format +#| msgid "Graphic Package for \"Plot\"-assistant" +msgid "Graphical package for the Plot-Assistant" +msgstr "Grafikpaket für \"Plot\"-Helfer" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Sorry, aber Gadfly unterstützt keine 3D-Grafik" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Julia-Skriptdatei (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Fehler – Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"Anmeldung zur Julia-Sitzung wegen eines internen Juli-Problems wegen " +"fehlender interner Datei „%1“ nicht möglich" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" +"Anmeldung zur Julia-Sitzung wegen unbekannter interner Probleme nicht möglich" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Der Julia-Prozess funktioniert nicht mehr." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Start des Julia-Prozesses fehlgeschlagen." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" +"Die Kommunikation mit dem Julia-Prozess ist aus unbekannten Gründen " +"fehlgeschlagen." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Für Julia wird derzeit nur GR (https://gr-framework.org/), ein Framework für " +"Visualisierungsanwendungen, unterstützt. Dieses Paket muss zuerst " +"installiert werden, falls es noch nicht geschehen ist. Führen Sie dazu Pkg." +"install (\"GR\") in Cantor oder in Julia REPL aus. Beachten Sie, dass dieser " +"Vorgang einige Zeit dauern kann. Es ist besser, ihn in Julia REPL " +"auszuführen, die den aktuellen Fortschritt der Paketinstallation anzeigen " +"kann." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Allgemein" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Ausführbares Programm:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Diagramm-Integration:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Ist diese Einstellung aktiv, werden die Grafiken im Arbeitsblatt angezeigt. " +"Anderenfalls wird die Grafik in einem externen Fenster geöffnet." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Aktiviert" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Variablenverwaltung:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Überwachen Sie die Erstellung und Zerstörung von Variablen und zeigen Sie " +"die vorhandenen Variablen im Variablenfenster an." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Internes Diagrammformat:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" +"Inneres Format von Grafiken, wenn das Einbetten von Grafiken aktiviert ist." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, fuzzy, kde-format +#| msgid "Graphic Package for \"Plot\"-assistant" +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Grafikpaket für \"Plot\"-Helfer" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, fuzzy, kde-format +#| msgid "Graphic Package for \"Plot\"-assistant" +msgid "Package for Plot Assistant" +msgstr "Grafikpaket für \"Plot\"-Helfer" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Diagramme" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Automatisch ausführen" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Automatisch auszuführende Befehle" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Dokumentation" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Liste der zu Beginn einer Sitzung automatisch auszuführenden Skripte" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Fehler: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Diese Autorun-Befehle werden beim Starten eines neuen Arbeitsblatts " +"ausgeführt. Sie können nützlich sein, um benötigte Module zu laden, die " +"Umgebung zu ändern usw." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua ist eine schnelle und leichtgewichtige Skript-Sprache mit einer " +"einfachen prozeduralen Syntax. Es gibt mehrere Bibliotheken für Mathematik " +"und Wissenschaft in Lua." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Pfad zum Befehl luajit" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Lua-Skriptdatei (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Pfad zu luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima ist ein System für die Manipulation von symbolischen und " +"numerischen Ausdrücken, einschließlich Differenzierung, Integration, " +"Taylorreihe, Laplace-Transformation, gewöhnliche Differentialgleichungen, " +"lineare Gleichungssysteme, Polynome und Mengen, Listen, Vektoren, Matrizen " +"und Tensoren. Durch exakte Brüche sowie Langzahlarithmetik und " +"Gleitkommazahlen mit beliebiger Genauigkeit (arbitrary precision) erzeugt " +"Maxima Ergebnisse mit hoher numerischer Präzision. Maxima kann Funktionen " +"und Daten zwei- und dreidimensional grafisch darstellen." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Pfad zum Programm Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Fehler: Zu viele „*/“" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Fehler: Zu viele „/*“" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Fehler: „\"“ vor „;“ erwartet" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Es wird auf das Grafikergebnis gewartet" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Maxima-Stapelverarbeitungs-Datei (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Fehler beim Starten von Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima ist abgestürzt. Wird neu gestartet ..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima ist zweimal innerhalb kurzer Zeit abgestürzt. Es wird nicht neu " +"gestartet." + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave ist eine „höhere Programmiersprache“, die hauptsächlich " +"für numerische Berechnungen vorgesehen ist.
      Es stellt eine praktische " +"Befehlszeilenoberfläche für das numerische Lösen von linearen und " +"nichtlinearen Problemen und für das Durchführen von anderen numerischen " +"Experimenten bereit. Die Sprache ist dabei weitestgehend kompatibel zu " +"Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Octave-Skriptdatei (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Syntaxfehler" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Grafik-Integrationstest fehlgeschlagen." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "Die Integration von Grafiken wird deaktiviert." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"Die Grafikintegration funktioniert nicht, weil Cantor festgestellt hat, dass " +"Octave keine Grafiken erstellen kann, da es keine grafischen Module dafür " +"gibt: diese Schlussfolgerung wurde auf der Grundlage einer leeren Ausgabe " +"der Funktion available_graphics_toolkits() gezogen. Sie müssen einige " +"zusätzliche Betriebssystempakete wie gnuplot, fltk oder qt installieren, um " +"Grafiken erstellen zu können." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python ist eine außergewöhnlich leistungsfähige dynamische " +"Programmiersprache, die in vielen verschiedenen Anwendungsbereichen benutzt " +"wird. Es gibt mehrere Python-Pakete für wissenschaftliche Programmierung." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "Leider unterstützt Bokeh keine 3D-Graphik" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Python-Skriptdatei (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Der Cantor-Python-Server funktioniert nicht mehr." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Der Python-Server für Cantor kann nicht gestartet werden." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"Die Kommunikation mit dem Cantor-Python-Server ist aus unbekannten Gründen " +"fehlgeschlagen." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Um integrierte Grafiken mit dem Matplotlib-Paket zu verwenden, müssen Sie " +"zuerst das Python-Paket \"matplotlib\" installieren." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Um die integrierte Grafik mit Plot.ly verwenden zu können, müssen Sie das " +"Python-Paket \"plotly\" und eine spezielle Plot.ly-kompatible ausführbare " +"Datei \"orca\" installieren. Weitere Informationen finden Sie im Artikel " +"\"Statischer Bildexport\" in der Plot.ly-Dokumentation." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Grafikdialog" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funktionen" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Titel" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Ausdruck" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Hinzufügen" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Entfernen" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Liste leeren" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "X-Variable" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Stil" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Linien" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Punkte" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Punkte und Linien" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Rahmen" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogramm" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Stufen" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Kerzenständer" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Punkte" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Glättung" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Keine" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monoton steigend" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Natürliche kubische Filterung" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (monoton steigend)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Funktionsbereich" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X-Bereich" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "–" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "A&btastrate" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Schritt&weite" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Einstellungen" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Grafiktitel" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Beschriftung der X-Achse" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Beschriftung der Y-Achse" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Position der Legende" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Legende ausblenden" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Oben links" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Oben rechts" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Unten links" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Unten rechts" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Unten" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Außerhalb" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Gitter anzeigen" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Alle Ränder anzeigen" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Farben verwenden" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Im Arbeitsblatt anzeigen" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logarithmische X-Skala" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logarithmische Y-Skala" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Dateioptionen" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Grafik als Datei speichern" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Dateityp" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Aus Dateinamen erkennen" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! ist mehr als nur ein einfacher Rechner und nutzt die " +"Schnittstellen, Rechenleistung und Flexibilität moderner Rechner aus. Der " +"wichtigste Begriff in Qalculate! ist der Ausdruck. Anstatt jede Zahl in " +"mathematischen Ausdrücken einzeln einzugeben, schreiben Sie den gesamten " +"Ausdruck und bearbeiten ihn dann. Die Interpretation der Ausdrücke ist " +"flexibel und fehlertolerant. Bei fehlerhaften Eingaben erhalten Sie Hinweise " +"zur Korrektur. Nicht vollständig lösbare Ausdrücke führen aber nicht zu " +"Fehlern, sondern diese Ausdrücke werden durch Qalculate! soweit wie möglich " +"vereinfacht und als geänderter Ausdruck zurückgegeben. Zusätzlich zu Zahlen " +"und arithmetischen Operatoren darf ein Ausdruck eine beliebige Kombination " +"von Variablen, Einheiten und Funktionen enthalten." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Ob und wie Einheiten automatisch umgewandelt werden. Wenn wahr, dann in die " +"am besten passende SI-Einheit umwandeln (die kleinste Menge von Einheiten)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Standardeinheit des Winkels für trigonometrische Funktionen." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Basis von analysierten und ausgewerteten Zahlen" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Ob das Ergebnis dieser Auswertung vereinfacht oder zerlegt wird." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Ob rationale Zahlen mit Dezimalstellen, als Bruch oder etwas dazwischen " +"dargestellt werden." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Mit drei Punkten anzeigen, dass die Ziffernfolge einer Zahl unendlich " +"weitergeht,anstatt zu runden (z. B. 2/3 wird angezeigt als 0.666666... " +"anstelle von 0.666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Alle dezimalen SI-Präfixe verwenden. Wenn falsch, werden Präfixe, die nicht " +"ein Vielfaches von Tausend (Zenti, Dezi, Deka, Hekto) sind, nicht " +"automatisch verwendet." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Wenn wahr, dann werden negative Exponenten anstelle der Division verwendet, " +"zum Beispiel 5/x^2 wird als 5*x^-2 geschrieben." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Numerische Anzeige." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Ist diese Einstellung aktiv, werden die Grafiken im Arbeitsblatt angezeigt. " +"Anderenfalls wird die Grafik in einem eigenen Fenster geöffnet." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Ob Farben in Grafiken verwendet werden sollen." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Ob ein Gitter gezeichnet werden soll." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" +"Ist diese Einstellung aktiviert, wird an allen Seiten ein Rand gezeichnet." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Breite der Linien in Pixeln." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" +"Die Anzahl der Interpolationsschritte, die in Grafiken verwenden werden." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Glättungsmodus in Grafiken." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Stil der Grafik." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Position der Legende in Grafiken." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate kann die Grafik nicht erstellen. Ist „gnuplot“ installiert?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "„%1“ fehlt" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 muss eine Zahl sein." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 muss eine ganze Zahl sein." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 muss ein Boolescher Wert sein." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "Ungültige Option für %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" +"Es wurden mehrere Ausdrücke in einem Grafikbefehl gefunden (%1 und %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "Fehler" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "Warnung" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" +"Es existiert keine Funktion, Variable oder Einheit mit dem angegebenen Namen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funktion: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Grafik-Schnittstelle" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Zeichnet eine oder mehrere Funktionen entweder im Arbeitsblatt oder in einem " +"eigenen Fenster." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "Ausdruck" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "Option" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "Wert" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "Ganzzahl" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "Boolescher Wert" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "Zahl" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "Voreinstellung: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Der Funktionsname" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Titel-Beschriftung" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "Beschriftung der X-Achse" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Beschriftung der Y-Achse" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Bild, in dem die Grafik gespeichert werden soll. Ist diese Option leer, wird " +"die Grafik in einem Fenster auf dem Bildschirm angezeigt. Mit der " +"Einstellung inline=true wird das Bild unabhängig von dieser Einstellung " +"immer angezeigt." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Das beim Speichern verwendete Format des Bildes. Mögliche Werte sind auto, " +"png, ps, eps, latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "true für farbige Grafiken, false für einfarbige Grafiken." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Minimaler Wert der X-Achse." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Maximaler Wert der X-Achse." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Ob eine logarithmische Skala für die x-Achse benutzt werden soll." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Ob eine logarithmische Skala für die y-Achse benutzt werden soll." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Logarithmische Basis für die x-Achse." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Logarithmische Basis für die y-Achse." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Ob ein Gitter in der Grafik angezeigt wird." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Ob die Grafik an allen Seiten einen Rand haben soll und nicht nur die Achsen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Breite der Linien." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Anordnung der Legende der Grafik. Mögliche Werte sind none, top_left, " +"top_right, bottom_left, bottom_right, below, outside." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Kurvenglättung. Mögliche Werte sind none, unique, csplines, bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Grafikstil. Mögliche Werte sind lines, points, points_lines, boxes, " +"histogram, steps, candlesticks, dots" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Skala auf der zweiten x-Achse verwenden." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Skala auf der zweiten y-Achse verwenden." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" +"Ob die Grafik im Arbeitsblatt anstatt in einem eigenen Fenster angezeigt " +"wird." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" +"Der Abstand zwischen zwei Interpolationspunkten. Siehe auch Schrittweite." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Die Anzahl der Interpolationspunkte. Siehe auch Schrittweite." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Der Name der x-Variable. Dies muss eine unbekannte Variable sein." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Variablen in einer Datei speichern" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Speichert alle zurzeit definierten Variablen in einer Datei. Die Variablen " +"können mit „%1“ wieder geladen werden." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "Datei" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "Datei: Die Datei in der gespeichert werden soll" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Variablen aus einer Datei laden" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Lädt Variablen aus einer Datei, die vorher mit „%1“ erstellt wurde." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "Datei: Die zu ladende Datei" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Zahlenbasis:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Bruch-Format:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Dezimal" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Genau" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Gebrochen" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Kombiniert" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Numerische Anzeige:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Pur" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Wissenschaftlich" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Genauigkeit" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Unendliche Serien kennzeichnen:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Alle SI-Präfixe verwenden:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Negative Exponenten verwenden:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Auswerten" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "In die besten SI-Einheiten umrechnen:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Bogenmaß" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Grad" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gon" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Struktur-Modus:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Vereinfachen" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Faktorisieren" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Winkel-Einheit:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Grafikausgabe" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Grafiken im Arbeitsblatt anzeigen:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Alle Ränder anzeigen:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Linienbreite:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Abtastrate:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Glättungsmodus:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Natürliche kubische Filterung" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Schrittweite" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Position der Legende:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Farbige Grafiken:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Gitter anzeigen:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Grafikstil:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Eintrag ändern" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Neuen Eintrag hinzufügen" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Der Name darf nicht leer sein." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Lokale Dokumentation hinzufügen" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Neue Dokumentation holen" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Zusätzliche Dokumentation herunterladen" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Komprimierte Qt-Hilfedatei ist ungültig." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Dokumentation ist bereits importiert" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Ändern" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Löschen" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Deinstallieren Sie dies bitte mit GHNS." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Weitere Dokumentationsdateien installieren" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Name" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Pfad" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Hinzufügen" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Symbol:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Ein Symbol auswählen" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Name:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Geben Sie einen Namen ein" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Namen auswählen ..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Pfad:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Qt-Hilfedatei auswählen ..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Qt-Hilfedatei auswählen ..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R ist eine Sprache und eine Umgebung für statistische Berechnungen " +"und Grafiken, ähnlich zur Sprache und Umgebung „S“.
      Es stellt eine " +"große Auswahl an statistischen (lineare und nicht lineare Modellierung, " +"klassische statistische Tests, Zeitreihenanalyse, Klassifikation, " +"Clustering, ...) und grafischen Techniken bereit und lässt sich stark " +"erweitern. Die Sprache „S“ ist oft das bevorzugte Mittel für Forschungen mit " +"statistischer Methodologie und „R“ stellt die Open-Source-Mittel für die " +"Teilnahme an diesen Aktivitäten bereit." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Fehler beim Öffnen der Datei %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "„R“-Skriptdatei (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Fehler beim Einlesen des Befehls" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "URL zur lokalen R-Dokumentation" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Doppelklick zum Öffnen des Dateiauswahldialogs" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R-Quelltextdateien (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage ist ein unter der GPL lizenziertes freies Mathematik-Software-" +"System.
      Es kombiniert die Stärken vieler Open-Source-Pakete in eine " +"gemeinsame Python-basierte Schnittstelle." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Pfad zum Programm Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "LaTeX-Schriftsatz für Sage-Modul aktivieren" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Ergebnis von %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Die letzte Ausgabe lautet: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Python-Skriptdatei (*.py);;Sage-Skriptdatei (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Die Sage-Version %1.%2 wird nicht unterstützt. Bitte aktualisieren Sie Ihre " +"Installation auf eine unterstützte Version, die mit Cantor funktioniert." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Fehler beim Ermitteln der Version von Sage. Bitte überprüfen Sie Ihre " +"Installation und die Ausgabe von 'sage -v'." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Der Sage-Prozess ist beim Auswerten dieses Ausdrucks abgestürzt" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Der Prozess „Sage“ ist abgestürzt" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Der Sage-Prozess ist beim Auswerten dieses Ausdrucks beendet worden" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Der Prozess „Sage“ wurde beendet" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Fehler beim Starten von Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "LaTeX-Schriftsatz:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"Die Ausgabe von Sage LaTeX ist nicht immer korrekt, daher kann der Latexsatz " +"für ein besseres Ergebnis deaktiviert werden" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab ist ein freies Softwarepaket für numerische Berechnungen für " +"verschiedene Betriebssysteme und eine höhere Programmiersprache für " +"numerische Probleme. Scilab wird unter der CeCILL-Lizenz (kompatibel zur " +"GPL) verbreitet." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Pfad zum Programm Scilab" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Scilab-Skriptdatei (*.sce);;Scilab-Funktionsdatei (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "Die Datei %1 ist bereits geöffnet." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Datei öffnen" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Beispiele herunterladen" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Beispieldatei öffnen" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Gehe zum vorherigen Arbeitsblatt" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Gehe zum nächsten Arbeitsblatt" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Alle unterstützten Dateien (*.cws *ipynb);;Cantor-Arbeitsblatt (* .cws);;" +"Jupyter-Notebook (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Kein Modul gefunden

      \n" +"
      Sie können folgendes ausprobieren:\n" +"
      • Ändern Sie die Einstellungen im Einrichtungsdialog;
      • " +"
      • Installieren Sie die Pakete für das folgende Programm:
      • %2
      " +msgstr[1] "" +"

      Kein Modul gefunden

      \n" +"
      Sie können folgendes ausprobieren:\n" +"
      • Ändern Sie die Einstellungen im Einrichtungsdialog;
      • " +"
      • Installieren Sie die Pakete für eines der folgenden Programme:
      • " +"%2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Fehler" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Das Modul „%1“ ist nicht installiert." + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"Modul %1 ist installiert, aber inaktiv. Bitte überprüfen Sie die " +"Installations- und Cantor-Einstellungen" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sitzung %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "" +"Der Pfad zur Komponente Cantor wurde nicht gefunden, die Fehlermeldung " +"lautet %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Berechnung läuft ..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Fertig" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Geändert" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" +"Mehrere ungespeicherte Arbeitsblätter sind geöffnet. Möchten Sie sie " +"schließen?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Cantor schließen" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Das aktuelle Projekt wurde geändert. Möchten Sie es speichern?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Projekt speichern" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Formatierung" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Das standardmäßig eingesetzte Modul" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Schriftsatz standardmäßig aktivieren" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Syntaxhervorhebung standardmäßig aktivieren" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Vervollständigung immer aktivieren" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Nummerierung der Ausdrücke immer aktivieren" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Änderungen im Arbeitsblatt als Voreinstellung animieren" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Aktivieren Sie standardmäßig das Rendern von mathematischen Ausdrücken in $" +"$..$$ in Text- und Markdown-Einträgen (pdflatex muss installiert sein)." + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Einträge unter den aktuellen automatisch neu berechnen" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Um Bestätigung fragen beim Neustart des Moduls" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Speichern Sie die Rich-Text-Formatierung von TextEntry, wenn Sie das " +"Arbeitsblatt im Jupyter-Notebookformat speichern" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Verwenden Sie den Platzierungsstil für Cantor-Einträge im alten Stil" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Fehler beim Einbetten der eingebetteten Mathematik anzeigen" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Begrenzung der sichtbaren Linien für das Textergebnis" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Hierarchie-Schriftart für Kapitel" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Hierarchie-Schriftart Größe für Kapitel" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Hierarchie-Schriftart kursiv für Kapitel" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Hierarchie-Schriftart fett für Kapitel" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Hierarchie-Schriftart für Unterkapitel" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Hierarchie-Schriftart Größe für Unterkapitel" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Hierarchie-Schriftart kursiv für Unterkapitel" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Hierarchie-Schriftart fett für Unterkapitel" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Hierarchie-Schriftart für Funktion" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Hierarchie-Schriftart kursiv für Funktion" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Hierarchie-Schriftart fett für Funktion" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Hierarchie-Schriftart für Unterfunktion" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Hierarchie-Schriftart kursiv für Unterfunktion" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Hierarchie-Schriftart fett für Unterfunktion" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Hierarchie Schriftart für Absatz" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Hierarchie Schriftart kursiv für Absatz" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Hierarchie Schriftart fett für Absatz" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Hierarchie Schriftart für Unterabsatz" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Hierarchie Schriftart kursiv für Unterabsatz" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Hierarchie Schriftart fett für Unterabsatz" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Als einfache Textdatei speichern" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "LaTeX-Export" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Arbeitsblatt auswerten" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Schriftsatz mit Hilfe von LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Syntaxhervorhebung" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Vervollständigung" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Zeilennummern" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Pause Animation" +msgid "Animations" +msgstr "Animation anhalten" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Eingebettete Mathematik" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Modul neu starten" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Eintrag auswerten" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Befehlseintrag einfügen" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Texteintrag einfügen" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Markdown-Eintrag einfügen" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "LaTeX-Eintrag einfügen" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Seitenumbruch einfügen" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Bild einfügen" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Alle Ergebnisse zusammenklappen" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Alle Ergebnisse erweitern" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Alle Ergebnisse entfernen" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Aktuellen Eintrag entfernen" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Skripteditor anzeigen" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Vervollständigung anzeigen" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "© 2009–2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Cantor-Arbeitsblatt (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyter-Notebook (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Speichern unter" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Speichern" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Alle vorhandenen Berechnungsergebnisse werden verworfen. Möchten Sie %1 " +"wirklich neu starten%1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "%1 neu starten?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Unterbrechen" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Sitzungsfehler: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Initialisierung abgeschlossen" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Initialisierung ..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[nur lesen]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" +"Möchten Sie das aktuelle Arbeitsblatt auf den öffentliche Server hochladen?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Frage – Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" +"Das Arbeitsblatt ist nicht gespeichert. Sie sollten es speichern, bevor Sie " +"es hochladen." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Warnung – Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Dieses Modul unterstützt keine Skripte." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Bearbeiten" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Ansicht" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Arbeitsblatt" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "&Einstellungen" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Datei" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Neu" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Seitenleisten" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Einstellungen" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Hintergrundfarbe" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Voreinstellung" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Textfarbe" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Schriftart" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Fett" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Kursiv" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Schrift vergrößern" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Schrift verkleinern" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Auswählen" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Auf Voreinstellung zurücksetzen" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Ergebnisse anzeigen" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Ergebnisse ausblenden" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Hilfe anzeigen" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Erscheinungsbild" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Unterbrochen" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Suchleiste" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Suchen:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Weiter" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Zurück" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Ersetzen:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Ersetzen" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "A&lle ersetzen" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Suchen in:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Groß-/Kleinschreibung beachten" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Hierarchie-Schriftart" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Kapitel-Schriftart" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Schriftartenfamile:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Schriftgröße:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Unterkaptitel-Schriftart" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Abschnitt-Schriftart" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Unterabschnitt-Schriftart" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Absatz-Schriftart" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Unterkapitel-Schriftart" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Kapitel" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Unterkapitel" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Abschnitt" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Unterabschnitt" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Absatz" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Unterabsatz " + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Hierarchie-Ebene einstellen" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Stil der durchgezogenen Linie" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Stil der Strich-Linie" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Stil der Punkt-Line" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Stil der Strich-Punkt-Linie" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Stil der Strich-Punkt-Punkt-Linie" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Linienstärke" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Dünn" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Mittel" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Dick" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Linienfarbe" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Linientyp" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Bild einrichten" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Doppelklick zum Bearbeiten der Bild-Einstellungen" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Das Bild %1 kann nicht geladen werden" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Ergebnis speichern" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Bilder (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Bild-Einstellungen" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Öffnen" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Anzeigegröße" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Breite" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Höhe" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Vorschau" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Druckgröße" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Anzeigegröße verwenden" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Bild-Einstellungen" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(automatisch)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr " %" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Bilddatei öffnen" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "LaTeX-Quelltext anzeigen" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Kein Pfad für die %1 Anwendung festgelegt. Bitte geben Sie den richtigen " +"Pfad in den Anwendungseinstellungen und versuchen Sie es nochmals." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"Die angegebene Datei '%1' für die %2 Anwendung existiert nicht. Bitte geben " +"Sie den richtigen Pfad in den Anwendungseinstellungen an und versuchen Sie " +"es nochmals." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"Die angegebene Datei '%1' gibt nicht die Anwendung an. Bitte geben Sie den " +"richtigen Pfad in den Anwendungseinstellungen an und versuchen Sie es " +"nochmals." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"Das Programm %1 beendete nicht die Ausführung nach %2 Millisekunden wahrend " +"des Handlungsintegrationstests." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" +"Das Öffnen der Datei %1 wahrend des Handlungsintegrationstests " +"fehlgeschlagen." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" +"Das Analysieren des Ergebnisses fehlgeschlagen wahrend des " +"Handlungsintegrationstests." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Pfad zum Programm LaTeX" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Pfad zum Programm dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Wert" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 Byte>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Von:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Bis:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Haupttitel" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Abszissenskala" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Ordinatenskala" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Grafiktitel:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Das ist nicht unterstützter Jupyter-Inhalt vom Typ ('%1')" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"%1 Prozess wurde unerwartet beendet. Alle Berechnungsergebnisse sind " +"verloren." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"%1 Prozess wurde unerwartet beendet mit der Meldung \"%2\". Alle " +"Berechnungsergebnisse sind verloren." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Sie wählen Unterstützung für %1 Grafikpaket, aber die Unterstützung kann " +"aufgrund der fehlenden Anforderungen nicht aktiviert werden, sodass die " +"Integration für dieses Paket deaktiviert wird. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDE-Oberfläche für Mathematik-Anwendungen" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Betreuer
      Qt5/KF5-Port, Scilab- und Python-Module" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Entwickler" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Ursprünglicher Autor
      Betreuer (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra-Modul" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave-Modul" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Benutzeroberfläche" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Cantor-Symbol" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Modul verwenden" + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Zu öffnende Dokumente" + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Datei %1 kann nicht geöffnet werden" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Bearbeitungsmodus starten" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Dateianhänge löschen" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Mathematischer Fehler" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Das Lesen des Bildes „%1“ ist fehlgeschlagen, Fehlermeldung „%2“" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Seitenumbruch ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Zu Inhalten springen" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Schlüsselwörter durchsuchen ..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Im Text der aktuellen Dokumentation suchen" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Vergrößerung auf 100 % zurücksetzen" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Schließen" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Zur nächsten Übereinstimmung" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Zur vorherigen Übereinstimmung" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Groß-/Kleinschreibung beachten" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" +"Die Datei ist erfolgreich in Ihren Download-Ordner heruntergeladen worden." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Erfolgreich heruntergeladen" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Cantor-Dateien" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Jupyter-Dateien" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Alle unterstützten Dateien" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Alle Dateien" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Name:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Wert:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Neue Variable hinzufügen" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Variable laden" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Variablen speichern" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Variablen entfernen" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Suchen/Filtern" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Groß-/Kleinschreibung beachten" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Vollständiges Wort muss übereinstimmen" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Sind Sie sicher, dass Sie alle Variablen löschen möchten?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Datei laden" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Ergebnis speichern" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Ergebnis entfernen" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Es kann keine Text-Editor-Komponente von KDE gefunden werden.\n" +"Überprüfen Sie Ihre KDE-Installation. " + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Skripteditor" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Skripteditor – %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Nicht gefunden" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Anfang erreicht" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Ende erreicht" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "%1 Instanz ersetzt" +msgstr[1] "%1 Instanzen ersetzt" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Befehle" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Ergebnisse" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Fehler" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Text" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX-Quelltext" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "Starten" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Standard-Modul:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "&Arbeitsblatt" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, fuzzy, kde-format +#| msgid "Enable LaTeX typesetting for Sage backend" +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "LaTeX-Schriftsatz für Sage-Modul aktivieren" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, fuzzy, kde-format +#| msgid "LaTeX typesetting:" +msgid "LaTeX typesetting" +msgstr "LaTeX-Schriftsatz:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Syntaxhervorhebung aktivieren" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Syntaxhervorhebung" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "Vervollständigung aktivieren" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Zeilennummern" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Zeilennummern" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "Grafiken in das Arbeitsblatt integrieren" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, fuzzy, kde-format +#| msgid "" +#| "Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +#| "notebook format" +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Speichern Sie die Rich-Text-Formatierung von TextEntry, wenn Sie das " +"Arbeitsblatt im Jupyter-Notebookformat speichern" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Gleichungen:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, fuzzy, kde-format +#| msgid "Ask for confirmation when restarting the backend" +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "Um Bestätigung fragen beim Neustart des Moduls" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "Einträge automatisch neu berechnen" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, fuzzy, kde-format +#| msgid "Maximal number of result visible rows (0 for unlimited):" +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Maximale Anzahl der sichtbaren Ergebniszeilen (0 für unbegrenzt):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Maximale Anzahl sichtbarer Zeilen im Ergebnis einer Befehlseingabe. " +"Verwenden Sie 0, um ohne Einschränkungen zu arbeiten." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Markdown" +msgid "Markdown:" +msgstr "Markdown" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +#| msgid "Enable LaTeX typesetting for Sage backend" +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "LaTeX-Schriftsatz für Sage-Modul aktivieren" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Suchen ..." + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Zielzellen im Rohformat" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Benutzerdefiniertes Ziel hinzufügen" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "In Texteintrag umwandeln" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Umwandeln in Zellen im Rohformat" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Ziel-MIME-Typ" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Ergebnis kopieren" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Gerendert anzeigen" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Quelltext anzeigen" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "HTML-Quelltext anzeigen" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Alternativ einfachen Text anzeigen" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "HTML anzeigen" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "HTML anzeigen" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" +"Die Eps-Datei kann nicht angezeigt werden. Möglicherweise fehlen Ihnen " +"einige Pakete." + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Ergebnis speichern" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Die Datei %1 kann nicht geschrieben werden." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Die Datei *kann nicht geschrieben werden." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Fehler beim Speichern der Datei %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "Im Nur-Lesen-Modus ist der Export für %1 möglicherweise ungültig" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Fehler beim Laden der Stilvorlage latex.xsl" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Datei %1 kann nicht geöffnet werden." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Datei öffnen" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Die ausgewählte Datei kann nicht zum Lesen geöffnet werden." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" +"Die ausgewählte Datei ist keine gültige Projektdatei für Cantor oder Jupyter." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Die ausgewählte Datei ist keine gültige Projektdatei für Cantor." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Dieses Arbeitsblatt wurde durch Verwendung von Python 2 erstellt, welches " +"nicht mehr unterstützt wird. Python 3 wird verwendet." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python 2 nicht mehr unterstützt" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"Das Modul %1 wurde nicht gefunden. Die Bearbeitung und Ausführung der " +"Einträge ist nicht möglich." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Es sind einige Probleme mit dem Modul „%1“ aufgetreten.\n" +"Bitte überprüfen Sie Ihre Einstellungen oder installieren Sie die benötigten " +"Pakete.\n" +"Sie werden dieses Arbeitsblatt nur ansehen können." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Jupyter-Notebooks mit Versionen niedriger als 4.5 (festgestellte Version %1." +"%2) sind nicht unterstützt" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Jupyter-Notebooks mit Versionen höher als 4.5 (festgestellte Version %1.%2) " +"sind nicht unterstützt" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Dieses Notebook wurde durch Verwendung von Python 2 erstellt, welches nicht " +"mehr unterstützt wird. Python3 wird verwendet." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "ein Objekt mit Schlüsseln: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "JSON-Wert ist kein Objekt" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "falsche Daten gefunden (%1) die keine Jupyter-Zelle sind" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "Die ausgewählte Datei ist kein gültiges Jupyter-Notebook." + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Ungültiges Jupyter-Notebook-Schema: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Umwandeln in" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Befehl" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Bild" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Seitenumbruch" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Horizontale Linie" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Hierarchieeintrag" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Einfügen nach" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Einfügen vor" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Einfügen" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Vergrößern" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Verkleinern" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Originalgröße" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Einträge nach oben verschieben" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Einträge nach unten verschieben" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Einträge auswerten" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Einträge entfernen" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Ergebnisse der Befehlseingabe zusammenklappen" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Ergebnisse der Befehlseingabe ausklappen" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Ergebnisse der Befehlseingabe entfernen" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Befehlseingabe von der Ausführung ausschließen" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Befehlseingabe zur Ausführung hinzufügen" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Text&farbe ..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Farbe" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Text&hervorhebung ..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "Schri&ftart" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Schrift&größe" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Fett" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Kursiv" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Unterstrichen" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Durchgestrichen" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "&Linksbündig" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Linksbündig" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "&Mittig ausrichten" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Mittig" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "&Rechtsbündig" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Rechtsbündig" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Blocksatz" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Blocksatz" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"Diese Aktion wird alle Ergebnisse entfernen, ohne abbrechen zu können. Sind " +"Sie sicher?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Alle Ergebnisse entfernen" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Weiß" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Schwarz" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Dunkelrot" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Rot" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Hellrot" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Dunkelgrün" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Grün" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Hellgrün" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Dunkelblau" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Blau" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Hellblau" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Dunkelgelb" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Gelb" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Helles Gelb" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Dunkles Cyan" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Cyan" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Helles Cyan" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Dunkles Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Helles Magenta" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Dunkles Orange" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Orange" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Helles Orange" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Dunkelgrau" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Grau" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Hellgrau" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Nach oben verschieben" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Nach unten verschieben" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Möchten Sie diesen Eintrag wirklich löschen?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Eintrag entfernen" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Eintrag ziehen" + +#~ msgid "Animate Worksheet" +#~ msgstr "Arbeitsblatt animieren" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "Wenn beim Start ein Standard-Modul festgelegt ist, erstellen Sie ein " +#~ "Arbeitsblatt dafür, anstatt das Dialogfeld zur Auswahl des Moduls " +#~ "anzuzeigen." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Ist diese Einstellung aktiviert, berechnet Cantor automatisch alle " +#~ "Einträge unter dem aktuellen." + +#~ msgid "Defaults" +#~ msgstr "Voreinstellungen" + +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "Dies ist der Anfangswert für die Option \"Schriftsatz mit Hilfe von LaTeX" +#~ "\" in der Sitzung. Diese Antwort ermöglicht das Rendern einiger Modul-" +#~ "Ausgaben als Latex, sofern dies unterstützt wird. Beispielsweise werden " +#~ "Maxima-Ausgaben über Latex gerendert, wenn die Option aktiviert ist." + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "" +#~ "LaTeX-Schriftsatz aktivieren (funktioniert nur, wenn Latex installiert " +#~ "ist)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "Dies ist der Anfangswert für die Option \"Syntaxhervorhebung\" in der " +#~ "Sitzung, die auf die Syntaxhervorhebung in Befehlseinträgen reagiert." + +#~ msgid "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." +#~ msgstr "" +#~ "Dies ist der Anfangswert für die Option \"Abschluss\" der Sitzung, die " +#~ "auf die automatische Vervollständigung des Codes reagiert." + +#~ msgid "" +#~ "This is initial value for the session \"Line numbers\" option, which " +#~ "response for presence of command entries execution numbers." +#~ msgstr "" +#~ "Dies ist der Anfangswert für die Option \"Zeilennummern\" der Sitzung, " +#~ "die auf das Vorhandensein von Befehlseinträgen für Ausführungsnummern " +#~ "reagiert." + +#~ msgid "Enable Line Numbers" +#~ msgstr "Zeilennummern anzeigen" + +#~ msgid "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." +#~ msgstr "" +#~ "Dies ist der Anfangswert für die Option \"Arbeitsblatt animieren\" der " +#~ "Sitzung, die auf das Vorhandensein einer Arbeitsblattanimation reagiert." + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Animation des Arbeitsblatts aktivieren" + +#~ msgid "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." +#~ msgstr "" +#~ "Dies ist der Anfangswert für die Option \"Eingebettete Mathematik\" der " +#~ "Sitzung, mit der das Rendern von mathematischen Ausdrücken in Text- und " +#~ "Markdown-Einträgen aktiviert wird." + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "" +#~ "Eingebettete Mathematik aktivieren (funktioniert nur, wenn pdflatex " +#~ "installiert ist)" + +#~ msgid "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." +#~ msgstr "" +#~ "Wenn deaktiviert, wird beim Drücken der Neustarttaste keine Warnung vor " +#~ "einem Neustart angezeigt." + +#~ msgid "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." +#~ msgstr "" +#~ "Wenn aktiviert, wird bei jedem mathematischen Renderfehler ein " +#~ "Informationsfenster mit Fehlerbeschreibung angezeigt." + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "" +#~ "Meldung über Fehler beim Rendern der eingebetteten Mathematik anzeigen" + +#~ msgid "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." +#~ msgstr "" +#~ "Wenn aktiviert, wird der alte Einrückungsstil der Cantor-Einträge (alle " +#~ "Einträge linksbündig) verwendet." + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Verwenden Sie den Einrückungsstil der alten Cantor-Einträge" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Wenn diese Option aktiviert ist, speichert Cantor beim Speichern im " +#~ "Jupyter-Notebookformat eine umfangreiche Formatierung der Texteinträge." + +#~ msgid "" +#~ "Graphical package, for which will be enable support for embedding plots" +#~ msgstr "" +#~ "Grafikpaket, für das die Unterstützung für das Einbetten von Grafiken " +#~ "aktiviert wird" + +#~ msgid "" +#~ "Graphic package, which code will be used for plotting via \"Plot\" Cantor " +#~ "menu." +#~ msgstr "" +#~ "Grafikpaket, dessen Code zum Plotten über das Cantor-Menü \"Grafik\" " +#~ "verwendet wird." + +#~ msgid "Matplotlib (with seaborn, ggplot support too)" +#~ msgstr "Matplotlib (auch mit seaborn-, ggplot-Unterstützung)" + +#~ msgid "Plot.ly" +#~ msgstr "Plot.ly" + +#~ msgid "All supported" +#~ msgstr "Alle unterstützt" + +#~ msgid "" +#~ "Graphic package, used for plotting. When integrated plots option is " +#~ "enabled, then plots from the package will be integrated to worksheet" +#~ msgstr "" +#~ "Grafikpaket zum Plotten. Wenn die Option \"Integrierte Diagramme\" " +#~ "aktiviert ist, werden Diagramme aus dem Paket in das Arbeitsblatt " +#~ "integriert" + +#~ msgid "Graphic Package: " +#~ msgstr "Grafikpaket:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      Mathematik in KDE" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "URL zur lokalen Maxima-Dokumentation" + +#~ msgid "" +#~ "If empty, the \"Show help\" action will show the default online " +#~ "documentation. Otherwise, the specified URL will be opened." +#~ msgstr "" +#~ "Wenn leer, zeigt die Aktion \"Hilfe anzeigen\" die Standard-Online-" +#~ "Dokumentation an. Andernfalls wird die angegebene URL geöffnet." + +#~ msgid "Documentation:" +#~ msgstr "Dokumentation:" + +#~ msgid "Url to the local Python documentation" +#~ msgstr "URL zur lokalen Python-Dokumentation" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "URL zur lokalen Octave-Dokumentation" + +#~ msgid "Show %1 Help" +#~ msgstr "Hilfe zu %1 anzeigen" + +#, fuzzy +#~ msgid "Documentation provided by GHNS" +#~ msgstr "Durch GHNS bereitgestellte Dokumentation" + +#~ msgid "Path to Julia:" +#~ msgstr "Pfad zu Julia:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Grafiken im Arbeitsblatt integrieren" + +#~ msgid "" +#~ "Commands to automatically run on start. They can be useful for loading " +#~ "needed modules, changing environment, etc." +#~ msgstr "" +#~ "Befehle, die beim Start automatisch ausgeführt werden sollen. Sie können " +#~ "nützlich sein, um benötigte Module zu laden, die Umgebung zu ändern usw." + +#~ msgid "Clear Variables" +#~ msgstr "Variablen löschen" + +#~ msgid "Exclude from Execution" +#~ msgstr "Vom Ausführen ausschließen" + +#~ msgid "Add to Execution" +#~ msgstr "Zum Ausführen hinzufügen" + +#~ msgid "Right click here to insert image" +#~ msgstr "Rechtsklick hier, um Bild einzufügen" + +#~ msgid "Choose Image" +#~ msgstr "Bild auswählen" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "Bilder (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Bestätigung – Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Texteintrag" + +#~ msgid "LaTeX Entry" +#~ msgstr "LaTeX-Eintrag" + +#~ msgid "Insert Entry Before" +#~ msgstr "Eintrag einfügen vor" + +#~ msgid "Insert Horizontal Line" +#~ msgstr "Horizontale Linie einfügen" + +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Hierarchieeintrag einfügen" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Pfad zum Programm „scilab-adv-cli“. Hinweis: Es ist mindestens die " +#~ "Version 5.4 von Scilab erforderlich." + +#~ msgid "Insert Image Attachment" +#~ msgstr "Bildanhang einfügen" + +#~ msgid "Insert Latex Entry" +#~ msgstr "LaTeX-Eintrag einfügen" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Pfad zum Programm Octave" + +#~ msgid "" +#~ "Path to directory, which contains Cantor plugins (cantorpart and all " +#~ "backends)" +#~ msgstr "" +#~ "Pfad zum Verzeichnis, das Cantor-Plugins enthält (Cantorpart und alle " +#~ "Backends)" + +#~ msgid "Paths (advance settings)" +#~ msgstr "Pfade (erweiterte Einstellungen)" + +#~ msgid "Path to Cantor plugin directory:" +#~ msgstr "Pfad zum Cantor-Plugin-Ordner:" + +#~ msgid "" +#~ "Path to directory, which contains Cantor backend plugins. This is " +#~ "important setting - with wrong path Cantor can't create any worksheets." +#~ msgstr "" +#~ "Pfad zum Verzeichnis, das Cantor-Backend-Plugins enthält. Dies ist eine " +#~ "wichtige Einstellung - mit falschem Pfad kann Cantor keine Arbeitsblätter " +#~ "erstellen." + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "Zwischenformat für integrierte Grafiken" + +#~ msgid "Path to Maxima:" +#~ msgstr "Pfad zu Maxima:" + +#, fuzzy +#~| msgid "Failed to start Cantor python server." +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Der Python-Server für Cantor kann nicht gestartet werden." + +#~ msgid "Path to Sage:" +#~ msgstr "Pfad zu Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Pfad zum Befehl scilab-adv-cli:" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Cantor folgt dem Erstellen und Löschen von Variablen" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "" +#~ "Grafiken im Arbeitsblatt integrieren (Startet bei Änderungen eine neue " +#~ "Sitzung)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Pfad zum Programm Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Pfad zu Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Unbenannt" + +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "https://docs.python.org/2/" + +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "Python ist eine außergewöhnlich leistungsfähige dynamische " +#~ "Programmiersprache, die in vielen verschiedenen Anwendungsbereichen " +#~ "benutzt wird. Es gibt mehrere Python-Pakete für wissenschaftliche " +#~ "Programmierung. Dieses Modul unterstützt Python 3." + +# Falls jmd. eine Verknüpfung zu einem deutschen Wiki hat, bitte hier einsetzen +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Wählen Sie das zu verwendende Modul:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Das Modul, mit dem diese Datei erstellt wurde, ist nicht installiert. Es " +#~ "wird das Modul „%1“ benötigt." + +#~ msgid "Publish Worksheet" +#~ msgstr "Arbeitsblatt veröffentlichen" + +#~ msgid "Waiting for Image..." +#~ msgstr "Warten auf das Bild ...." + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "Die Datei „%1“ lässt sich nicht öffnen: unbekannter MIME-Typ" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|LaTeX-Dokument" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantor-Arbeitsblatt" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Server für das „R“-Modul von Cantor" + +#~ msgid "R Server" +#~ msgstr "R-Server" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "© 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Aufruf: saveVariables Datei" + +#~ msgid "Saving failed." +#~ msgstr "Speichern fehlgeschlagen." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Aufruf: loadVariables Datei" + +#~ msgid "Loading failed." +#~ msgstr "Das Laden ist fehlgeschlagen." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "© 2009–2013 Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "Pfad zum Befehl python:" + +#~ msgid "Cantor Server for R" +#~ msgstr "Cantor-Server für „R“" + +#~ msgid "Path to python2 command:" +#~ msgstr "Pfad zum Befehl python2:" + +#~ msgid " Enable Variable Management" +#~ msgstr " Variablenverwaltung aktivieren" + +#~ msgid "Could not start the server." +#~ msgstr "Der Server lässt sich nicht starten." + +#~ msgid "Start Animation" +#~ msgstr "Animation starten" + +#~ msgid "Restart Animation" +#~ msgstr "Animation neu starten" + +#~ msgid "Append Latex Entry" +#~ msgstr "LaTeX-Eintrag hinzufügen" + +#~ msgid "Append Image" +#~ msgstr "Bild hinzufügen" + +#~ msgid "Append Page Break" +#~ msgstr "Seitenumbruch hinzufügen" + +#~ msgid "Other" +#~ msgstr "Weitere" + +#~ msgid "And %1 more..." +#~ msgstr "Und %1 weitere ..." + +#~ msgid "Main Toolbar" +#~ msgstr "Haupt-Werkzeugleiste" + +#~ msgid "Popup" +#~ msgstr "Aufklappmenü" + +#~ msgid "The style used for Completion" +#~ msgstr "Zu verwendende Art der Vervollständigung" + +#~ msgid "" +#~ "Scilab version of the master branch of the Scilab's repository is " +#~ "compatible" +#~ msgstr "" +#~ "Die Scilab-Version aus dem Entwicklungszweig des Scilab-Quelltextarchivs " +#~ "kann ebenfalls benutzt werden" + +#~ msgid "Insert Command Entry Before" +#~ msgstr "Befehlseintrag davor einfügen" + +#~ msgid "Command Entry Before" +#~ msgstr "Vorherigen Eintrag einfügen" + +#~ msgid "GroupBox" +#~ msgstr "GroupBox" + +#~ msgid "This test requires a functioning %1 backend" +#~ msgstr "Dieser Test benötigt ein funktionierendes %1-Modul" + +#~ msgid "Help" +#~ msgstr "Hilfe" + +#~ msgid "Show Help Panel" +#~ msgstr "Hilfebereich anzeigen" + +#~ msgid "Error uploading File %1" +#~ msgstr "Fehler beim Hochladen der Datei %1" + +#~ msgid "MathematiKPart" +#~ msgstr "MathematiKPart-Komponente" + +#~ msgid "MathematiK" +#~ msgstr "MathematiK" diff --git a/po/de/docs/cantor/index.docbook b/po/de/docs/cantor/index.docbook new file mode 100644 index 0000000..41564c5 --- /dev/null +++ b/po/de/docs/cantor/index.docbook @@ -0,0 +1,1577 @@ + +ATEX"> + + +]> + + + +Das Handbuch zu &cantor; + + + Alexander Rieder alexanderrieder@gmail.com +BurkhardLück
      lueck@hube-lueck.de
      Übersetzung
      +
      + + +2009 +Alexander Rieder + +&FDLNotice; + +2020-12-16 +Anwendungen 20.12 + + +&cantor; ist ein Programm, das ein Arbeitsblatt als grafische Bedienungsoberfläche für andere freie Mathematikpakete zu Verfügung stellt. + + + +KDE +kdeedu +Mathematik +Mathe +Cantor +Julia +Lua +Maxima +Octave +Python +Qalculate +R +Sage +Scilab + + +
      + + +Einleitung + +&cantor; ist ein Programm, um Ihre Lieblings-Mathematikpakete in &kde; mit einem Arbeitsblatt als grafische Schnittstelle zu benutzen. Dialoge unterstützen Sie bei häufig vorkommenden Aufgaben und Sie können Arbeitsblätter mit anderen gemeinsam nutzen. + + + +&cantor; benutzen + +Bildschirmfoto: +Ein Bildschirmfoto von &cantor; + + + + + + Bildschirmfoto + + + + + + + +Leistungsmerkmale von &cantor; + + Intuitive Arbeitsblattansicht zur Berechnung von Ausdrücken. + Graphische Ausgaben werden im Arbeitsblatt dargestellt. + Modulbasierte Struktur, daher können verschiedene Module hinzugefügt werden. + Mit der Funktion „Neue Erweiterungen“ können Beispiel-Arbeitsblätter aus dem Internet herunter- oder hochgeladen werden. + Schriftsatz für mathematische Formeln mit Hilfe von &latex;. + Syntaxhervorhebung passend zum verwendeten Modul. + Abhängig vom verwendeten Modul gibt es Assistenten als Dialoge für häufig vorkommende Aufgaben wie die Integration einer Funktion oder die Eingabe einer Matrix. + + + + +Die Module von &cantor; +In &cantor; stehen mehrere Module zur Auswahl, je nach Aufgabenstellung wählen Sie das am besten geeignete Modul aus. +Zur Zeit sind folgende Module vorhanden: + + Sage: + + Sage ist ein unter der GPL lizenziertes freies Mathematik-Software-System.Es kombiniert die Stärken vieler Open-Source-Pakete mit einer gemeinsamen Python-basierten Schnittstelle. Weitere Informationen finden Sie auf der Webseite https://sagemath.org. + + + + Maxima: + + Maxima ist ein System für die Manipulation von symbolischen und numerischen Ausdrücken, einschließlich Differenzierung, Integration, Taylorreihe, Laplace-Transformation, gewöhnliche Differentialgleichungen, lineare Gleichungssysteme, Polynome und Mengen, Listen, Vektoren, Matrizen und Tensoren. Durch exakte Brüche sowie Langzahlarithmetik und Gleitkommazahlen mit beliebiger Genauigkeit (arbitrary precision) erzeugt Maxima Ergebnisse mit hoher numerischer Präzision. Maxima kann Funktionen und Daten zwei- und dreidimensional grafisch darstellen. Weitere Informationen finden Sie auf der Webseite http://maxima.sourceforge.net. + + + + R: + + „R“ ist eine Sprache und eine Umgebung für statistische Berechnungen und Grafiken, ähnlich zur Sprache und Umgebung „S“. Es stellt eine große Auswahl an statistischen (lineare und nicht lineare Modellierung, klassische statistische Tests, Zeitreihenanalyse, Klassifikation, Clustering, ...) und grafischen Techniken bereit und lässt sich stark erweitern. Die Sprache „S“ ist oft das bevorzugte Mittel für Forschungen mit statistischer Methodologie und „R“ stellt die Open-Source-Mittel für die Teilnahme an diesen Aktivitäten bereit. Weitere Informationen finden Sie auf der Webseite http://www.r-project.org. + + + + Julia: + + Julia ist eine leistungsstarke höhere Programmiersprache für technische Berechnungen, mit einer Syntax, die den Benutzern von andere technische Berechnungsumgebungen bekannt ist. Sie bietet einen hochentwickelte Compiler, verteilte parallele Ausführung, numerische Genauigkeit und eine umfangreiche mathematische Funktionsbibliothek. Weitere Informationen finden Sie in der Julia-Dokumentation. + + + + &kalgebra;: + + &kalgebra; ist ein grafischen Mathematikprogramm auf der Basis von MathML. Es ist im Projekt &kde;-Lernprogramme enthalten. Weitere Informationen finden Sie auf der Webseite https://edu.kde.org/kalgebra/. + + + + Qalculate!: + + Qalculate! ist mehr als nur ein einfacher Rechner und nutzt die Schnittstellen, Rechenleistung und Flexibilität moderner Rechner aus. Der wichtigste Begriff in Qalculate! ist der Ausdruck. Anstatt jede Zahl in mathematischen Ausdrücken einzeln einzugeben, schreiben Sie den gesamten Ausdruck und bearbeiten ihn dann. Die Interpretation der Ausdrücke ist flexibel und fehlertolerant. Bei fehlerhaften Eingaben erhalten Sie Hinweise zur Korrektur. Nicht vollständig lösbare Ausdrücke führen aber nicht zu Fehlern, sondern diese Ausdrücke werden durch Qalculate! soweit wie möglich vereinfacht und als geänderter Ausdruck zurückgegeben. Zusätzlich zu Zahlen und arithmetischen Operatoren darf ein Ausdruck eine beliebige Kombination von Variablen, Einheiten und Funktionen enthalten. Weitere Informationen finden Sie auf https://qalculate.github.io/. + + + + Python2 und Python3: + + Python ist eine außergewöhnlich leistungsfähige dynamische Programmiersprache, die in vielen verschiedenen Anwendungsbereichen benutzt wird. Es gibt mehrere Python-Pakete für wissenschaftliche Programmierung. + Python wird unter der „Python Software Foundation“-Lizenz (kompatibel zur GPL) verbreitet. Weitere Informationen dazu finden Sie auf offiziellen Webseite. + + Diese Modul fügt den zusätzlichen Eintrag Paket zum Hauptmenü von &cantor; hinzu. Benutzen Sie dann PaketPaket importieren, um Python-Pakete in das Arbeitsblatt zu importieren. + + + + + Scilab: + + Scilab ist ein freies Softwarepaket für numerische Berechnungen für verschiedene Betriebssysteme und eine höhere Programmiersprache für numerische Probleme. + Scilab wird unter der CeCILL-Lizenz (kompatibel zur GPL) verbreitet. Weitere Informationen dazu finden Sie auf https://www.scilab.org/. + + Scilab in Version 5.5 oder neuer muss auf Ihrem System installiert sein, damit Sie mit diesem Modul arbeiten können. + + + + + Octave: + + &GNU; Octave ist eine „höhere Programmiersprache“, die hauptsächlich für numerische Berechnungen vorgesehen ist. Sie stellt eine praktische Befehlszeilenoberfläche für das numerische Lösen von linearen und nichtlinearen Problemen und für das Durchführen von anderen numerischen Experimenten bereit. Die Sprache ist dabei weitestgehend kompatibel zu Matlab. Weitere Informationen finden Sie unter https://www.gnu.org/software/octave/. + + + + Lua: + + Lua ist eine schnelle und leichtgewichtige Skript-Sprache mit einer einfachen prozeduralen Syntax. Es gibt mehrere Bibliotheken für Mathematik und Wissenschaft in Lua. + Weitere Informationen dazu finden Sie auf https://www.lua.org/. + Dieses Modul unterstützt luajit 2. + + + + + + + +Der Arbeitsbereich von &cantor; + + + Der Arbeitsbereich von &cantor; + + + + + + Der Arbeitsbereich von &cantor; + + + + +Der Arbeitsbereich von &cantor; besteht aus drei Teilen: + Der Karteireiterleiste, mit der Sie zwischen den geöffneten Arbeitsblättern wechseln können. + Einem Hilfebereich, hier werden Informationen zu den Befehlen angezeigt, wenn Sie ?? befehl, describe(befehl) oder example(befehl) (Maxima-Modul). + Einer Seitenleiste mit der Variablen-Verwaltung, in der eine Liste aller verfügbaren Variablen auf dem aktuellen Arbeitsblatt angezeigt wird. Die Seitenleiste von &cantor; enthält Karteikarten mit Hilfe und der Variablen-Verwaltung. Die Variablen-Verwaltung kann mit Maxima (wenn auf der Seite Einstellungen&cantor; einrichten ... Maximaaktiviert) und mit &kalgebra;, Octave, Python2, Python3, Qalculate und Scilab verwendet werden. + Dem Arbeitsblatt selbst. + + + +Das Arbeitsblatt +Das Arbeitsblatt ist der wichtigste Bereich für die Arbeit mit &cantor;. Hier geben Sie Ausdrücke ein, lassen sie vom Modul auswerten und hier werden die Ergebnisse angezeigt. Die Befehle, die im Arbeitsblatt benutzt werden können, sind durch das ausgewählte Modul vorgeben. Daher sollten Sie die Syntax des gewählten Moduls lernen. Im Menü Hilfe finden Sie einen Eintrag für das aktuell benutzte Modul, damit können Sie die Dokumentation des Moduls online lesen. Brauchen Sie zu einem bekannten Befehl weitere Hilfe, geben Sie "? befehl" ein, dann wird die Dokumentation zum Befehl rechts im Arbeitsblatt angezeigt. Möchten Sie einige Beispielarbeitsblätter laden, wählen Sie im Menü DateiBeispielarbeitsblatt herunterladen. Dann können Sie von anderen Benutzern veröffentlichte Arbeitsblätter herunterladen. +Um jeden Befehlseintrag im Arbeitsblatt zu kontrollieren, verwenden Sie die Knöpfe, die rechts im Arbeitsblatt angezeigt werden, wenn der Mauszeiger über einem Eingabefeld steht. Es gibt drei grundlegende Aktionen für jeden Eintrag. Mit Eintrag auswerten wird das Ergebnis der Berechnung dieses Eintrags aktualisiert, mit Eintrag ziehen kann der Eintrag an eine anderen Platz im Arbeitsblatt verschoben werden und mit Eintrag entfernen wird ein Eintrag vom aktuellen Arbeitsblatt gelöscht +Einstellungen für Schriften und die Ausrichtung von Elementen im Arbeitsblatt können mit den Aktionen in der Werkzeugleiste über dem Arbeitsblatt geändert werden. + + Einstellungen + Im Menü Einstellungen kann das Erscheinungsbild des aktuellen Arbeitsblatts geändert werden. + + + Schriftsatz mit Hilfe von &latex; + + Diese Einstellung ändert die Anzeige von Ergebnissen. Ist sie aktiviert, werden die Ergebnisse vor der Anzeige vom &latex;-System bearbeitet. Damit wird eine ansprechende Darstellung der Formeln möglich. Aus 3*x^2*sqrt(2)*x+2/3 zum Beispiel wird + + + + 3*x^2*sqrt(2)*x+2/3 + + + + + + Syntaxhervorhebung aktivieren + + Syntaxhervorhebung verbessert die Lesbarkeit des Quelltextes, indem Schlüsselworte oder zusammengehörige Klammern farblich hervorgehoben werden. + + + + Vervollständigung + + Ist dies aktiviert, zeigt &cantor; bei der Eingabe eine Liste aller mit den bisher eingetippten Buchstaben beginnenden Befehle an, wenn die Tabulatortaste gedrückt wird. Gibt es nur noch einen passenden Befehl, wird er vervollständigt. + + + + Zeilennummern + + Mit dieser Einstellung legen Sie fest, ob die Ausdrücke mit einer Zeilennummer gekennzeichnet werden sollen. Damit können vorher bereits eingegebene Ergebnisse wieder aufgerufen werden - in Maxima funktioniert dies zum Beispiel mit dem Befehl %O1. + + + + Arbeitsblatt animieren + + Ist diese Einstellung aktiv. werden verschiedene Animationen verwendet, um Änderungen auf einem Arbeitsblatt hervorzuheben. + + + + Eingebettete Mathematik + + Diese Einstellung legt fest, ob das Rendern von mathematischen Ausdrücken in $$..$$ in Text- und &Markdown;-Einträgen aktiviert ist. Für diese Funktion muss pdflatex installiert sein. + + + + + + + +Die Assistentendialoge +Es gibt mehrere Assistentendialoge in &cantor;, um einige grundlegende Operationen durchzuführen. +Diese Dialoge finden Sie in den Menüeinträgen. Für jedes Modul gibt es spezielle Assistentendialoge. + +Der Dialog „Matrix erstellen“ + + Bildschirmfoto des &cantor;-Dialogs zur Erstellung von Matrizen + + + + + + Bildschirmfoto des &cantor;-Dialogs zur Erstellung von Matrizen + + + +Dieser Dialog kann zur Eingabe von Matrizen benutzt werden. Die Dimension der Matrizen und die Elemente können hier definiert werden. +Mit der taste können Sie schnell zwischen den Zellen bei der Eingabe navigieren. + + +Dialog Matrizen-Operationen + + Bildschirmfoto des &cantor;-Dialogs zur Eingabe von Matrizen + + + + + + Bildschirmfoto des &cantor;-Dialogs zur Eingabe von Matrizen + + + +In diesem Dialog können Sie den Namen einer Matrix eingeben, um ihre Eigenvektoren und Eigenwerte zu berechnen und die Matrix zu invertieren. Der Vorgabewert % kann als Referenz zum vorherigen Ergebnis einer Berechnung oder einer Eingabe verwendet werden. + + +Der Dialog Differenzieren + + Der Dialog Differenzieren von &cantor; + + + + + + Der Dialog Differenzieren von &cantor; + + + +In diesem Dialog können Sie den Ausdruck einer Funktion zum Differenzieren, die Namen der Variablen und die Art der Ableitung eingeben + + +Der Dialog Integrieren + + Der Dialog Integrieren von &cantor; + + + + + + Der Dialog Integrieren von &cantor; + + + +In diesem Dialog können Sie den Ausdruck einer Funktion zum Integrieren, die Namen der Variablen und die Grenzwerte für diese Variablen als bestimmtes Integral eingeben. + + +Der Dialog „Gleichungen lösen“ + + Der Dialog „Gleichungen lösen“ von &cantor; + + + + + + Der Dialog „Gleichungen lösen“ von &cantor; + + + +In diesem Dialog geben Sie Gleichungen zum Lösen ein, jeden Ausdruck in einer eigenen Zeile, und die zu bestimmenden Variablen, durch Kommata getrennt. + + +Paket-Importdialog + + Bildschirmfoto des &cantor;-Dialogs zum Paketimport + + + + + + Bildschirmfoto des &cantor;-Dialogs zum Paketimport + + + +In diesem Dialog können Sie den Namen der Pakete zum Importieren eingeben, ⪚ numpy für Python. + + +Grafikdialog + + Der Grafikdialog von &cantor; mit der Karteikarte Funktionen + + + + + + Der Grafikdialog von &cantor; mit der Karteikarte Funktionen + + + +Die Einstellungen in diesem Dialog sind auf zwei Karteikarten aufgeteilt. Auf der Karteikarte Funktionen können Sie Funktionen eingeben, die grafisch dargestellt werden sollen. +Um eine neue Funktion einzugeben, klicken Sie auf Hinzufügen. Doppelklicken Sie auf die Zelle Titel und geben dann den Titel ein. Doppelklicken Sie auf die Zelle Ausdruck und tragen den Ausdruck der Funktion ein. + + Der Grafikdialog von &cantor; mit der Karteikarte Einstellungen + + + + + + Der Grafikdialog von &cantor; mit der Karteikarte Einstellungen + + + +Auf der Karteikarte Einstellungen definieren Sie das Erscheinungsbild von Grafik und die Legende. + + +2D-Grafikdialog + + Der 2D-Grafikdialog von &cantor; + + + + + + Der 2D-Grafikdialog von &cantor; + + + +In diesem Dialog können Sie den Ausdruck einer Funktion, die Variablen und die Grenzwerte für diese Variable eingeben. + + +3D-Grafikdialog + + Der 3D-Grafikdialog von &cantor; + + + + + + Der 3D-Grafikdialog von &cantor; + + + +In diesem Dialog können Sie den Ausdruck einer Funktion, die Variablen und die Grenzwerte für jede Variable eingeben. + + + + + +Befehlsreferenz + + +Das Hauptfenster von &cantor; + +&cantor; benutzt die bekannten &kde;-Menüeinträge, weitere Informationen dazu finden Sie im Kapitel Menüs der &kde;-Grundlagen. + +Im folgenden finden Sie eine Liste der zusätzlichen oder speziellen Menüeinträge für &cantor;. Einige Menüs werden nur angezeigt, wenn die verwendeten Module diese Funktionen implementiert haben. + + +Das Menü Datei + + + +&Ctrl; N Datei Neu +Erstellt ein neues Arbeitsblatt mit dem Standardmodul. + + +Datei Neu Modul +Erstellt ein neues Arbeitsblatt mit dem ausgewählten Modul. + + + &Ctrl;O Datei Öffnen +Öffnet ein neues unterstütztes Arbeitsblatt mit dem Dateiauswahl-Dialog. + + +Datei Zuletzt geöffnete Dateien +Wählt ein Arbeitsblatt aus der Liste der zuletzt benutzen Dateien. + + +Datei Beispielarbeitsblatt herunterladen +Öffnet einen Dialog, um Beispiele, die von anderen Benutzer von &cantor; veröffentlicht wurden, mit der Funktion Neue Erweiterungen herunterzuladen. + + +Datei Beispieldatei öffnen +Öffnet einen Dialog, um eine Beispiel auszuwählen und zu laden. Die Beispiele können zum Beispiel vorher mit Datei Beispielarbeitsblatt herunterladen auf der Festplatte gespeichert werden. + + +Datei Als einfache Textdatei speichern +Ermöglicht das Speichern des aktuellen Arbeitsblatts als einfaches Textdokument. + + +Datei LaTeX-Export +Ermöglicht das Speichern des aktuellen Arbeitsblatts als &latex;-Dokument. + + +Datei Arbeitsblatt veröffentlichen +Öffnet einen Dialog, um Ihr aktuelles Arbeitsblatt zu veröffentlichen und anderen Benutzer von &cantor; über die Funktion „Neue Erweiterungen“ veröffentlichen zur Verfügung zu stellen. + + +Datei Skript ausführen +Ermöglicht das Laden und Ausführen der Skripte für das aktuelle Modul. + + + + + + + +Das Menü Ansicht + + + +Ansicht Seitenleisten +Hier können Sie die Anzeige folgender Fenster in der Seitenleiste ein- oder ausschalten: + + Dateibrowser + Schaltet die Anzeige der Karteikarte Dateibrowser in der Seitenleiste an oder aus. + + + + Hilfe + Schaltet die Anzeige der Karteikarte Hilfe in der Seitenleiste an oder aus. + + + + Variablen-Verwaltung + Schaltet die Anzeige der Karteikarte Variablen-Verwaltung in der Seitenleiste an oder aus. + + + + +&Ctrl;+ Ansicht Vergrößern +Vergrößert das aktuelle Arbeitsblatt um 10 %. + + + &Ctrl;- Ansicht Verkleinern +Verkleinert das aktuelle Arbeitsblatt um 10 %. + + +Ansicht Skripteditor anzeigen +Öffnet das Skripteditorfenster für das aktuell gewählte Modul. + + + + + + +Das Menü Arbeitsblatt + + + + &Ctrl;E Arbeitsblatt Arbeitsblatt auswerten +Startet die Auswertung des gesamten Arbeitsblatts. + + + &Shift;&Enter; Arbeitsblatt Eintrag auswerten +Startet die Auswertung des aktuellen Eintrags. + + + &Ctrl;&Enter; Arbeitsblatt Befehlseintrag einfügen +Fügt unter der aktuellen Cursor-Position einen neuen Befehlseintrag ein. + + +Arbeitsblatt Texteintrag einfügen +Fügt unter der aktuellen Cursor-Position einen neuen Texteintrag ein. + + +Arbeitsblatt Markdown-Eintrag einfügen +Fügt unter der aktuellen Cursor-Position einen neuen Markdown-Eintrag ein. + + +Arbeitsblatt LaTeX-Eintrag einfügen +Fügt unter der aktuellen Cursor-Position einen neuen &latex;-Eintrag ein. + + +Arbeitsblatt Bild einfügen +Fügt unter der aktuellen Cursor-Position ein Bild ein. + + +Arbeitsblatt Seitenumbruch einfügen +Fügt unter der aktuellen Cursor-Position einen Seitenumbruch ein. + + +Arbeitsblatt Alle Ergebnisse zusammenklappen +Klappt alle Ergebnisse des Befehlseintrags ein. + + +Arbeitsblatt Alle Ergebnisse ausklappen +Klappt alle Ergebnisse des Befehlseintrags aus. + + +Arbeitsblatt Alle Ergebnisse entfernen +Entfernt alle Ergebnisse des Befehlseintrags. + + + &Shift;∇ Arbeitsblatt Aktuellen Eintrag entfernen +Löscht den aktuellen Eintrag aus dem Arbeitsblatt. + + + + + + +Das Menü Lineare Algebra + + + +Lineare Algebra Matrix erstellen +Öffnet den Dialog zur Erstellung von Matrizen. + + +Lineare Algebra Eigenwerte berechnen +Öffnet den Dialog zur Eingabe des Namens einer Matrix, um deren Eigenwerte und die Dimension der Eigenwerte in der zugehörigen Reihenfolge zu berechnen.. + + +Lineare Algebra Eigenvektoren berechnen +Öffnet den Dialog zur Eingabe des Namens einer Matrix, um deren Eigenwerte, die Dimension der Eigenwerte in der zugehörigen Reihenfolge und die Eigenvektoren zu berechnen.. + + +Lineare Algebra Matrix invertieren +Öffnet den Dialog Matrix-Eingabe um die inverse Matrix zu berechnen. + + + + + + +Das Menü Berechnen + + + +Berechnen Differenzieren +Öffnet den Dialog Differenzieren-Parameter. + + +Berechnen Integrieren +Öffnet den Dialog Integrations-Parameter. + + +Berechnen Gleichungen lösen +Öffnet den Dialog zur Eingabe der Parameter, um lineare und nicht-lineare Gleichungen zu lösen. + + + + + + +Das Menü Paket + + + +Paket Paket importieren +Öffnet den Dialog zum Import von Paketen. + + + + + + +Das Menü Grafik + + + +Grafik Grafik +Öffnet den Dialog Grafik-Parameter. + + +Grafik 2D-Grafik +Öffnet den Dialog 2D-Grafik-Parameter. + + +Grafik 3D-Grafik +Öffnet den Dialog 3D-Grafik-Parameter. + + + + + + +Die Menüs Einstellungen und Hilfe +&cantor; benutzt die bekannten &kde;-Menüeinträge Einstellungen und Hilfe. Mehr dazu erfahren Sie in den Abschnitten zu den Menüs Einstellungen und Hilfe in den &kde;-Grundlagen. + + + + + + + +Fragen und Antworten + + + + Der Menüeintrag Schriftsatz mit Hilfe von LaTeX ist nicht vorhanden + Diese Funktion wird nicht von allen Modulen unterstützt. In der aktuellen Version wird die &latex;-Ausgabe mit den Modulen Maxima, Qalculate! und Sage unterstützt. + + + Ich habe Sage/Maxima oder andere unterstützte Computeralgebrasysteme (CAS) installiert, aber das zugehörige Modul wird nicht angezeigt. + + Möglicherweise hat &cantor; den Pfad zu diesen Modulen nicht gefunden. Öffnen Sie den Einrichtungsdialog mit Einstellungen&cantor; einrichten ... und stellen Sie dort den Pfad zu den Modulen richtig ein. + + + + Was hat der eigenartige Name des Programms mit Mathematik zu tun? + Das Programm ist nach dem deutschen Mathematiker Georg Cantor benannt, dem Entdecker der Mengenlehre. + + + + + + +Danksagungen und Lizenz + +&cantor; +Programm Copyright 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +Dokumentation Copyright © 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +Übersetzung Burkhard Lücklueck@hube-lueck.de &underFDL; &underGPL; + +&documentation.index; +
      + + diff --git a/po/el/cantor.po b/po/el/cantor.po new file mode 100644 index 0000000..3b4a32d --- /dev/null +++ b/po/el/cantor.po @@ -0,0 +1,5208 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Petros , 2010. +# Yannis Kaskamanidis , 2010. +# Dimitris Kardarakos , 2012, 2014. +# Stelios <>, 2012, 2017, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2021-10-09 08:16+0300\n" +"Last-Translator: Stelios \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.04.2\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Γιάννης Κασκαμανίδης, Δημήτρης Καρδαράκος" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "kiolalis@gmail.com, dimkard@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Παύση" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Εκκίνηση" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Διακοπή" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Αποθήκευση αποτελέσματος" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Γραφική απεικόνιση για προχωρημένους" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Γραφική απεικόνιση" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Έκφραση:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Επιπρόσθετες επιλογές:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Γραφική απεικόνιση" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Ενεργή επιλογή" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Υπολογισμός" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Διαφορισμός" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Μεταβλητή:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "χ" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Φορές: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Πακέτο" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Εισαγωγή πακέτου" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Πακέτο:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Ενσωμάτωση" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Κατώτερο όριο:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Ανώτερο όριο:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "καθορισμένο ολοκλήρωμα" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Γραμμική άλγεβρα" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Δημιουργία πίνακα" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Στήλες:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Γραμμές:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Υπολογισμός ιδιοτιμών" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Πίνακας:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Υπολογισμός ιδιοδιανυσμάτων" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Αντιστροφή πίνακα" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Δισδιάστατο σχέδιο" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Μεταβλητή" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Όνομα" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Ελάχιστο:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Μέγιστο:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Τρισδιάστατη γραφική απεικόνιση" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1η μεταβλητή" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2η μεταβλητή" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Εκτέλεση σεναρίου" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Λύση εξισώσεων" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Εξισώσεις:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Μεταβλητές:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Επιλέξτε το σύστημα υποστήριξης" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Συνιστώμενη έκδοση: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Δείτε %2 για περισσότερες " +"πληροφορίες.
      " + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Κάποιες απαιτήσεις δεν πληρούνται: %1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Ορισμός αυτού του συστήματος υποστήριξης ως προκαθορισμένου" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Η Julia είναι μία υψηλού επιπέδου, υψηλής απόδοσης, δυναμική γλώσσα " +"προγραμματισμού για τεχνικούς υπολογισμούς, με συντακτικό αναγνωρίσιμο από " +"άλλα τεχνικά προγραμματιστικά περιβάλλοντα. Παρέχει έναν εξελιγμένο " +"μεταγλωττιστή, κατανεμημένη παράλληλη εκτέλεση, αριθμητική ακρίβεια και μια " +"εκτεταμένη βιβλιοθήκη μαθηματικών συναρτήσεων." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "http://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"Η διαδρομή στη Julia που ορίσθηκε στις ρυθμίσεις της εφαρμογής πρέπει να " +"δείχνει απευθείας στο εκτελέσιμο. Συμβολικοί δεσμοί δεν επιτρέπονται. Δώστε " +"τη σωστή διαδρομή στις ρυθμίσεις της εφαρμογής και προσπαθήστε πάλι." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Αδυναμία του Сantor να διακρίνει την έκδοση της Julia για το %1. Δώστε τη " +"σωστή διαδρομή στο εκτελέσιμο Julia (δεν επιτρέπονται συμβολικοί δεσμοί) και " +"προσπαθήστε πάλι." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Προσπαθείτε να χρησιμοποιήσετε το Cantor με τη Julia v%1.%2.%3. Η " +"μεταγλώττιση αυτής της έκδοσης του Cantor έγινε με υποστήριξη της Julia v%4." +"%5.%6. Καθορίστε έναν δείκτη σε αυτήν την έκδοση της Julia ή μεταγλωττίστε " +"ξανά το Cantor με την έκδοση %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Διαδρομή προς το εγγενές κέλυφος REPL της Julia" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Ενεργοποίηση της διαχείρισης μεταβλητών" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Ενσωμάτωση των γραφικών απεικονίσεων στο φύλλο εργασίας" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, fuzzy, kde-format +#| msgid "Graphic Package for \"Plot\"-assistant" +msgid "Graphical package for the Plot-Assistant" +msgstr "Πακέτο γραφικών βοηθός για τη «Γραφική απεικόνιση»" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Λυπούμαστε, αλλά το Gadfly δεν υποστηρίζει τρισδιάστατα γραφικά" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Αρχείο σεναρίου της Julia (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Σφάλμα - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"Δεν μπορεί να γίνει σύνδεση με συνεδρία της Julia εξαιτίας εσωτερικού " +"προβλήματος της julia με αρχείο που λείπει - \"%1\"" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" +"Δεν μπορεί να γίνει σύνδεση με συνεδρία της Julia εξαιτίας εσωτερικού " +"προβλήματος" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Η διεργασία Julia σταμάτησε να λειτουργεί." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Αδυναμία έναρξης της διεργασίας Julia." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "Αποτυχία επικοινωνίας με τη διεργασία Julia για άγνωστους λόγους." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Για τη Julia μόνο το GR (https://gr-framework.org/), ένα πλαίσιο για " +"οπτικοποίηση εφαρμογών, υποστηρίζεται προς το παρόν. Αυτό το πακέτο πρέπει " +"πρώτα να εγκατασταθεί, αν δεν έχει ήδη γίνει. Για την εγκατάσταση, εκτελέστε " +"Pkg.install(\"GR\") στο Cantor ή στο Julia REPL. Σημειώστε, η λειτουργία " +"αυτή απαιτεί κάποιο χρόνο και είναι καλύτερα να την πραγματοποιήσετε στο " +"Julia REPL το οποίο δείχνει την πρόοδο της εγκατάστασης του πακέτου." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Γενικά" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Εκτελέσιμο:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Ενσωμάτωση γραφικών παραστάσεων:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Αν ενεργοποιηθεί, οι γραφικές απεικονίσεις θα εμφανίζονται μέσα στο φύλλο " +"εργασίας. Διαφορετικά, θα εμφανίζονται σε εξωτερικό παράθυρο." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Ενεργοποιημένο" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Διαχείριση μεταβλητών:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Ελέγχει τη δημιουργία και την καταστροφή των μεταβλητών και εμφανίζει τις " +"μεταβλητές στον σχετικό πίνακα." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Εσωτερικός τύπος αποθήκευσης γραφικών απεικονίσεων:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" +"Εσωτερικός τύπος αποθήκευσης των γραφικών παραστάσεων αν είναι η ενσωμάτωσή " +"τους ενεργοποιημένη." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, fuzzy, kde-format +#| msgid "Graphic Package for \"Plot\"-assistant" +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Πακέτο γραφικών βοηθός για τη «Γραφική απεικόνιση»" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, fuzzy, kde-format +#| msgid "Graphic Package for \"Plot\"-assistant" +msgid "Package for Plot Assistant" +msgstr "Πακέτο γραφικών βοηθός για τη «Γραφική απεικόνιση»" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Γραφικές απεικονίσεις" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Αυτόματη εκτέλεση" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Εντολές για αυτόματη εκτέλεση" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Τεκμηρίωση" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Λίστα σεναρίων για αυτόματη εκτέλεση κατά την εκκίνηση της συνεδρίας" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Σφάλμα: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Με αυτό οι εντολές για την εκκίνηση ενός νέου φύλλου εργασίας, εκτελούνται " +"αυτόματα. Χρησιμεύουν για τη φόρτωση των απαιτούμενων αρθρωμάτων, την αλλαγή " +"περιβάλλοντος, κλπ." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "http://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Η Lua είναι μια γρήγορη και ελαφριά γλώσσα συγγραφής σεναρίων, με " +"απλό συντακτικό διαδικασιών. Υπάρχουν πολλές βιβλιοθήκες στη Lua για τα " +"μαθηματικά και τη Φυσική." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Διαδρομή προς την εντολή luajit" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Αρχείο σεναρίου της Lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Διαδρομή προς την luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Το Maxima είναι ένα σύστημα που χειρίζεται συμβολικές και αριθμητικές " +"εκφράσεις, στις οποίες συμπεριλαμβάνονται ο διαφορισμός, η ολοκλήρωση, οι " +"σειρές Taylor, οι μετασχηματισμοί Laplace, οι συνήθεις διαφορικές εξισώσεις, " +"συστήματα γραμμικών εξισώσεων, πολυώνυμα, σύνολα, λίστες, διανύσματα, " +"πίνακες και τανυστές. Το Maxima δίνει αριθμητικά αποτελέσματα μεγάλης " +"ακρίβειας χρησιμοποιώντας ακριβή κλάσματα, αυθαίρετης ακρίβειας ακέραιους " +"αριθμούς και μεταβλητής ακρίβειας αριθμούς κινητής υποδιαστολής. Το Maxima " +"μπορεί να απεικονίσει γραφικά συναρτήσεις σε δύο ή τρεις διαστάσεις." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Διαδρομή προς το εκτελέσιμο Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Σφάλμα: πάρα πολλά */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Σφάλμα: πάρα πολλά /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Σφάλμα: αναμενόταν \" πριν το ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Αναμονή για το αποτέλεσμα της γραφικής παράστασης" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Αρχείο δέσμης εντολών του Maxima (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Αδυναμία έναρξης του Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Το Maxima κατέρρευσε. Επανέναρξη..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Το Maxima κατέρρευσε δύο φορές μέσα σε μικρό χρονικό διάστημα. Διακοπή " +"προσπαθειών έναρξης" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"Η GNU Octave είναι μια υψηλού επιπέδου γλώσσα, με πρωταρχική επιδίωξη " +"τους αριθμητικούς υπολογισμούς.
      Παρέχει ένα εύχρηστο περιβάλλον γραμμής " +"εντολών για την επίλυση γραμμικών και μη γραμμικών προβλημάτων αριθμητικά " +"και για την εκτέλεση άλλων αριθμητικών πειραμάτων χρησιμοποιώντας μια γλώσσα " +"συμβατή με τη Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Αρχείο σεναρίου της Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Συντακτικό σφάλμα" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Αποτυχία της δοκιμής ενσωμάτωσης γραφικών παραστάσεων." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "Η ενσωμάτωση των γραφικών παραστάσεων θα απενεργοποιηθεί." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"Η ενσωμάτωση των γραφικών παραστάσεων δεν λειτουργεί γιατί το Cantor βρήκε, " +"ότι το Octave δεν μπορεί να τις δημιουργήσει επειδή δεν υπάρχουν συστήματα " +"υποστήριξης γραφικών παραστάσεων: το συμπέρασμα αυτό προκύπτει επειδή η " +"συνάρτηση available_graphics_toolkits() δεν δίνει κάτι στην έξοδο. Φαίνεται " +"ότι πρέπει να εγκαταστήσετε κάποια πρόσθετα πακέτα, όπως τα gnuplot, fltk ή " +"το qt για να μποείτε να δημιουργείτε γραφικές παραστάσεις." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Η Python είναι μια αξιοσημείωτα ισχυρή δυναμική γλώσσα " +"προγραμματισμού που χρησιμοποιείται σε μια ευρεία γκάμα τομέων εφαρμογών. " +"Υπάρχουν διάφορα πακέτα της Python για επιστημονικό προγραμματισμό." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# Λυπούμαστε, αλλά το Bokeh δεν υποστηρίζει τρισδιάστατη σχεδίαση" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Αρχείο σεναρίου της Python (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr ") python εξυπηρετητής του Cantor διέκοψε τη λειτουργία του." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Αδυναμία έναρξης του python εξυπηρετητή του Cantor." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"Αποτυχία επικοινωνίας με τον python εξυπηρετητή του Cantor για άγνωστους " +"λόγους." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Για τη χρήση ενσωματωμένων γραφικών με το πακέτο Matplotlib, απαιτείται η " +"εγκατάσταση του python πακέτου «matplotlib»." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Για τη χρήση ενσωματωμένων γραφικών με το Plot.ly, απαιτείται η εγκατάσταση " +"του python πακέτου «plotly» και του ειδικού εκτελέσιμου συμβατού με το Plot." +"ly «orca». Για λεπτομέρειες δείτε το άρθρο «Εξαγωγή στατικών εικόνων» στην " +"τεκμηρίωση του Plot.ly." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Διάλογος γραφικής απεικόνισης" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Συναρτήσεις" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Τίτλος" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Έκφραση" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Προσθήκη" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Αφαίρεση" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Καθαρισμός λίστας" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Μεταβλητή Χ" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Στιλ" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Γραμμές" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Σημεία" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Σημεία και γραμμές" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Πλαίσια" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Ιστόγραμμα" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Βήματα" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Κηροπήγια" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Τελείες" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Εξομάλυνση" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Τίποτα" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Μονότονη" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Φυσικές κυβικές καμπύλες spline" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (μονότονη)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Εύρος συνάρτησης" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Εύρος Χ" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Ρυθμός δειγ&ματοληψίας" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Μέγεθος βήμα&τος" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Επιλογές" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Τίτλος γραφικής απεικόνισης" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Ετικέτα άξονα Χ" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Ετικέτα άξονα Y" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Θέση υπομνήματος" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Απόκρυψη υπομνήματος" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Πάνω-αριστερά" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Πάνω-δεξιά" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Κάτω-αριστερά" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Κάτω-δεξιά" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Κάτω" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Εξωτερικά" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Εμφάνιση του καννάβου" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Εμφάνιση πλήρων περιγραμμάτων" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Χρήση χρωμάτων" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Εμφάνιση εμβόλιμα" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Λογαριθμική κλίμακα x" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Λογαριθμική κλίμακα y" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Επιλογές αρχείου" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Αποθήκευση γραφικής απεικόνισης σε αρχείο" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Τύπος αρχείου" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Ανίχνευση από το όνομα αρχείου" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Το Qalculate! δεν είναι ένα συνηθισμένο λογισμικό αντιγραφή της " +"φθηνότερης διαθέσιμης αριθμομηχανής. Το Qalculate! στοχεύει στο να " +"αξιοποιήσει πλήρως την ανώτερη διεπαφή, την ισχύ και την ευελιξία που " +"παρέχουν οι σύγχρονοι υπολογιστές. Στο επίκεντρο της προσοχής του Qalculate! " +"είναι η εισαγωγή εκφράσεων. Αντί να εισάγετε κάθε αριθμό στη μαθηματική " +"έκφραση ξεχωριστά, μπορείτε να γράψετε απ' ευθείας όλη την έκφραση και στη " +"συνέχεια να τη τροποποιήσετε. Η ερμηνεία των εκφράσεων είναι ευέλικτη και " +"ανεκτική σε σφάλματα και αν παρόλα αυτά κάνετε κάτι λάθος, το Qalculate! θα " +"σας ειδοποιήσει σχετικά. Εκφράσεις που δεν είναι πλήρως επιλύσιμες δεν " +"αποτελούν σφάλματα. Το Qalculate! θα τις απλοποιήσει όσο μπορεί και θα " +"απαντήσει με μια έκφραση. Επιπλέον των αριθμών και των αριθμητικών τελεστών, " +"μια έκφραση μπορεί να περιέχει έναν οποιοδήποτε συνδυασμό μεταβλητών, " +"μονάδων και συναρτήσεων." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Αν και πώς οι μονάδες θα μετατραπούν αυτόματα. Αν ενεργοποιηθεί, η μετατροπή " +"γίνεται στις κατάλληλες αντίστοιχες μονάδες του Διεθνούς Συστήματος (το " +"ελάχιστο πλήθος μονάδων)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" +"Προκαθορισμένη μονάδα μέτρησης γωνίας για τις τριγωνομετρικές συναρτήσεις." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Βάση των αναλυμένων και υπολογισμένων αριθμών." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Αν το αποτέλεσμα του υπολογισμού θα απλοποιηθεί ή θα παραγοντοποιηθεί." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Αν οι ρητοί αριθμοί θα εμφανίζονται ως δεκαδικοί, ως κλάσματα ή ως κάτι " +"ενδιάμεσο." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Δείχνει ότι η σειρά των δεκαδικών ψηφίων ενός αριθμού συνεχίζει για πάντα " +"εμφανίζοντας τρεις τελείες, αντί να στρογγυλοποιηθεί (π.χ. το 2/3 " +"εμφανίζεται ως 0.666666... αντί ως 0.666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Χρήση όλων των δεκαδικών προθεμάτων του Διεθνούς Συστήματος. Αν δεν " +"ενεργοποιηθεί, τα προθέματα που δεν είναι πολλαπλάσια του 1000 (centi, deci, " +"deca, hecto) δε θα χρησιμοποιηθούν αυτόματα." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Αν ενεργοποιηθεί, θα χρησιμοποιηθούν αρνητικοί εκθέτες αντί διαίρεσης (π.χ. " +"το 5/x^2 γίνεται 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Αριθμητική εμφάνιση." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Αν ενεργοποιηθεί, οι γραφικές απεικονίσεις θα εμφανίζονται μέσα στο φύλλο " +"εργασίας. Διαφορετικά, θα εμφανίζονται σε ξεχωριστό παράθυρο." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Αν πρέπει να χρησιμοποιούνται χρώματα στις γραφικές απεικονίσεις." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Αν ο κάνναβος πρέπει να απεικονίζεται γραφικά." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" +"Αν τα πλήρη περιγράμματα πρέπει να σχεδιάζονται γύρω από τη γραφική " +"απεικόνιση." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Πλάτος γραμμών, σε εικονοστοιχεία." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" +"Ο αριθμός των βημάτων παρεμβολής που θα χρησιμοποιηθούν στη γραφική " +"απεικόνιση." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Λειτουργία εξομάλυνσης στις γραφικές απεικονίσεις." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Στυλ γραφικών απεικονίσεων." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Θέση υπομνήματος στις γραφικές απεικονίσεις." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" +"Το Qalculate αναφέρει ότι δε μπορεί να εκτυπώσει. Έχει εγκατασταθεί το " +"gnuplot;" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "μη διαθέσιμο το %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "το %1 πρέπει να είναι αριθμός." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "το %1 πρέπει να είναι ακέραιος." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "το %1 πρέπει να είναι τύπου Μπουλ." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "μη έγκυρη επιλογή για το %1:%2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" +"βρέθηκαν πολλαπλές εκφράσεις σε μια εντολή γραφικής απεικόνισης (%1 και %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "ΣΦΑΛΜΑ" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Δεν υπάρχει συνάρτηση, μεταβλητή ή μονάδα με το συγκεκριμένο όνομα." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Συνάρτηση: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Περιβάλλον γραφικής απεικόνισης" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Απεικονίζει γραφικά μια ή περισσότερες συναρτήσεις είτε εμβόλιμα είτε σε " +"ξεχωριστό παράθυρο." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "έκφραση" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "επιλογή" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "τιμή" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "ακέραιος" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "τύπος Μπουλ" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "αριθμός" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "προκαθορισμένο: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Το όνομα της συνάρτησης" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Τίτλος ετικέτας" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "ετικέτα άξονα x" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "ετικέτα άξονα y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Η εικόνα στην οποία θα αποθηκευθεί η γραφική απεικόνιση. Αν είναι κενό, " +"εμφανίζει τη γραφική απεικόνιση σε ένα παράθυρο στην οθόνη. Αν έχει επιλεγεί " +"η εμβόλιμη απεικόνιση, η εικόνα εμφανίζεται ανεξαρτήτως της συγκεκριμένης " +"επιλογής." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Ο τύπος εικόνας προς αποθήκευση. Ένα από τα εξής: auto, png, ps, eps, latex, " +"svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" +"Ενεργοποιήστε για έγχρωμες απεικονίσεις, μην ενεργοποιήσετε για μονόχρωμες." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Ελάχιστη τιμή άξονα x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Μέγιστη τιμή άξονα x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Αν θα χρησιμοποιηθεί λογαριθμική κλίμακα για τον άξονα x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Αν θα χρησιμοποιηθεί λογαριθμική κλίμακα για τον άξονα y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Βάση λογαρίθμου για τον άξονα x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Βάση λογαρίθμου για τον άξονα y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Αν θα εμφανίζεται ένας κάνναβος στη γραφική απεικόνιση." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Αν η γραφική απεικόνιση θα περιβάλλεται από περιγράμματα απ' όλες τις " +"πλευρές (όχι μόνο στους άξονες)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Πλάτος γραμμών." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Πού θα εμφανίζεται το υπόμνημα της γραφικής απεικόνισης. Ένα από τα: εξής " +"πουθενά, πάνω_αριστερά, πάνω_δεξιά, κάτω_αριστερά, κάτω_δεξιά, κάτω, " +"εξωτερικά" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Εξομάλυνση γραφικής απεικόνισης. Ένα από τα εξής: καθόλου, μοναδική, " +"csplines, bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Στυλ γραφικής απεικόνισης. Ένα από τα εξής: γραμμές, σημεία, σημεία_γραμμές, " +"πλαίσια, ιστόγραμμα, βήματα, κηροπήγια, τελείες" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Χρήση κλίμακας στον δεύτερο άξονα χ." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Χρήση κλίμακας στον δεύτερο άξονα y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" +"Αν η γραφική απεικόνιση θα σχεδιαστεί εμβόλιμα και όχι σε νέο παράθυρο." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Η απόσταση μεταξύ δύο σημείων παρεμβολής. Δείτε επίσης τα βήματα." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Αριθμός σημείων παρεμβολής. Δείτε επίσης το βήμα." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Το όνομα της μεταβλητής χ. Πρέπει να είναι μια άγνωστη μεταβλητή" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Αποθήκευση μεταβλητών σε αρχείο" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Αποθήκευση όλων των τρεχουσών μεταβλητών σε αρχείο. Μπορούν να " +"επαναφορτωθούν με %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "αρχείο" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "αρχείο: το αρχείο στο οποίο θα γίνει η αποθήκευση" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Φόρτωση μεταβλητών από αρχείο" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" +"Φόρτωση μεταβλητών από αρχείο το οποίο δημιουργήθηκε προηγουμένως από το %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "αρχείο: το αρχείο προς φόρτωση" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Βάση αριθμού:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Μορφή κλάσματος:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Δεκαδικός" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Ακριβές" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Κλασματικό" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Συνδυασμένο" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Αριθμητική εμφάνιση:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Καθαρή" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Επιστημονική" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Ακρίβεια" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Ένδειξη μη πεπερασμένων ακολουθιών:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Χρήση όλων των προθεμάτων του Διεθνούς Συστήματος:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Χρήση αρνητικών εκθετών:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Υπολογισμός" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Μετατροπή στις καταλληλότερες μονάδες του Διεθνούς Συστήματος:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Ακτίνια" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Μοίρες" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Βαθμοί" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Λειτουργία κατασκευής:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Απλοποίηση" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Παραγοντοποίηση" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Μονάδα μέτρησης γωνίας:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Γραφική απεικόνιση" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Εμφάνιση γραφικών απεικονίσεων εμβόλιμα:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Εμφάνιση πλήρων περιγραμμάτων:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Πλάτος γραμμών:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Ρυθμός δειγματοληψίας:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Λειτουργία εξομάλυνσης:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Φυσικές κυβικές καμπύλες spline" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Βήματα" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Θέση υπομνήματος:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Έγχρωμες γραφικές απεικονίσεις:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Εμφάνιση καννάβου:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Στιλ γραφικής απεικόνισης:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Τροποποίηση καταχώρησης" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Προσθήκη νέας καταχώρησης" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Το όνομα δεν μπορεί να έιναι κενό." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Προσθήκη τεκμηρίωσης σε τοπική γλώσσα" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Ανάκτηση νεας τεκμηρίωσης" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Λήψη πρόσθετης τεκμηρίωσης" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Το συμπιεσμένο Qt αρχείο βοήθειας δεν είναι έγκυρο." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Η τεκμηρίωση έχει ήδη εισαχθεί" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Τροποποίηση" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Διαγραφή" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Απεγκαταστήστε το μέσω GHNS." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Εγκατάσταση πρόσθετων αρχείων τεκμηρίωσης" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Όνομα" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Διαδρομή" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Προσθήκη" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Εικονίδιο:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Επιλέξτε εικονίδιο" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Όνομα:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Δώστε ένα όνομα" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Επιλογή ονόματος..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Διαδρομή:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Επιλογή αρχείου βοήθειας της Qt..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Επιλογή αρχείου βοήθειας της Qt..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"Η R είναι μια γλώσσα και ταυτόχρονα ένα περιβάλλον για στατιστική " +"επεξεργασία και δημιουργία γραφικών, παρόμοια με τη γλώσσα S.
      Παρέχει " +"μια μεγάλη ποικιλία στατιστικών (γραμμικά και μη γραμμικά μοντέλα, κλασικά " +"τεστ στατιστικής, ανάλυση χρονολογικών σειρών, ταξινόμηση, ομαδοποίηση, ...) " +"και γραφικών τεχνικών και είναι επεκτάσιμη σε μεγάλο βαθμό. Η γλώσσα S είναι " +"πολύ συχνά το όχημα που επιλέγεται για την έρευνα στη στατιστική " +"μεθοδολογία, και η γλώσσα R παέχει μια Ανοικτού Κώδικα οδό προς τη συμμετοχή " +"σε αυτήν τη δραστηριότητα." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Σφάλμα κατά το άνοιγμα του αρχείου %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "Αρχείο σεναρίου της R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Σφάλμα κατά την ανάλυση της εντολής" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "Url στην τεκμηρίωση της R σε τοπική γλώσσα" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Κάντε διπλό κλικ για να ανοίξει ο διάλογος επιλογής αρχείου" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|πηγαία αρχεία της R (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Το Sage είναι Ελεύθερο Λογισμικό / Λογισμικό Ανοικτού Κώδικα για τα " +"μαθηματικά, αδειοδοτημένο με τους όρους της GPL.
      Συνδυάζει τη δύναμη " +"πολλών πακέτων ανοικτού κώδικα σε ένα σύνηθες γραφικό περιβάλλον που " +"βασίζεται στη γλώσσα Python." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Διαδρομή προς το εκτελέσιμο Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Ενεργοποίηση στοιχειοθέτησης LaTex για το σύστημα υποστήριξης του Sage" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Αποτέλεσμα του %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Το τελευταίο αποτέλεσμα ήταν: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Αρχείο σεναρίου της Python (*.py);;Αρχείο σεναρίου του Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Η έκδοση %1.%2 του Sage δεν υποστηρίζεται. Ενημερώστε την εγκατάστασή σας με " +"τις υποστηριζόμενες εκδόσεις για να λειτουργήσει με το Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Αποτυχία καθορισμού της έκδοσης του Sage. Ελέγξτε την εγκατάστασή σας και το " +"αποτέλεσμα του «sage -v»." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Η διεργασία του Sage κατέρρευσε κατά τον υπολογισμό αυτής της έκφρασης" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Η διεργασία του Sage κατέρρευσε" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Η διεργασία του Sage τερμάτισε κατά τον υπολογισμό αυτής της έκφρασης" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Η διεργασία του Sage τερμάτισε" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Αδυναμία έναρξης του Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "Στοιχειοθέτηση LaTex" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"Το LaTeX αποτέλεσμα του Sage δεν είναι πάντα σωστό, έτσι η στοιχειοθέτηση " +"latex μπορεί να απενεργοποιηθεί για βελτίωση της εμπειρίας" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Το Scilab είναι ελεύθερο λογισμικό, αποτελεί ένα πακέτο αριθμητικών " +"υπολογισμών συμβατό με πολλές πλατφόρμες και μια υψηλού επιπέδου γλώσσα " +"προγραμματισμού για αριθμητική ανάλυση. Το Scilab διανέμεται με την άδεια " +"χρήσης CeCILL (συμβατή με τη GPL)" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Διαδρομή προς το εκτελέσιμο Scilab" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Αρχείο σεναρίου της Scilab (*.sce);;Αρχείο συνάρτησης Scilab (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "Το αρχείο %1 είναι ήδη ανοικτό." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Άνοιγμα αρχείου" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Λήψη παραδειγμάτων" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Άνοιγμα παραδείγματος" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Μετάβαση στο προηγούμενο φύλλο εργασίας" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Μετάβαση στο επόμενο φύλλο εργασίας" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Όλα τα υποστηριζόμενα αρχεία (*.cws *ipynb);;Φύλλο εργασίας Cantor (*.cws);;" +"Σημειωματάριο Jupyter (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Δε βρέθηκε σύστημα υποστήριξης

      \n" +"
      Μπορείτε να δοκιμάσετε:\n" +"
      • Να αλλάξετε τις ρυθμίσεις μέσω του αντίστοιχου διαλόγου " +"διαμόρφωσης.
      • Να εγκαταστήσετε πακέτα για το ακόλουθο πρόγραμμα: %2
      " +msgstr[1] "" +"

      Δε βρέθηκε σύστημα υποστήριξης

      \n" +"
      Μπορείτε να δοκιμάσετε:\n" +"
      • Να αλλάξετε τις ρυθμίσεις μέσω του αντίστοιχου διαλόγου " +"διαμόρφωσης.
      • Να εγκαταστήσετε πακέτα για ένα από τα ακόλουθα " +"προγράμματα:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Σφάλμα" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Το σύστημα υποστήριξης %1 δεν είναι εγκατεστημένο" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"%1 σύστημα υποστήριξης εγκαταστάθηκε, αλλά είναι ανενεργό. Ελέγξτε την " +"εγκατάστασή σας και τις ρυθμίσεις του Cantor" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Συνεδρία %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Αποτυχία εύρεσης του Cantor Part με σφάλμα %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Υπολογισμός..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Έτοιμο" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Τροποποιήθηκε" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "Πολλά μη αποθηκευμένα φύλλα εργασίας είναι ανοιχτά. Να κλείσουν;" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Κλείσιμο Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Το τρέχον έργο έχει τροποποιηθεί. Θέλετε να αποθηκευθεί;" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Αποθήκευση έργου" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Μορφοποίηση" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Το σύστημα υποστήριξης που χρησιμοποιείται ως προκαθορισμένο" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Προεπιλεγμένη πραγματοποίηση στοιχειοθεσίας" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Προεπιλεγμένη πραγματοποίηση επισήμανσης σύνταξης" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Προεπιλεγμένη ενεργοποίηση συμπλήρωσης" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Προεπιλεγμένη ενεργοποίηση αρίθμησης εκφράσεων" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Προεπιλογή εφέ κίνησης αλλαγών στο φύλλο εργασίας" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Ενεργοποίηση αποτύπωσης μαθηματικών εκφράσεων μέσα στο $$..$$ προκαθορισμένα " +"σε εγγραφές κειμένου και Markdown (απαιτεί εγκατάσταση pdflatex)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Αυτόματος εκ νέου υπολογισμός των καταχωρήσεων κάτω από την τρέχουσα" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" +"Να γίνεται ερώτηση επιβεβαίωσης στην επανεκκίνηση του συστήματος υποστήριξης" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Να αποθηκεύεται η μορφή εμπλουτισμένου κειμένου του TextEntry, όταν γίνεται " +"αποθήκευση του φύλλου εργασίας σε τύπο αποθήκευσης σημειωματαρίου Jupyter" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" +"Να γίνει χρήση του στιλ τοποθέτησης με εγγραφές παλαιού στιλ του Cantor" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Να εμφανίζεται το σφάλμα αποτύπωσης στα ενσωματωμένα μαθηματικά" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Να περιοριστούν οι ορατές γραμμές για το αποτέλεσμα του κειμένου" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Γραμματοσειρά ιεραρχίας για κεφάλαια" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Μέγεθος γραμματοσειράς ιεραρχίας για κεφάλαια" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Πλάγια γραμματοσειρά ιεραρχίας για κεφάλαια" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Έντονη γραμματοσειρά ιεραρχίας για κεφάλαια" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Γραμματοσειρά ιεραρχίας για υποκεφάλαια" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Μέγεθος γραμματοσειράς ιεραρχίας για υποκεφάλαια" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Πλάγια γραμματοσειρά ιεραρχίας για υποκεφάλαια" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Έντονη γραμματοσειρά ιεραρχίας για υποκεφάλαια" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Γραμματοσειρά ιεραρχίας για ενότητες" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Πλάγια γραμματοσειρά ιεραρχίας για ενότητες" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Έντονη γραμματοσειρά ιεραρχίας για ενότητες" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Γραμματοσειρά ιεραρχίας για υποενότητες" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Πλάγια γραμματοσειρά ιεραρχίας για ενότητες" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Έντονη γραμματοσειρά ιεραρχίας για υποενότητες" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Γραμματοσειρά ιεραρχίας για παραγράφους" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Πλάγια γραμματοσειρά ιεραρχίας για παραγράφους" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Έντονη γραμματοσειρά ιεραρχίας για παραγράφους" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Γραμματοσειρά ιεραρχίας για υποπαραγράφους" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Πλάγια γραμματοσειρά ιεραρχίας για υποπαραγράφους" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Έντονη γραμματοσειρά ιεραρχίας για υποπαραγράφους" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Αποθήκευση ως απλό κείμενο" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Εξαγωγή σε LaTex" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Υπολογισμός φύλλου εργασίας" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Ζουμ" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Στοιχειοθεσία με τη χρήση του LaTex" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Συντακτική επισήμανση" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Συμπλήρωση" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Αρίθμηση γραμμών" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Pause Animation" +msgid "Animations" +msgstr "Παύση κινούμενης απεικόνισης" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Ενσωματωμένα μαθηματικά" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Επανεκκίνηση συστήματος υποστήριξης" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Υπολογισμός καταχώρησης" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Εισαγωγή καταχώρησης εντολής" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Εισαγωγή καταχώρησης κειμένου" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Εισαγωγή markdown καταχώρησης" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Εισαγωγή καταχώρησης LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Εισαγωγή διακοπής σελίδας" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Εισαγωγή εικόνας" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Συμπίεση όλων των αποτελεσμάτων" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Επέκταση όλων των αποτελεσμάτων" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Αφαίρεση όλων των αποτελεσμάτων" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Αφαίρεση της τρέχουσας καταχώρησης" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Εμφάνιση επεξεργαστή δέσμης εντολών" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Εμφάνιση ολοκλήρωσης" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "Τμήμα του Cantor" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Φύλλο εργασίας του Cantor (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Σημειωματάριο Jupyter (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Αποθήκευση ως" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Αποθήκευση" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Όλα τα διαθέσιμα αποτελέσματα υπολογισμού θα χαθούν. Θέλετε πράγματι να " +"επανεκκινήσετε το %1;" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Επανεκκίνηση του %1;" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Διακοπή" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Σφάλμα συνεδρίας: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Η αρχικοποίηση ολοκληρώθηκε" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Αρχικοποίηση..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[ανάγνωση-μόνο]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Θέλετε να στείλετε το παρόν φύλλο εργασίας στον δημόσιο διακομιστή;" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Ερώτηση - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" +"Το φύλλο εργασίας δεν έχει αποθηκευθεί. Πρέπει να το αποθηκεύσετε πριν την " +"αποστολή του." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Προειδοποίηση - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Το συγκεκριμένο σύστημα υποστήριξης δεν υποστηρίζει σενάρια." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Επεξεργασία" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Προβολή" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Φύλλο εργασίας" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "&Ρυθμίσεις" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Αρχείο" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Νέο" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Πίνακες" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Ρυθμίσεις" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Χρώμα φόντου" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Προκαθορισμένο" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Χρώμα κειμένου" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Γραμματοσειρά" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Έντονα" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Πλάγια" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Αύξηση μεγέθους" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Μείωση μεγέθους" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Επιλογή" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Επαναφορά στο προκαθορισμένο" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Εμφάνιση αποτελεσμάτων" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Απόκρυψη αποτελεσμάτων" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Να εμφανίζεται η βοήθεια" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Εμφάνιση" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Διακόπηκε" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Γραμμή Αναζήτησης" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Εύρεση:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Επόμενο" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Προηγούμενο" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Αντικατάσταση:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Αντικατάσταση" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Αντικατάσταση ό&λων" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Αναζήτηση σε:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Ταίριασμα πεζών/κεφαλαίων" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Γραμματοσειρές ιεραρχίας" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Γραμματοσειρά κεφαλαίου" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Οικογένεια γραμματοσειράς:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Μέγεθος γραμματοσειράς:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Γραμματοσειρά υποκεφαλαίου" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Γραμματοσειρά ενότητας" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Γραμματοσειρά υποενότητας" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Γραμματοσειρά παραγράφου" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Γραμματοσειρά υποπαραγράφου" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Κεφάλαιο" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Υποκεφάλαιο" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Ενότητα" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Υποενότητα" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Παράγραφος" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Υποπαράγραφος" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Ρύθμιση επιπέδου ιεραρχίας" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Στιλ συμπαγούς γραμμής" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Στιλ διακοπτόμενης γραμμής" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Στιλ γραμμής με κουκίδες" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Στιλ γραμμής παύλα τελεία" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Στιλ γραμμής παύλα τελεία τελεία" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Πάχος γραμμής" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Λεπτή" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Μέση" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Χοντρή" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Χρώμα γραμμής" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Στιλ γραμμής" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Διαμόρφωση εικόνας" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Διπλό κλικ εδώ για να διαμορφώσετε τις ρυθμίσεις της εικόνας" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Αδυναμία φόρτωσης εικόνας %1" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Αποθήκευση αποτελέσματος" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Εικόνες (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Ρυθμίσεις εικόνας" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Άνοιγμα" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Μέγεθος εμφάνισης" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Πλάτος" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Ύψος" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Προεπισκόπηση" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Μέγεθος εκτύπωσης" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Χρήση μεγέθους εμφάνισης" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Ρυθμίσεις εικόνας" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(αυτόματο)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Άνοιγμα αρχείου εικόνας" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Εμφάνιση κώδικα LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Δεν ορίσθηκε διαδρομή για το εκτελέσιμο %1. Δώστε τη σωστή διαδρομή στις " +"ρυθμίσεις της εφαρμογής και προσπαθήστε πάλι." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"Το δσσμένο αρχείο '%1' για το εκτελέσιμο %2 δεν υπάρχει. Δώστε τη σωστή " +"διαδρομή στις ρυθμίσεις της εφαρμογής και προσπαθήστε πάλι." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"Το δσσμένο αρχείο '%1' δεν δείχνει σε εκτελέσιμο. Δώστε τη σωστή διαδρομή " +"στις ρυθμίσεις της εφαρμογής και προσπαθήστε πάλι." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"Το πρόγραμμα %1 δεν ολοκλήρωσε την εκτέλεση μετά από %2 χιλιοστά του " +"δευτερολέπτου κατά τη διάρκεια της δοκιμής ενσωμάτωσης των γραφικών " +"παραστάσεων." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" +"Αποτυχία ανοίγματος του αρχείου %1 κατά τη διάρκεια της δοκιμής ενσωμάτωσης " +"των γραφικών παραστάσεων." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" +"Αποτυχία συντακτικής ανάλυσης του αποτελεματος κατά τη διάρκεια της δοκιμής " +"ενσωμάτωσης των γραφικών παραστάσεων." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Διαδρομή προς το εκτελέσιμο latex" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Διαδρομή προς το εκτελέσιμο dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Τιμή" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 bytes>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "<πολύ μεγάλη εταβλητή>" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Από:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Προς:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Κύριος τίτλος" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Κλίμακα Abscissa" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Κλίμακα τεταγμένης" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Τίτλος γραφικής απεικόνισης:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Αυτό είναι μη υποστηριζόμενο περιεχόμενο Jupyter τύπων ('%1')" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"Η %1 διεργασία τερματίστηκε απρόσμενα. Όλα τα αποτελέσματα υπολογισμού " +"χάθηκαν." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"Η %1 διεργασία τερματίστηκε απρόσμενα με μήνυμα «%2». Όλα τα αποτελέσματα " +"υπολογισμού χάθηκαν." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Επιλέξατε υποστήριξη για το πακέτο γραφικών %1, αλλά η υποστήριξη δεν μπορεί " +"να ενεργοποιηθεί εξαιτίας της έλλειψης απαιτήσεων, έτσι η ολοκλήρωση για το " +"πακέτο αυτό θα απενεργοποιηθεί. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Περιβάλλον του KDE για μαθηματικές εφαρμογές" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" +"Συντηρητής
      Μεταφορά Qt5/KF5, συστήματα υποστήριξης Scilab και Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Προγραμματιστής" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Αρχικός συγγραφέας
      Συντηρητής (2009-2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Σύστημα υποστήριξης KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Σύστημα υποστήριξης Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Περιβάλλον" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Εικονίδιο Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Χρήση συστήματος υποστήριξης " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Έγγραφα για άνοιγμα." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Αδυναμία ανοίγματος του αρχείου %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Εισάγετε λειτουργία επεξεργασίας" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Καθαρισμός συνημμένων" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Μαθηματικό σφάλμα του Cantor" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Αποτυχία ανάγνωσης της εικόνας «%1». Σφάλμα «%2»." + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Διακοπή σελίδας ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Μετάβαση στα περιεχόμενα" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Αναζήτηση με λέξεις κλειδιά..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Εύρεση σε κείμενο της τρέχουσας σελίδας τεκμηρίωσης" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Επαναφορά του επιπέδου ζουμ στο 100%" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Κλείσιμο" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Μετάβαση στο επόμενο αποτέλεσμα" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Μετάβαση στο προηγούμενο αποτέλεσμα" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Να γίνεται διάκριση πεζών/κεφαλαίων" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "Έχει γίνει επιτυχημένη λήψη του αρχείου στο Downloads." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Λήψη επιτυχής" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Αρχεία του Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Αρχεία του Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Όλα τα υποστηριζόμενα αρχεία" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Όλα τα αρχεία" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Όνομα:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Τιμή:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Προσθήκη νέας μεταβλητής" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Φόρτωση μεταβλητών" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Αποθήκευση μεταβλητών" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Αφαίρεση μεταβλητών" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Αναζήτηση/φιλτράρισμα" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Διάκριση πεζών/κεφαλαίων" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Ταίριασμα όλης της λέξης" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Επιθυμείτε σίγουρα να αφαιρέσετε όλες τις μεταβλητές;" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Φόρτωση αρχείου" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Αποθήκευση αποτελέσματος" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Αφαίρεση αποτελέσματος" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Αδυναμία εύρεσης επεξεργαστή κειμένου του KDE·\n" +"παρακαλώ ελέγξτε την εγκατάσταση του KDE σας." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Επεξεργαστής σεναρίων" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Επεξεργαστής σεναρίων - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Δε βρέθηκε" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Φτάσαμε στην αρχή" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Φτάσαμε στο τέλος" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Αντικαταστάθηκε %1 στιγμιότυπο" +msgstr[1] "Αντικαταστάθηκαν %1 στιγμιότυπα" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Εντολές" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Αποτελέσματα" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Σφάλματα" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Κείμενο" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Κώδικας LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "Εκκίνηση" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Προκαθορισμένο σύστημα υποστήριξης:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "&Φύλλο εργασίας" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, fuzzy, kde-format +#| msgid "Enable LaTeX typesetting for Sage backend" +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "Ενεργοποίηση στοιχειοθέτησης LaTex για το σύστημα υποστήριξης του Sage" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, fuzzy, kde-format +#| msgid "LaTeX typesetting:" +msgid "LaTeX typesetting" +msgstr "Στοιχειοθέτηση LaTex" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Ενεργοποίηση επισήμανσης σύνταξης" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Συντακτική επισήμανση" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "Ενεργοποίηση συμπλήρωσης" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Αρίθμηση γραμμών" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Αρίθμηση γραμμών" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "Ενσωμάτωση των γραφικών απεικονίσεων στο φύλλο εργασίας" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, fuzzy, kde-format +#| msgid "" +#| "Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +#| "notebook format" +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Να αποθηκεύεται η μορφή εμπλουτισμένου κειμένου του TextEntry, όταν γίνεται " +"αποθήκευση του φύλλου εργασίας σε τύπο αποθήκευσης σημειωματαρίου Jupyter" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Εξισώσεις:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, fuzzy, kde-format +#| msgid "Ask for confirmation when restarting the backend" +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"Να γίνεται ερώτηση επιβεβαίωσης στην επανεκκίνηση του συστήματος υποστήριξης" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "Εκ νέου υπολογισμός των καταχωρήσεων αυτόματα" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, fuzzy, kde-format +#| msgid "Maximal number of result visible rows (0 for unlimited):" +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Μέγιστο πλήθος ορατών γραμμών στο αποτέλεσμα (0 για απεριόριστο):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Μέγιστο πλήθος ορατών γραμμών στο αποτέλεσμα εκτέλεσης εντολής. " +"Χρησιμοποιήστε το 0 για να εργαστείτε χωρίς περιορισμούς." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Markdown" +msgid "Markdown:" +msgstr "Markdown" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +#| msgid "Enable LaTeX typesetting for Sage backend" +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "Ενεργοποίηση στοιχειοθέτησης LaTex για το σύστημα υποστήριξης του Sage" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Εύρεση…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Προορισμοί ακατέργαστων κελιών" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Προσθήκη προσαρμοσμένου προορισμού" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Μετατροπή σε καταχώρηση κειμένου" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Μετατροπή σε ακατέργαστο κελί" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Τύπος mime προορισμού:" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Copy result" +msgstr "Αφαίρεση αποτελέσματος" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Εμφάνιση αποτύπωσης" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Εμφάνιση κώδικα" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Εμφάνιση HTML κώδικα" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Εμφάνιση του απλού εναλλακτικά" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Εμφάνιση html" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Εμφάνιση HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" +"Αδυναμία αποτύπωσης του αρχείου Eps. Μπορεί να χρειάζεστε επιπλέον πακέτα." + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Αποθήκευση αποτελέσματος" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Αδυναμία εγγραφής του αρχείου %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Αδυναμία εγγραφής στο αρχείο." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Σφάλμα αποθήκευσης του αρχείου %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"Σε λειτουργία ανάγνωσης-μόνο το Cantor δεν εγγυάται ότι η εξαγωγή θα είναι " +"έγκυρη για το %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Σφάλμα κατά τη φόρτωση του φύλλου στυλ latex.xsl" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Αδυναμία ανοίγματος του αρχείου %1." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Άνοιγμα αρχείου" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Αδυναμία ανοίγματος του επιλεγμένου αρχείου για ανάγνωση." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" +"Το επιλεγμένο αρχείο δεν είναι ένα έγκυρο αρχείο έργου Cantor ή Jupyter." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Το επιλεγμένο αρχείο δεν είναι ένα έγκυρο αρχείο έργου Cantor." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Αυτό το φύλλο εργασίας δημιουργήθηκε με χρήση Python2 το οποίο δεν " +"υποστηρίζεται πλέον. Το Python3 θα χρησιμοποιηθεί." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Το Python2 δεν υποστηρίζεται πλέον" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"Το %1 σύστημα υποστήριξης δε βρέθηκε. Αδυναμία επεξεργασίας και εκτέλεσης " +"καταχωρήσεων." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Υπάρχουν μερικά προβλήματα με το σύστημα υποστήριξης %1,\n" +"παρακαλώ ελέγξτε τη διαμόρφωσή σας ή εγκαταστήστε τα \n" +"απαιτούμενα πακέτα. Είναι δυνατή μόνο η προβολή\n" +"του συγκεκριμένου φύλλου εργασίας." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Τα σημειωματάρια Jupyter με εκδόσεις παλαιότερες της 4.5 (ανιχνεύθηκε έκδοση " +"%1.%2) δεν υποστηρίζονται." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Τα σημειωματάρια Jupyter με εκδόσεις νεότερες της 4.5 (ανιχνεύθηκε έκδοση %1." +"%2) δεν υποστηρίζονται." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Αυτό το σημειωματάριο δημιουργήθηκε με χρήση Python2 το οποίο δεν " +"υποστηρίζεται πλέον. Το Python3 θα χρησιμοποιηθεί." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "ένα αντικείμενο με κλειδιά: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "Δεν είναι τιμή αντικειμένου JSON" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "βρέθηκαν λανθασμένα δεδομένα (%1) τα οποία δεν είναι κελί Jupyter" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "Το αρχείο δεν είναι έγκυρο σημειωματάριο Jupyter" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Μη έγκυρο σχήμα σημειωματαρίου Jupyter: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Μετατροπή σε" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Εντολή" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Εικόνα" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Αλλαγή σελίδας" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Οριζόντια γραμμή" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Ιεραρχική καταχώρηση" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Εισαγωγή μετά" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Εισαγωγή πριν" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Εισαγωγή" + +#: worksheet.cpp:1916 +#, fuzzy, kde-format +#| msgid "Zoom" +msgid "Zoom In" +msgstr "Ζουμ" + +#: worksheet.cpp:1919 +#, fuzzy, kde-format +#| msgid "Zoom" +msgid "Zoom Out" +msgstr "Ζουμ" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "Μέγεθος εκτύπωσης" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Μετακίνηση καταχωρήσεων πάνω" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Μετακίνηση καταχωρήσεων κάτω" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Αξιολόγηση καταχωρήσεων" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Αφαίρεση καταχωρήσεων" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Συμπίεση αποτελεσμάτων καταχώρησης εντολής" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Επέκταση αποτελεσμάτων καταχώρησης εντολής" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Αφαίρεση αποτελεσμάτων καταχώρησης εντολής" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Αποκλεισμός καταχώρησης εντολής από την εκτέλεση" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Προσθήκη καταχώρησης εντολής στην εκτέλεση" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "&Χρώμα κειμένου..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Χρώμα" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Επισήμανση &κειμένου..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Γραμματοσειρά" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "&Μέγεθος γραμματοσειράς" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "Έ&ντονα" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Πλάγια" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Υπογράμμιση" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Επιγράμμιση" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Στοίχιση &αριστερά" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Αριστερά" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Στοίχιση στο &κέντρο" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Κέντρο" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Στοίχιση &δεξιά" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Δεξιά" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Ευθυγράμμιση" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Ευθυγράμμιση" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"Αυτή η ενέργεια θα αφαιρέσει όλα τα αποτελέσματα χωρίς τη δυνατότητα " +"ακύρωσης. Είστε βέβαιοι;" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Αφαίρεση όλων των αποτελεσμάτων" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Λευκό" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Μαύρο" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Σκούρο κόκκινο" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Κόκκινο" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Ανοιχτό κόκκινο" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Σκούρο πράσινο" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Πράσινο" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Ανοιχτό πράσινο" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Σκούρο μπλε" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Μπλε" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Ανοιχτό μπλε" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Σκούρο κίτρινο" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Κίτρινο" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Ανοιχτό κίτρινο" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Σκούρο κυανό" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Κυανό" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Ανοιχτό κυανό" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Σκούρο φούξια" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Φούξια" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Ανοιχτό φούξια" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Σκούρο πορτοκαλί" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Πορτοκαλί" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Ανοιχτό πορτοκαλί" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Σκούρο γκρι" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Γκρι" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Ανοιχτό γκρι" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Μετακίνηση πάνω" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Μετακίνηση κάτω" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Θέλετε πράγματι να αφαιρέσετε αυτήν την καταχώρηση;" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Αφαίρεση καταχώρησης" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Σύρσιμο καταχώρησης" + +#~ msgid "Animate Worksheet" +#~ msgstr "Εφέ κίνησης φύλλου εργασίας" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "Στην εκκίνηση αν έχει ρυθμιστεί ένα προκαθορισμένο σύστημα υποστήριξης, " +#~ "δημιουργήστε ένα φύλλο εργασίας για αυτό αντί να εμφανίσετε το διάλογο " +#~ "επιλογής συστήματος υποαστήριξης." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Όταν είναι ενεργοποιημένο, το Cantor θα υπολογίσει αυτόματα κάθε " +#~ "καταχώρηση που βρίσκεται κάτω από την τρέχουσα." + +#~ msgid "Defaults" +#~ msgstr "Προκαθορισμένα" + +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "Αυτη΄είναι η αρχική τιμή για τη συνεδρία «Στοιχειοθεσία με χρήση του " +#~ "LaTeX» η οποία επιτρέπει την αποτύπωση του αποτελέσματος από το σύστημα " +#~ "υποστήριξης ως latex, αν υποστηρίζεται. Για παράδειγμα, τα αποτελέσματα " +#~ "του Maxima θα αποτυπωθούν μέσω του latex, αν η επιλογή είνει ενεργή." + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "" +#~ "Ενεργοποίηση στοιχειοθέτησης LaTex (λειτουργεί μόνο αν το latex είναι " +#~ "εγκατεστημένο)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "Αυτή είναι η αρχική τιμή για τη συνεδρία «Τονισμός σύνταξης» που " +#~ "εφαρμόζει τονισμό σύνταξης μέσα στις εντολές." + +#~ msgid "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." +#~ msgstr "" +#~ "Αυτή είναι η αρχική τιμή για τη συνεδρία «Συμπλήρωση» η οποία εφαρμόζει " +#~ "αυτόματη συμπλήρωση κώδικα." + +#~ msgid "" +#~ "This is initial value for the session \"Line numbers\" option, which " +#~ "response for presence of command entries execution numbers." +#~ msgstr "" +#~ "Αυτή είναι η αρχική τιμή για τη συνεδρία «Αριθμοί γραμμών», για την " +#~ "παρουσία αρίθμησης στην εκτέλεση των εντολών." + +#~ msgid "Enable Line Numbers" +#~ msgstr "Ενεργοποίηση αρίθμησης γραμμών" + +#~ msgid "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." +#~ msgstr "" +#~ "Αυτή είναι η αρχική τιμή για τη συνεδρία «Φύλλο εργασίας με κινούμενη " +#~ "εικόνα», για την παρουσία κινούμενης εικόνας στο φύλλο εργασίας." + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Ενεργοποίηση εφέ κίνησης για το φύλλο εργασίας" + +#~ msgid "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." +#~ msgstr "" +#~ "Αυτή είναι η αρχική τιμή για τη συνεδρία «Ενσωματωμένα Μαθηματικά», η " +#~ "οποία ενεργοποιεί την αποτύπωση μαθηματικών εκφράσεων σε κείμενο και " +#~ "markdown εγγραφές." + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "" +#~ "Ενεργοποίηση ενσωματωμένων μαθηματικών (λειτουργεί μόνο εάν το pdflatex " +#~ "έχει εγκατασταθεί)" + +#~ msgid "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." +#~ msgstr "" +#~ "Αν απενεργοποιηθεί, η προειδοποίηση επανεκκίνησης δεν θα εμφανίζεται με " +#~ "το πάτημα του σχετικού κουμπιού." + +#~ msgid "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." +#~ msgstr "" +#~ "Αν ενεργοποιηθεί, σε κάθε σφάλμα μαθηματικής αποτύπωσης θα εμφανίζεται " +#~ "ένα παράθυρο πληροφοριών με την περιγραφή του σφάλματος." + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "" +#~ "Να εμφανίζεται μήνυμα σφάλματος στην αποτυχία αποτύπωσης ενσωματωμένων " +#~ "μαθηματικών" + +#~ msgid "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." +#~ msgstr "" +#~ "Αν ενεργοποιηθεί, θα χρησιμοποιείται το στιλ παράθεσης των παλαιών " +#~ "εγγραφών του Cantor (με όλες τις εγγραφές σε στοίχιση)" + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Χρήση στιλ εσοχής παλαιών εγγραφών Cantor" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Αν ενεργοποιηθεί, το Cantor θα αποθηκεύει με τύπο αποθήκευσης " +#~ "εμπλουτισμένου κειμένου του TextEntry, όταν γίνεται αποθήκευση στον τύπο " +#~ "του σημειωματαρίου Jupyter." + +#~ msgid "" +#~ "Graphical package, for which will be enable support for embedding plots" +#~ msgstr "" +#~ "Πακέτο γραφικών, για το οποίο θα ενεργοποιηθεί υποστήριξη για " +#~ "ενσωματωμένες γραφικές παραστάσεις" + +#~ msgid "" +#~ "Graphic package, which code will be used for plotting via \"Plot\" Cantor " +#~ "menu." +#~ msgstr "" +#~ "Πακέτο γραφικών, με το οποίο θα χρησιμοποιηθεί κώδικας για σχεδίαση " +#~ "παραστάσεων μέσα από το μενού «Γραφική απεικόνιση» του Cantor." + +#~ msgid "Matplotlib (with seaborn, ggplot support too)" +#~ msgstr "Matplotlib (και με υποστήριξη seaborn, ggplot)" + +#~ msgid "Plot.ly" +#~ msgstr "Plot.ly" + +#~ msgid "All supported" +#~ msgstr "Υποστηρίζονται όλα" + +#~ msgid "" +#~ "Graphic package, used for plotting. When integrated plots option is " +#~ "enabled, then plots from the package will be integrated to worksheet" +#~ msgstr "" +#~ "Πακέτο γραφικών για γραφικές απεικονίσεις. Όταν είναι ενεργοποιημένη η " +#~ "επιλογή των ενσωματωμένων γραφικών πατραστάσεων, οι παραστάσεις από το " +#~ "πακέτο ενσωματώνονται στο φύλλο εργασίας" + +#~ msgid "Graphic Package: " +#~ msgstr "Πακέτο γραφικών: " + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      Ο τρόπος του KDE για να ασχοληθείτε με τα μαθηματικά" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "Url στην τεκμηρίωση του Maxima σε τοπική γλώσσα" + +#~ msgid "" +#~ "If empty, the \"Show help\" action will show the default online " +#~ "documentation. Otherwise, the specified URL will be opened." +#~ msgstr "" +#~ "Αν είναι κενό, η ενέργεια «Εμφάνιση βοήθειας» θα εμφανίσει την " +#~ "προκαθορισμένη επιγραμμική τεκμηρίωση. Διαφορετικά, θα ανοίξει το δοσμένο " +#~ "URL." + +#~ msgid "Documentation:" +#~ msgstr "Τεκμηρίωση:" + +#~ msgid "Url to the local Python documentation" +#~ msgstr "Url στην τεκμηρίωση της Python σε τοπική γλώσσα" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "Url στην τεκμηρίωση της Octave σε τοπική γλώσσα" + +#~ msgid "Show %1 Help" +#~ msgstr "Εμφάνιση βοήθειας για το %1" + +#~ msgid "Path to Julia:" +#~ msgstr "Διαδρομή προς τη Julia:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Ενσωμάτωση γραφικών απεικονίσεων στο φύλλο εργασίας" + +#~ msgid "" +#~ "Commands to automatically run on start. They can be useful for loading " +#~ "needed modules, changing environment, etc." +#~ msgstr "" +#~ "Εντολές που εκτελούνται αυτόματα στην εκκίνηση. Χρησιμεύουν για τη " +#~ "φόρτωση των απαιτούμενων αρθρωμάτων, την αλλαγή περιβάλλοντος, κλπ." + +#~ msgid "Clear Variables" +#~ msgstr "Καθαρισμός μεταβλητών" + +#~ msgid "Right click here to insert image" +#~ msgstr "Κάντε δεξί κλικ εδώ για να εισάγετε εικόνα" + +#~ msgid "Choose Image" +#~ msgstr "Επιλογή εικόνας" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "Εικόνες (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Επιβεβαίωση - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Καταχώρηση κειμένου" + +#~ msgid "LaTeX Entry" +#~ msgstr "Καταχώρηση LaTeX" + +#~ msgid "Insert Entry Before" +#~ msgstr "Εισαγωγή καταχώρησης πριν από" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Εισαγωγή καταχώρησης κειμένου" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Διαδρομή προς την εντολή scilab-adv-cli (Προειδοποίηση: η έκδοση του " +#~ "Scilab πρέπει να είναι η 5.4 ή μεταγενέστερη)" + +#~ msgid "Insert Image Attachment" +#~ msgstr "Αντιστροφή επισυναπτόμενης εικόνας" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Εισαγωγή καταχώρησης LaTeX" + +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Διαδρομή προς το εκτελέσιμο του python εξυπηρετητή του Cantor" + +#~ msgid "" +#~ "Path to directory, which contains Cantor plugins (cantorpart and all " +#~ "backends)" +#~ msgstr "" +#~ "Η διαδρομή στον κατάλογο, η οποία περιέχει πρόσθετα του Cantor (μέρη του " +#~ "Cantor και όλα τα συστήματα υποστήριξης)" + +#~ msgid "Paths (advance settings)" +#~ msgstr "Διαδρομές (εξελιγμένες ρυθμίσεις)" + +#~ msgid "Path to Cantor plugin directory:" +#~ msgstr "Διαδρομή στον κατάλογο προσθέτων του Cantor:" + +#, fuzzy +#~| msgid "" +#~| "Path to directory, which contains Cantor plugins (cantorpart and all " +#~| "backends)" +#~ msgid "" +#~ "Path to directory, which contains Cantor backend plugins. This is " +#~ "important setting - with wrong path Cantor can't create any worksheets." +#~ msgstr "" +#~ "Η διαδρομή στον κατάλογο, η οποία περιέχει πρόσθετα του Cantor (μέρη του " +#~ "Cantor και όλα τα συστήματα υποστήριξης)" + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "Ενδιάμεσος τύπος αποθήκευσης για εμβόλιμες απεικονίσεις:" + +#~ msgid "Path to Maxima:" +#~ msgstr "Διαδρομή προς το Maxima:" + +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Διαδρομή στον python εξυπηρετητή του Cantor:" + +#~ msgid "Path to Sage:" +#~ msgstr "Διαδρομή προς το Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Διαδρομή προς την εντολή scilab-adv-cli:" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "" +#~ "Να επιτρέπεται το Cantor να παρακολουθεί τη δημιουργία/καταστροφή των " +#~ "μεταβλητών" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "" +#~ "Ενσωμάτωση γραφικών απεικονίσεων στο φύλλο εργασίας (με έναρξη νέας " +#~ "συνεδρίας σε αλλαγή)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Διαδρομή προς το εκτελέσιμο Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Διαδρομή προς την Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Ανώνυμο" + +#, fuzzy +#~| msgctxt "the url to the documentation Python 2" +#~| msgid "http://docs.python.org/2/" +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "http://docs.python.org/2/" + +#, fuzzy +#~| msgid "" +#~| "

      Python is a remarkably powerful dynamic programming language that is " +#~| "used in a wide variety of application domains. There are several Python " +#~| "packages to scientific programming.

      This backend supports Python 3." +#~| "

      " +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "

      Η Python αποτελεί μια αξιοσημείωτα ισχυρή δυναμική γλώσσα " +#~ "προγραμματισμού που χρησιμοποιείται σε μια ευρεία γκάμα τομέων εφαρμογών. " +#~ "Υπάρχουν διάφορα πακέτα της Python για επιστημονικό προγραμματισμό.

      Αυτό το σύστημα υποστήριξης υποστηρίζει την Python 3.

      " + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Επιλογή συστήματος υποστήριξης προς χρήση:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Το σύστημα υποστήριξης με το οποίο δημιουργήθηκε αυτό το αρχείο δεν έχει " +#~ "εγκατασταθεί. Χρειάζεται το %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Δημοσίευση φύλλου εργασίας" + +#~ msgid "Waiting for Image..." +#~ msgstr "Αναμονή για εικόνα..." + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "αδυναμία ανοίγματος του αρχείου %1: άγνωστο MimeType" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|Έγγραφο LaTeX" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Φύλλο εργασίας του Cantor" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Διακομιστής για το σύστημα υποστήριξης της R για το Cantor" + +#~ msgid "R Server" +#~ msgstr "R Server" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Χρήση: αρχείο saveVariables" + +#~ msgid "Saving failed." +#~ msgstr "Η αποθήκευση απέτυχε." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Χρήση: αρχείο loadVariables" + +#~ msgid "Loading failed." +#~ msgstr "Η φόρτωση απέτυχε." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2013 Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "Διαδρομή προς την εντολή python" + +#~ msgid "Cantor Server for R" +#~ msgstr "Διακομιστής του Cantor για την R" + +#~ msgid "Path to python2 command:" +#~ msgstr "Διαδρομή προς την εντολή python:" + +#~ msgid " Enable Variable Management" +#~ msgstr " Ενεργοποίηση της διαχείρισης μεταβλητών" + +#~ msgid "Could not start the server." +#~ msgstr "Αδυναμία εκκίνησης του διακομιστή." + +#~ msgid "Start Animation" +#~ msgstr "Έναρξη κινούμενης απεικόνισης" + +#~ msgid "Restart Animation" +#~ msgstr "Επανεκκίνηση κινούμενης απεικόνισης" + +#, fuzzy +#~ msgid "Append Latex Entry" +#~ msgstr "Εισαγωγή καταχώρησης" + +#~ msgid "Other" +#~ msgstr "Άλλο" + +#~ msgid "And %1 more..." +#~ msgstr "Και %1 περισσότερο..." + +#~ msgid "Main Toolbar" +#~ msgstr "Κύρια εργαλειοθήκη" + +#~ msgid "Popup" +#~ msgstr "Αναδυόμενο" + +#~ msgid "The style used for Completion" +#~ msgstr "Το στυλ που χρησιμοποιείται για την ολοκλήρωση" + +#, fuzzy +#~ msgid "Insert Command Entry Before" +#~ msgstr "Εισαγωγή καταχώρησης" + +#, fuzzy +#~ msgid "Command Entry Before" +#~ msgstr "Εισαγωγή καταχώρησης" + +#~ msgid "Help" +#~ msgstr "Βοήθεια" + +#~ msgid "Show Help Panel" +#~ msgstr "Εμφάνιση του πίνακα βοήθειας" diff --git a/po/en_GB/cantor.po b/po/en_GB/cantor.po new file mode 100644 index 0000000..b968e84 --- /dev/null +++ b/po/en_GB/cantor.po @@ -0,0 +1,5323 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Andrew Coles , 2009, 2010, 2011. +# Steve Allewell , 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-08-07 11:12+0100\n" +"Last-Translator: Steve Allewell \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 22.04.3\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Andrew Coles, Steve Allewell" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "andrew_coles@yahoo.co.uk, steve.allewell@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pause" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Start" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Stop" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Save animation result" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Animations (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Advanced Plotting" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Plot" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Expression:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Additional options:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Plot" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Option active" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Calculate" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Differentiate" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variable:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Times: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Package" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Import Package" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Package:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integrate" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Lower limit:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Upper limit:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "definite integral" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Linear Algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Create Matrix" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Columns:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Rows:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Compute Eigenvalues" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrix:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Compute Eigenvectors" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Invert Matrix" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Plot 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variable" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Name" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimum:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maximum:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Plot 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1st Variable" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2nd Variable" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Run Script" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Solve equations" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Equations:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variables:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Select the Backend" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Recommended version: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      See %2 for more information." + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Some requirements are not fulfilled: %1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Make this the default backend" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Path to the Julia native REPL" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Enable Variable Management" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Integrate Plots into the Worksheet" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Graphical package for the Plot-Assistant" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Sorry, but Gadfly don't support 3d plots" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Julia script file (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Error - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"Julia session cannot login due internal julia problem with missing internal " +"file - \"%1\"" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "Julia session cannot login due unknown internal problem" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Julia process stopped working." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Failed to start Julia process." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "Communication with Julia process failed for unknown reasons." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"For Julia only GR (https://gr-framework.org/), a framework for visualisation " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "General" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Executable:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Plot Integration:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Enabled" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Variable Management:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Internal Plot Format:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "Inner format of plots, if plots embedding is enabled." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Graphic package to be used in the Plot Assistant" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Package for Plot Assistant" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Plots" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Autorun" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Commands to autorun" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Documentation" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "List of scripts to autorun at the beginning of session" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Error: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at maths and " +"science." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Path to luajit command" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Lua script file (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Path to luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialise. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognised topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognised topics." + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Path to the Maxima executable" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Error: Too many */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Error: Too many /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Error: expected \" before ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Waiting for the plot result" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Maxima batch file (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Failed to start Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima crashed. restarting..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "Maxima crashed twice within a short time. Stopping to try starting" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and non-linear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Octave script file (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Syntax Error" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Plot integration test failed." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "The integration of plots will be disabled." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"The plot integration doesn't work because Cantor found, that Octave cannot " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# Sorry, but Bokeh doesn't support 3d plotting" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Python script file (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Cantor Python server stopped working." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Failed to start Cantor python server." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "Communication with Cantor python server failed for unknown reasons." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Plot Dialogue" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Functions" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Title" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Expression" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Add" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Remove" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Clear List" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "X variable" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Style" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Lines" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Points" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Points and Lines" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Boxes" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogram" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Steps" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Candlesticks" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Dots" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Smoothing" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "None" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monotonic" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Natural Cubic Splines" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (monotonic)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Function Range" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X range" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Sa&mpling rate" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Step si&ze" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Options" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Plot title" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "X-axis label" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Y-axis label" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Legend position" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Hide legend" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Top-left" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Top-right" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Bottom-left" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Bottom-right" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Below" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Outside" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Display Grid" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Display full border" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Use Colours" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Display inline" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logarithmic x scale" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logarithmic y scale" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "File Options" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Save plot to file" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "File type" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Detect from filename" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The centre of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Default angle unit for trigonometric functions." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Base of parsed and evaluated numbers." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "If the evaluation result will be simplified or factorised." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Numerical display." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Whether colours should be used in plots." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Whether a grid should be plotted." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Whether full borders should be drawn around the plot." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Width of lines, in pixels." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Number of interpolation steps to be used in plotting." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Smoothing mode in plots." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Style of plots." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Legend position in plots." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate reports it cannot print. Is gnuplot installed?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "missing %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 must be a number." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 must be a integer." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 must be a boolean." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "invalid option for %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "found multiple expressions in one plot command (%1 and %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "ERROR" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "WARNING" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "No function, variable or unit with specified name exist." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Function: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Plotting interface" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "Plots one or more functions either inline or in a separate window." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "expression" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "option" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "value" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "integer" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "boolean" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "number" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "default: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "The function's name" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Title label" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "x-axis label" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "y-axis label" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "Set to true for coloured plot, false for monochrome." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Minimum x-axis value." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Maximum x-axis value." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "If a logarithmic scale shall be used for the x-axis." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "If a logarithmic scale shall be used for the y-axis." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Logarithmic base for the x-axis." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Logarithmic base for the y-axis." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "If a grid shall be shown in the plot." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"If the plot shall be surrounded by borders on all sides (not just axis)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Width of lines." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "Plot smoothing. One of none, unique, csplines, bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Use scale on second x-axis." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Use scale on second y-axis." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "If the plot is to be drawn inline, instead of in a new window." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Distance between two interpolation points. See also steps." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Number of interpolation points. See also step." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "The name of the x variable. This must be an unknown variable" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Save variables to a file" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Save all currently defined variables to a file. They can be reloaded with %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "file" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "file: the file to save to" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Load variables from a file" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Load variables from a file that has previously been created by %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "file: the file to load" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Number base:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Fraction format:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Decimal" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Exact" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Fractional" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Combined" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Numerical display:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Pure" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Scientific" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Precision" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Indicate infinite series:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Use all SI prefixes:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Use negative exponents:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Evaluate" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Convert to best SI units:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radians" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Degrees" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradians" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Structuring Mode:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Simplify" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Factorise" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Angle unit:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Plotting" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Display plots inline:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Show full borders:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Width of lines:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Sampling rate:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Smoothing Mode:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Natural cubic Splines" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Steps" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Legend Position:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Coloured Plots:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Show grid:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Plot Style:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Modify Entry" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Add New Entry" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Name cannot be empty." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Add local documentation" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Get New Documentation" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Download additional documentations" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Qt Compressed Help file is not valid." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Documentation already imported" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Modify" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Delete" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Please uninstall this via GHNS." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Install Additional Documentation Files" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Name" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Path" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Add" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Icon:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Select an icon" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Name:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Enter a name" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Select a name..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Path:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Select a Qt Help file..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Select a Qt Help file..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and non-linear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Error opening file %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "R script file (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Error Parsing Command" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "URL to the local R documentation" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Double click to open file selection dialogue" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R source files (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Path to the Sage executable" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Enable LaTeX typesetting for Sage backend" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Result of %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"The last output was: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Python script file (*.py);;Sage script file (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "The Sage process crashed while evaluating this expression" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "The Sage process crashed" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "The Sage process exited while evaluating this expression" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "The Sage process exited" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Failed to start Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "LaTeX typesetting:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL licence (GPL compatible)." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Path to the Scilab executable" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Scilab script file (*.sce);;Scilab function file (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "The file %1 is already opened." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Open file" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Download Examples" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Open Example" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Go to previous worksheet" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Go to next worksheet" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the configuration dialogue;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgstr[1] "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the configuration dialogue;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Error" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Backend %1 is not installed" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Session %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Failed to find the Cantor Part with error %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Calculating..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Ready" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Changed" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "Multiple unsaved Worksheets are opened. Do you want to close them?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Close Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "The current project has been modified. Do you want to save it?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Save Project" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Formatting" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "The Backend that is used by default" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Do Typesetting by default" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Do Syntax Highlighting by default" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Enable Completions by default" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Enable Numbering of Expressions by default" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Animate changes in the Worksheet by default" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Enable rendering maths expressions inside $$..$$ in Text and Markdown " +"entries by default (needs pdflatex installed)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Automatically reevaluate the entries below the current" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Ask for confirmation when restarting the backend" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Use old style Cantor entries placement style" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Show embedded maths render error" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Limit of visible lines for text result" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Hierarchy font for chapter" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Hierarchy font size for chapter" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Hierarchy font italic for chapter" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Hierarchy font bold for chapter" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Hierarchy font for subchapter" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Hierarchy font size for subchapter" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Hierarchy font italic for subchapter" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Hierarchy font bold for subchapter" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Hierarchy font for section" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Hierarchy font italic for section" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Hierarchy font bold for section" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Hierarchy font for subsection" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Hierarchy font italic for subsection" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Hierarchy font bold for subsection" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Hierarchy font for paragraph" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Hierarchy font italic for paragraph" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Hierarchy font bold for paragraph" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Hierarchy font for subparagraph" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Hierarchy font italic for subparagraph" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Hierarchy font bold for subparagraph" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Save Plain Text" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Export to LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Evaluate Worksheet" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Typeset using LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Syntax Highlighting" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Completion" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Line Numbers" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Animations" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Embedded Maths" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Restart Backend" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Evaluate Entry" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Insert Command Entry" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Insert Text Entry" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Insert Markdown Entry" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Insert LaTeX Entry" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Insert Page Break" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Insert Image" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Collapse All Results" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Expand All Results" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Remove All Results" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Remove current Entry" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Show Script Editor" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Show Completion" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Cantor Worksheet (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyter Notebook (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Save as" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Save" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Restart %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Interrupt" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Session Error: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Initialisation complete" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Initialising..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[read-only]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Do you want to upload current Worksheet to public web server?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Question - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "The Worksheet is not saved. You should save it before uploading." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Warning - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "This backend does not support scripts." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Edit" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&View" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Worksheet" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Settings" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&File" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&New" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Panels" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Settings" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Background Colour" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Default" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Text Colour" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Font" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Bold" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Italic" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Increase Size" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Decrease Size" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Select" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Reset to Default" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Show Results" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Hide Results" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Show Help" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Appearance" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Interrupted" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "SearchBar" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Find:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Next" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Previous" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Replace:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Replace" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Replace &All" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Search in:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Match case" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Hierarchy Fonts" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Chapter Font" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Font Family:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Font Size:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Subchapter Font" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Section Font" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Subsection Font" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Paragraph Font" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Subparagraph Font" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Chapter" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Subchapter" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Section" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Subsection" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Paragraph" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Subparagraph" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Set Hierarchy Level" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Solid Line Style" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Dash Line Style" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Dot Line Style" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Dash Dot Line Style" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Dash Dot Dot Line Style" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Line Thickness" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Thin" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Medium" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Thick" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Line Colour" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Line Style" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Configure Image" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Double click here to configure image settings" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Cannot load image %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Save image result" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Images (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Image Settings" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Open" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Display Size" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Width" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Height" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Preview" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Print Size" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Use Display Size" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Image Settings" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(auto)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Open image file" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Show LaTeX code" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "Failed to open the file %1 during the plot integration test." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "Failed to parse the result during the plot integration test." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Path to the latex executable" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Path to the dvips executable" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Value" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 bytes>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "From:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "To:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Main title" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Abscissa scale" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Ordinate scale" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Plot title:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "This is unsupported Jupyter content of types ('%1')" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "%1 process has died unexpectedly. All calculation results are lost." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"You choose support for %1 graphic package, but the support cannot be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDE Frontend to mathematical applications" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Maintainer
      Qt5/KF5 port, Scilab and Python backends" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Developer" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Original author
      Maintainer (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra backend" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave backend" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Interface" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Cantor icon" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Use backend " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Documents to open." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Could not open the file %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Enter Edit Mode" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Clear Attachments" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Cantor Maths Error" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Failed to read the image \"%1\". Error \"%2\"" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Page Break ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Go to the contents" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Search through keywords..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Find in text of current documentation page" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Reset zoom level to 100%" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Close" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Jump to next match" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Jump to previous match" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Match case sensitively" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "The file has been downloaded successfully at Downloads." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Download Successful" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Cantor files" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Jupyter files" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "All supported files" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "All files" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Name:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Value:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Add New Variable" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Load Variables" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Save Variables" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Remove Variables" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Search/Filter" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Case Sensitive" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Match Complete Word" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Are you sure you want to remove all variables?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Load file" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Save result" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Remove result" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Script Editor" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Script Editor - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Not found" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Reached beginning" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Reached end" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Replaced %1 instance" +msgstr[1] "Replaced %1 instances" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Commands" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Results" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Errors" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Text" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX Code" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "Startup:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Default Backend:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Worksheet:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "LaTeX typesetting" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Enable syntax highlighting" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Syntax highlighting" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "Enable syntax completion" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Show line numbers" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Line numbers" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Enable animation effects in the worksheet" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "Do not indent text entries" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "Evaluation:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" +"If enabled, all entries below the current one will be evaluated automatically" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "Reevaluate entries automatically" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Number of rows in the result (0 for unlimited):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "Mathematical expressions via LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "Notify about render failures for mathematical expressions" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Find…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Raw Cell Targets" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Add custom target" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Convert to Text Entry" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Convert to Raw Cell" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Target MIME type:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Copy result" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Show Rendered" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Show Code" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Show HTML Code" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Show Plain Alternative" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Show Html" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Show HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Cannot render Eps file. You may need additional packages" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Save text result" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "Text Files (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Cannot write file %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Cannot write file." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Error saving file %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"In read-only mode Cantor could not guarantee, that the export will be valid " +"for %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Error loading latex.xsl stylesheet" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Could not open the file %1." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Open File" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Could not open the selected file for reading." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "The selected file is not a valid Cantor or Jupyter project file." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "The selected file is not a valid Cantor project file." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"This worksheet was created using Python2 which is not supported any more. " +"Python3 will be used." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python2 not supported any more" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"%1 backend was not found. Editing and executing entries is not possible." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"This notebook was created using Python2 which is not supported any more. " +"Python3 will be used." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "an object with keys: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "non object JSON value" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "found incorrect data (%1) that is not Jupyter cell" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "The file is not valid Jupyter notebook" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Invalid Jupyter notebook scheme: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Convert To" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Command" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Image" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Page Break" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Horizontal Line" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Hierarchy Entry" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Insert After" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Insert Before" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Insert" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Zoom In" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Zoom Out" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Original Size" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Move Entries Up" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Move Entries Down" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Evaluate Entries" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Remove Entries" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Collapse Command Entry Results" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Expand Command Entry Results" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Remove Command Entry Results" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Exclude Command Entry From Execution" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Add Command Entry To Execution" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Text &Colour..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Colour" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Text &Highlight..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Font" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Font &Size" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Bold" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Italic" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Underline" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Strike Out" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Align &Left" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Left" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Align &Centre" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Centre" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Align &Right" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Right" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Justify" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Justify" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Remove all results" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "White" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Black" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Dark Red" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Red" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Light Red" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Dark Green" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Green" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Light Green" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Dark Blue" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Blue" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Light Blue" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Dark Yellow" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Yellow" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Light Yellow" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Dark Cyan" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Cyan" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Light Cyan" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Dark Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Light Magenta" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Dark Orange" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Orange" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Light Orange" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Dark Grey" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Grey" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Light Grey" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Move Up" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Move Down" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Do you really want to remove this entry?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Remove Entry" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Drag Entry" + +#~ msgid "Animate Worksheet" +#~ msgstr "Animate Worksheet" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialogue." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." + +#~ msgid "Defaults" +#~ msgstr "Defaults" + +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "Enable LaTeX Typesetting (works only if latex is installed)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." + +#~ msgid "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." +#~ msgstr "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." + +#~ msgid "" +#~ "This is initial value for the session \"Line numbers\" option, which " +#~ "response for presence of command entries execution numbers." +#~ msgstr "" +#~ "This is initial value for the session \"Line numbers\" option, which " +#~ "response for presence of command entries execution numbers." + +#~ msgid "Enable Line Numbers" +#~ msgstr "Enable Line Numbers" + +#~ msgid "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." +#~ msgstr "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Enable Worksheet Animations" + +#~ msgid "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." +#~ msgstr "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "Enable Embedded Maths (works only if pdflatex is installed)" + +#~ msgid "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." +#~ msgstr "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." + +#~ msgid "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." +#~ msgstr "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "Show message about error on render failure of embedded maths" + +#~ msgid "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." +#~ msgstr "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Use old Cantor entries indent style" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." + +#~ msgid "" +#~ "Graphical package, for which will be enable support for embedding plots" +#~ msgstr "" +#~ "Graphical package, for which will be enable support for embedding plots" + +#~ msgid "" +#~ "Graphic package, which code will be used for plotting via \"Plot\" Cantor " +#~ "menu." +#~ msgstr "" +#~ "Graphic package, which code will be used for plotting via \"Plot\" Cantor " +#~ "menu." + +#~ msgid "Matplotlib (with seaborn, ggplot support too)" +#~ msgstr "Matplotlib (with seaborn, ggplot support too)" + +#~ msgid "Plot.ly" +#~ msgstr "Plot.ly" + +#~ msgid "All supported" +#~ msgstr "All supported" + +#~ msgid "" +#~ "Graphic package, used for plotting. When integrated plots option is " +#~ "enabled, then plots from the package will be integrated to worksheet" +#~ msgstr "" +#~ "Graphic package, used for plotting. When integrated plots option is " +#~ "enabled, then plots from the package will be integrated to worksheet" + +#~ msgid "Graphic Package: " +#~ msgstr "Graphic Package: " + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      The KDE way to do Mathematics" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "URL to the local Maxima documentation" + +#~ msgid "" +#~ "If empty, the \"Show help\" action will show the default online " +#~ "documentation. Otherwise, the specified URL will be opened." +#~ msgstr "" +#~ "If empty, the \"Show help\" action will show the default online " +#~ "documentation. Otherwise, the specified URL will be opened." + +#~ msgid "Documentation:" +#~ msgstr "Documentation:" + +#~ msgid "Url to the local Python documentation" +#~ msgstr "URL to the local Python documentation" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "URL to the local Octave documentation" + +#~ msgid "Show %1 Help" +#~ msgstr "Show %1 Help" + +#~ msgid "Path to Julia:" +#~ msgstr "Path to Julia:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Integrate Plots in Worksheet" + +#~ msgid "" +#~ "Commands to automatically run on start. They can be useful for loading " +#~ "needed modules, changing environment, etc." +#~ msgstr "" +#~ "Commands to automatically run on start. They can be useful for loading " +#~ "needed modules, changing environment, etc." + +#~ msgid "Clear Variables" +#~ msgstr "Clear Variables" + +#~ msgid "Exclude from Execution" +#~ msgstr "Exclude from Execution" + +#~ msgid "Add to Execution" +#~ msgstr "Add to Execution" + +#~ msgid "Right click here to insert image" +#~ msgstr "Right click here to insert image" + +#~ msgid "Choose Image" +#~ msgstr "Choose Image" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "Images (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Confirmation - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Text Entry" + +#~ msgid "LaTeX Entry" +#~ msgstr "LaTeX Entry" + +#~ msgid "Insert Entry Before" +#~ msgstr "Insert Entry Before" + +#~ msgid "Insert Horizontal Line" +#~ msgstr "Insert Horizontal Line" + +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Insert Hierarchy Entry" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" + +#~ msgid "Insert Image Attachment" +#~ msgstr "Insert Image Attachment" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Insert Latex Entry" + +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Path to Cantor python server executable" + +#~ msgid "" +#~ "Path to directory, which contains Cantor plugins (cantorpart and all " +#~ "backends)" +#~ msgstr "" +#~ "Path to directory, which contains Cantor plugins (cantorpart and all " +#~ "backends)" + +#~ msgid "Paths (advance settings)" +#~ msgstr "Paths (advance settings)" + +#~ msgid "Path to Cantor plugin directory:" +#~ msgstr "Path to Cantor plugin directory:" + +#~ msgid "" +#~ "Path to directory, which contains Cantor backend plugins. This is " +#~ "important setting - with wrong path Cantor can't create any worksheets." +#~ msgstr "" +#~ "Path to directory, which contains Cantor backend plugins. This is " +#~ "important setting - with wrong path Cantor can't create any worksheets." + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "Inline Plots Intermediate Format:" + +#~ msgid "Path to Maxima:" +#~ msgstr "Path to Maxima:" + +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Path to Cantor Python Server:" + +#~ msgid "Path to Sage:" +#~ msgstr "Path to Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Path to scilab-adv-cli command:" + +#~ msgid "" +#~ "If default backend is setted, then on startup instead of the backend " +#~ "chooser dialog will be created worksheet of the default backend" +#~ msgstr "" +#~ "If a default backend is set, then on startup instead of the backend " +#~ "chooser dialogue, a worksheet for the default backend will be created" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Let Cantor follow the creation/destruction of variables" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "Integrate Plots in Worksheet (start a new session when changed)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Path to the Octave executable" + +#~ msgid "Path to Octave:" +#~ msgstr "Path to Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Unnamed" + +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "https://docs.python.org/2/" + +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "You should set path to Julia executable" +#~ msgstr "You should set path to Julia executable" + +#~ msgid "" +#~ "Path to Julia should point directly to julia executable, symlink not " +#~ "allowed" +#~ msgstr "" +#~ "Path to Julia should point directly to julia executable, symlink not " +#~ "allowed" + +#~ msgid "" +#~ "Lua backend needs installed Lua programming language. The backend often " +#~ "automatically finds needed Lua binary file, but not in this case. Please, " +#~ "go to Cantor settings and set path to Lua executable." +#~ msgstr "" +#~ "Lua backend needs installed Lua programming language. The backend often " +#~ "automatically finds needed Lua binary file, but not in this case. Please, " +#~ "go to Cantor settings and set path to Lua executable." + +#~ msgid "" +#~ "In Lua backend settings a path to Lua binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Lua? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "In Lua backend settings a path to Lua binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Lua? " +#~ "Change this path in Cantor settings, if no." + +#~ msgid "" +#~ "Maxima backend needs installed Maxima - a computer algebra system. The " +#~ "backend often automatically finds needed binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Maxima executable" +#~ msgstr "" +#~ "Maxima backend needs installed Maxima - a computer algebra system. The " +#~ "backend often automatically finds needed binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Maxima executable" + +#~ msgid "" +#~ "In Maxima backend settings a path to maxima binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Maxima? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "In Maxima backend settings a path to maxima binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Maxima? Change this path in Cantor settings, if no." + +#~ msgid "" +#~ "Octave backend needs installed Octave programming language. The backend " +#~ "often automatically finds needed Octave binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Octave binary file " +#~ "with command line interface (CLI)" +#~ msgstr "" +#~ "Octave backend needs installed Octave programming language. The backend " +#~ "often automatically finds needed Octave binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Octave binary file " +#~ "with command line interface (CLI)" + +#~ msgid "" +#~ "In Octave backend settings a path to Octave binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Octave? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "In Octave backend settings a path to Octave binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Octave? Change this path in Cantor settings, if no." + +#~ msgid "" +#~ "R backend uses special binary file - cantor_rserver (installed with R " +#~ "backend), which must be executable." +#~ msgstr "" +#~ "R backend uses special binary file - cantor_rserver (installed with R " +#~ "backend), which must be executable." + +#~ msgid "" +#~ "Sage backend needs installed Sage programming language. The backend often " +#~ "automatically finds needed Sage binary file, but not in this case. " +#~ "Please, go to Cantor settings and set path to Sage executable" +#~ msgstr "" +#~ "Sage backend needs installed Sage programming language. The backend often " +#~ "automatically finds needed Sage binary file, but not in this case. " +#~ "Please, go to Cantor settings and set path to Sage executable" + +#~ msgid "" +#~ "In Sage backend settings a path to Sage binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Sage? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "In Sage backend settings a path to Sage binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Sage? " +#~ "Change this path in Cantor settings, if no." + +#~ msgid "" +#~ "Scilab backend needs installed Scilab programming language. The backend " +#~ "often automatically finds needed Scilab binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Scilab executable" +#~ msgstr "" +#~ "Scilab backend needs installed Scilab programming language. The backend " +#~ "often automatically finds needed Scilab binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Scilab executable" + +#~ msgid "" +#~ "In Scilab backend settings a path to Scilab binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Scilab? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "In Scilab backend settings a path to Scilab binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Scilab? Change this path in Cantor settings, if no." + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Choose the Backend to use:" + +#~ msgid "" +#~ "The file is old Jupyter notebook (found version %1.%2), which isn't " +#~ "supported by Cantor" +#~ msgstr "" +#~ "The file is old Jupyter notebook (found version %1.%2), which isn't " +#~ "supported by Cantor" + +#~ msgid "" +#~ "Julia backend uses special binary file - %1 (installed with Julia " +#~ "backend), which must be executable" +#~ msgstr "" +#~ "Julia backend uses special binary file - %1 (installed with Julia " +#~ "backend), which must be executable" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Publish Worksheet" + +#~ msgid "Waiting for Image..." +#~ msgstr "Waiting for Image..." + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "cannot open file %1: Unknown MimeType" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|LaTeX Document" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantor Worksheet" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Server for the Cantor R Backend" + +#~ msgid "R Server" +#~ msgstr "R Server" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Usage: saveVariables file" + +#~ msgid "Saving failed." +#~ msgstr "Saving failed." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Usage: loadVariables file" + +#~ msgid "Loading failed." +#~ msgstr "Loading failed." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2013 Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "Path to python command" + +#~ msgid "Cantor Server for R" +#~ msgstr "Cantor Server for R" + +#~ msgid "Could not start the server." +#~ msgstr "Could not start the server." + +#~ msgid "Start Animation" +#~ msgstr "Start Animation" + +#~ msgid "Restart Animation" +#~ msgstr "Restart Animation" + +#, fuzzy +#~| msgid "Append Text Entry" +#~ msgid "Append Latex Entry" +#~ msgstr "Append Text Entry" + +#~ msgid "Other" +#~ msgstr "Other" + +#~ msgid "And %1 more..." +#~ msgstr "And %1 more..." + +#~ msgid "Main Toolbar" +#~ msgstr "Main Toolbar" + +#~ msgid "Popup" +#~ msgstr "Popup" + +#~ msgid "The style used for Completion" +#~ msgstr "The style used for Completion" + +#~ msgid "Insert Command Entry Before" +#~ msgstr "Insert Command Entry Before" + +#~ msgid "Command Entry Before" +#~ msgstr "Command Entry Before" + +#~ msgid "GroupBox" +#~ msgstr "GroupBox" + +#~ msgid "This test requires a functioning %1 backend" +#~ msgstr "This test requires a functioning %1 backend" + +#~ msgid "Form" +#~ msgstr "Form" + +#~ msgid "Help" +#~ msgstr "Help" + +#~ msgid "Show Help Panel" +#~ msgstr "Show Help Panel" + +#~ msgid "Error uploading File %1" +#~ msgstr "Error uploading File %1" + +#~ msgid "MathematiKPart" +#~ msgstr "MathematiKPart" + +#~ msgid "MathematiK" +#~ msgstr "MathematiK" + +#, fuzzy +#~ msgid "" +#~ "

      No Backend Found

      \n" +#~ "
      You could " +#~ "try: \n" +#~ "
        \n" +#~ "
      • Changing the settings in the " +#~ "config dialog;
      • \n" +#~ "
      • Installing packages for one of " +#~ "the following programs:
      • \n" +#~ " %1 \n" +#~ "
          \n" +#~ "
      " +#~ msgstr "" +#~ "

      No Backend found!

      \n" +#~ "
      You may " +#~ "try: \n" +#~ "
        \n" +#~ "
      • change settings in the config " +#~ "dialog
      • \n" +#~ "
      • Install packages for one of the " +#~ "following Software:
      • \n" +#~ " %1 \n" +#~ "
          \n" +#~ "
      " diff --git a/po/eo/cantor.po b/po/eo/cantor.po new file mode 100644 index 0000000..9ea91d1 --- /dev/null +++ b/po/eo/cantor.po @@ -0,0 +1,4590 @@ +# Translation of cantor into esperanto. +# Axel Rousseau , 2009. +# Eliovir , 2015. #zanata +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2015-03-15 08:54-0400\n" +"Last-Translator: Eliovir \n" +"Language-Team: esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Zanata 3.5.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Axel Rousseau" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "axel@esperanto-jeunes.org" + +# auto translated by TM merge from project: Enlightenment, version: master, DocId: enlightenment/modules/photo/po/photo +#: animationresultitem.cpp:38 +#, fuzzy, kde-format +msgid "Pause" +msgstr "Paŭzo" + +# auto translated by TM merge from project: KDE por esperantistoj, version: kdeedu, DocId: kdeedu/marble +#: animationresultitem.cpp:41 +#, fuzzy, kde-format +msgid "Start" +msgstr "Startigo" + +# auto translated by TM merge from project: KDE por esperantistoj, version: kdeedu5, DocId: kdeedu/parley +#: animationresultitem.cpp:45 +#, fuzzy, kde-format +msgid "Stop" +msgstr "Halti" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Esprimo:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Kromaj elektebloj:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Kalkulu" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variablo:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Fojoj:" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importi pakon" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Pakon:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Malsupra limo:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Supra limo:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Krei matricon" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Kolumnoj:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Vicoj:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrico:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variablo" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Nomo" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimumo:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maksimumo:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1a variablo" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2a variablo" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, fuzzy, kde-format +msgid "Run Script" +msgstr "Informpeti" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Ekvacioj:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variabloj:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Ĝeneralo" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Variable:" +msgid "Variable Management:" +msgstr "Variablo:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +msgid "Documentation" +msgstr "La dosiero malfermiĝi" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://edu.kde.org/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Eraro: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, fuzzy, kde-format +#| msgctxt "Lua official documentation" +#| msgid "http://www.lua.org/docs.html" +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "http://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, fuzzy, kde-format +msgid "Expression" +msgstr "Esprimo:" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, fuzzy, kde-format +msgid "Remove" +msgstr "Rezulto" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, fuzzy, kde-format +msgid "Clear List" +msgstr "Variablo" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, fuzzy, kde-format +msgid "X variable" +msgstr "Variablo" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, fuzzy, kde-format +msgid "expression" +msgstr "Esprimo:" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, fuzzy, kde-format +msgid "value" +msgstr "Variablo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, fuzzy, kde-format +msgid "Load variables from a file" +msgstr "Variablo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, fuzzy, kde-format +msgid "Precision" +msgstr "Esprimo:" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "2nd Variable" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "2a variablo" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +msgid "Add local documentation" +msgstr "La dosiero malfermiĝi" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "La dosiero malfermiĝi" + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Additional options:" +msgid "Download additional documentations" +msgstr "Kromaj elektebloj:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, fuzzy, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Nomo" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Nomo" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, fuzzy, kde-format +#| msgctxt "Lua official documentation" +#| msgid "http://www.lua.org/docs.html" +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "http://www.lua.org/docs.html" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, fuzzy, kde-format +#| msgid "Open" +msgid "Open file" +msgstr "Malfermi" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +msgstr[1] "" + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Eraro" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Seanco %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Kalkulante..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Preta" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Close Cantor" +msgstr "Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Sintaksemfazo" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Animations" +msgstr "Ekvacioj:" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "" + +#: cantor_part.cpp:278 +#, fuzzy, kde-format +msgid "Insert Markdown Entry" +msgstr "Rezulto" + +#: cantor_part.cpp:285 +#, fuzzy, kde-format +msgid "Insert LaTeX Entry" +msgstr "Rezulto" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +msgid "Expand All Results" +msgstr "Rezulto" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +msgid "Remove All Results" +msgstr "Rezulto" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "" + +#: cantor_part.cpp:406 +#, fuzzy, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Interrompoj" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Rigardi" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "A&gordo" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Dosiero" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, fuzzy, kde-format +msgid "&New" +msgstr "Nova" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "A&gordo" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, fuzzy, kde-format +msgid "Show Results" +msgstr "Rezulto" + +#: commandentry.cpp:338 +#, fuzzy, kde-format +msgid "Hide Results" +msgstr "Rezulto" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +msgid "Show Help" +msgstr "Rezulto" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +msgid "Save image result" +msgstr "Rezulto" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +msgid "Images (%1)" +msgstr "Rezulto" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, fuzzy, kde-format +msgid "Image Settings" +msgstr "A&gordo" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Malfermi" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "A&gordo" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, fuzzy, kde-format +msgid "px" +msgstr "x" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "" + +#: lib/defaultvariablemodel.cpp:70 +#, fuzzy, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Variablo" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +msgid "" +msgstr "Variablo" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "" + +#: main.cpp:74 +#, fuzzy, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, fuzzy, kde-format +#| msgid "Alexander Rieder" +msgid "Alexander Semke" +msgstr "Alexander Rieder" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "" + +#: main.cpp:86 main.cpp:87 +#, fuzzy, kde-format +msgid "Cantor icon" +msgstr "Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "" + +#: main.cpp:95 +#, fuzzy, kde-format +msgid "Documents to open." +msgstr "La dosiero malfermiĝi" + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +msgid "Cantor files" +msgstr "Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "Open" +msgid "Jupyter files" +msgstr "Malfermi" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, fuzzy, kde-format +msgid "Name:" +msgstr "Nomo" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "2nd Variable" +msgid "Add New Variable" +msgstr "2a variablo" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, fuzzy, kde-format +msgid "Load Variables" +msgstr "Variablo" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +msgid "Save Variables" +msgstr "Variablo" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +msgid "Remove Variables" +msgstr "Variablo" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +msgid "Load file" +msgstr "Variablo" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "" + +#: resultitem.cpp:60 +#, fuzzy, kde-format +msgid "Remove result" +msgstr "Rezulto" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Ne trovis KDE-tekstredaktilan komponanton;\n" +"bonvolu kontroli vian KDE-instalon." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" +msgstr[1] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +msgid "Results" +msgstr "Rezulto" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +msgid "Errors" +msgstr "Eraro" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "" + +# auto translated by TM merge from project: KDE por esperantistoj, version: kdeedu, DocId: kdeedu/marble +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +msgid "Startup:" +msgstr "Startigo" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Sintaksemfazo" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Sintaksemfazo" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Ekvacioj:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +msgid "Markdown:" +msgstr "Rezulto" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, fuzzy, kde-format +msgid "Convert to Text Entry" +msgstr "Rezulto" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +msgid "Copy result" +msgstr "Rezulto" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +msgid "Save text result" +msgstr "Rezulto" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "" + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +#| msgid "Open" +msgid "Open File" +msgstr "Malfermi" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +msgid "Convert To" +msgstr "Rezulto" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +msgid "Markdown" +msgstr "Rezulto" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, fuzzy, kde-format +msgid "Image" +msgstr "Rezulto" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +msgid "Hierarchy Entry" +msgstr "Rezulto" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +msgid "Insert After" +msgstr "Rezulto" + +#: worksheet.cpp:1856 +#, fuzzy, kde-format +msgid "Insert Before" +msgstr "Rezulto" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +msgid "Move Entries Down" +msgstr "Rezulto" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +msgid "Remove Entries" +msgstr "Rezulto" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +msgid "Remove Command Entry Results" +msgstr "Rezulto" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "" + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "" + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "" + +#: worksheet.cpp:2111 +#, fuzzy, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "Enlinia" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +msgid "Remove all results" +msgstr "Rezulto" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +#| msgid "Ready" +msgid "Red" +msgstr "Preta" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, fuzzy, kde-format +msgid "Remove Entry" +msgstr "Rezulto" + +#: worksheetentry.cpp:850 +#, fuzzy, kde-format +msgid "Drag Entry" +msgstr "Rezulto" + +#, fuzzy +#~| msgid "Package:" +#~ msgid "Graphic Package: " +#~ msgstr "Pakon:" + +#, fuzzy +#~ msgid "Documentation:" +#~ msgstr "La dosiero malfermiĝi" + +#, fuzzy +#~ msgid "Clear Variables" +#~ msgstr "Variablo" + +#, fuzzy +#~ msgid "LaTeX Entry" +#~ msgstr "Rezulto" + +#, fuzzy +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Rezulto" + +#, fuzzy +#~ msgid "Insert Latex Entry" +#~ msgstr "Rezulto" + +#, fuzzy +#~ msgid "Unnamed" +#~ msgstr "Uzantnomo" + +#, fuzzy +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://wiki.r-project.org/rwiki/doku.php?id=rdoc:rdoc" + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#, fuzzy +#~ msgid "Usage: loadVariables file" +#~ msgstr "Variablo" + +#, fuzzy +#~ msgid "Loading failed." +#~ msgstr "Variablo" diff --git a/po/es/cantor.po b/po/es/cantor.po new file mode 100644 index 0000000..18379aa --- /dev/null +++ b/po/es/cantor.po @@ -0,0 +1,4927 @@ +# translation of mathematik.po to Spanish +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Eloy Cuadra , 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022. +# Ignacio Poggi , 2009. +msgid "" +msgstr "" +"Project-Id-Version: mathematik\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-08-08 20:03+0200\n" +"Last-Translator: Eloy Cuadra \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 22.04.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Eloy Cuadra,Ignacio Poggi" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "ecuadra@eloihr.net,ignaciop.3@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pausar" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Iniciar" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Detener" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Guardar la animación del resultado" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Animaciones (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Gráficos avanzados" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Gráfico" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Expresión:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Opciones adicionales:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Trazar" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Opción activa" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Calcular" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Diferenciar" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variable:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Tiempos: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Paquete" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importar paquete" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Paquete:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integrar" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Límite inferior:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Límite superior:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "integral definida" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "Álgebra &lineal" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Crear matriz" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Columnas:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Filas:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Calcular eigenvalores" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matriz:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Calcular eigenvectores" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Invertir matriz" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Gráfico 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variable" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Nombre" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Mínimo:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Máximo:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Gráfico 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1ª variable" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2ª variable" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Ejecutar script" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Resolver ecuaciones" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Ecuaciones:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variables:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Seleccionar el motor" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Versión recomendada: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Consulte %2 para más " +"información.
      " + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      No se han satisfecho algunos requisitos: %1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Hacer que este sea el motor por omisión" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia es un lenguaje de programación dinámico de alto nivel y de buen " +"rendimiento para computación técnica, con sintaxis familiar para los " +"usuarios de otros entornos de computación técnica. Proporciona un " +"sofisticado compilador, ejecución en paralelo distribuida, precisión " +"numérica y una amplia biblioteca de funciones matemáticas." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"La ruta a Julia indicada en las preferencias de la aplicación debe apuntar " +"directamente al ejecutable. No se permite el uso de enlaces simbólicos. " +"Proporcione la ruta correcta en las preferencias de la aplicación y vuelva a " +"intentarlo." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Cantor no puede determinar la versión de Julia para %1. Indique la ruta " +"correcta al ejecutable de Julia (no puede ser un enlace simbólico) y vuelva " +"a probar." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Está intentando usar Cantor con Julia versión %1.%2.%3. Esta versión de " +"Cantor ha sido compilada para permitir el uso de Julia versión %4.%5.%6. " +"Apunte a dicha versión de Julia o vuelva a compilar Cantor usando la versión " +"%1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Ruta al REPL nativo de Julia" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Activar la gestión de variables" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Integrar gráficos en la hoja de ejercicios" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Paquete gráfico para el asistente de gráficos" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Lo sentimos: Gadfly no permite gráficos en 3d" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Archivo de script Julia (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Error - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"La sesión de Julia no puede iniciar sesión debido a un problema interno de " +"Julia con un archivo interno que falta: «%1»" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" +"La sesión de Julia no puede iniciar sesión debido a un problema interno " +"desconocido" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "El proceso de Julia ha dejado de funcionar." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "No se ha podido iniciar el proceso de Julia." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" +"La comunicación con el proceso de Julia ha fallado por motivos desconocidos." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Para Julia, por ahora solo se permite GR (https://gr-framework.org/), una " +"infraestructura para aplicaciones de visualización. Este paquete debe estar " +"instalado antes de usarlo. Para ello, ejecute Pkg.install(\"GR\") en Cantor " +"o en Julia REPL. Nota: esta operación puede durar cierto tiempo y es " +"preferible realizarla en Julia REPL, ya que puede mostrar el avance del " +"proceso de instalación del paquete." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "General" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Ejecutable:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Integración de gráficos:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Si está activada, los gráficos se mostrarán dentro de la hoja de ejercicios. " +"En caso contrario, se mostrarán en una ventana externa." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Activado" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Gestión de variables:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Monitorizar la creación y destrucción de variables y mostrar las existentes " +"en el panel de variables." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Formato de gráficos interno:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" +"Formato interno para los gráficos, si está activada la integración de " +"gráficos." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Paquete gráfico para usar en el asistente de gráficos" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Paquete para el asistente de gráficos" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Plots" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Ejecución automática" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Órdenes a ejecutar automáticamente" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Documentación" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Lista de scripts a ejecutar automáticamente al inicio de la sesión" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Error: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Esto ejecuta órdenes automáticamente al iniciar una nueva hoja de " +"ejercicios. Pueden ser de utilidad para cargar los módulos necesarios, " +"cambiar el entorno, etc." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua es un lenguaje de script rápido y ligero, que posee una sencilla " +"sintaxis procedural. Lua contiene diversas bibliotecas que tienen como " +"objetivo las matemáticas y la ciencia." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Ruta a la orden luajit" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Archivo de script lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Ruta a luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" +"

      Sistema de ayuda de Maxima

      Función apropos

      Busca " +"nombres de Maxima donde el nombre aparece en cualquier parte de su interior; " +"name debe ser una cadena de texto o un símbolo. De este modo, " +"apropos(exp) devuelve una lista de todos los indicadores y funciones " +"que tienen «exp» como parte de su nombre, como expand, exp y " +"exponentialize. Así, si solo recuerda una parte del nombre de una " +"orden o de una variable de Maxima, puede usar esta orden para encontrar el " +"resto del nombre. De modo similar, puede escribir apropos(tr_) para " +"mostrar una lista de los interruptores relacionados con el «translator», " +"muchos de los cuales empiezan por tr_.

      apropos(\"\") " +"devuelve una lista con todos los nombres de Maxima.

      apropos " +"devuelve la lista vacía [] si no encuentra ningún nombre.

      Función " +"describe

      describe(cadena) es equivalente a " +"describe(cadena, exact).

      describe(cadena, exact) " +"encuentra un elemento con el título igual (sin distinguir entre mayúsculas y " +"minúsculas) a «cadena», si existiera.

      describe(cadena, inexact) encuentra todos los elementos documentados que contienen «cadena» en su " +"título. Si existe más de uno, Maxima solicita al usuario que seleccione uno " +"o más elementos para mostrarlos.

      ? foo (con un espacio entre " +"? y foo) es equivalente a describe(\"foo\", exact), y " +"?? foo es equivalente a describe(\"foo\", inexact)." +"

      describe(,inexact) produce una lista de todos los temas " +"documentados en el manual en línea.

      describe entrecomilla su " +"argumento. describe devuelve true si encuentra algo en la " +"documentación, o false en caso contrario.

      Función example

      example(tema) muestra algunos ejemplos del tema, que es " +"un símbolo o una cadena. Para obtener ejemplos de operadores como if, " +"do o lambda, el argumento debe ser una cadena; por ejemplo " +"example(\"do\").example no distingue entre mayúsculas y " +"minúsculas. Muchos temas son nombres de funciones.

      example() " +"devuelve la lista de todos los temas reconocidos.

      El nombre del " +"archivo que contiene los ejemplos se proporciona mediante la variable de " +"opción global manual_demo, que vale \"manual.demo\" de forma " +"predeterminada.

      example entrecomilla su argumento. example devuelve done, excepto si no encuentra ejemplos o si no existe " +"ningún argumento, en cuyo caso devuelve la lista de todos los temas " +"reconocidos." + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima es un sistema para la manipulación de expresiones simbólicas y " +"numéricas, incluyendo diferenciación, integración, series de Taylor, " +"transformadas de Laplace, ecuaciones diferenciales comunes, sistemas de " +"ecuaciones lineales, polinómicas, conjuntos, listas, vectores, matrices y " +"tensores. Maxima produce resultados numéricos de alta precisión usando " +"fracciones exactas, enteros de precisión arbitraria y números de punto " +"flotante de precisión variable. Maxima puede representar funciones y datos " +"en dos o tres dimensiones. " + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Ruta al ejecutable de Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Error: demasiados */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Error: demasiados /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Error: se esperaba \" antes de ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Esperando el resultado del gráfico" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Archivo de procesamiento por lotes de Maxima (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Fallo al iniciar Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima ha fallado. Reiniciando..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima ha fallado dos veces en un corto período de tiempo. Se está " +"deteniendo para tratar de reiniciarlo." + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave es un lenguaje de alto nivel orientado principalmente a " +"cálculos numéricos.
      Proporciona una práctica interfaz de línea de " +"órdenes para resolver numéricamente problemas lineales y no lineales, y para " +"realizar otros experimentos numéricos usando un lenguaje que es altamente " +"compatible con Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Archivo de script de Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Error de sintaxis" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "La prueba de integración del gráfico ha fallado." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "La integración de los gráficos se desactivará." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"La integración de gráficos no funciona porque Cantor ha encontrado que " +"Octave no puede crear gráficos, ya que no hay motores gráficos para ello: se " +"ha llegado a esta conclusión porque la función available_graphics_toolkits() " +"no ha generado salida. Es posible que deba instalar algunos paquetes " +"adicionales del SO, como gnuplot, fltk o qt para poder crear gráficos." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python es un lenguaje de programación dinámico extremadamente potente " +"que se usa en un amplio abanico de campos de aplicaciones. Existen diversos " +"paquetes de Python para programación científica." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# Lo sentimos: Bokeh no permite gráficos en 3d" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Archivo de script de Python (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "El servidor Python de Cantor ha dejado de funcionar." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "No se ha podido iniciar el servidor Python de Cantor." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"La comunicación con el servidor Python de Cantor ha fallado por motivos " +"desconocidos." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Para usar gráficos integrados con el paquete Matplotlib debe instalar en " +"primer lugar el paquete de python «matplotlib»." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Para usar gráficos integrados con Plot.ly debe instalar en paquete de python " +"«plotly» y el ejecutable especial «orca» compatible con Plot.ly. Consulte el " +"artículo «Exportación de imagen estática» en la documentación de Plot.ly " +"para más detalles." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Diálogo de gráficos" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funciones:" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Título" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Expresión" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Añadir" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Eliminar" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Borrar lista" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Variable X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Estilo" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Líneas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Puntos" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Puntos y líneas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Cuadrados" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histograma" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Pasos" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Velas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Motas" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Suavizado" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Ninguno" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monótono" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Splines cúbicos naturales" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (monótono)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Intervalo de la función" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Intervalo X" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Tasa de &muestreo" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "&Tamaño del paso" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Opciones" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Título del gráfico" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Etiqueta del eje X" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Etiqueta del eje Y" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Posición de la leyenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Ocultar leyenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Arriba a la izquierda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Arriba a la derecha" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Abajo a la izquierda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Abajo a la derecha" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Debajo" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Fuera" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Mostrar rejilla" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Mostrar el borde completo" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Usar colores" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Mostrar en línea" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Escala X logarítmica" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Escala Y logarítmica" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Opciones de archivo" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Guardar gráfico en archivo" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Tipo de archivo" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Detectar a partir del nombre de archivo" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! no es un software de réplica normal de la calculadora más " +"barata disponible. Qalculate! trata de sacar partido de la interfaz " +"superior, la potencia y la flexibilidad de las computadoras modernas. El " +"punto fuerte de Qalculate! es la entrada de expresiones. En lugar de " +"introducir cada número de una expresión matemática de forma individual, " +"puede escribir directamente la expresión completa y modificarla después. La " +"interpretación de expresiones es flexible y tolerante a fallos, por lo que " +"Qalculate! le avisará si alguna vez comete algún error. No obstante, las " +"expresiones que no se pueden resolver completamente no son errores. " +"Qalculate! las simplificará tanto como pueda y responderá con una expresión. " +"Además de números y operadores aritméticos, una expresión puede contener " +"cualquier combinación de variables, unidades y funciones." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Si se deben convertir automáticamente las unidades y cómo hacerlo. Si es " +"cierto, se convierte a la unidad más apropiada del SI (la menor cantidad de " +"unidades)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Unidad de ángulos por omisión para las funciones trigonométricas." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Base de los números analizados y evaluados." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Si el resultado de la evaluación estará simplificado o factorizado." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Si los números racionales se mostrarán con decimales, como fracciones o como " +"algo intermedio." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Mostrar que una serie de dígitos de un número continúa infinitamente con " +"puntos suspensivos en lugar de redondearlo (p. ej., 2/3 se muestra como " +"0,666666... en lugar de 0,666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Usar todos los prefijos decimales del SI. Si es falso, no se usarán de forma " +"automática los prefijos que no son múltiplos de mil (centi, deci, deca, " +"hecto)." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Si es cierto, se usarán exponentes negativos en lugar de divisiones (p. ej., " +"5/x^2 se convierte en 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Pantalla numérica." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Si es cierto, los gráficos se mostrarán dentro de la hoja de ejercicios. En " +"caso contrario, aparecerán en una ventana separada." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Si se deben usar colores en los gráficos." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Si se debe usar una rejilla en el gráfico." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Si se deben dibujar bordes completos alrededor del gráfico." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Anchura de las líneas, en píxeles." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Número de pasos de interpolación a usar en el gráfico." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Modo de suavizado en los gráficos." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Estilo de los gráficos." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Posición de la leyenda en los gráficos." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate informa de que no puede imprimir. ¿Está instalado gnuplot?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "falta %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 debe ser un número." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 debe ser un entero." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 debe ser un valor lógico." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "opción no válida para %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" +"se han encontrado múltiples expresiones en una orden de dibujo (%1 y %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "Error" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "Advertencia" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "No existe una función, variable o unidad con el nombre especificado." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Función: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Interfaz de gráficos" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Traza una o más funciones de forma integrada o en una ventana separada." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "expresión" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "opción" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "valor" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "entero" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "lógico" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "número" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "por omisión: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "El nombre de la función" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Etiqueta de título" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "Etiqueta del eje X" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Etiqueta del eje Y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Imagen en la que guardar el gráfico. Si no se especifica ninguna se muestra " +"el gráfico en una ventana de la pantalla. Si «inline=true», la imagen se " +"muestra sin tener en cuenta esta opción." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"El tipo de imagen en la que guardar. Uno de los valores auto, png, ps, eps, " +"latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "Establecer como cierto para gráficos en color, o falso para monocromo." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Valor mínimo del eje X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Valor máximo del eje X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Si se debe usar una escala logarítmica para el eje X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Si se debe usar una escala logarítmica para el eje Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Base logarítmica para el eje X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Base logarítmica para el eje Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Si se debe mostrar una rejilla en el gráfico." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Si el gráfico debe estar rodeado de bordes por todos los lados (no solo " +"ejes)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Anchura de las líneas." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Lugar donde se debe situar la leyenda del gráfico. Puede ser: ninguna, " +"arriba a la izquierda, arriba a la derecha, abajo a la izquierda, abajo a la " +"derecha, debajo, fuera" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Suavizado del gráfico: Puede ser: ninguno, único, csplines, bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Estilo del gráfico: Puede ser: líneas, puntos, puntos y líneas, cuadrados, " +"histograma, pasos, velas, motas" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Usar escala en el segundo eje X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Usar escala en el segundo eje Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" +"Si el gráfico se debe dibujar integrado en lugar de en una ventana nueva." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Distancia entre dos puntos de interpolación. Ver también el paso." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Número de puntos de interpolación. Ver también el paso." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "El nombre de la variable X. Debe ser una variable conocida." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Guardar variables en un archivo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Guardar todas las variables definidas actualmente en un archivo. Se pueden " +"volver a cargar con %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "archivo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "archivo: el archivo en el que guardar" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Cargar variables de un archivo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Cargar variables de un archivo que ha sido creado previamente por %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "archivo: el archivo a cargar" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Base numérica:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Formato de fracciones:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Decimal" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Exacta" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Fraccional" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Combinada" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Pantalla numérica:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Pura" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Científica" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Precisión" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Indicar series infinitas:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Usar todos los prefijos del SI:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Usar exponentes negativos:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Evaluar" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Convertir a las unidades del SI más adecuadas:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radianes" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Grados" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradianes" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Modo de estructuración:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Simplificar" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Factorizar" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Unidad de ángulos:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Gráficos" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Mostrar gráficos en línea:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Mostrar bordes completos:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Anchura de las líneas:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Tasa de muestreo:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Modo de suavizado:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Splines cúbicos naturales" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Pasos" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Posición de la leyenda:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Gráficos en color:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Mostrar rejilla:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Estilo del gráfico:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Modificar entrada" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Añadir nueva entrada" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "El nombre no puede estar vacío." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Añadir documentación local" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Obtener nueva documentación" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Descargar documentación adicional" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "El archivo de ayuda comprimido de Qt no es válido." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Documentación ya importada" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Modificar" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Borrar" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Por favor, desinstale esto usando GHNS." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Instalar archivos de documentación adicional" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Nombre" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Ruta" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Añadir" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Icono:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Seleccione un icono" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Nombre:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Introduzca un nombre" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Seleccione un nombre..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Ruta:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Seleccionar un archivo de ayuda de Qt..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Seleccionar un archivo de ayuda de Qt..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" +"

      Sistema de ayuda de R: help() y ?:


      La función " +"help() y el operador de ayuda ? de R proporcionan acceso a las " +"páginas de documentación de las funciones, conjuntos de datos y otros " +"objetos de R, tanto de paquetes de la distribución estándar de R como para " +"los paquetes de contribuciones.

      Para acceder a la documentación de la " +"función estándar lm (modo lineal), por ejemplo, introduzca la orden " +"help(lm) o help(\"lm\"), o también ?lm o ?\"lm" +"\" (es decir, las comillas son opcionales).

      Para acceder a la " +"ayuda de una función de un paquete que no está cargado actualmente, indique " +"de forma adicional el nombre del paquete. Por ejemplo, para obtener la " +"documentación de la función rlm() (modelo lineal robusto) del paquete " +"MASS, use help(rlm, package=\"MASS\").

      Los nombres estándares " +"de R constan de letras en mayúscula y minúscula, números (del 0 al 9), " +"signos de subrayado (_) y puntos (.), y deben empezar por una letra o un " +"punto. Para obtener ayuda sobre un objeto que tenga un nombre no estándar " +"(como el operador de ayuda ?), dicho nombre debe estar entre " +"comillas. Por ejemplo, help('?') o ?\"?\".

      También " +"puede usar la función help() para acceder a información sobre un " +"paquete de su biblioteca (por ejemplo, help(package=\"MASS\")), que " +"muestra un índice con las páginas de ayuda disponibles para el paquete junto " +"a más información.

      Las páginas de ayuda de las funciones suelen " +"incluir una sección con ejemplos ejecutables que ilustran el funcionamiento " +"de la función. Puede ejecutar dichos ejemplos en la sesión actual de R " +"usando la orden example(); por ejemplo, example(lm)." + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R es un lenguaje y entorno para cálculos estadísticos y gráficos, " +"similar al lenguaje y entorno S.
      Proporciona una amplia variedad de " +"técnicas estadísticas (modelado lineal y no lineal, pruebas estadísticas " +"clásicas, análisis de series temporales, clasificación, agrupamiento, etc.) " +"y gráficas, y es muy configurable. El lenguaje S es frecuentemente el " +"vehículo de elección para investigaciones de metodología estadística, " +"mientras que R proporciona una alternativa de código abierto para participar " +"en esta actividad." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Error abriendo el archivo %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "Archivo de script de R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Error analizando orden" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "URL a la documentación de R local" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Doble clic para abrir el diálogo de selección de archivos" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|Archivos fuente de R (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage es un sistema de software matemático de código abierto con " +"licencia GPL.
      Combina la potencia de diversos paquetes de código " +"abierto existentes bajo una interfaz común basada en Python." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Ruta al ejecutable de Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Activar la composición al estilo LaTeX para el motor Sage" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Resultado de %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"La última salida fue: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Archivo de script de Python (*.py);;Archivo de script de Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Este programa no es compatible con la versión %1.%2 de Sage. Por favor, " +"actualice su instalación con las versiones compatibles para que puedan " +"funcionar con Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"No se ha podido determinar la versión de Sage. Compruebe su instalación y la " +"salida de «sage -v»." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "El proceso Sage ha fallado mientras evaluaba esta expresión" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "El proceso Sage ha fallado" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "El proceso Sage ha salido mientras se evaluaba esta expresión" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "El proceso Sage ha salido" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Fallo al iniciar Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "Composición al estilo LaTeX:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"La salida LaTeX de Sage no es siempre correcta, por lo que se puede " +"desactivar la composición LaTeX para disfrutar de una mejor experiencia" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab es un paquete de software libre y multiplataforma de cálculo " +"numérico y un lenguaje de programación de alto nivel y orientado a números. " +"Scilab se distribuye bajo la licencia CeCILL (compatible con GPL)." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Ruta al ejecutable de Scilab" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +";;Archivo de script de Scilab (*.sce);;Archivo de funciones de Scilab (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "El archivo %1 ya está abierto." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Abrir archivo" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Descargar ejemplos" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "Abrir ejempl&o" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Ir a la hoja de ejercicios anterior" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Ir a la hoja de ejercicios siguiente" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Todos los archivos compatibles (*.cws *ipynb);;Hoja de ejercicios de Cantor " +"(*.cws);;Cuaderno de Jupyter (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      No se encuentra ningún motor

      \n" +"
      Cosas que puede probar:\n" +"
      • Cambiar las preferencias en el diálogo de configuración;
      • Instalar paquetes para el siguiente programa:
      • %2
      " +"
      " +msgstr[1] "" +"

      No se encuentra ningún motor

      \n" +"
      Cosas que puede probar:\n" +"
      • Cambiar las preferencias en el diálogo de configuración;
      • Instalar paquetes para alguno de los siguientes programas: %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Error" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "El motor %1 no está instalado" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"El motor %1 está instalado, aunque inactivo. Compruebe la instalación y las " +"preferencias de Cantor." + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sesión %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "No se ha podido encontrar Cantor Part con el error %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Calculando..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Listo" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Modificado" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" +"Varias hojas de ejercicios sin guardar están abiertas. ¿Desea cerrarlas?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Cerrar Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "El proyecto actual ha sido modificado. ¿Desea guardarlo?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Guardar proyecto" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Formato" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "El motor que se utiliza por omisión" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Realizar la composición por omisión" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Realizar el resaltado de sintaxis por omisión" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Activar la terminación por omisión" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Activar la numeración de expresiones por omisión" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Animar cambios en la hoja de ejercicios por omisión" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Activar la representación de expresiones matemáticas dentro de $$..$$ en las " +"entradas de texto y de Markdown por omisión (necesita tener instalado " +"pdflatex)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Volver a evaluar automáticamente las entradas bajo la actual" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Pedir confirmación para reiniciar el motor" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Guardar formato de texto enriquecido de la entrada de texto al guardar la " +"hoja de ejercicios en formato de cuaderno de Jupyter" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Usar el estilo de colocación de entradas antiguo de Cantor" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" +"Mostrar errores de representación de expresiones matemáticas incrustadas" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Límite de líneas visibles para el resultado de texto" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Tipo de letra jerárquica para capítulos" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Tamaño del tipo de letra jerárquica para capítulos" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Cursiva del tipo de letra jerárquica para capítulos" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Negrita del tipo de letra jerárquica para capítulos" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Tipo de letra jerárquica para subcapítulos" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Tamaño del tipo de letra jerárquica para subcapítulos" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Cursiva del tipo de letra jerárquica para subcapítulos" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Negrita del tipo de letra jerárquica para subcapítulos" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Tipo de letra jerárquica para secciones" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Cursiva del tipo de letra jerárquica para secciones" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Negrita del tipo de letra jerárquica para secciones" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Tipo de letra jerárquica para subsecciones" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Cursiva del tipo de letra jerárquica para subsecciones" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Negrita del tipo de letra jerárquica para subsecciones" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Tipo de letra jerárquica para párrafos" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Cursiva del tipo de letra jerárquica para párrafos" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Negrita del tipo de letra jerárquica para párrafos" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Tipo de letra jerárquica para subpárrafos" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Cursiva del tipo de letra jerárquica para subpárrafos" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Negrita del tipo de letra jerárquica para subpárrafos" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Guardar texto sin formato" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Exportar a LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Evaluar hoja de ejercicios" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Ampliar" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Componer usando LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Resaltado de sintaxis" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Terminación" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Números de línea" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Animaciones" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Expresiones matemáticas incrustadas" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Reiniciar motor" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Evaluar entrada" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Insertar entrada de orden" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Insertar entrada de texto" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Insertar entrada en Markdown" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Insertar entrada LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Insertar salto de página" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Insertar imagen" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Contraer todos los resultados" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Expandir todos los resultados" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Eliminar todos los resultados" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Eliminar la entrada actual" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Mostrar el editor de scripts" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Mostrar terminación" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "© 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Hoja de ejercicios de Cantor (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Cuaderno de Jupyter (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Guardar como" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Guardar" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Se perderán todos los resultados de cálculos disponibles. ¿Realmente quiere " +"reiniciar %1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "¿Reiniciar %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Interrumpir" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Error de sesión: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Inicialización completa" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Inicializando..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[solo lectura]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "¿Desea enviar la hoja de ejercicios actual al servidor web público?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Pregunta - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" +"La hoja de ejercicios no se ha guardado. Debería guardarla antes de enviarla " +"a la web." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Advertencia - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Este motor no permite scripts." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Editar" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Vista" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Hoja de ejercicios" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Preferencias" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Archivo" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Nuevo" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Paneles" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Preferencias" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Color del fondo" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Por omisión" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Color del texto" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Tipo de letra" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Negrita" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Cursiva" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Aumentar el tamaño" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Reducir el tamaño" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Seleccionar" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Reiniciar a valores por omisión" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Mostrar el resultado" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Ocultar el resultado" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Mostrar ayuda" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Aspecto" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Interrumpido" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Barra de búsqueda" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Buscar:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Siguiente" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "An&terior" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Sustituir:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Sustituir" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Sustituir &todo" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Buscar en:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "Distinguir &mayúsculas" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Tipos de letra jerárquicos" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Tipo de letra para capítulos" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Familia del tipo de letra:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Tamaño del tipo de letra:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Tipo de letra para subcapítulos" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Tipo de letra para secciones" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Tipo de letra para subsecciones" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Tipo de letra para párrafos" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Tipo de letra para subpárrafos" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Capítulo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Subcapítulo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Sección" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Subsección" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Párrafo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Subpárrafo" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Definir nivel de jerarquía" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Estilo de línea sólida" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Estilo de línea de rayas" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Estilo de línea de puntos" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Estilo de línea de rayas y puntos" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Estilo de línea de raya punto punto" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Grosor de la línea" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Delgado" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Medio" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Grueso" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Color de la línea" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Estilo de la línea" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Configurar imagen" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Haga doble clic aquí para configurar las preferencias de la imagen" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "No se puede cargar la imagen %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Guardar la imagen del resultado" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Imágenes (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Preferencias de la imagen" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Abrir" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Tamaño de la pantalla" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Ancho" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Altura" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Vista previa" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Tamaño de la impresión" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Usar el tamaño de la pantalla" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Preferencias de la imagen" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(auto)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Abrir archivo de imagen" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Mostrar código LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"No se ha indicado ninguna ruta para el ejecutable %1. Proporcione la ruta " +"correcta en las preferencias de la aplicación y vuelva a intentarlo." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"El archivo indicado «%1» para el ejecutable %2 no existe. Proporcione la " +"ruta correcta en las preferencias de la aplicación y vuelva a intentarlo." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"El archivo indicado «%1» no apunta a ningún ejecutable. Proporcione la ruta " +"correcta en las preferencias de la aplicación y vuelva a intentarlo." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"El programa %1 no ha terminado de ejecutarse tras %2 milisegundos durante la " +"prueba de integración del gráfico." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" +"No se ha podido abrir el archivo %1 durante la prueba de integración del " +"gráfico." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" +"No se ha podido analizar el resultado durante la prueba de integración del " +"gráfico." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Ruta al ejecutable latex" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Ruta al ejecutable dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Valor" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 bytes>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Desde:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Hasta:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Título principal" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Escala de las abscisas" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Escala de las ordenadas" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Título del gráfico:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Este contenido de tipos de Jupyter no esta permitido («%1»)" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"El proceso %1 ha muerto de forma inesperada. Todos los resultados de los " +"cálculos se han perdido." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"El proceso %1 ha muerto de forma inesperada con el mensaje «%2». Todos los " +"resultados de los cálculos se han perdido." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Ha escogido usar el paquete gráfico %1, pero no se puede activar su uso " +"porque no se cumplen todos los requisitos, por lo que la integración de este " +"paquete estará desactivada. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Interfaz de usuario de KDE para aplicaciones matemáticas" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "© 2016 Filipe Saraiva
      © 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Encargado
      Adaptación a Qt5/KF5, motores Scilab y Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Desarrollador" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Autor original
      Encargado (2009-2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol González" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Motor KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Motor Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Interfaz" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Icono de Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Usar el motor " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Documentos a abrir." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "No se puede abrir el archivo %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Entrar en el modo de edición" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Borrar adjuntos" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Error matemático de Cantor" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "No se ha podido leer la imagen «%1». Error «%2»" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Salto de página ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Ir al contenido" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Buscar mediante palabras clave..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Buscar en el texto de la página de documentación actual" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Reiniciar el nivel de ampliación al 100%" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Cerrar" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Saltar a la coincidencia siguiente" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Saltar a la coincidencia anterior" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Distinguir mayúsculas/minúsculas" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "El archivo se ha descargado correctamente en «Descargas»." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Descarga correcta" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Archivos de Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Archivos de Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Todos los archivos permitidos" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Todos los archivos" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Nombre:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Valor:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Añadir nueva variable" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Cargar variables" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Guardar variables" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Eliminar variables" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Buscar/filtrar" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Distinguir mayúsculas" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Coincidir palabra completa" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "¿Seguro que quiere eliminar todas las variables?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Cargar archivo" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Guardar el resultado" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Eliminar el resultado" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"No se encuentra un componente del editor de texto de KDE.\n" +"Por favor, verifique su instalación de KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Editor de scripts" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Editor de scripts - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "No encontrado" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Se ha alcanzado el principio" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Se ha alcanzado el final" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "%1 coincidencia sustituida" +msgstr[1] "%1 coincidencias sustituidas" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Órdenes" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Resultado" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Errores" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Texto" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Código LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "Inicio:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" +"Crear una nueva hoja de ejercicios para el sistema del motor seleccionado. " +"Si no se selecciona ninguna, se le pregunta al usuario el sistema que se " +"debe usar durante el inicio." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Motor por omisión:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Hoja de ejercicios:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" +"Activar la composición al estilo LaTeX para los resultados de los cálculos, " +"si está permitida por el sistema del motor." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "Composición LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Activar resaltado de sintaxis" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Resaltado de sintaxis" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "Activar terminación sintáctica" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Mostrar números de línea" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Números de línea" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Activar efectos de animación en la hoja de ejercicios" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" +"Si se activa, las entradas de texto se alinean al borde de la hoja de " +"ejercicios en lugar de al borde del punto de introducción." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "No sangrar las entradas de texto" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Usar el formato de texto enriquecido para las entradas de texto al guardar " +"en formato de cuaderno de Jupyter" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "Evaluación:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"Si se activa, se le solicitará confirmación al usuario antes de reiniciar el " +"sistema del motor." + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" +"Si se activa, todas las entradas por debajo de la actual se evaluarán de " +"forma automática." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "Volver a evaluar las entradas automáticamente" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Número de filas del resultado (0 para ilimitadas):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Número máximo de filas visibles para el resultado de una orden. Use 0 para " +"trabajar sin limitaciones." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" +"Activar la composición al estilo LaTeX para expresiones matemáticas en las " +"entradas de Markdown." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "Expresiones matemáticas mediante LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "Notificar los fallos de renderización de expresiones matemáticas" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Buscar…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Destinos de celdas en bruto" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Añadir destino personalizado" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Convertir a entrada de texto" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Convertir a celda en bruto" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Tipo MIME de destino:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Copiar el resultado" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Mostrar gráfico" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Mostrar código" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Mostrar código HTML" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Mostrar alternativa sin formato" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Mostrar HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Mostrar HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" +"No se puede interpretar el archivo Eps. Es posible que necesite paquetes " +"adicionales." + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Guardar el texto del resultado" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "Archivo de texto (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "No se puede escribir el archivo %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "No se puede escribir el archivo." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Error al guardar el archivo %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"En el modo de solo lectura, Cantor no puede garantizar que la exportación " +"sea válida par %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Error al cargar la hoja de estilos latex.xsl" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "No se puede abrir el archivo %1." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Abrir archivo" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "No se ha podido abrir el archivo seleccionado para lectura." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" +"El archivo seleccionado no es un proyecto válido de Cantor ni de Jupyter." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "El archivo seleccionado no es un proyecto válido de Cantor." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Esta hoja de ejercicios fue creada usando Python2, que ya no se usa. En su " +"lugar se usará Python3." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python2 ya no se puede usar" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"No se ha encontrado el motor %1. No es posible editar ni ejecutar entradas." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Hay algunos problemas con el motor %1.\n" +"Compruebe su configuración o instale los paquetes necesarios.\n" +"Solo podrá visualizar esta hoja de ejercicios." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"No es posible usar cuadernos de Jupyter con una versión inferior a la 4.5 " +"(se ha detectado la versión %1.%2)." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"No es posible usar cuadernos de Jupyter con una versión superior a la 4.5 " +"(se ha detectado la versión %1.%2)." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Este cuaderno fue creado usando Python2, que ya no se usa. En su lugar se " +"usará Python3." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "un objeto con las claves: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "no es un valor de objeto JSON" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" +"se han encontrado datos incorrectos (%1) que no son una celda de Jupyter" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "El archivo no es un cuaderno válido de Jupyter" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Esquema no válido de cuaderno de Jupyter: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Convertir a" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Orden" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Imagen" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Salto de página" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Línea horizontal" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Entrada de jerarquía" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Insertar detrás" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Insertar delante" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Insertar" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Ampliar" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Reducir" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Tamaño original" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Subir entradas" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Bajar entradas" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Evaluar entradas" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Eliminar entradas" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Contraer el resultado de la entrada de orden" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Expandir el resultado de la entrada de orden" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Eliminar el resultado de la entrada de orden" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Excluir entrada de orden de la ejecución" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Añadir entrada de orden a la ejecución" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "&Color del texto..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Color" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Resaltar te&xto..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Tipo de letra" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Ta&maño del tipo de letra" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Negrita" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "Curs&iva" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "S&ubrayado" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "Tac&hado" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "A&linear a la izquierda" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Izquierda" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Alinear al ¢ro" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Centro" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Alinea&r a la derecha" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Derecha" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Justificar" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Justificar" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"Esta acción eliminará todos los resultados sin posibilidad de cancelación. " +"¿Desea continuar?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Eliminar todos los resultados" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Blanco" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Negro" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Rojo oscuro" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Rojo" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Rojo claro" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Verde oscuro" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Verde" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Verde claro" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Azul oscuro" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Azul" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Azul claro" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Amarillo oscuro" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Amarillo" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Amarillo claro" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Cian oscuro" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Cian" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Cian claro" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Magenta oscuro" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Magenta claro" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Naranja oscuro" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Naranja" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Naranja claro" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Gris oscuro" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Gris" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Gris claro" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Subir" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Bajar" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "¿Realmente desea eliminar esta entrada?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Eliminar entrada" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Arrastrar entrada" + +#~ msgid "Animate Worksheet" +#~ msgstr "Animar la hoja de ejercicios" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "Durante el inicio, se se ha definido un motor por omisión, se creará una " +#~ "hoja de ejercicios para él en lugar de mostrar el diálogo para " +#~ "seleccionar un motor." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Si está activada, Cantor evaluará automáticamente todas las entradas bajo " +#~ "la actual." + +#~ msgid "Defaults" +#~ msgstr "Predeterminados" + +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "Este es el valor inicial para la opción «Componer usando LaTeX» de la " +#~ "sesión, que es la responsable de permitir la creación de contenido en " +#~ "formato LaTeX con la salida de algún motor, si está permitido. Por " +#~ "ejemplo, se usará latex para procesar la salida de Maxima, si está " +#~ "activada la opción. " + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "" +#~ "Activar la composición de LaTeX (solo funciona si latex está instalado)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "Este es el valor inicial para la opción «Resaltado de sintaxis» de la " +#~ "sesión, que es la responsable de resaltar la sintaxis dentro de las " +#~ "entradas de órdenes." + +#~ msgid "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." +#~ msgstr "" +#~ "Este es el valor inicial de la opción «Terminación» de la sesión, que es " +#~ "la responsable de la terminación automática de código." + +#~ msgid "" +#~ "This is initial value for the session \"Line numbers\" option, which " +#~ "response for presence of command entries execution numbers." +#~ msgstr "" +#~ "Este es el valor inicial de la opción «Números de línea» de la sesión, " +#~ "que es la responsable de la presencia de números de ejecución de entradas " +#~ "de órdenes." + +#~ msgid "Enable Line Numbers" +#~ msgstr "Activar números de línea" + +#~ msgid "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." +#~ msgstr "" +#~ "Este es el valor inicial de la opción «Animar hoja de ejercicios» de la " +#~ "sesión, que es la responsable de las animaciones de la hoja de ejercicios." + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Activar animaciones de la hoja de ejercicios" + +#~ msgid "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." +#~ msgstr "" +#~ "Este es el valor inicial de la opción «Expresiones matemáticas " +#~ "incrustadas» de la sesión, que es la responsable de activar la generación " +#~ "de expresiones matemáticas en entradas de texto y de markdown." + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "" +#~ "Activar expresiones matemáticas incrustadas (solo funciona si pdflatex " +#~ "está instalado)" + +#~ msgid "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." +#~ msgstr "" +#~ "Si está desactivada, no se mostrarán advertencias sobre reinicio al " +#~ "pulsar el botón de reinicio." + +#~ msgid "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." +#~ msgstr "" +#~ "Si está activada se mostrará una ventana informativa con la descripción " +#~ "del error en todos los errores de representación matemática." + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "" +#~ "Mostrar mensaje sobre errores de fallos de representación de expresiones " +#~ "matemáticas incrustadas" + +#~ msgid "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." +#~ msgstr "" +#~ "Si está activada se usará el antiguo estilo de sangrado de entradas de " +#~ "Cantor (todas las entradas se alinean a la izquierda)." + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Usar el estilo antiguo de sangrado de entradas de Cantor" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Si está activada, Cantor guardará formato de texto enriquecido de las " +#~ "entradas de texto al guardar en formato de cuaderno de Jupyter." diff --git a/po/es/docs/cantor/index.docbook b/po/es/docs/cantor/index.docbook new file mode 100644 index 0000000..35f50ab --- /dev/null +++ b/po/es/docs/cantor/index.docbook @@ -0,0 +1,1573 @@ + +ATEX"> + + +]> + + + +El manual de &cantor; + + + Alexander Rieder alexanderrieder@gmail.com +LeticiaMartín Hernández
      leticia.martin@gmail.com
      Traducción
      +
      + + +2009 +Alexander Rieder + +&FDLNotice; + +2020-12-16 +Aplicaciones 20.12 + + +&cantor; es una aplicación cuyo objetivo es proporcionar una bonita hoja de ejercicios a otros paquetes matemáticos libres. + + + +KDE +kdeedu +matemáticas +matemáticas +Cantor +Julia +Lua +Maxima +Octave +Python +Qalculate +R +Sage +Scilab + + +
      + + +Introducción + +&cantor; es un programa que le permite usar su aplicación matemática favorita desde una elegante interfaz de hoja de ejercicios integrada en KDE. Proporciona cuadros de diálogo que le ayudan con las tareas comunes y le permite compartir sus hojas de ejercicios con otras personas. + + + +Uso de &cantor; + +Captura de pantalla: +Esta es una captura de pantalla de &cantor; + + + + + + Captura de pantalla + + + + + + + +Características de &cantor; + + Una intuitiva vista de hoja de ejercicios para la evaluación de expresiones. + Los resultados de los gráficos se muestran en la propia hoja de ejercicios. + Una fácil estructura basada en complementos que le permite añadir diferentes motores. + Integración de la opción «Obtener novedades» que le permite descargar (o enviar) ejemplos de hojas de ejercicios. + Permite componer fórmulas matemáticas usando &latex;. + Resaltado de la sintaxis relacionada con el motor. + Cuadros de diálogo basados en complementos que le ayudan con las tareas comunes, como integrar una función o escribir una matriz. + + + + +Los motores de &cantor; +&cantor; le ofrece diferentes opciones para los motores con los que desee usarlo. La elección dependerá de lo que quiera obtener. +Actualmente están disponibles los siguientes motores: + + Sage: + + Sage es un software matemático de código abierto con licencia GPL. Combina la potencia de diversos paquetes de código abierto bajo una interfaz común basada en Python. Vea https://sagemath.org si desea obtener más información. + + + + Maxima: + + Maxima es un sistema para la manipulación de expresiones simbólicas y numéricas, incluyendo diferenciación, integración, expansión en series de Taylor, transformadas de Laplace, ecuaciones diferenciales ordinarias, sistemas de ecuaciones lineales, polinomios, conjuntos, listas, vectores, matrices y tensores. Maxima produce resultados numéricos con una alta precisión mediante el uso de fracciones exactas, enteros de precisión arbitraria y números de coma flotante con precisión variable. Maxima puede dibujar funciones y datos en dos y tres dimensiones. Vea http://maxima.sourceforge.net si desea obtener más información. + + + + R: + + R es un lenguaje y entorno de programación para análisis estadístico y gráfico, similar al lenguaje y entorno S. Proporciona una amplia variedad de herramientas estadísticas (modelos lineales y no lineales, pruebas estadísticas clásicas, análisis de series temporales, algoritmos de clasificación y agrupamiento, etc.) y gráficas, y es altamente configurable. El lenguaje S es una de las herramientas más usadas en la investigación sobre metodología estadística y en este sentido, R proporciona una alternativa de código abierta. Vea https://www.r-project.org si desea obtener más información. + + + + Julia: + + Julia es un lenguaje de programación de alto nivel y de alto rendimiento para cálculos técnicos, con sintaxis que resulta familiar a los usuarios de otros entornos de cálculo técnico. Proporciona un sofisticado compilador, ejecución paralela distribuida, precisión numérica y una amplia biblioteca de funciones matemáticas. Consulte la documentación de Julia para más información. + + + + &kalgebra;: + + &kalgebra; es una calculadora matemática basada en MathML que forma parte del Proyecto de Educación de &kde;. Vea https://edu.kde.org/kalgebra/ si desea obtener más información. + + + + Qalculate!: + + Qalculate! no es un software de réplica normal de la calculadora más barata disponible. Qalculate! trata de sacar partido de la interfaz superior, la potencia y la flexibilidad de las computadoras modernas. El punto fuerte de Qalculate! es la entrada de expresiones. En lugar de introducir cada número de una expresión matemática de forma individual, puede escribir directamente la expresión completa y modificarla después. La interpretación de expresiones es flexible y tolerante a fallos, por lo que Qalculate! le avisará si alguna vez comete algún error. No obstante, las expresiones que no se pueden resolver completamente no son errores. Qalculate! las simplificará tanto como pueda y responderá con una expresión. Además de números y operadores aritméticos, una expresión puede contener cualquier combinación de variables, unidades y funciones. Consulte https://qalculate.github.net/ para más información. + + + + Python2 y Python3: + + Python es un lenguaje de programación dinámico extremadamente potente que se usa en un amplio abanico de campos de aplicaciones. Existen diversos paquetes de Python para programación científica. + Python se distribuye bajo la licencia de la Fundación de Software Python (compatible con GPL). Consulte su sitio oficial para obtener más información. + + Este motor añade un elemento adicional al menú principal de &cantor;, Paquete. El único elemento de este menú es PaqueteImportar paquete. Puede usar este elemento para importar paquetes de Python en la hoja de ejercicios. + + + + + Scilab: + + Scilab es un paquete de software libre y multiplataforma de cálculo numérico y un lenguaje de programación de alto nivel y orientado a números. + Scilab se distribuye bajo la licencia CeCILL (compatible con GPL). Consulte https://www.scilab.org/ para obtener más información. + + Necesita Scilab versión 5.5 o superior instalado en su sistema para que pueda funcionar este motor. + + + + + Octave: + + &GNU; Octave es un lenguaje de alto nivel, principalmente concebido para cálculos numéricos. Proporciona una interfaz de línea de órdenes apropiada para resolver numéricamente problemas lineales y no lineales, y para realizar otros experimentos numéricos usando un lenguaje que es muy compatible con MATLAB. Consulte https://www.gnu.org/software/octave/ para más información. + + + + Lua: + + Lua es un lenguaje de script rápido y ligero, que posee una sencilla sintaxis procedural. Lua contiene diversas bibliotecas que tienen como objetivo las matemáticas y la ciencia. + Consulte https://www.lua.org/ para obtener más información. + Este motor permite el uso de luajit 2. + + + + + + + +El área de trabajo de &cantor; + + + Captura de pantalla del área de trabajo de &cantor; + + + + + + Captura de pantalla del área de trabajo de &cantor; + + + + +La interfaz de hoja de ejercicios de &cantor; consta de tres partes: + La barra de pestañas, donde podrá navegar a través de las hojas de ejercicios abiertas. + Un panel de ayuda en el que se muestra la ayuda de la orden indicada si introduce ?? orden, describe(orden) o example(orden) (para el motor Maxima). + Un panel de gestión de variables donde puede ver la lista de todas las variables disponibles en la hoja de ejercicios actual. Los paneles de ayuda y del gestor de variables se muestran como pestañas en una barra lateral de la ventana de &cantor;. El gestor de variables se puede usar solo con los motores Maxima (si está activado en la página PreferenciasConfigurar &cantor;... Maxima), &kalgebra;, Octave, Python2, Python3, Qalculate y Scilab. + La propia hoja de ejercicios. + + + +La hoja de ejercicios +La hoja de ejercicios es la zona básica de trabajo de &cantor;. En ella puede introducir expresiones, hacer que el motor ejecute cálculos y comprobar los resultados. Las órdenes que las hojas de ejercicios aceptan dependerán del motor elegido, por lo que debería aprender la sintaxis apropiada para dicho motor (el botón Mostrar ayuda le llevará allí directamente). Si conoce la orden pero necesita información adicional, puede escribir «? orden», con lo que se mostrará una ayuda de contexto a la derecha de la hoja de ejercicios. Si desea ver algunos ejemplos de hojas de ejercicios, puede usar la opción del menú ArchivoDescargar ejemplos de hojas de ejercicios para descargar hojas de ejercicios que han publicado otros usuarios. +Para controlar cada entrada de orden en la hoja de ejercicios puede usar los botones de control que se muestran en la parte derecha de la hoja de ejercicios cuando sitúa el cursor del ratón sobre el campo de entrada. Existen tres acciones básicas para cada entrada: Evaluar entrada, para actualizar el resultado de los cálculos de la entrada; Arrastrar entrada, para mover la entrada a otro lugar de la hoja de ejercicios actual; y Eliminar entrada, para eliminar la entrada de la hoja de ejercicios actual. +Las preferencias de tipos de letra y la justificación de las entradas de la hoja de ejercicios se pueden modificar usando la barra de herramientas que hay sobre la hoja de ejercicios. + + Preferencias + El menú Preferencias le permite modificar algunas preferencias de la apariencia de su hoja de ejercicios actual. + + + Composición mediante el uso de LaTeX + + Esta opción modifica el modo en que se le muestran los resultados. Si está activada, el resultado pasa a través del sistema &latex; para producir fórmulas visualmente atractivas. Por ejemplo, «3*x^2*sqrt(2)*x+2/3» se convierte en: + + + + 3*x^2*sqrt(2)*x+2/3 + + + + + + Resaltado de sintaxis + + «Resaltado de sintaxis» aumenta la legibilidad del código coloreando las palabras claves o usando diferentes colores para los paréntesis. + + + + Terminación + + Cuando está activo, al presionar la tecla Tab, &cantor; le mostrará diferentes terminaciones para la orden que está actualmente introduciendo. Si existe una única opción, insertará automáticamente el resto de la orden. + + + + Números de línea + + Esta opción controla si las diferentes expresiones deben tener o no un número al principio. Esto le permite recuperar resultados antiguos (en Maxima, por ejemplo, esto se hace con la orden «%O1»). + + + + Animar la hoja de ejercicios + + Esta preferencia controla si se usarán distintas animaciones para resaltar los cambios realizados en una hoja de ejercicios. + + + + Matemáticas integradas + + Esta preferencia controla si está activada de forma predeterminada la representación de expresiones matemáticas dentro de $$..$$ en entradas de texto y en &Markdown; (necesita que esté instalado pdflatex). + + + + + + + +Los diálogos de asistentes +Existen varios diálogos de asistentes en &cantor; para facilitar algunas operaciones básicas. +Puede acceder a dichos diálogos usando opciones del menú principal. Cada motor posee sus propios diálogos de asistentes. + +El diálogo para crear matrices + + Captura de pantalla del diálogo de creación de matrices de &cantor; + + + + + + Captura de pantalla del diálogo de creación de matrices de &cantor; + + + +Este diálogo se puede usar para introducir matrices. Puede definir las dimensiones de la matriz y sus elementos. +Se puede navegar a través de las celdas rápidamente durante la introducción de datos usando la tecla . + + +Diálogo de operación de matrices + + Captura de pantalla del diálogo de introducción de matrices de &cantor; + + + + + + Captura de pantalla del diálogo de introducción de matrices de &cantor; + + + +Este diálogo permite introducir el nombre de la matriz de la que se van a calcular sus eigenvectores, sus eigenvalores o su matriz inversa. El valor por omisión (%) se usa para referirse al resultado previo del cálculo o entrada. + + +Diálogo de diferenciación + + Captura de pantalla del diálogo de diferenciación de &cantor; + + + + + + Captura de pantalla del diálogo de diferenciación de &cantor; + + + +Este diálogo le permite introducir la expresión de la función a diferenciar, el nombre de la variable y el orden de la derivada. + + +Diálogo de integración + + Captura de pantalla del diálogo de integración de &cantor; + + + + + + Captura de pantalla del diálogo de integración de &cantor; + + + +Este diálogo le permite introducir la expresión de la función a integrar, el nombre de la variable y los límites de la integración (para la integral definida). + + +Diálogo de resolución de ecuaciones + + Captura de pantalla del diálogo de resolución de ecuaciones de &cantor; + + + + + + Captura de pantalla del diálogo de resolución de ecuaciones de &cantor; + + + +Este diálogo le permite introducir las ecuaciones a resolver (cada ecuación en una línea distinta) y las variables a determinar (separadas por comas). + + +Diálogo de importación de paquete + + Captura de pantalla del diálogo de importación de paquete de &cantor; + + + + + + Captura de pantalla del diálogo de importación de paquete de &cantor; + + + +Este diálogo le permite introducir el nombre del paquete a importar (⪚, numpy para Python). + + +Diálogo de gráficos + + Captura de pantalla del diálogo de gráficos de &cantor; (pestaña de Funciones) + + + + + + Captura de pantalla del diálogo de gráficos de &cantor; (pestaña de Funciones) + + + +Las opciones de este diálogo están separadas en dos grupos mediante pestañas. La pestaña Funciones le permite introducir las funciones a dibujar. +Para introducir una nueva función, pulse Añadir. Haga doble clic en la celda Título e introduzca el título en ella; a continuación haga doble clic en la celda Expresión e introduzca la expresión de la función en ella. + + Captura de pantalla del diálogo de gráficos de &cantor; (pestaña de Opciones) + + + + + + Captura de pantalla del diálogo de gráficos de &cantor; (pestaña de Opciones) + + + +La pestaña Opciones se usa para definir las opciones del gráfico y de la leyenda. Puede ajustar casi cualquier opción del gráfico para conseguir el mejor resultado de la figura. + + +Diálogo de gráfico en 2D + + Captura de pantalla del diálogo de gráfico en 2D de &cantor; + + + + + + Captura de pantalla del diálogo de gráfico en 2D de &cantor; + + + +Este diálogo le permite introducir la expresión de la función, su variable y los límites de dicha variable. + + +Diálogo de gráfico en 3D + + Captura de pantalla del diálogo de gráfico en 3D de &cantor; + + + + + + Captura de pantalla del diálogo de gráfico en 3D de &cantor; + + + +Este diálogo le permite introducir la expresión de la función, sus variables y los límites de dichas variables. + + + + + +Guía de órdenes + + +La ventana principal de &cantor; + +&cantor; posee los elementos de menú típicos de &kde;. Para más información lea el capítulo Menú de los Fundamentos de &kde;. + +La siguiente lista contiene los elementos de menú adicionales o especiales de &cantor;. Por favor, tenga en cuenta que algunos menús solo se muestran para algunos motores que disponen de la correspondiente implementación. + + +El menú Archivo + + + + &Ctrl;N Archivo Nuevo +Crea una hoja de ejercicios con el motor por omisión. + + +Archivo Nuevo Motor +Crea una nueva hoja de ejercicios con el motor seleccionado. + + + &Ctrl;O Archivo Abrir... +Abrir una nueva hoja de ejercicios permitida con el diálogo de archivos. + + +Archivo Abrir reciente +Escoger una hoja de ejercicios de la lista de archivos recientemente usados. + + +Archivo Descargar hojas de ejercicios de ejemplo +Abre el diálogo para descargar ejemplos enviados por otros usuarios de &cantor; con GetHotNewStuff. + + +Archivo Abrir ejemplo +Abre el diálogo para escoger un ejemplo a cargar. Los ejemplos tienen que haberse descargado antes con Archivo Descargar hojas de ejercicios de ejemplo. + + +Archivo Guardar como texto sin formato +Permite guardar la hoja de ejercicios actual como un documento de texto sin formato. + + +Archivo Exportar a LaTeX +Permite guardar la hoja de ejercicios actual como un documento de &latex;. + + +Archivo Publicar hoja de ejercicios +Abre el diálogo para publicar su hoja de ejercicios actual y permitir que esté disponible para otros usuarios de &cantor; mediante Obtener novedades. + + +Archivo Ejecutar guion +Permite cargar y ejecutar guiones por lotes en el motor actual. + + + + + + + +El menú Ver + + + +VerPaneles +Le permite conmutar la visibilidad de algunas pestañas en la barra lateral. Las posibles opciones son: + + Navegador de archivos + Conmuta la visibilidad de la pestaña Navegador de archivos en la barra lateral. + + + + Ayuda + Conmuta la visibilidad de la pestaña Ayuda en la barra lateral. + + + + Gestor de variables + Conmuta la visibilidad del Gestor de variables en la barra lateral. + + + + + &Ctrl;+ Ver Ampliar +Amplía la hoja de ejercicios actual un 10%. + + + &Ctrl;- Ver Reducir +Reduce la hoja de ejercicios actual un 10%. + + +Ver Mostrar el editor de guiones +Abre la ventana del editor de guiones por lotes para el motor actual. + + + + + + +El menú Hoja de ejercicios + + + + &Ctrl;E Hoja de ejercicios Evaluar hoja de ejercicios +Lanza la evaluación de toda la hoja de ejercicios. + + + &Shift;&Enter; Hoja de ejercicios Evaluar entrada +Lanza la evaluación de la entrada actual. + + + &Ctrl;&Enter; Hoja de ejercicios Insertar entrada de orden +Inserta una nueva entrada de orden debajo de la posición actual del cursor. + + +Hoja de ejercicios Insertar entrada de texto +Inserta una nueva entrada de texto debajo de la posición actual del cursor. + + +Hoja de ejercicios Insertar entrada de Markdown +Inserta una nueva entrada de &Markdown; debajo de la posición actual del cursor. + + +Hoja de ejercicios Insertar entrada de LaTeX +Inserta una nueva entrada de &latex; debajo de la posición actual del cursor. + + +Hoja de ejercicios Insertar imagen +Inserta una imagen debajo de la posición actual del cursor. + + +Hoja de ejercicios Insertar salto de página +Inserta un salto de página debajo de la posición actual del cursor. + + +Hoja de ejercicios Contraer todos los resultados +Contraer todos los resultados de la entrada de la orden. + + +Hoja de ejercicios Expandir todos los resultados +Expandir todos los resultados de la entrada de la orden. + + +Hoja de ejercicios Eliminar todos los resultados +Eliminar todos los resultados de la entrada de la orden. + + + &Shift;∇ Hoja de ejercicios Eliminar entrada actual +Elimina la entrada actual de la hoja de ejercicios. + + + + + + +El menú de Álgebra lineal + + + +Álgebra lineal Crear matriz +Abre el asistente de creación de matrices. + + +Álgebra lineal Calcular eigenvalores +Abre el asistente de introducción del nombre de la matriz para calcular sus eigenvalores y las dimensiones de las multiplicidades de los eigenvalores en el orden correspondiente. + + +Álgebra lineal Calcular eigenvectores +Abre el asistente de introducción del nombre de la matriz para calcular sus eigenvalores, las dimensiones de las multiplicidades de los eigenvalores y los eigenvectores en el orden correspondiente. + + +Álgebra lineal Invertir matriz +Abre el asistente de entrada del nombre de la matriz para encontrar la matriz invertida. + + + + + + +El menú Calcular + + + +Calcular Diferenciar +Abre el diálogo de parámetros de diferenciación. + + +Calcular Integrar +Abre el diálogo de parámetros de integración. + + +Calcular Resolver ecuaciones +Abre el diálogo de entrada de parámetros para resolver ecuaciones lineales y no lineales. + + + + + + +El menú Paquete + + + +Paquete Importar paquete +Abre el diálogo de importación de paquete. + + + + + + +El menú Trazar + + + +Trazar Trazar +Abre el diálogo de parámetros del gráfico. + + +Trazar Gráfico 2D +Abre el diálogo de parámetros del gráfico. + + +Trazar Gráfico 3D +Abre el diálogo de parámetros del gráfico. + + + + + + +Los menús Preferencias y Ayuda +&cantor; posee los elementos de menú Preferencias y Ayuda típicos de &kde;. Para más información, consulte las secciones sobre el menú Preferencias y el menú Ayuda de los Fundamentos de &kde;. + + + + + + + +Preguntas y respuestas + + + + La opción de menú Composición usando LaTeX no está disponible. + No todos los motores permiten usar todas las opciones. La versión actual permite salida &latex; para los motores Maxima, Qalculate y Sage. + + + Tengo instalado Sage/Maxima u otro CAS permitido, pero el motor correspondiente no aparece. + + Una posible explicación es que &cantor; no ha detectado correctamente su ubicación. Vaya al diálogo PreferenciasConfigurar &cantor;... y modifique la Ruta a la aplicación en cuestión en la página de su motor. + + + + ¡Vaya nombre más peculiar! ¿Qué tiene que ver con las matemáticas? + El nombre de &cantor; viene del matemático alemán Georg Cantor, el creador de la teoría de conjuntos. + + + + + + +Créditos y licencia + +&cantor; +Copyright del programa 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +Copyright de la documentación © 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +Traducido por Leticia Martín Hernández leticia.martin@gmail.com. &underFDL; &underGPL; + +&documentation.index; +
      + + diff --git a/po/es/docs/cantor/screenshot.png b/po/es/docs/cantor/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..940f211e41074de196dae98925340d5bf5cdb7c8 GIT binary patch literal 64562 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

      x#mTaW2t`pYxuRbx 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, 2009, 2010, 2011, 2012, 2014, 2016, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: mathematik\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2020-05-12 10:53+0300\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.12.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Marek Laane" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "qiilaq69@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Paus" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Käivita" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Peata" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Salvesta tulemus" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Täiustatud joonistamine" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Joonis" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Avaldis:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Lisavalikud:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Joonis" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Aktiivne valik" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Arvutamine" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Diferentsiaalarvutus" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Muutuja:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Järk: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Pakett" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Paketi import" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Pakett:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integraalarvutus" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Alumine piirväärtus:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Ülemine piirväärtus:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "määratud integraal" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Lineaarne algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Maatriksi loomine" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Veerud:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Read:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Omaväärtuste arvutamine" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Maatriks:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Omavektorite arvutamine" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Pöördmaatriks" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "2D joonis" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Muutuja" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Nimi" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Miinimum:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maksimum:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "3D joonis" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "Esimene muutuja" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "Teine muutuja" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Käivita skript" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Võrrandite lahendamine" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Võrrandid:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Muutujad:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Taustaprogrammi valimine" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Soovitatav versioon: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Vaata täpsemat teavet aadressilt " +"%2.
      " + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Mõned nõuded ei ole täidetud: " +"%1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Määramine vaikimisi taustaprogrammiks" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia on kõrgtaseme suure jõudlusega dünaamiline programmeerimiskeel " +"tehnilisteks arvutusteks, mille süntaks peaks olema tuttav ka muude " +"tehniliste arvutuste keskkondade kasutajatele. See pakub keerukamategi " +"võimalustega kompilaatorit, üheaegset paralleelset käitamist, arvulist " +"täpsust ja ulatuslikku matemaatiliste funktsioonide teeki." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"Rakenduse seadistustes määratud Julia asukoht peab viitama otse " +"täitmisfailile. Nimeviidad ei ole lubatud. Palun anna rakenduse seadistuste " +"korrektne asukoht ja proovi uuesti." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Cantor ei suutnud %1 Julia versiooni tuvastada. Palun määra Julia " +"täitmisfaili korrektne asukoht (nimeviidad ei ole lubatud) ja proovi uuesti." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Üritad Cantorit kasutada Julia versiooniga v%1.%2.%3. Cantor ise on " +"kompileeritud Julia versiooni v%4.%5.%6 toetusega. Palun osuta otse sellele " +"Julia versioonile või kompileeri Cantor ümber versiooni %1.%2.%3 kasutades." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Julia enda REPL-i asukoht" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Muutujate haldamise lubamine" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Jooniste lõimimine töölehele" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Julia skriptifail (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Viga - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Julia protsess lakkas töötamast." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Julia käivitamine nurjus" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "Ühendus Julia protsessiga nurjus teadmata põhjusel." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Üldine" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Plot integration test failed." +msgid "Plot Integration:" +msgstr "Joonise lõimimise test nurjus." + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, fuzzy, kde-format +#| msgid "" +#| "If true, plots will be displayed inside the worksheet. If not they appear " +#| "in a separate window." +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Märkimise korral kuvatakse jooniseid töölehel. Märkimata jätmisel kuvatakse " +"neid eraldi aknas." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Lubatud" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Enable Variable Management" +msgid "Variable Management:" +msgstr "Muutujate haldamise lubamine" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Integrate Plots in Worksheet" +msgid "Internal Plot Format:" +msgstr "Jooniste lõimimine töölehele" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, fuzzy, kde-format +#| msgid "The integration of plots will be disabled." +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "Jooniste lõimimine keelatakse." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plots" +msgstr "Joonis" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "PyPlot" +msgstr "Joonis" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Automaatselt käivitatavad käsud" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Documents to open." +msgid "Documentation" +msgstr "Avatavad dokumendid." + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "The url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "https://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/stable/en/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Seansi algul automaatselt käivitatavate skriptide nimekiri" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Viga: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua on kiire ja kerge skriptikeel lihtsa protseduurilise süntaksiga. " +"Luas on mitu matemaatikale ja teadusele orienteeritud teeki." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "luajit'i käsu asukoht" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Lua skriptifail (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Path to luajit command:" +msgid "Path to luajit:" +msgstr "luajit'i käsu asukoht:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima on sümbol- ja arvavaldiste igakülgse kasutamise süsteem, kaasa " +"arvatud diferentsiaalarvutus, integraalarvutus. Taylori read, Laplace'i " +"teisendused, tavalised diferentsiaalvõrrandid, lineaarvõrrandite süsteemid, " +"polünoomid ning hulgad, loendid, vektorid, maatriksid ja tensorid. Maxima " +"tagab äärmiselt täpsed arvulised tulemused, kasutades selleks täpseid murde " +"ning muutuva täpsusega täis- ja murdarve. Maxima võib esitada funktsioone ja " +"andmeid kahe- ja kolmemõõtmeliste joonistena." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Maxima teostusfaili asukoht" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Viga: liiga palju */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Viga: liiga palju /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Viga: oodati \" enne ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Joonise loomise tulemuse ootamine" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Maxima batch-fail (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Maxima käivitamine nurjus" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maximat tabas krahh, käivitatakse uuesti..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maximat tabas lühikese aja jooksul kaks krahhi, käivitamise üritamisest " +"loobutakse" + +#: backends/octave/octavebackend.cpp:62 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Octave, please check if there is a " +#| "translated version (currently Czech and Japanese) and use the correct url" +#| msgid "https://octave.org/doc/interpreter/" +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave on peamiselt arvutamiseks mõeldud kõrgkeel.
      See pakub " +"mugava käsurealiidese lineaarsete ja mittelineaarsete ülesannete " +"lahendamiseks ja muudeks arvutustoiminguteks, pruukides selleks keelt, mis " +"on valdavalt ühilduv Matlabiga." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Octave'i skriptifail (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Süntaksiviga" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Joonise lõimimise test nurjus." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "Jooniste lõimimine keelatakse." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python on märkimisväärselt võimas dünaamiline programmeerimiskeel, " +"mida kasutatakse väga paljude rakenduste juures. Teadusprogrammerimiseks on " +"saadaval mitu Pythoni paketti." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Pythoni skriptifail (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Cantori Pythoni server lakkas töötamast." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Cantori Pythoni serveri käivitamine nurjus" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "Ühendus Cantori Pythoni serveriga nurjus teadmata põhjusel." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "plot.ly" +msgstr "Joonis" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Joonisedialoog" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funktsioonid" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Pealkiri" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Avaldis" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Lisa" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Eemalda" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Puhasta nimekiri" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "X-muutuja" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Stiil" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Jooned" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Punktid" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Punktid ja jooned" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Kastid" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogramm" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Sammud" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Küünlajalad" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Punktid" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Pehmendamine" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Puudub" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monotoonne" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Naturaalsed kuupsplainid" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (monotoonne)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Funktsiooni vahemik" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X-vahemik" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "D&iskreetimissagedus" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Sa&mmu suurus" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Valikud" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Joonise pealkiri" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "X-telje pealdis" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Y-telje pealdis" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Legendi asukoht" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Legendi peitmine" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Ülal vasakul" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Ülal paremal" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "All vasakul" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "All paremal" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "All" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Väljas" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Alusvõrgu näitamine" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Täispiirde näitamine" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Värvide kasutamine" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Sisene kuvamine" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logaritmiline X-skaala" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logaritmiline Y-skaala" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Faili valikud" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Joonise salvestamine faili" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Failitüüp" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Tuvastamine failinime põhjal" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! ei ole tavalist odavat taskukalkulaatorit matkiv tarkvara. " +"Qalculate! püüab ära kasutada tänapäeva arvutite suurepärast liidest, " +"võimsust ja paindlikkust. Qalculate! keskmes seisab avaldis. Matemaatilise " +"avaldise kõigi arvude eraldi sisestamise asemel võib kirjutada kohe terve " +"avaldise ja seda hiljem muuta. Avaldiste tõlgendamine käib paindlikult ja " +"vigu sallivalt, nii et kui teed midagi valesti, siis annab Qalculate! " +"sellest sulle ka teada. Ühese lahenduseta avaldisi ei peeta ometi veaks. " +"Qalculate! lihtsustab nii palju kui suudab ning annab tulemuseks avaldise. " +"Lisaks arvudele ja tehtemärkidele võib avaldis sisaldada suvalises " +"kombinatsioonis muutujaid, ühikuid ja funktsioone." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Kas ja kuidas ühikuid automaatselt teisendada. Märkimisel teisendatakse " +"kõige paremini sobivatesse SI ühikutesse (ühikute väikseim kogus)" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Trigonomeetriliste funktsioonide vaikimisi nurgaühik." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Parsitud ja hinnatud arvude alus." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Kas hindamise tulemust lihtsustada või faktoriseerida." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Kas esitada ratsionaalarvud kümnendarvudena, murdudena või millegi " +"vahepealsena." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Arvu numbrite kordumise näitamine ümardamise asemel kolme punktiga (nt 2/3 " +"kuvatakse 0,666666..., mitte 0,666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Kõigi SI prefiksite kasutamine. Märkimata jätmisel ei kasutata automaatselt " +"prefikseid, mis ei ole tuhande kordsed (senti-, detsi., deka-, hekto-)." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Märkimise korral kasutatakse jagamise asemel negatiivseid astmeid (nt 5/x^2 " +"asemel 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Arvude kuvamine:" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Märkimise korral kuvatakse jooniseid töölehel. Märkimata jätmisel kuvatakse " +"neid eraldi aknas." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Kas joonistel kasutada värve." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Kas kujutada alusvõrku." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Kas joonistada joonise ümber täispiirded." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Joonte paksus pikslites." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Joonise loomisel kasutatavate interpoleerimissammude arv." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Jooniste pehmendamisrežiim." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Jooniste stiil." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Legendi asukoht joonistel." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" +"Qalculate annab teada, et trükkimine ei ole võimalik. Kas gnuplot on " +"paigaldatud?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "puudub %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 peab olema arv." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 peab olema täisarv." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 peab olema tõeväärtus." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "vigane võti %1 jaoks: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "leiti mitu avaldist ühes joonisekäsus (%1 ja %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "VIGA" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "HOIATUS" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Määratud nimega funktsiooni, muutujat ega ühikut pole." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funktsioon: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Joonistamisliides" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "Ühe või enama funktsiooni joonistamine sisesena või eraldi aknas." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "avaldis" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "valik" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "väärtus" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "täisarv" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "tõeväärtus" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "arv" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "vaikimisi: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Funktsiooni nimi" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Pealkiri" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "X-telje pealdis" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Y-telje pealdis" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Pilt, millesse joonis salvestada. Kui on andmata, joonistatakse joonis " +"aknas. Kui inline=true, näidatakse pilti sellest valikust sõltumata." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Salvestatava pildi tüüp. Võib olla automaatne, png, ps, eps, latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "Tõene värvilise, väär ühevärvilise joonise puhul." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "X-telje minimaalne väärtus." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "X-telje maksimaalne väärtus." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Kas kasutada X-teljel logaritmilist skaalat." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Kas kasutada Y-teljel logaritmilist skaalat." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "X-telje logaritmiline alus." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Y-telje logaritmiline alus." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Kas näidata joonisel alusvõrku." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "Kas joonis ümbritseda piirdega kõigil külgedel (mitte ainult teljed)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Joonte paksus." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Kuhu paigutada joonise legend. Võib olla kas none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "Joonise silumine. Võib olla none, unique, csplines, bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Joonise stiil. Võib olla lines, points, points_lines, boxes, histogram, " +"steps, candlesticks, dots" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Skaala kasutamine teisel X-teljel" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Skaala kasutamine teisel Y-teljel" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Kas luua joonis sisesena, mitte uues aknas." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Vahemaa kahe interpoleerimispunkti vahel. Vaata ka samm." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Interpoleerimispunktide arv. Vaata ka samm." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "X-muutuja nimi. See peab olema tundmatu muutuja" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Muutujate salvestamine faili" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Kõigi praegu defineeritud muutujate salvestamine faili. Neid võib uuesti " +"laadida %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "fail" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "fail: fail, millesse salvestada" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Muutujate laadimine failist" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Muutujate laadimine failist, mille %1 on eelnevalt loonud." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "fail: laaditav fail" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Arvu alus:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Murru vorming:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Kümnendmurd" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Täpne" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Murdarv" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Kombineeritud" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Arvude kuvamine:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Puhas" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Teaduslik" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Täpsus" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Lõputu jada tähistamine:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Kõigi SI prefiksite kasutamine:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Negatiivsete astmete kasutamine:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Hindamine" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Teisendamine parimatesse SI ühikutesse:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radiaanid" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Kraadid" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Goonid" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Esitamisrežiim:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Lihtsustatult" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Teguriteks lahutatult" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Nurgaühik:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Joonistamine" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Jooniste kuvamine siseselt:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Täispiirete näitamine:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Joonte paksus:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Diskreetimissagedus:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Pehmendamisrežiim:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Naturaalsed kuupsplainid" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Sammud" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Legendi asukoht:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Värvilised joonised:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Alusvõrgu näitamine:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Joonise stiil:" + +#: backends/qthelpconfig.cpp:45 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Käsukirje" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Append Text Entry" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Lisa tekstikirje taha" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Path to local documentation:" +msgid "Add local documentation" +msgstr "Kohaliku dokumentatsiooni asukoht:" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Documents to open." +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Avatavad dokumendid." + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Path to local documentation:" +msgid "Download additional documentations" +msgstr "Kohaliku dokumentatsiooni asukoht:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Nimi" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, fuzzy, kde-format +#| msgid "Add" +msgctxt "@action:button" +msgid "Add" +msgstr "Lisa" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Select the Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Taustaprogrammi valimine" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name:" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Nimi:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R on statistiliste arvutuste ja graafika keel ja keskkond, sarnanedes " +"S keelele ja keskkonnale.
      See pakub ohtralt statistika- (lineaarsed ja " +"mittelineaarsed mudelid, klassikalised statistikatestid, aegridade analüüs, " +"liigitamine, klasterdamine...) ja graafikameetodeid ning on äärmiselt " +"hõlpsalt laiendatav. S keel on sageli statistikauuringute lemmiktööriist, R " +"aga avatud lähtekoodiga tee neis osalemiseks." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Viga faili %1 avamisel" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "R-i skriptifail (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Viga käsu parsimisel" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "Kohaliku R'i dokumentatsiooni URL" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Topeltklõps avab failivalimisdialoogi" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R-i lähtefailid (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage on vaba ja avatud lähtekoodiga matemaatikatarkvara süsteem, mida " +"levitatakse GPL litsentsi alusel.
      See ühendab paljude olemasolevate " +"avatud lähtekoodiga pakettide võimsuse ühtse Pythonil põhineva liidese taha." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Sage teostusfaili asukoht" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "LaTeXi ladumissüsteemi lubamine Sage taustaprogrammis" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "%1 tulemus" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Viimane väljund oli: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Pythoni skriptifail (*.py);;Sage skriptifail (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Sage versioon %1.%2 ei ole toetatud. Cantoris töötamiseks palun uuenda oma " +"paigaldus toetatud versioonile." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Sage versiooni tuvastamine nurjus. Palun kontrolli paigaldust ja käsu 'sage -" +"v' väljundit." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Sage protsessi tabas selle avaldise hindamisel krahh" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Sage protsessi tabas krahh" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Sage protsess lõpetas selle avaldise hindamisel töö" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Sage protsess lõpetas töö" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Sage käivitamine nurjus" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Enable LaTeX typesetting" +msgid "LaTeX typesetting:" +msgstr "LaTeXi ladumissüsteemi lubamine" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"Sage LaTeXi väljund ei ole alati korrektne, mistõttu parema kogemuse " +"tagamiseks saab LaTeXi ladumissüsteemi välja lülitada" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab on vabatarkvaraline platvormist sõltumatu arvutamistarkvara " +"ning kõrgtaseme arvutamisele orienteeritud programmeerimiskeel. Scilabi " +"levitatakse vastavalt CeCILL litsentsile (GPL-iga ühilduv)" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to the Sage executable" +msgid "Path to the Scilab executable" +msgstr "Sage teostusfaili asukoht" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Scilabi skriptifail (*.sce);;Scilabi funktsioonifail (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Faili avamine" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "Download Example Worksheets" +msgid "Download Examples" +msgstr "Laadi alla näidistöölehti" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Ava näidis" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Liigu eelmisele töölehele" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Liigu järgmisele töölehele" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Taustaprogrammi ei leitud

      \n" +"
      Võiksid proovida järgmisi asju:\n" +"
      • Seadistuste muutmine seadistustedialoogis;
      • " +"
      • Järgmise programmi pakettide paigaldamine:
      • %2
      " +msgstr[1] "" +"

      Taustaprogrammi ei leitud

      \n" +"
      Võiksid proovida järgmisi asju:\n" +"
      • Seadistuste muutmine seadistustedialoogis;
      • Ühe " +"järgmistest programmidest pakettide paigaldamine:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Viga" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Taustaprogramm %1 ei ole paigaldatud" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"%1 taustaprogramm on paigaldatud, aga ei ole aktiivne. Palun kontrolli " +"paigaldust ja Cantori seadustusi" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Seanss %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Cantori komponendi leidmine nurjus veateatega %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Arvutamine..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Valmis" + +#: cantor.cpp:480 +#, fuzzy, kde-format +#| msgid "Orange" +msgid "Changed" +msgstr "Oranž" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "Avatud on mitu salvestamata töölehte. Kas sulgeda need?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Cantori sulgemine" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Aktiivset projekti on muudetud. Kas salvestada see?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Projekti salvestamine" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "Plotting" +msgid "Formatting" +msgstr "Joonistamine" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Vaikimisi kasutatav taustaprogramm" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Ladumissüsteem vaikimisi" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Süntaksi esiletõstmine vaikimisi" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Lõpetamise vaikimisi lubamine" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Avaldiste nummerdamine vaikimisi" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Vaikimisi muutuste animeerimine töölehel" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Matemaatikaavaldiste renderdamise vaikimisi lubamine $$..$$ vahel teksti- ja " +"Markdowni kirjetes (selleks peab olema paigaldatud pdflatex)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Aktiivsele järgnevate kirjete automaatne taashindamine" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Kinnituse küsimine taustaprogrammi taaskäivitamisel" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Tekstikirje vormindatud teksti salvestamine töölehe salvestamisel Jupyteri " +"märkmeraamatu vormingusse" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Vanas stiilis Cantori kirjete paigutamise stiili kasutamine" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Põimitud matemaatikarenderdaja vigade näitamine" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Tekstitulemuse näidatavate ridade piirang" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Salvesta lihttekstina" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Ekspordi LaTeXina" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Hinda töölehte" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "LaTeXit kasutav ladumissüsteem" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Süntaksi esiletõstmine" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Lõpetamine" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Reanumbrid" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Pause Animation" +msgid "Animations" +msgstr "Peata animatsioon" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Põimitud matemaatika" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Käivita taustaprogramm uuesti" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Hinda kirjet" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Lisa käsukirje" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Lisa tekstikirje" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Lisa Markdowni kirje" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Lisa LaTeXi kirje" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Lisa leheküljevahetus" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Lisa pilt" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Hide Results" +msgid "Expand All Results" +msgstr "Peida tulemused" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove All Results" +msgstr "Eemalda tulemus" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Eemalda aktiivne kirje" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Näita skriptiredaktorit" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Lõpetamise näitamine" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "Cantori komponent" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015: Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Cantori tööleht (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyteri märkmeraamat (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Salvestamine" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Salvesta" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Kõigi olemasolevate arvutuste tulemused lähevad kaotsi. Kas tõesti käivitada " +"%1 uuesti?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Kas käivitada %1 uuesti?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Katkesta" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Seansi viga: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Initsialiseerimine on lõpetatud" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Initsialiseerimine ..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[kirjutuskaitstud]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Kas soovid laadida aktiivse töölehe avalikku veebiserverisse?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Küsimus - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Tööleht ei ole salvestatud. Enne üleslaadimist tuleb see salvestada." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Hoiatus - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "See taustaprogramm ei toeta skripte" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Redigeerimine" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Vaade" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Tööleht" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "&Seadistused" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Fail" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Uus" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Paneelid" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Seadistused" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Taustavärv" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Vaikimisi" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Teksti värv" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Font" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Rasvane" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Kaldkiri" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Suurenda suurust" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Vähenda suurust" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Vali" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Lähtesta vaikeväärtusele" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Näita tulemusi" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Peida tulemused" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Näita abi" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Katkestatud" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Otsinguriba" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Otsing:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Järgmine" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Eelmine" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Asendus:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Asenda" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Asenda &kõik" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Otsimise koht:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Tõstutundlik" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Font &Size" +msgid "Font Size:" +msgstr "Fondi &suurus" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Section" +msgstr "funktsioon" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Subsection" +msgstr "funktsioon" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Solid Line Style" +msgstr "Lõpetamise stiil:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Dot Line Style" +msgstr "Lõpetamise stiil:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgid "Use Colors" +msgid "Line Color" +msgstr "Värvide kasutamine" + +#: horizontalruleentry.cpp:351 +#, fuzzy, kde-format +#| msgid "Style" +msgid "Line Style" +msgstr "Stiil" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Seadista pilti" + +#: imageentry.cpp:256 +#, fuzzy, kde-format +#| msgid "Double click to open file selection dialog" +msgid "Double click here to configure image settings" +msgstr "Topeltklõps avab failivalimisdialoogi" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Pildi %1 laadimine nurjus" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Salvesta tulemus" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Image" +msgid "Images (%1)" +msgstr "Pilt" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Pildi seadistused" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Ava" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Kuva suurus" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Laius" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Kõrgus" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Eelvaatlus" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Trükkimise suurus" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Kuvasuuruse kasutamine" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Pildi seadistused" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(automaatne)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Pildifaili avamine" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Näita LaTeXi koodi" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"%1 täitmisfaili asukohta pole määratud. Palun anna rakenduse seadistustes " +"korrektne asukoht ja proovi uuesti." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"%2 täitmisfailiks määratud faili '%1' ei ole olemas. Palun anna rakenduse " +"seadistustes korrektne asukoht ja proovi uuesti." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"Määratud fail '%1' ei osuta täitmisfailile. Palun anna rakenduse " +"seadistustes korrektne asukoht ja proovi uuesti." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"Programm %1 ei lõpetanud joonise lõimimise testi käigus täitmist %2 " +"millisekundi jooksul." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "Faili %1 avamine joonise lõimimise testi käigus nurjus." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "Tulemuse parsimine joonise lõimimise testi käigus nurjus." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "LaTeXi teostusfaili asukoht" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Dvips-i teostusfaili asukoht" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Väärtus" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "X variable" +msgid "" +msgstr "X-muutuja" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Alates:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Kuni:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Üldpealkiri" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Abstsissi skaala" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Ordinaadi skaala" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Joonise pealkiri:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "See on toetamata Jupyteri tüübisisu ('%1')" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "%1 protsess suri ootamatult. Kõigi arvutuste tulemused läksid kaotsi." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"%1 protsess suri ootamatult teatega \"%2\". Kõigi arvutuste tulemused läksid " +"kaotsi." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDE matemaatikatarkvara kasutajaliides" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016: Filipe Saraiva
      (C) 2009-2015: Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Hooldaja
      Qt5/KF5 port, Scilabi ja Pythoni taustaprogrammid" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Arendaja" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Algne autor
      Hooldaja (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra taustaprogramm" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave'i taustaprogramm" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Liides" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Cantori ikoon" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Taustaprogrammi kasutamine" + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Avatavad dokumendid." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Faili %1 avamine nurjus" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Puhasta manused" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Cantori matemaatikaviga" + +#: markdownentry.cpp:796 +#, fuzzy, kde-format +#| msgid "Cantor failed to read image with error \"%1\"" +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Cantor ei suutnud pilti lugeda, veateade oli \"%1\"" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Lehekülje vahetus ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, fuzzy, kde-format +#| msgid "Go to previous worksheet" +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Liigu eelmisele töölehele" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, fuzzy, kde-format +#| msgid "&Match case" +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "&Tõstutundlik" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, fuzzy, kde-format +#| msgid "Uploading successful" +msgid "Download Successful" +msgstr "Üleslaadimine õnnestus" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor icon" +msgid "Cantor files" +msgstr "Cantori ikoon" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "Jupyter" +msgid "Jupyter files" +msgstr "Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, fuzzy, kde-format +#| msgid "file" +msgid "All files" +msgstr "fail" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Nimi:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Väärtus:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgid "Add New Variable" +msgstr "Lisa uus muutuja" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Laadi muutujad" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Save Variables" +msgstr "Salvesta muutujad" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Remove Variables" +msgstr "Salvesta muutujad" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, fuzzy, kde-format +#| msgid "SearchBar" +msgid "Search/Filter" +msgstr "Otsinguriba" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Kas tõesti eemaldada kõik muutujad?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Faili laadimine" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Salvesta tulemus" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Eemalda tulemus" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"KDE tekstiredaktori komponenti ei leitud.\n" +"Palun kontrolli oma KDE paigaldust." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Skriptiredaktor" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Skriptiredaktor - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Ei leitud" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Jõuti algusse" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Jõuti lõppu" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Asendati %1 esinemine" +msgstr[1] "Asendati %1 esinemist" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Käsud" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Tulemused" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Vead" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Tekst" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeXi kood" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "Käivita" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Vaikimisi taustaprogramm:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "&Tööleht" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, fuzzy, kde-format +#| msgid "Enable LaTeX typesetting for Sage backend" +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "LaTeXi ladumissüsteemi lubamine Sage taustaprogrammis" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, fuzzy, kde-format +#| msgid "Enable LaTeX typesetting" +msgid "LaTeX typesetting" +msgstr "LaTeXi ladumissüsteemi lubamine" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Süntaksi esiletõstmise lubamine" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Süntaksi esiletõstmine" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "Lõpetamise lubamine" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Reanumbrid" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Reanumbrid" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "Jooniste lõimimine töölehele" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, fuzzy, kde-format +#| msgid "" +#| "Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +#| "notebook format" +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Tekstikirje vormindatud teksti salvestamine töölehe salvestamisel Jupyteri " +"märkmeraamatu vormingusse" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Võrrandid:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, fuzzy, kde-format +#| msgid "Ask for confirmation when restarting the backend" +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "Kinnituse küsimine taustaprogrammi taaskäivitamisel" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "Kirjete automaatne taashindamine" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, fuzzy, kde-format +#| msgid "Maximal number of result visible rows (0 for unlimited):" +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Tulemuse näidatavate ridade maks. arv (0 tähendab piirangu puudumist):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Käsukirje tulemuses näidatavate ridade maksimaalne arv. 0 tähendab, et " +"piirangut pole." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Markdown Entry" +msgid "Markdown:" +msgstr "Markdowni kirje" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +#| msgid "Enable LaTeX typesetting for Sage backend" +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "LaTeXi ladumissüsteemi lubamine Sage taustaprogrammis" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Otsing ..." + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Toorlahtri sihtmärgid" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Lisa kohandatud sihtmärk" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Teisenda tekstikirjeks" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Teisenda toorlahtriks" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Sihtmärgi MIME-tüüp:" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Copy result" +msgstr "Eemalda tulemus" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Näita renderdust" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Näita koodi" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Näita HTML-koodi" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Näita klaarteksti alternatiivi" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Näita HTML-i" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Näita HTML-i" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Eps-faili renderdamine nurjus. Nähtavasti läheb vaja lisapakette" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Salvesta tulemus" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Faili %1 kirjutamine nurjus." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Faili kirjutamine nurjus." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Tõrge faili %1 salvestamisel" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"Kirjutuskaitstud režiimi ei saa Cantor garanteerida, et %1 eksport tuleb " +"ikka korrektne" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Tõrge lates.xsl laaditabeli laadimisel" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Faili %1 avamine nurjus." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Faili avamine" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Tõrge valitud faili avamisel lugemiseks." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "Valitud fail ei ole korrektne Cantori ega Jupyteri projekti fail." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Valitud fail ei ole korrektne Cantori projekti fail." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"See tööleht on loodud Python2 abil, mis ei ole enam toetatud. Kasutatakse " +"Python3." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python2 ei ole enam toetatud" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"%1 taustaprogrammi ei leitud. Kirjete muutmine ja täitmine ei ole võimalik." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Taustaprogrammiga %1 tekkis mõningaid probleeme,\n" +"palun kontrolli seadistust või paigalda vajalikud paketid.\n" +"Praegu saab seda töölehte ainult näha." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Jupyteri märkmeraamatud versiooniga alla 4.5 (tuvastatud versioon %1.%2) ei " +"ole toetatud." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Jupyteri märkmeraamatud versiooniga üle 4.5 (tuvastatud versioon %1.%2) ei " +"ole toetatud." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"See märkmeraamat on loodud Python2 abil, mis ei ole enam toetatud. " +"Kasutatakse Python3." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "objekt võtmetega: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "pole objekti JSON-väärtus" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "leiti ebakorrektsed andmed (%1), mis ei ole Jupyteri lahter" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "See ei ole korrektne Jupyteri märkmeraamat" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Vigane Jupyteri märkmaraamatu skeem: %1" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Convert Entry To" +msgid "Convert To" +msgstr "Kirje teisendamine" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Commands" +msgid "Command" +msgstr "Käsud" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Markdown Entry" +msgid "Markdown" +msgstr "Markdowni kirje" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Pilt" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Lehekülje vahetus" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, fuzzy, kde-format +#| msgid "Points and Lines" +msgid "Horizontal Line" +msgstr "Punktid ja jooned" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +#| msgid "Drag Entry" +msgid "Hierarchy Entry" +msgstr "Lohista kirjet" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert Entry After" +msgid "Insert After" +msgstr "Kirje lisamine lõppu" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Lisa ette" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Lisamine" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "Trükkimise suurus" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Liiguta kirjed üles" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Liiguta kirjed alla" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Hinda kirjeid" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Eemalda kirjed" + +#: worksheet.cpp:1947 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Collapse Command Entry Results" +msgstr "Lisa käsukirje" + +#: worksheet.cpp:1948 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Expand Command Entry Results" +msgstr "Lisa käsukirje taha" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Remove Command Entry Results" +msgstr "Käsukirje" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Add Command Entry To Execution" +msgstr "Lisa käsukirje taha" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Teksti &värv..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Värv" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Teksti &esiletõstmine..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Font" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Fondi &suurus" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Rasvane" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "Kaldk&iri" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "Alla&joonitud" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "Lä&bikriipsutatud" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Joonda &vasakule" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Vasakule" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Joonda &keskele" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Keskele" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Joonda &paremale" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Paremale" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "Rööp&joonda" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Rööpselt" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove all results" +msgstr "Eemalda tulemus" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Valge" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Must" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Tumepunane" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Punane" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Helepunane" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Tumeroheline" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Roheline" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Heleroheline" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Tumesinine" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Sinine" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Helesinine" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Tumekollane" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Kollane" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Helekollane" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Tumetsüaan" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Tsüaan" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Heletsüaan" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Tumemagenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "HElemagenta" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Tumeoranž" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Oranž" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Heleoranž" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Tumehall" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Hall" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Helehall" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Liiguta üles" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Liiguta alla" + +#: worksheetentry.cpp:717 +#, fuzzy, kde-format +#| msgid "Do you also want to export the images?" +msgid "Do you really want to remove this entry?" +msgstr "Kas eksportida ka pildid?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Eemalda kirje" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Lohista kirjet" + +#~ msgid "Animate Worksheet" +#~ msgstr "Töölehe animeerimine" + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Sisselülitamisel hindab Cantor automaatselt kõiki aktiivsele kirjele " +#~ "järgnevaid kirjeid." + +#~ msgid "Defaults" +#~ msgstr "Vaikeväärtused" + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "LaTeXi lubamine (selleks peab olema paigaldatud latex)" + +#~ msgid "Enable Line Numbers" +#~ msgstr "Reanumbrite lubamine" + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Töölehe animatsioonide lubamine" + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "" +#~ "Põimitud matemaatika lubamine (selleks peab olema paigaldatud pdflatex)" + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "" +#~ "Põimitud matemaatika renderdamise nurjumise korral veateate näitamine" + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Vana Cantori treppimisstiili kasutamine" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#, fuzzy +#~| msgid "" +#~| "Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +#~| "notebook format" +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Tekstikirje vormindatud teksti salvestamine töölehe salvestamisel " +#~ "Jupyteri märkmeraamatu vormingusse" + +#, fuzzy +#~| msgid "Plot" +#~ msgid "Plot.ly" +#~ msgstr "Joonis" + +#, fuzzy +#~| msgid "Package:" +#~ msgid "Graphic Package: " +#~ msgstr "Pakett:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      Matemaatika KDE moodi" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "Kohaliku Maxima dokumentatsiooni URL" + +#, fuzzy +#~| msgid "Documents to open." +#~ msgid "Documentation:" +#~ msgstr "Avatavad dokumendid." + +#~ msgid "Url to the local Python documentation" +#~ msgstr "Kohaliku Pythoni dokumentatsiooni URL" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "Kohaliku Octave'i dokumentatsiooni URL" + +#~ msgid "Show %1 Help" +#~ msgstr "Näita %1 abi" + +#~ msgid "Path to Julia:" +#~ msgstr "Julia asukoht:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Jooniste lõimimine töölehele" + +#~ msgid "Clear Variables" +#~ msgstr "Puhasta muutujad" + +#~ msgid "Right click here to insert image" +#~ msgstr "Pildi lisamiseks tee siin paremklõps" + +#~ msgid "Choose Image" +#~ msgstr "Pildi valimine" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "Pildid (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Kinnitus - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Tekstikirje" + +#~ msgid "LaTeX Entry" +#~ msgstr "LaTeXi kirje" + +#~ msgid "Insert Entry Before" +#~ msgstr "Kirje lisamine algusse" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Lisa tekstikirje" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "scilab-adv-cli käsu asukoht (hoiatus: Scilabi versioon peab olema " +#~ "vähemalt 5.4)" + +#~ msgid "Insert Image Attachment" +#~ msgstr "Lisa pildimanus" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Lisa LaTeXi kirje" + +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Cantori pythoni serveri täitmisfaili asukoht" + +#~ msgid "" +#~ "Path to directory, which contains Cantor plugins (cantorpart and all " +#~ "backends)" +#~ msgstr "" +#~ "Cantori pluginaid (Cantori komponent ja kõik taustaprogrrammid) sisaldava " +#~ "kataloogi asukoht" + +#~ msgid "Paths (advance settings)" +#~ msgstr "Asukohad" + +#~ msgid "Path to Cantor plugin directory:" +#~ msgstr "Cantori pluginate kataloogi asukoht:" + +#, fuzzy +#~| msgid "" +#~| "Path to directory, which contains Cantor plugins (cantorpart and all " +#~| "backends)" +#~ msgid "" +#~ "Path to directory, which contains Cantor backend plugins. This is " +#~ "important setting - with wrong path Cantor can't create any worksheets." +#~ msgstr "" +#~ "Cantori pluginaid (Cantori komponent ja kõik taustaprogrrammid) sisaldava " +#~ "kataloogi asukoht" + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "Sisemiste jooniste vahevorming:" + +#~ msgid "Path to Maxima:" +#~ msgstr "Maxima asukoht:" + +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Cantori Pythoni serveri asukoht:" + +#~ msgid "Path to Sage:" +#~ msgstr "Sage asukoht:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "scilab-adv-cli käsu asukoht:" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Cantoril lubatakse järgida muutujate loomist/hävitamist" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "" +#~ "Jooniste lõimimine töölehele (muutmise korral uue seansi käivitamine)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Octave'i teostusfaili asukoht" + +#~ msgid "Path to Octave:" +#~ msgstr "Octave'i asukoht:" + +#~ msgid "Unnamed" +#~ msgstr "Nimetu" + +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "https://docs.python.org/2/" + +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "Python on märkimisväärselt võimas dünaamiline programmeerimiskeel, " +#~ "mida kasutatakse väga paljude rakenduste juures. Teadusprogrammerimiseks " +#~ "on saadaval mitu Pythoni paketti. See taustaprogramm kasutab Python 3." + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Kasutatav taustaprogramm:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Taustaprogrammi, millega see fail loodi, ei ole paigaldatud. Vajalik on %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Avalda tööleht" + +#~ msgid "Waiting for Image..." +#~ msgstr "Pildi ootamine..." + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "Faili %1 avamine nurjus - tundmatu MIME tüüp" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|LaTeXi dokument" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantori tööleht" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Cantori R-i taustaprogrammi server" + +#~ msgid "R Server" +#~ msgstr "R-i server" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009: Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Kasutamine: saveVariables fail" + +#~ msgid "Saving failed." +#~ msgstr "Salvestamine nurjus." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Kasutamine: loadVariables fail" + +#~ msgid "Loading failed." +#~ msgstr "Laadimine nurjus." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2013: Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "Pythoni käsu asukoht" + +#~ msgid "Cantor Server for R" +#~ msgstr "Cantori R-i server" + +#, fuzzy +#~| msgid "Path to scilab-adv-cli command:" +#~ msgid "Path to python2 command:" +#~ msgstr "scilab-adv-cli käsu asukoht:" + +#~ msgid " Enable Variable Management" +#~ msgstr " Muutujate haldamise lubamine" + +#~ msgid "Could not start the server." +#~ msgstr "Serveri käivitamine nurjus." + +#~ msgid "Start Animation" +#~ msgstr "Käivita animatsioon" + +#~ msgid "Restart Animation" +#~ msgstr "Käivita animatsioon uuesti" + +#~ msgid "Append Latex Entry" +#~ msgstr "Lisa LaTeXi kirje" + +#~ msgid "Append Image" +#~ msgstr "Lisa pilt" + +#~ msgid "Append Page Break" +#~ msgstr "Lisa leheküljevahetus" + +#~ msgid "Other" +#~ msgstr "Muu" + +#~ msgid "And %1 more..." +#~ msgstr "Ja veel %1..." + +#~ msgid "Main Toolbar" +#~ msgstr "Peamine tööriistariba" + +#~ msgid "Popup" +#~ msgstr "Hüpikdialoog" + +#~ msgid "The style used for Completion" +#~ msgstr "Lõpetamisel kasutatav stiil" + +#~ msgid "Insert Command Entry Before" +#~ msgstr "Lisa käsukirje ette" + +#~ msgid "Command Entry Before" +#~ msgstr "Käsukirje ees" + +#~ msgid "GroupBox" +#~ msgstr "Liitkast" + +#~ msgid "This test requires a functioning %1 backend" +#~ msgstr "See test nõuab töötavat %1 taustaprogrammi" + +#~ msgid "Form" +#~ msgstr "Vorm" + +#~ msgid "Help" +#~ msgstr "Abi" + +#~ msgid "Show Help Panel" +#~ msgstr "Abipaneeli näitamine" + +#~ msgid "Error uploading File %1" +#~ msgstr "Viga faili %1 üleslaadimisel" + +#~ msgid "MathematiKPart" +#~ msgstr "MathematiKPart" + +#~ msgid "MathematiK" +#~ msgstr "MathematiK" diff --git a/po/et/docs/cantor/index.docbook b/po/et/docs/cantor/index.docbook new file mode 100644 index 0000000..429e7f8 --- /dev/null +++ b/po/et/docs/cantor/index.docbook @@ -0,0 +1,1044 @@ + + + + ATEX"> + + +]> + + + +&cantor;i käsiraamat + + + Alexander Rieder alexanderrieder@gmail.com +MarekLaane
      bald@smail.ee
      Tõlge eesti keelde
      +
      + + +2009 +Alexander Rieder + +&FDLNotice; + +2014-05-09 +0.5 (&kde; 4.14) + + +&cantor; on rakendus, mille eesmärk on pakkuda kena töölehevaadet teistele vaba takrvara matemaatikaprogrammidele. + + + +KDE +kdeedu +matemaatika +matemaatika +Cantor +Sage +Python +Lua +Scilab +R +Maxima + + +
      + + +Sissejuhatus + +&cantor; on rakendus, mis võimaldab kasutada oma lemmik-matemaatikarakendust kenas ja &kde;-ga lõimitud tööleheliideses. Mitmed dialoogid aitavad toime tulla levinumate ülesannetega ning töölehti on võimalik teistega jagada. + + + +&cantor;i kasutamine + +Pilt: +&cantor;i pilt + + + + + + Pilt + + + + + + + +&cantor;i omadused + + Selgesti mõistetav töölehevaade avaldiste hindamiseks. + Töölehel näeb tulemusi graafiku kujul. + Lihtne pluginapõhine struktuur võimaldab lisada uusi taustaprogramme. + Uue kraami hankimise võimalus lubab alla laadida näidistöölehti (ja ka üles laadida). + Matemaatikavalemite kasutamine &latex;i abil. + Taustaprogrammiteadlik süntaksi esiletõstmine. + Pluginapõhised abidialoogid levinumate ülesannete täitmiseks, näiteks funktsiooni integreerimiseks või maatriksi sisestamiseks. + + + + +&cantor;i taustaprogrammid +&cantor; võimaldab kasutada mitut taustaprogrammi. Sinu valik sõltub sellest, mida soovid saavutada. +Praegu on saadaval järgmised taustaprogrammid: + + Sage: + + Sage on vaba ja avatud lähtekoodiga matemaatikatarkvara süsteem, mida levitatakse GPL litsentsi alusel. See ühendab paljude olemasolevate avatud lähtekoodiga pakettide võimsuse ühtse Pythonil põhineva liidese taha. Täpsemalt kõneleb sellest http://sagemath.org. + + + + Maxima: + + Maxima on sümbol- ja arvavaldiste igakülgse kasutamise süsteem, kaasa arvatud diferentsiaalarvutus, integraalarvutus. Taylori read, Laplace'i teisendused, tavalised diferentsiaalvõrrandid, lineaarvõrrandite süsteemid, polünoomid ning hulgad, loendid, vektorid, maatriksid ja tensorid. Maxima tagab äärmiselt täpsed arvulised tulemused, kasutades selleks täpseid murde ning muutuva täpsusega täis- ja murdarve. Maxima võib esitada funktsioone ja andmeid kahe- ja kolmemõõtmeliste joonistena. Täpsemalt kõneleb sellest http://maxima.sourceforge.net. + + + + R: + + R on statistiliste arvutuste ja graafika keel ja keskkond, sarnanedes S keelele ja keskkonnale. See pakub ohtralt statistika- (lineaarsed ja mittelineaarsed mudelid, klassikalised statistikatestid, aegridade analüüs, liigitamine, klasterdamine...) ja graafikameetodeid ning on äärmiselt hõlpsalt laiendatav. S keel on sageli statistikauuringute lemmiktööriist, R aga avatud lähtekoodiga tee neis osalemiseks. Täpsemalt kõneleb sellest http://www.r-project.org. + + + + &kalgebra;: + + &kalgebra; on MathML-põhine graafikute arvutaja, mis kuulub &kde; õpirakenduste projekti koosseisu. Täpsemat teavet annab veebilehekülg http://edu.kde.org/kalgebra/. + + + + Qalculate!: + + Qalculate! ei ole tavalist odavat taskukalkulaatorit matkiv tarkvara. Qalculate! püüab ära kasutada tänapäeva arvutite suurepärast liidest, võimsust ja paindlikkust. Qalculate! keskmes seisab avaldis. Matemaatilise avaldise kõigi arvude eraldi sisestamise asemel võib kirjutada kohe terve avaldise ja seda hiljem muuta. Avaldiste tõlgendamine käib paindlikult ja vigu sallivalt, nii et kui teed midagi valesti, siis annab Qalculate! sellest sulle ka teada. Ühese lahenduseta avaldisi ei peeta ometi veaks. Qalculate! lihtsustab nii palju kui suudab ning annab tulemuseks avaldise. Lisaks arvudele ja tehtemärkidele võib avaldis sisaldada suvalises kombinatsioonis muutujaid, ühikuid ja funktsioone. Rohkem teavet annab veebilehekülg http://qalculate.sourceforge.net/. + + + + Python2: + + Python on märkimisväärselt võimas dünaamiline programmeerimiskeel, mida kasutatakse väga paljude rakenduste juures. Teadusprogrammeerimiseks on saadaval mitu Pythoni paketti. + Pythonit levitatakse vastavalt Pythoni tarkvara sihtasutuse litsentsile (ühildub GPL-iga). Rohkem teavet annab ametlik veebilehekülg. + + Taustaprogramm lisab &cantor;i peamenüüsse ühe täiendava menüü: Pakett. Selle menüü ainuke kirje on PakettImpordi pakett. Selle abil saab importida Pythoni pakette töölehele. + + + See taustaprogramm toetab ainult Python 2. + + + + + Scilab: + + Scilab on vabatarkvaraline platvormist sõltumatu arvutamistarkvara ning kõrgtaseme arvutamisele orienteeritud programmeerimiskeel. + Scilabi levitatakse vastavalt CeCILL litsentsile (ühildub GPL-iga). Rohkem teavet annab veebilehekülg http://www.scilab.org/. + + Taustaprogrammi kasutamiseks peab süsteemi olema paigaldatud Scilabi versioon 5.5 või uuem. + + + + + Octave: + + &GNU; Octave on peamiselt arvutamiseks mõeldud kõrgkeel. See pakub mugava käsurealiidese lineaarsete ja mittelineaarsete ülesannete lahendamiseks ja muudeks arvutustoiminguteks, pruukides selleks keelt, mis on valdavalt ühilduv MATLAB-iga. Täpsemalt kõneleb sellest veebilehekülg http://www.gnu.org/software/octave/. + + + + Lua: + + Lua on kiire ja kerge skriptikeel lihtsa protseduurilise süntaksiga. Luas on mitu matemaatikale ja teadusele orienteeritud teeki. + Rohkem teavet annab veebilehekülg http://www.lua.org/. + See taustaprogramm toetab luajit 2. + + + + + + + +&cantor;i töötsoon + + + &cantor;i töötsoon + + + + + + &cantor;i töötsoon + + + + +&cantor;i töötsoon koosneb kolmest osast: + Kaardiriba, kus saab liikuda avatud töölehtede vahel. + Abipaneel, kus näeb käskude kohta teavet, kui sisestada "? käsk". + Muutujate haldamise paneel, kus näeb kõiki aktiivse töölehe saadaolevaid muutujaid. Abi ja muutujate haldamise paneele näidatakse &cantor;i akna külgribal eraldi kaartidel. Muutujate haldurit saab kasutada ainult Maxima (kui see on sisse lülitatud Seadistused&cantor;i seadistamine... Maxima leheküljel), &kalgebra; Octave'i, Python 2, Qualculate'i ja Scilabi taustaprogrammide puhul. + Tööleht ise. + + + +Tööleht +Tööleht on &cantor;i põhiline tööpiirkond. Selle abil saab sisestada avaldisi, lasta taustaprogrammil sooritada arvutusi ning vaadata tulemusi. Käsud, mida tööleht tunnistab, sõltuvad kasutatavast taustaprogrammist, mistõttu tuleb omandada vajaliku taustaprogrammi süntaks (selle juures on suureks abiks nupp Näita abi). Kui tead käsku, aga vajad täpsemat teavet, võid kirjutada "? käsk" ning töölehest paremal ilmubki nähtavale kontekstiabi. Kui soovid näha mõningaid näidistöölehti, vali menüüst Fail käsk Laadi alla näidistöölehti ning laadi alla töölehti, mida teised kasutajad on avalikuks teinud. +Kõigi töölehe käsukirjete kontrollimiseks saab kasutada töölehe paremas osas leiduvaid juhtnuppe, mida näidatakse, kui viia hiirekursor kirjevälja kohale. Kõigi kirjete korral on kolm põhitoimingut: Hinda kirjet kirje arvutamise tulemuste uuendamiseks, Lohista kirjet kirje liigutamiseks töölehel teise kohta ning Eemalda kirje kirje eemaldamiseks aktiivselt töölehelt. +Töölehe kirjete fondi ja joondamise seadistusi saab muuta töölehe kohal asuva tööriistariba vahendusel. + + Seadistused + Menüü Seadistused võimaldab muuta mõningaid aktiivse töölehe välimuse seadistusi. + + + Matemaatikavalemite kasutamine &latex;i abil + + See muudab viisi, kuidas näidatakse tulemusi. Sisselülitamise korral saadetakse tulemus läbi &latex;i süsteemi, mis tagab visuaalselt kenad valemid. Näiteks 3*x^2*sqrt(2)*x+2/3 asemel näeb + + + + 3*x^2*sqrt(2)*x+2/3 + + + + + + Süntaksi esiletõstmine + + Süntaksi esiletõstmine suurendab koodi loetavust, tõstes eri värviga esile võtmesõnad või kokkukuuluvad sulud. + + + + Lõpetamine + + Selle sisselülitamisel näitab &cantor; parajasti sisestatava käsu võimalikke kujusid, kui vajutad TAB-klahvi. Kui on ainult üks valik, sisestatakse see sinu eest. + + + + Reanumbrid + + See määrab, kas erinevate avaldiste ees on näha numbrid. Nii saab meeles hoida vanemaid tulemusi - Maximas käib see näiteks käsu %O1 abil. + + + + Töölehe animeerimine + + Selle abil saab määrata, kas töölehe muutuste esiletõstmiseks kasutatakse mitmesuguseid animatsioone või mitte. + + + + + + + + + +Käskude seletused + + +&cantor;i peaaken + +&cantor; kasutab tavapäraseid &kde; menüü kirjeid, millest kõneleb lähemalt &kde; põhialuste käsiraamatu menüüd käsitlev osa. + +&cantor;i täiendavad või spetsiaalsed menüükirjed: + + +Menüü Fail + + + + &Ctrl;N Fail Uus +Uue töölehe loomine vaikimisi taustaprogrammiga. + + +Fail Uus taustaprogramm +Uue töölehe loomine valitud taustaprogrammiga. + + +Fail Laadi alla näidistöölehti +Avab dialoogi näidiste allalaadimiseks, mida on teised &cantor;i kasutajad üles laadinud GetHotNewStuffi abil. + + +Fail Ava näidis +Avab dialoogi laaditava näidise valimiseks. Näidised tuleb eelnevalt alla laadida menüükäsuga Fail Laadi alla näidistöölehti + + +Fail Salvesta lihttekstina +Salvestab aktiivse töölehe lihttekstidokumendina. + + +Fail Ekspordi LaTeXina +Salvestab aktiivse töölehe &latex;i dokumendina. + + +Fail Avalda tööleht +Avab dialoogi sinu aktiivse töölehe avaldamiseks ja selle muutmiseks kättesaadavaks teistele &cantor;i kasutajatele GetHotNewStuffi abil. + + +Fail Käivita skript +Laadib ja käivitab aktiivse taustaprogrammi skripte. + + + + + + + +Menüü Vaade + + + + &Ctrl;+ Vaade Suurenda +Suurendab aktiivset töölehte 10% võrra. + + + &Ctrl;- Vaade Vähenda +Vähendab aktiivset töölehte 10% võrra. + + +Vaade Näita skriptiredaktorit +Avab aktiivse taustaprogrammi skripti redaktori. + + +Vaade Paneelid Abi +Lülitab Abi kaardi näitamise külgribal sisse või välja. + + +Vaade Paneelid Muutujate haldur +Lülitab muutujate halduri kaardi näitamise külgribal sisse või välja. + + + + + + +Menüü Tööleht + + + +Tööleht Hinda töölehte +Käivitab terve töölehe hindamise. + + + &Shift;Return Tööleht Hinda kirjet +Käivitab aktiivse kirje hindamise. + + + &Ctrl;Return Tööleht Lisa käsukirje +Lisab uue käsukirje kursori asukohta. + + +Tööleht Lisa tekstikirje +Lisab uue tekstikirje kursori asukohta. + + +Tööleht Lisa pilt +Lisab pildimalli kursori asukohta. Sul tuleb klõpsata mallil &HPNga;, et panna paika pildi üksikasjad. + + +Tööleht Lisa leheküljevahetus +Lisab leheküljevahetuse kursori asukohta. + + + &Shift;Del Tööleht Eemalda aktiivne kirje +Eemaldab aktiivse kirje töölehelt. + + + + + + +Menüü Seadistused +See menüü sisaldab tavapäraseid &kde; menüü Seadistused kirjeid ning kirjeid, mida tutvustab seadistuste osa. + + + +Menüü Abi +&help.menu.documentation; + + + + + +&cantor; arendajatele + +&cantor;it saab hõlpsasti laiendata pluginate abil. Kirjutada saab järgmisi asju + + Taustaprogrammid: + + Uus taustaprogramm võimaldab kasutada &cantor;i liidest mõne teise programmiga. + + + + Abilised: + + Abilised pakuvad dialooge levinumate ülesannete automatiseerimiseks (näiteks maatriksi sisestamine või skripti käivitamine). + + + + +Praegu puuduvad spetsiaalsed arendajate õppematerjalid ja API dokumentatsioon, nii et kui soovid pluginat kirjutada, tuleb endal lähtekoodi uurida. Kõik liiede definitsioonid asuvad kataloogis lib. Teostuse näidisteks on &cantor;iga kaasas olevad pluginad. + + + + +Küsimused ja vastused +&reporting.bugs; &updating.documentation; + + Menüükirje Matemaatikavalemite kasutamine LaTeXi abil puudub + Kõik taustaprogrammid ei toeta kõiki võimalusi. Praeguses versioonis on &latex;i väljund toetatud Maxima, Qalculate! ja Sage taustaprogrammis. + + + Paigaldasin Sage/Maxima, aga vastavat taustaprogrammi pole näha. + + Asi võib olla selles, et &cantor; ei osanud seda üles leida. Ava dialoog Seadistused&kappname; seadistamine... ja muuda vajaliku rakenduse asukohta. + + + + Miks nii imelik nimi - mis on sellel pistmist matemaatikaga? + &cantor; on saanud nime saksa matemaatiku Georg Cantori järgi, kes oli hulgateooria looja. + + + + + + +Autorid ja litsents + +&cantor; +Rakenduse autoriõigus 2009-2011: Alexander Rieder alexanderrieder@gmail.com + +Dokumentatsiooni autoriõigus © 2009-2011: Alexander Rieder alexanderrieder@gmail.com + +Tõlge eesti keelde: Marek Laane bald@smail.ee +&underFDL; &underGPL; + + +Paigaldamine + + +&cantor;i hankimine +&install.intro.documentation; + + +Nõuded + +&cantor;i edukaks kasutamiseks on vajalik &kde; 4. Kui soovid ladumissüsteemi kasutada, peavad paigaldatud olema &latex; ja LibSpectre. Kindla taustaprogrammi kasutamiseks peab paigaldatud olema vastav matemaatikapakett. + + + + + + + + + +Kompileerimine ja paigaldamine +&install.compile.documentation; + + +Seadistamine + +Sõltuvalt süsteemist võib olla vajalik muuta &cantor;i kasutatavate taustaprogrammide asukohta. + + + + + +&documentation.index; +
      + + diff --git a/po/eu/cantor.po b/po/eu/cantor.po new file mode 100644 index 0000000..168224d --- /dev/null +++ b/po/eu/cantor.po @@ -0,0 +1,4897 @@ +# Translation of cantor.po to Euskera/Basque (eu). +# Copyright (C) 2011 This_file_is_part_of_KDE +# This file is distributed under the same license as the kdeedu package. +# +# Iñigo Salvador Azurmendi , 2011. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2011-10-11 23:56+0200\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.2\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Iñigo Salvador Azurmendi" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "xalba@euskalnet.net" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Gorde emaitza" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Marrazketa aurreratua" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Marraztu" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Adierazpena:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Aukera gehigarriak:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Marraztu" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Kalkulatu" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Aldagaia:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Beheko muga:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Goiko muga:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "Algebra &lineala" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Sortu matrizea" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Zutabeak:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Errenkadak:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Kalkulatu autobalioak" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrizea:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Kalkulatu autobektoreak" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Matrizea alderantzikatu" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Aldagaia" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Izena" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Gutxienekoa:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Gehienezkoa:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1. aldagaia" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2. aldagaia" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Exekutatu script-a" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Ebatzi ekuazioak" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Ekuazioak:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Aldagaiak:" + +#: backendchoosedialog.cpp:64 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Select the Backend" +msgstr "Berrabiarazi 'backend'" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"

      %1

      %2

      Begiratu %3 informazio " +"gehiago eskuratzeko
      " + +#: backendchoosedialog.cpp:125 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"

      %1

      %2

      Begiratu %3 informazio " +"gehiago eskuratzeko
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Egin hau 'backend' lehenetsia" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Julia script file (*.jl)" +msgstr "*.R|R script fitxategia" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Akatsa - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Julia process." +msgstr "Sage abiarazteak huts egin du" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Orokorra" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Variable:" +msgid "Variable Management:" +msgstr "Aldagaia:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plots" +msgstr "Marraztu" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "PyPlot" +msgstr "Marraztu" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Commands to autorun" +msgstr "Komando sarrera" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documentation" +msgstr "Ireki beharreko dokumentua" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "http://docs.kde.org/stable/en/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Saioaren hasieran automatikoki exekutatu beharreko script-en zerrenda" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Akatsa: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Path to luajit command" +msgstr "Maxima-rako bidea:" + +#: backends/lua/luaextensions.cpp:20 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Lua script file (*.lua)" +msgstr "*.R|R script fitxategia" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Path to luajit:" +msgstr "Maxima-rako bidea:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Maxima-ren exekutagarrirako bidea" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, fuzzy, kde-format +#| msgid "*.mac|Maxima batch File" +msgid "Maxima batch file (*.mac)" +msgstr "*.mac|Maxima batch fitxategia" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Maxima abiarazteak huts egin du" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima kraskatu egin da. Berrabiarazten..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima bitan kraskatu da oso denbora laburrean. Abiarazteko saiakerak gelditu" + +#: backends/octave/octavebackend.cpp:62 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Octave, please check if there is a " +#| "translated version (currently Czech and Japanese) and use the correct url" +#| msgid "http://www.gnu.org/software/octave/doc/interpreter/" +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "http://www.gnu.org/software/octave/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" + +#: backends/octave/octaveextensions.cpp:34 +#, fuzzy, kde-format +#| msgid "*.m|Octave script file" +msgid "Octave script file (*.m)" +msgstr "*.m|Octave script fitxategia" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Sintaxi akatsa" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Python script file (*.py)" +msgstr "*.R|R script fitxategia" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Cantor python server." +msgstr "Sage abiarazteak huts egin du" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "plot.ly" +msgstr "Marraztu" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Functions" +msgstr "Ekuazioak:" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, fuzzy, kde-format +#| msgid "Expression:" +msgid "Expression" +msgstr "Adierazpena:" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove" +msgstr "Kendu sarrera" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, fuzzy, kde-format +#| msgid "Clear Variables" +msgid "Clear List" +msgstr "Garbitu aldagaiak" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, fuzzy, kde-format +#| msgid "Variable" +msgid "X variable" +msgstr "Aldagaia" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, fuzzy, kde-format +#| msgid "Plot title:" +msgid "Plot title" +msgstr "Marrazkiaren izenburua:" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, fuzzy, kde-format +#| msgid "Display Size" +msgid "Display Grid" +msgstr "Bistaratu neurria" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, fuzzy, kde-format +#| msgid "Display Size" +msgid "Display inline" +msgstr "Bistaratu neurria" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, fuzzy, kde-format +#| msgid "Expression:" +msgid "expression" +msgstr "Adierazpena:" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, fuzzy, kde-format +#| msgctxt "@title:column" +#| msgid "Value" +msgid "value" +msgstr "Balioa" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "number" +msgstr "Lerro zenbakiak" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "default: %1" +msgstr "Lehenetsiak" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, fuzzy, kde-format +#| msgid "Load Variables" +msgid "Load variables from a file" +msgstr "Zamatu aldagaiak" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, fuzzy, kde-format +#| msgid "Expression:" +msgid "Precision" +msgstr "Adierazpena:" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate" +msgstr "Ebaluatu sarrera" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plotting" +msgstr "Marraztu" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, fuzzy, kde-format +#| msgid "Display Size" +msgid "Display plots inline:" +msgstr "Bistaratu neurria" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show grid:" +msgstr "Erakutsi kodea" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, fuzzy, kde-format +#| msgid "Plot title:" +msgid "Plot Style:" +msgstr "Marrazkiaren izenburua:" + +#: backends/qthelpconfig.cpp:45 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Komando sarrera" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Append Text Entry" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Erantsi testu sarrera" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Add local documentation" +msgstr "Maxima-rako bidea:" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Document to open" +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Ireki beharreko dokumentua" + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Download additional documentations" +msgstr "Maxima-rako bidea:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Izena" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Berrabiarazi 'backend'" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name:" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Izena:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, fuzzy, kde-format +#| msgid "" +#| "R is a language and environment for statistical computing and graphics, " +#| "similar to the S language and environment.
      It provides a wide " +#| "variety of statistical (linear and nonlinear modelling, classical " +#| "statistical tests, time-series analysis, classification, clustering, ...) " +#| "and graphical techniques, and is highly extensible. The S language is " +#| "often the vehicle of choice for research in statistical methodology, and " +#| "R provides an Open Source route to participation in that activity." +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R lengoaia bat da eta estatistika kalkulu eta grafikoentzako ingurune bat, S " +"lengoaia eta ingurunearen antzekoa.
      teknika estatistiko (eredu lineala " +"eta ez-lineala, proba estatistiko klasikoak, denbora-serie azterketa, " +"sailkapena, multzokatzea, ...) eta grafiko aniztasun zabala hornitzen du, " +"eta oso hedagarria da. S lengoaia maiz izaten da estatistika metodologian " +"ikertzeko hautatutako bitartekoa, eta R-k jarduera horretan esku hartzeko " +"Iturburu Irekiko bide bat ematen du." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Akatsa %1 fitxategia irekitzerakoan" + +#: backends/R/rextensions.cpp:22 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "R script file (*.R)" +msgstr "*.R|R script fitxategia" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Akatsa komandoaren azterketa sintaktikoan" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Klik bikoitza fitxategi hautaketa elkarrizketa irekitzeko" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R iturburu fitxategiak (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Sage-ren exekutagarrirako bidea" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "%1-(r)en emaitza" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Azken irteera izan da: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, fuzzy, kde-format +#| msgid "" +#| "*.py|Python script file\n" +#| "*.sage|Sage script file" +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" +"*.py|Python script fitxategia\n" +"*.sage|Sage script fitxategia" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Sage prozesua kraskatu egin da adierazpen hau ebaluatu bitartean" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Sage prozesua kraskatu egin da" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Sage prozesua irten egin da adierazpen hau ebaluatu bitartean" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Sage prozesua irten egin da" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Sage abiarazteak huts egin du" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to the Sage executable" +msgid "Path to the Scilab executable" +msgstr "Sage-ren exekutagarrirako bidea" + +#: backends/scilab/scilabextensions.cpp:23 +#, fuzzy, kde-format +#| msgid "" +#| "*.py|Python script file\n" +#| "*.sage|Sage script file" +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +"*.py|Python script fitxategia\n" +"*.sage|Sage script fitxategia" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Open file" +msgstr "Ireki irudi fitxategia" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "Download Example Worksheets" +msgid "Download Examples" +msgstr "Jaitsi adibide lan-orria" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Ireki adibidea" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +msgstr[1] "" + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Akatsa" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "%1 'backend' instalatu gabe dago" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "%1 saioa" + +#: cantor.cpp:386 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to find the Cantor Part with error %1" +msgstr "Ezin izan da aurkitu Cantor atala." + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Kalkulatzen..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Prest" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Close Cantor" +msgstr "Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save Project" +msgstr "Gorde emaitza" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Formatting" +msgstr "Marraztu" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Modu lehenetsian erabiltzen den 'backend'" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Erabili sintaxi nabarmenketa modu lehenetsian" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Gaitu adierazpenen zenbakitzea modu lehenetsian" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Automatikoki berrebaluatu unekoaren azpiko sarrerak" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, fuzzy, kde-format +#| msgid "Export to LaTex" +msgid "Export to LaTeX" +msgstr "Esportatu LaTex-era" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Ebaluatu lan-orria" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Sintaxi nabarmenketa" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Lerro zenbakiak" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Pause Animation" +msgid "Animations" +msgstr "Eten animazioa" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Berrabiarazi 'backend'" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Ebaluatu sarrera" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Txertatu komando sarrera" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Txertatu testu sarrera" + +#: cantor_part.cpp:278 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Insert Markdown Entry" +msgstr "Txertatu komando sarrera" + +#: cantor_part.cpp:285 +#, fuzzy, kde-format +#| msgid "Insert Latex Entry" +msgid "Insert LaTeX Entry" +msgstr "Txertatu Latex sarrera" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Txertatu orri jauzia" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Txertatu irudia" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Expand All Results" +msgstr "Emaitza" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove All Results" +msgstr "Kendu emaitza" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Kendu uneko sarrera" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Erakutsi script editorea" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "" + +#: cantor_part.cpp:406 +#, fuzzy, kde-format +#| msgid "(C) 2009-2011 Alexander Rieder" +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2011 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, fuzzy, kde-format +#| msgid "*.cws|Cantor Worksheet" +msgid "Cantor Worksheet (*.cws)" +msgstr "*.cws|Cantor lan-orria" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save as" +msgstr "Gorde emaitza" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Restart %1?" +msgstr "Berrabiarazi 'backend'" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Saioaren akatsa: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Hasieraketa amaituta" + +#: cantor_part.cpp:690 +#, fuzzy, kde-format +#| msgid "Initializing Session" +msgid "Initializing..." +msgstr "Saioa hasieratzen" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Uneko lan-orria web zerbitzari publiko batera igo nahi duzu?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Galdera - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Lan-orria ez dago gordeta. Gorde egin behar zenuke igo baino lehen." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Abisua - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "'Backend' honek ez ditu script-ak onartzen." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Ikusi" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Lan-orria" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "E&zarpenak" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Fitxategia" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Berria" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Panelak" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "E&zarpenak" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "Default" +msgstr "Lehenetsiak" + +#: commandentry.cpp:151 +#, fuzzy, kde-format +#| msgid "Text Entry" +msgid "Text Color" +msgstr "Testu sarrera" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Show Results" +msgstr "Emaitza" + +#: commandentry.cpp:338 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Hide Results" +msgstr "Emaitza" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Show Help" +msgstr "Emaitza" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Section" +msgstr "Ekuazioak:" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Subsection" +msgstr "Ekuazioak:" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Plot title:" +msgid "Dot Line Style" +msgstr "Marrazkiaren izenburua:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgid "Text Entry" +msgid "Line Color" +msgstr "Testu sarrera" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Configuratu irudia" + +#: imageentry.cpp:256 +#, fuzzy, kde-format +#| msgid "Double click to open file selection dialog" +msgid "Double click here to configure image settings" +msgstr "Klik bikoitza fitxategi hautaketa elkarrizketa irekitzeko" + +#: imageentry.cpp:288 +#, fuzzy, kde-format +#| msgid "Cannot load image " +msgid "Cannot load image %1" +msgstr "Irudia ezin zamatu " + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Gorde emaitza" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Image Entry" +msgid "Images (%1)" +msgstr "Irudi sarrera" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Irudiaren ezarpenak" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Ireki" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Bistaratu neurria" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Zabalera" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Altuera" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Irudiaren ezarpenak" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Ireki irudi fitxategia" + +#: latexentry.cpp:61 textentry.cpp:111 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show LaTeX code" +msgstr "Erakutsi kodea" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Latex-en exekutagarrirako bidea" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Balioa" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "Variable" +msgid "" +msgstr "Aldagaia" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Nondik:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Nora:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Izenburu nagusia" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Abzisaren eskala" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Ordenatuaren eskala" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Marrazkiaren izenburua:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDEren bitartekoa aplikazio matematikoentzako" + +#: main.cpp:74 +#, fuzzy, kde-format +#| msgid "(C) 2009-2011 Alexander Rieder" +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2011 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "" + +#: main.cpp:78 +#, fuzzy, kde-format +#| msgid "Octave backend" +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Octave 'backend'" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, fuzzy, kde-format +#| msgid "Alexander Rieder" +msgid "Alexander Semke" +msgstr "Alexander Rieder" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra 'backend'" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave 'backend'" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "" + +#: main.cpp:86 main.cpp:87 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor icon" +msgstr "Cantor" + +#: main.cpp:92 +#, fuzzy, kde-format +#| msgid "Use this backend" +msgid "Use backend " +msgstr "Erabili 'backend' hau" + +#: main.cpp:95 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documents to open." +msgstr "Ireki beharreko dokumentua" + +#: main.cpp:130 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1" +msgstr "Akatsa %1 fitxategia irekitzerakoan" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, fuzzy, kde-format +#| msgid "Syntax Error" +msgid "Cantor Math Error" +msgstr "Sintaxi akatsa" + +#: markdownentry.cpp:796 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Ezin izan da aurkitu Cantor atala." + +#: pagebreakentry.cpp:28 +#, fuzzy, kde-format +#| msgid "Page Break" +msgid "--- Page Break ---" +msgstr "Orri jauzia" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor files" +msgstr "Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Jupyter files" +msgstr "Ireki irudi fitxategia" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Izena:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Balioa:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgid "Add New Variable" +msgstr "Erantsi aldagai berria" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Zamatu aldagaiak" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Save Variables" +msgstr "Biltegiratu aldagaiak" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Remove Variables" +msgstr "Biltegiratu aldagaiak" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Ziur zaude aldagai guztiak kendu nahi dituzula?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +#| msgid "Load Variables" +msgid "Load file" +msgstr "Zamatu aldagaiak" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Gorde emaitza" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Kendu emaitza" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Ezin izan da KDE testu-editore osagai bat aurkitu;\n" +"mesedez egiaztatu zure KDEren instalazioa." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Script editorea" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Script editorea - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" +msgstr[1] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Commands" +msgstr "Komando sarrera" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Results" +msgstr "Emaitza" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +#| msgid "Error" +msgid "Errors" +msgstr "Akatsa" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "'Backend' lehenetsia:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "&Lan-orria" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Gaitu sintaxi nabarmenketa" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Sintaxi nabarmenketa" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax completion" +msgstr "Gaitu sintaxi nabarmenketa" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Lerro zenbakiak" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Lerro zenbakiak" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Ekuazioak:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "Berrebaluatu sarrerak automatikoki" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown:" +msgstr "Txertatu komando sarrera" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert to Text Entry" +msgstr "Txertatu testu sarrera" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Copy result" +msgstr "Kendu emaitza" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Erakutsi kodea" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show HTML Code" +msgstr "Erakutsi kodea" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Ezin errendatu Eps fitxategia. Pakete osagarriak behar izan ditzakezu." + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Gorde emaitza" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Ezin idatzi %1 fitxategia." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, fuzzy, kde-format +#| msgid "Cannot write file %1." +msgid "Cannot write file." +msgstr "Ezin idatzi %1 fitxategia." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Akatsa %1 fitxategia gordetzerakoan" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Akatsa latex.xsl estilo-orria zamatzerakoan" + +#: worksheet.cpp:1327 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1." +msgstr "Akatsa %1 fitxategia irekitzerakoan" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Open File" +msgstr "Ireki irudi fitxategia" + +#: worksheet.cpp:1350 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the selected file for reading." +msgstr "Akatsa %1 fitxategia irekitzerakoan" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Arazo batzuk daude %1 'backend'-arekin,\n" +"mesedez egiaztatu zure konfigurazioa edo instalatu beharrezko paketeak.\n" +"Lan-orri hau besterik ezingo duzu ikusi." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert To" +msgstr "Txertatu testu sarrera" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Command" +msgstr "Komando sarrera" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown" +msgstr "Txertatu komando sarrera" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, fuzzy, kde-format +#| msgid "Image Entry" +msgid "Image" +msgstr "Irudi sarrera" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Orri jauzia" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +#| msgid "Image Entry" +msgid "Hierarchy Entry" +msgstr "Irudi sarrera" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Insert After" +msgstr "Txertatu testu sarrera" + +#: worksheet.cpp:1856 +#, fuzzy, kde-format +#| msgid "Insert Entry Before" +msgid "Insert Before" +msgstr "Txertatu sarrera aurretik" + +#: worksheet.cpp:1875 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Insert" +msgstr "Txertatu sarrera" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Move Entries Down" +msgstr "Txertatu testu sarrera" + +#: worksheet.cpp:1933 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate Entries" +msgstr "Ebaluatu sarrera" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Entries" +msgstr "Kendu sarrera" + +#: worksheet.cpp:1947 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Collapse Command Entry Results" +msgstr "Txertatu komando sarrera" + +#: worksheet.cpp:1948 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Expand Command Entry Results" +msgstr "Erantsi komando sarrera" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Remove Command Entry Results" +msgstr "Komando sarrera" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Add Command Entry To Execution" +msgstr "Erantsi komando sarrera" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "" + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "" + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "" + +#: worksheet.cpp:2156 +#, fuzzy, kde-format +#| msgid "Height" +msgctxt "@label right justify" +msgid "Right" +msgstr "Altuera" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove all results" +msgstr "Kendu emaitza" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +#| msgid "Ready" +msgid "Red" +msgstr "Prest" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, fuzzy, kde-format +#| msgid "Do you also want to export the images?" +msgid "Do you really want to remove this entry?" +msgstr "Irudiak ere esportatu nahi dituzu?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Kendu sarrera" + +#: worksheetentry.cpp:850 +#, fuzzy, kde-format +#| msgid "Image Entry" +msgid "Drag Entry" +msgstr "Irudi sarrera" + +#, fuzzy +#~| msgid "Evaluate Worksheet" +#~ msgid "Animate Worksheet" +#~ msgstr "Ebaluatu lan-orria" + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Gaituta dagoenean, Cantorrek automatikoki ebaluatuko ditu unekoaren " +#~ "azpiko sarrera guztiak." + +#~ msgid "Defaults" +#~ msgstr "Lehenetsiak" + +#~ msgid "Enable Line Numbers" +#~ msgstr "Gaitu lerro zenbakiak" + +#, fuzzy +#~| msgid "Evaluate Worksheet" +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Ebaluatu lan-orria" + +#, fuzzy +#~| msgid "Plot" +#~ msgid "Plot.ly" +#~ msgstr "Marraztu" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      Matematikak lantzeko KDEren modua" + +#, fuzzy +#~| msgid "Document to open" +#~ msgid "Documentation:" +#~ msgstr "Ireki beharreko dokumentua" + +#, fuzzy +#~| msgid "Path to Maxima:" +#~ msgid "Path to Julia:" +#~ msgstr "Maxima-rako bidea:" + +#~ msgid "Clear Variables" +#~ msgstr "Garbitu aldagaiak" + +#~ msgid "Right click here to insert image" +#~ msgstr "Eskuinarekin klikatu hemen irudia txertatzeko" + +#, fuzzy +#~| msgid "Configure Image" +#~ msgid "Choose Image" +#~ msgstr "Configuratu irudia" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Baieztapena - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Testu sarrera" + +#, fuzzy +#~| msgid "Text Entry" +#~ msgid "LaTeX Entry" +#~ msgstr "Testu sarrera" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Txertatu testu sarrera" + +#, fuzzy +#~| msgid "Insert Image" +#~ msgid "Insert Image Attachment" +#~ msgstr "Txertatu irudia" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Txertatu Latex sarrera" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Octave-ren exekutagarrirako bidea" + +#~ msgid "Path to Maxima:" +#~ msgstr "Maxima-rako bidea:" + +#, fuzzy +#~| msgid "Failed to start Sage" +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Sage abiarazteak huts egin du" + +#~ msgid "Path to Sage:" +#~ msgstr "Sage-rako bidea:" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Octave-ren exekutagarrirako bidea" + +#~ msgid "Path to Octave:" +#~ msgstr "Octave-rako bidea:" + +#~ msgid "Unnamed" +#~ msgstr "Izengabea" + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Hautatu erabili beharreko 'backend':" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Fitxategi hau sortzeko erabili zen 'backend' ez dago instalatuta. %1 " +#~ "behar du" + +#~ msgid "Publish Worksheet" +#~ msgstr "Argitaratu lan-orria" + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "Ezin ireki %1 fitxategia: MIME mota ezezaguna" + +#, fuzzy +#~| msgid "*.tex|LaTex Document" +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|LaTex dokumentua" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantor lan-orria" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Cantorren R 'backend'-arentzako zerbitzaria" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#, fuzzy +#~| msgid "Load Variables" +#~ msgid "Usage: loadVariables file" +#~ msgstr "Zamatu aldagaiak" + +#, fuzzy +#~| msgid "Load Variables" +#~ msgid "Loading failed." +#~ msgstr "Zamatu aldagaiak" + +#, fuzzy +#~| msgid "(C) 2009-2011 Alexander Rieder" +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2011 Alexander Rieder" + +#~ msgid "Cantor Server for R" +#~ msgstr "R-rentzako Cantor zerbitzaria" + +#~ msgid "Could not start the server." +#~ msgstr "Ezin izan da zerbitzaria abiarazi." + +#~ msgid "Start Animation" +#~ msgstr "Hasi animazioa" + +#~ msgid "Restart Animation" +#~ msgstr "Berrabiarazi animazioa" + +#~ msgid "Append Latex Entry" +#~ msgstr "Erantsi Latex sarrera" + +#~ msgid "Append Image" +#~ msgstr "Erantsi irudia" + +#~ msgid "Append Page Break" +#~ msgstr "Erantsi orri jauzia" + +#~ msgid "And %1 more..." +#~ msgstr "Eta %1 gehiago..." + +#~ msgid "Main Toolbar" +#~ msgstr "Tresna-barra nagusia" + +#~ msgid "Popup" +#~ msgstr "Azaleratu" diff --git a/po/fi/cantor.po b/po/fi/cantor.po new file mode 100644 index 0000000..fa81646 --- /dev/null +++ b/po/fi/cantor.po @@ -0,0 +1,4980 @@ +# KDE Finnish translation sprint participants: +# Author: Artnay +# Author: Lliehu +# Author: Niklas Laxström +# Lasse Liehu , 2012, 2013, 2014, 2015, 2016. +# Tommi Nieminen , 2018, 2019, 2020, 2022. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-07-29 12:01+0300\n" +"Last-Translator: Tommi Nieminen \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-POT-Import-Date: 2013-01-13 20:43:20+0000\n" +"X-Generator: Lokalize 20.12.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Jiri Grönroos, Lasse Liehu, Tommi Nieminen" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" +"jiri.gronroos+kde@iki.fi, lasse.liehu@gmail.com, translator@legisign.org" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Tauko" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Käynnistä" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Keskeytä" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Tallenna tulos" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Lisää kaavio-ominaisuuksia" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Piirrä" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Lauseke:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Lisäasetukset:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Piirrä" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Asetus käytössä" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Laske" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Derivoi" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Muuttuja:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Kertaa: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Paketti" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Tuo paketti" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Paketti:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integroi" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Alaraja:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Yläraja:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "määrätty integraali" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Lineaarialgebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Luo matriisi" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Sarakkeita:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Rivejä:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Laske ominaisarvot" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matriisi:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Laske ominaisvektorit" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Käännä matriisi" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "3D-piirto" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Muuttuja" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Nimi" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimi:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maksimi:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "2D-piirto" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1. muuttuja" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2. muuttuja" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Suorita skripti" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Ratkaise yhtälöitä" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Yhtälöt:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Muuttujat:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Valitse taustajärjestelmä" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Suositeltu versio: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "
      %1

      Lisätietoa: %2
      " + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Jotkin vaatimukset eivät täyty: " +"%1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Aseta oletustaustajärjestelmäksi" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia on tehokas korkean tason dynaaminen ohjelmointikieli tekniseen " +"laskentaan. Sen syntaksi on tuttu muiden teknisen laskennan ympäristöjen " +"käyttäjille. Se tarjoaa edistyneen kääntäjän, hajautetun " +"rinnakkaissuorituksen, suuren numeerisen tarkkuuden ja laajan matemaattisen " +"funktiokirjaston." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"Sovellusasetuksissa annetun Julian sijaintipolun tulee osoittaa suoraan " +"ohjelmatiedostoon, symbolisia linkkejä ei hyväksytä. Muuta sijainti " +"sovellusasetuksissa ja yritä uudelleen." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Cantor ei tunnistanut Julian (%1) versiota. Anna Julia-ohjelmatiedoston " +"oikea sijainti (symbolisia linkkejä ei sallita) ja yritä uudelleen." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Yrität käyttää Cantoria Julia-version %1.%2.%3 kanssa. Tämä Cantorin versio " +"koostettiin Julia-version %4.%5.%6 tuen kanssa. Osoita tähän Julian versioon " +"tai koosta Cantor uudelleen käyttäen versiota %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Julian oman REPLin sijainti" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Käytä muuttujien hallintaa" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Yhdistä kaaviot työvihkoon" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, fuzzy, kde-format +#| msgid "Graphic Package for \"Plot\"-assistant" +msgid "Graphical package for the Plot-Assistant" +msgstr "Kaavionpiirtoavustajan graafinen paketti" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Gadfly ei valitettavasti tue 3D-kaavioita" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Julia-skriptitiedosto (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Virhe – Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"Julia-istuntoon ei voi kirjautua Julian sisäisen ongelman eli puuttuvan " +"tiedoston takia: ”%1”" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "Julia-istuntoon ei voi kirjautua tuntemattoman sisäisen ongelman takia" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Julia-prosessi lakkasi toimimasta." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Julia-prosessin käynnistys epäonnistui." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "Julia-prosessin kanssa viestintä epäonnistui tuntemattomasta syystä." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +# Ei perusasetukset, koska tässä on general vs backend specific settings +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Perusasetukset" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Ohjelmatiedosto:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Plot Integration:" +msgstr "Integroi" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Jos valittu, kaaviot näytetään työvihossa. Jollei, ne näytetään ulkoisessa " +"ikkunassa." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Käytössä" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Muuttujien hallinta:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Valvo muuttujien luomista ja poistamista ja näytä tunnetut muuttujat " +"muuttujapaneelissa." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Sisäinen kaaviomuoto:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, fuzzy, kde-format +#| msgid "Graphic Package for \"Plot\"-assistant" +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Kaavionpiirtoavustajan graafinen paketti" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, fuzzy, kde-format +#| msgid "Graphic Package for \"Plot\"-assistant" +msgid "Package for Plot Assistant" +msgstr "Kaavionpiirtoavustajan graafinen paketti" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Kaaviot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Suorita automaattisesti" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Automaattisesti suoritettavat komennot" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Documentation:" +msgid "Documentation" +msgstr "Ohjeistus:" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Istunnon aluksi automaattisesti suoritettavien skriptien luettelo" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Virhe: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Uutta työvihkoa aloitettaessa automaattisesti suoritettavat komennot. Voivat " +"esimerkiksi ladata tarvittavia moduuleja tai muuttaa ympäristöä." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua on nopea ja kevyt skriptikieli, jolla on yksinkertainen " +"proseduraalinen syntaksi. Luaan on useita matematiikka- ja " +"tiedesuuntautuneita kirjastoja." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "luajit-komennon sijainti" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Lua-skriptitiedosto (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Path to luajit command:" +msgid "Path to luajit:" +msgstr "luajit-komennon sijainti:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima on symbolisten ja numeeristen lausekkeiden " +"käsittelyjärjestelmä, joka sisältää differentiaali- ja integraalilaskennan, " +"Taylorin sarjat, Laplacen muunnokset, tavalliset differentiaaliyhtälöt, " +"lineaariyhtälöiden järjestelmät, polynomit, joukot, listat, vektorit, " +"matriisit ja tensorit. Maxima käyttää tarkkoja murto-osia, mielivaltaisen " +"tarkkuuden kokonaislukuja ja vaihtuvan tarkkuuden liukulukuja tuottamaan " +"tarkkoja numeerisia tuloksia. Maxima voi piirtää funktioita ja tietoa kaksi- " +"ja kolmiulotteisesti." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Maxima-ohjelmatiedoston sijainti" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Virhe: Liian monta */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Virhe: Liian monta /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Virhe: odotettiin \" ennen ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Odotetaan piirron tulosta" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Maxima-eräajotiedosto (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Maximan käynnistys epäonnistui" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima kaatui. Käynnistetään uudelleen…" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima kaatui lyhyessä ajassa kahdesti. Lakataan yrittämästä käynnistämistä" + +#: backends/octave/octavebackend.cpp:62 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Octave, please check if there is a " +#| "translated version (currently Czech and Japanese) and use the correct url" +#| msgid "https://octave.org/doc/interpreter/" +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.gnu.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave on korkean tason ensi sijassa numeerinen laskennan " +"ohjelmointikieli.
      Se tarjoaa mukavan komentorivikäyttöliittymän " +"lineaari- ja ei-lineaariongelmia numeeriseen ratkaisemiseen ja numeerisiin " +"kokeiluihin kielellä, joka on enimmäkseen Matlab-yhteensopiva." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Octave-skriptitiedosto (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Syntaksivirhe" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +# pmap: =:gen=Cantorin: +# pmap: =:elat=Cantorista: +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python on huomattavan tehokas dynaaminen ohjelmointikieli, jota " +"käytetään monilla sovellusaloilla. Tieteelliseen ohjelmointiin on lukuisia " +"Python-paketteja." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Python-skriptitiedosto (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Cantorin Python-palvelin lakkasi toimimasta." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Cantorin Python-palvelimen käynnistys epäonnistui." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"Viestintä Cantorin Python-palvelimeen epäonnistui tuntemattomista syistä." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor – Kaaviovalintaikkuna" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funktiot" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Otsikko" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Lauseke" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Lisää" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Poista" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Tyhjennä luettelo" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "X-muuttuja" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Tyyli" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Viivat" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Pisteet" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Pisteet ja viivat" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Laatikot" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogrammi" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Vaiheet" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Pisteet" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Pehmennys" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Ei mitään" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monotoninen" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bézier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bézier (monotoninen)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Funktion ala" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X-alue" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Näytteen&ottotaajuus" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "&Vaiheen koko" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Valinnat" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Kuvaajan otsikko" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "X-akselin nimike" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Y-akselin nimike" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Selitteen sijainti" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Piilota selite" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Ylävasemmalla" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Yläoikealla" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Alavasemmalla" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Alaoikealla" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Alla" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Ulkopuolella" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Näytä ruudukko" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Näytä koko reuna" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Käytä värejä" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Näytä tässä" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logaritminen x-asteikko" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logaritminen y-asteikko" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Tiedostovalinnat" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Tallenna kuvaaja tiedostoon" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Tiedostotyyppi" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Havaitse tiedostonimestä" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! ei ole tavallinen halvimman mahdollisen laskimen " +"ohjelmallinen toisinto. Qalculate! pyrkii saamaan kaiken irti " +"nykytietokoneiden ylivertaisesta käyttöliittymästä, tehosta ja " +"joustavuudesta. Qalculate!’ssa huomion keskipisteessä on lausekkeen syöttö. " +"Sen sijaan että syöttäisit matemaattisen lausekkeen kunkin luvun erikseen, " +"voit kirjoittaa koko lausekkeen ja myöhemmin muokata sitä. Lausekkeet " +"tulkitaan joustavasti ja virhesietoisesti. Jos kuitenkin teet jotain väärin, " +"Qalculate! kertoo sen sinulle. Lausekkeet, joita ei voi kokonaan ratkaista, " +"eivät kuitenkaan ole virheitä. Qalculate! vastaa sieventämällä lauseketta " +"niin pitkälle kuin voi. Lukujen ja aritmeettisten operaattorien lisäksi " +"lauseke voi sisältää minä tahansa yhdistelminä muuttujia, yksiköitä ja " +"funktioita." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Muunnetaanko yksiköt automaattisesti ja miten. Jos valittu, muunnetaan " +"sopivimmiksi SI-yksiköiksi (vähin määrä yksiköitä)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Trigonometristen funktioiden oletuskulmayksikkö." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Jäsennettyjen ja laskettujen lukujen kanta." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Sievennetäänkö tai faktoroidaanko laskentatulokset." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Näytetäänkö rationaaliluvut desimaaleina, murtolukuina vai jonakin siltä " +"väliltä." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Näytä määrättömästi jatkuva lukusarja kolmella pisteellä pyöristämisen " +"sijaan (esim. 2/3 tuottaa vastaukseksi 0,666666… eikä 0,666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Käytä kaikkia desimaalisia SI-etuliitteitä. Jollei valittu, etuliitteitä, " +"jotka eivät ole tuhannen monikertoja (sentti-, desi-, deka-, hehto-), ei " +"käytetä automaattisesti." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Jos valittu, käytetään negatiivisia eksponentteja murto-osien sijaan (esim. " +"5/x^2:sta tulee 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Numeerinen näyttö." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Jos valittu, kaaviot näytetään työvihossa. Jollei, ne näytetään eri " +"ikkunassa." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Käytetäänkö kaavioissa värejä." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Piirretäänkö ruudukko." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Piirretäänkö kaavion ympärille reunaviivat." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Viivan paksuus kuvapisteinä." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Kaaviota piirrettäessä käytettyjen interpolaatiovaiheiden määrä." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Kaavioiden pehmennystapa." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Kaavioiden tyyli." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Kaavioiden selitteen sijainti." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate ilmoittaa, että se ei voi tulostaa. Onko gnuplot asennettu?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "puuttuva %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 on oltava luku." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 on oltava kokonaisluku." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 on oltava totuusarvo." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "löytyi useampia lausekkeita yhdelle piirtokomennolle (%1 ja %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "VIRHE" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "VAROITUS" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Annetun nimistä funktiota, muuttujaa tai yksikköä ei ole olemassa." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funktio: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Kaaviokäyttöliittymä" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Piirtää yhden tai useampia funktioita joko työvihkoon tai eri ikkunaan." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "lauseke" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "valinta" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "arvo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "kokonaisluku" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "totuusarvo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "luku" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "oletus: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Funktion nimi" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Otsikon nimiö" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "x-akselin nimike" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "y-akselin nimike" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Kuva, johon kaavio tallennetaan. Jos tyhjä, kaavio näytetään ruudulla " +"ikkunana. Jos inline=true, kuva näytetään tästä asetuksesta riippumatta." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Tallennettavan kuvan tyyppi. Voi olla automaattinen, PNG, PS, EPS, LaTeX, " +"SVG tai fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" +"Jos valittu, kaavioissa käytetään värejä, jollei, piirretään mustavalkoisena." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "X-akselin vähimmäisarvo." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "X-akselin enimmäisarvo." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Käytetäänkö x-akselilla logaritmista asteikkoa." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Käytetäänkö y-akselilla logaritmista asteikkoa." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "X-akselin logaritminen kanta." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Y-akselin logaritminen kanta." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Näytetäänkö kaaviossa ruudukko." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Ympäröidäänkö kaavio kaikilta sivuiltaan reunaviivalla (ei vain akselit)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Viivojen paksuus." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Minne kaavion selite sijoitetaan: ei mihinkään, ylävasemmalle, yläoikealle, " +"alavasemmalle, alaoikealle, alle tai ulkopuolelle" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Käytä mittakaavaa toisella x-akselilla." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Käytä mittakaavaa toisella y-akselilla." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Piirretäänkö kaavio tähän uuden ikkunan sijaan." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Kahden interpolointipisteen etäisyys. Ks. myös vaihe." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Intepolointipisteiden määrä. Ks. myös vaihe." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "x-muuttujan nimi. Tämän on oltava tuntematon muuttuja" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Tallenna muuttujat tiedostoon" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Tallenna kaikki määritellyt muuttujat tiedostoon. %1 voi ladata ne uudelleen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "tiedosto" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "tiedosto: tiedosto, johon tallennetaan" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Lataa muuttujat tiedostosta" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Lataa muuttujat tiedostosta, jonka %1 on aiemmin luonut." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "tiedosto: ladattava tiedosto" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Lukukanta:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Murto-osamuoto:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Desimaalinen" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Tarkka" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Murtoluvut" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Yhdistetty" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Numeerinen näyttö:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Puhdas" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Tieteellinen" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Tarkkuus" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Osoita äärettömät sarjat:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Käytä kaikkia SI-etuliitteitä:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Käytä negatiivisia eksponentteja:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Suorita" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Muunna parhaiksi SI-yksiköiksi:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radiaanit" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Asteet" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Goonit" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Rakennetila:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Sievennä" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Faktoroi" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Kulmayksikkö:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Kaaviot" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Näytä täydet reunat:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Viivojen paksuus:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Näytteenottotaajuus:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Pehmennystapa:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Vaiheet" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Selitteen sijainti:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Värilliset kaaviot:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Näytä ruudukko:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Kaaviotyyli:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Muokkaa tietuetta" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Lisää uusi tietue" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Nimi ei voi olla tyhjä." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Lisää paikallinen ohje" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Hae uusia ohjeita" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Lataa lisäohjeita" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Pakattu Qt-ohjetiedosto ei ole kelvollinen." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Ohjeistus on jo tuotu" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Muuta" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Poista" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Poista tämän asennus GHNS:llä." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Nimi" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Sijainti" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Lisää" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Kuvake:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Valitse kuvake" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Nimi:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Anna nimi" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Valitse nimi…" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Sijainti:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Valitse Qt-ohjetiedosto…" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Valitse Qt-ohjetiedosto…" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R on tilastollisen laskennan ja piirtämisen kieli ja ympäristö, joka " +"muistuttaa S-kieltä ja -ympäristöä.
      Se tarjoaa laajan valikoiman " +"tilasto- (lineaarinen ja ei-lineaarinen mallinnus, perinteiset " +"tilastotestit, aikasarja-analyysi, luokittelu, klusterointi…) ja " +"piirtotekniikoita ja on hyvin laajennettavissa. S-kieli on usein " +"tilastometodologisen tutkimuksen valinta, ja R tarjoaa avoimen lähdekoodin " +"reitin siihen osallistumiseksi." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Tiedoston %1 avaaminen epäonnistui" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "R-skriptitiedosto (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Virhe jäsennettäessä komentoa" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "Paikallisen R-ohjeistuksen osoite" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Avaa tiedostonvalintaikkuna kaksoisnapsauttamalla" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R-lähdetiedostot (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage on vapaa GPL-lisensoitu avoimen lähdekoodin matemaattinen " +"ohjelmistojärjestelmä.
      Se yhdistää useamman avoimen lähdekoodin paketin " +"tehot yhteen Python-pohjaiseen käyttöliittymään." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Sage-ohjelmatiedoston sijainti" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Käytä Sage-taustajärjestelmässä LaTeX-ladontaa" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Tulos – %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Viimeisin tuloste oli: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Python-skriptitiedosto (*.py);;Sage-skriptitiedosto (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Sagen versiota %1.%2 ei tueta. Päivitä asennus tuettuun versioon, jotta sitä " +"voi käyttää Cantorin kanssa." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Sagen versiota ei voitu tunnistaa. Tarkista asennus ja komennon ”sage -v” " +"tuloste." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Sage-prosessi kaatui suorittaessaan tätä lauseketta" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Sage-prosessi kaatui" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Sage-prosessi päättyi suorittaessaan tätä lauseketta" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Sage-prosessi päättyi" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Sagen käynnistys epäonnistui" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "LaTeX-ladonta:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"Sagen LaTeX-tuloste ei aina ole kunnossa, joten paremman käyttökokemuksen " +"saamiseksi LaTeX-ladonnan voi poistaa käytöstä " + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"

      Scilab on vapaa monialustainen numeerisen laskennan paketti ja korkean " +"tason numeerisesti suuntautunut ohjelmointikieli. Scilabia jaetaan (GPL-" +"yhteensopivalla) CeCILL-lisensillä." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Scilab-ohjelmatiedoston sijainti" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Scilab-skriptitiedosto (*.sce);;Scilab-funktiotiedosto (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "Tiedosto %1 on jo auki." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Avaa tiedosto" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Lataa esimerkkejä" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Avaa esimerkki" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Siirry edelliseen työvihkoon" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Siirry seuraavaan työvihkoon" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Kaikki tuetut tiedostot (*.cws *.ipynb);;Cantor-työvihko (*.cws);;Jupyter-" +"työvihko (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Taustaosaa ei löytynyt

      \n" +"
      Voit kokeilla:\n" +"
      • muuttaa asetuksia asetusikkunassa
      • asentaa seuraavan " +"ohjelman paketit:
      • %2
      " +msgstr[1] "" +"

      Taustaosaa ei löytynyt

      \n" +"
      Voit kokeilla:\n" +"
      • muuttaa asetuksia asetusikkunassa
      • asentaa seuraavien " +"ohjelmien paketit:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Virhe" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Taustaosaa %1 ei ole asennettu" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"%1-taustajärjestelmä on asennettu muttei aktiivinen. Tarkista sen asennus " +"sekä Cantorin asetukset" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Istunto %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Cantor-osan haku päättyi virheeseen %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Lasketaan…" + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Valmis" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Muutettu" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "Useampia tallentamattomia työkirjoja on auki. Haluatko sulkea ne?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Sulje Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Nykyistä projektia on muutettu. Haluatko tallentaa sen?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Tallenna projekti" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Muotoilu" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Oletusarvoisesti käytettävä taustaosa" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Tee ladonta oletusarvoisesti" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Korosta syntaksi oletusarvoisesti" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Käytä täydennystä oletusarvoisesti" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Numeroi lausekkeet oletusarvoisesti" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Animoi työvihko muutokset oletusarvoisesti" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Hahmonna $$…$$-erottimien osoittamat matemaattiset lausekkeet " +"oletusarvoisesti teksti- ja Markdown-riveillä (vaatii pdflatexin asentamisen)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Laske automaattisesti nykyisen alla olevat tietueet uudelleen" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Pyydä vahvistus taustajärjestelmän uudelleenkäynnistykseen" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Käytä tallennettaessa Jupyter-työvihkomuotoon muotoiltua tekstisyötettä" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Käytä Cantorin vanhaa rivien sijoittelua" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Tekstituloksessa näkyvien rivien rajoitus" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Luvun hierarkiafontti" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Luvun hierarkiafontin koko" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Luvun hierarkiafontin kursivointi" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Luvun hierarkiafontin lihavointi" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Aliluvun hierarkiafontti" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Aliluvun hierarkiafontin koko" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Aliluvun hierarkiafontin kursivointi" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Aliluvun hierarkiafontin lihavointi" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Osion hierarkiafontti" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Osion hierarkiafontin kursivointi" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Osion hierarkiafontin lihavointi" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Aliosion hierarkiafontti" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Aliluvun hierarkiafontin kursivointi" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Aliluvun hierarkiafontin lihavointi" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Kappaleiston hierarkiafontti" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Kappaleiston hierarkiafontin kursivointi" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Kappaleiston hierarkiafontin lihavointi" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Alikappaleiston hierarkiafontti" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Alikappaleiston hierarkiafontin kursivointi" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Alikappaleiston hierarkiafontin lihavointi" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Tallenna muotoilematon teksti" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Vie Latexina" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Suorita työvihko" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Lähennä" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Lado LaTeXilla" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Syntaksin korostus" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Täydennys" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Rivinumerot" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Functions" +msgid "Animations" +msgstr "Funktiot" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Upotettu matematiikka" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Käynnistä taustajärjestelmä uudelleen" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Suorita kenttä" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Lisää komentokenttä" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Lisää tekstikenttä" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Lisää Markdown-rivi" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Lisää LaTeX-kenttä" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Lisää sivunvaihto" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Lisää kuva" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Supista kaikki tulokset" + +# Konteksti: "Search in: Commands, Results, Errors, Text, LaTeX Code". Käytetään myös kohtana valikossa, josta voi poistaa tai kohtia luettelosta tai lisätä kohtia siihen. +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Laajenna kaikki tulokset" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Poista kaikki tulokset" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Poista nykyinen kenttä" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Näytä skriptimuokkain" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Näytä täydennys" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "© 2009–2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Cantor-työvihko (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyter-työvihko (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Tallenna nimellä" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Tallenna" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Kaikki saatavilla olevat laskentatulokset menetetään. Halutko varmasti, että " +"%1 käynnistetään uudelleen?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Käynnistetäänkö %1 uudelleen?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Keskeytä" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Istuntovirhe: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Alustus valmis" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Alustetaan…" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[vain luku]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Haluatko lähettää nykyisen työvihkon julkiseen verkkopalvelimeen?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Kysymys – Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Työvihkoa ei ole tallennettu. Ennen lähettämistä se on tallennettava." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Varoitus – Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Tämä taustajärjestelmä ei tue skriptejä." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Muokkaa" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Näytä" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "Työ&vihko" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "&Asetukset" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Tiedosto" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Uusi" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Paneelit" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Asetukset" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Taustaväri" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Oletus" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Tekstiväri" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Fontti" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Lihavoitu" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Kursivoitu" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Suurenna kokoa" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Pienennä kokoa" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Valitse" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Palauta oletukset" + +# Konteksti: "Search in: Commands, Results, Errors, Text, LaTeX Code". Käytetään myös kohtana valikossa, josta voi poistaa tai kohtia luettelosta tai lisätä kohtia siihen. +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Näytä tulokset" + +# Konteksti: "Search in: Commands, Results, Errors, Text, LaTeX Code". Käytetään myös kohtana valikossa, josta voi poistaa tai kohtia luettelosta tai lisätä kohtia siihen. +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Piilota tulokset" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Näytä ohje" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Ulkoasu" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Keskeytetty" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Hakurivi" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "…" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Etsi:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Seuraava" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Edellinen" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Korvaa:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Korvaa" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Ko&rvaa kaikki" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Etsi:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "Erota &pien- ja suuraakkoset" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Hierarkiafontit" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Luvun fontti" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Fonttiperhe:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Fonttikoko:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Aliluvun fontti" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Osion fontti" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Aliosion fontti" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Kappaleiston fontti" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Alikappaleiston fontti" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Luku" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Aliluku" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Osio" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Aliosio" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Kappaleisto" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Alikappaleisto" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Aseta jäsennystaso" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Yhtenäisen viivan tyyli" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Katkoviivan tyyli" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Pisteviivan tyyli" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Pistekatkoviivan tyyli" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Piste-pistekatkoviivan tyyli" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Viivan paksuus" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Ohut" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Keskipaksu" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Paksu" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Viivan väri" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Viivan tyyli" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Kuvan asetukset" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Muuta kuva-asetuksia kaksoisnapsauttamalla tästä" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Kuvan %1 lataaminen epäonnistui" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Tallenna tulos" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Kuvat (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Kuvan asetukset" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Avaa" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Koko näytöllä" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Leveys" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Korkeus" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Esikatselu" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Koko tulostettuna" + +# Vapaahko, mutta mielestäni käypä suomennos. Konteksti: kuvan asetuksissa voi asettaa kuvan näkymään eri kokoisena näytöllä ja tulostettuna. Tämä kertoo, että tulostettu koko on sama kuin näytöllä näytetyn kuvan koko. +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Sama kuin näytöllä" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Kuva-asetukset" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(automaattinen)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Avaa kuvatiedosto" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Näytä LaTeX-koodi" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Ohjelmatiedoston %1 sijaintia ei ole annettu. Anna oikea sijainti " +"sovellusasetuksissa ja yritä uudelleen." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"Ohjelmatiedostolle %2 määritettyä tiedostoa %1 ei löydy. Anna oikea sijainti " +"sovellusasetuksissa ja yritä uudelleen." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"Annettu sijainti ”%1” ei osoita ohjelmatiedostoon. Anna oikea sijainti " +"sovellusasetuksissa ja yritä uudelleen." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "latex-ohjelmatiedoston sijainti" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "dvips-ohjelmatiedoston sijainti" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Arvo" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 tavua>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Lähettäjä:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Vastaanottaja:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Pääotsikko" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Abskissa-asteikko" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Ordinaatta-asteikko" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Kaavion otsikko:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Tätä Jupyter-sisältötyyppiä (”%1”) ei tueta" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "Prosessi %1 päättyi odottamatta. Kaikki laskentatulokset menetettiin." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"Prosessi %1 päättyi odottamatta virheeseen ”%2”. Kaikki laskentatulokset " +"menetettiin." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Valitsit tuen grafiikkapaketille %1, mutta tukea ei voi aktivoida puuttuvien " +"vaatimusten takia, joten paketin integrointi poistetaan käytöstä. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDE:n käyttöliittymä matemaattisille ohjelmistoille" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "© 2016 Filipe Saraiva
      © 2009–2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Ylläpitäjä
      Qt5/KF5-sovitus, Scilab- ja Python-taustajärjestelmät" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Kehittäjä" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Alkuperäinen tekijä
      Ylläpitäjä (2009–2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra-taustajärjestelmä" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave-taustajärjestelmä" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Käyttöliittymä" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Cantorin kuvake" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Käytä taustajärjestelmää " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Avattavat tiedostot." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Tiedoston %1 avaaminen epäonnistui" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Siirry muokkaustilaan" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Tyhjennä liitteet" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Cantor-matematiikkavirhe" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Kuvaa ”%1” ei voi lukea. Virhe ”%2”" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Sivunvaihto ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Siirry sisällykseen" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Etsi hakusanoista…" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Etsi tekstiä nykyiseltä ohjesivulta" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Palauta lähennystasoksi 100 %" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Sulje" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Siirry seuraavaan osumaan" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Siirry edelliseen osumaan" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Erota etsittäessä pien- ja suuraakkoset" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "Tiedoston lataus Lataukset-kansioon onnistui." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Lataus onnistui" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Cantor-tiedostot" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Jupyter-tiedostot" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Kaikki tuetut tiedostot" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Kaikki tiedostot" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Nimi:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Arvo:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Lisää uusi muuttuja" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Lataa muuttujia" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Tallenna muuttujia" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Poista muuttujia" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Etsi tai suodata" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Erota pien- ja suuraakkoset" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Haluatko varmasti poistaa kaikki muuttujat?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Lataa tiedosto" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Tallenna tulos" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Poista tulos" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Tekstimuokkainosaa ei löytynyt\n" +"Tarkasta KDE-asennus." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Skriptimuokkain" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Skriptimuokkain – %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Ei löytynyt" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Saavutettiin alku" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Saavutettiin loppu" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Korvattiin %1 osuma" +msgstr[1] "Korvattiin %1 osumaa" + +# Konteksti: "Search in: Commands, Results, Errors, Text, LaTeX Code". Käytetään myös kohtana valikossa, josta voi poistaa tai kohtia luettelosta tai lisätä kohtia siihen. +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "komennoista" + +# Konteksti: "Search in: Commands, Results, Errors, Text, LaTeX Code". Käytetään myös kohtana valikossa, josta voi poistaa tai kohtia luettelosta tai lisätä kohtia siihen. +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "tuloksista" + +# Konteksti: "Search in: Commands, Results, Errors, Text, LaTeX Code". Käytetään myös kohtana valikossa, josta voi poistaa tai kohtia luettelosta tai lisätä kohtia siihen. +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "virheistä" + +# Konteksti: "Search in: Commands, Results, Errors, Text, LaTeX Code". Käytetään myös kohtana valikossa, josta voi poistaa tai kohtia luettelosta tai lisätä kohtia siihen. +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "tekstistä" + +# Konteksti: "Search in: Commands, Results, Errors, Text, LaTeX Code". Käytetään myös kohtana valikossa, josta voi poistaa tai kohtia luettelosta tai lisätä kohtia siihen. +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX-koodista" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "Käynnistä" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Oletustaustajärjestelmä:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "Työ&vihko" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, fuzzy, kde-format +#| msgid "Enable LaTeX typesetting for Sage backend" +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "Käytä Sage-taustajärjestelmässä LaTeX-ladontaa" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, fuzzy, kde-format +#| msgid "LaTeX typesetting:" +msgid "LaTeX typesetting" +msgstr "LaTeX-ladonta:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Käytä syntaksin korostusta" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Syntaksin korostus" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "Käytä täydennystä" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Rivinumerot" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Rivinumerot" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "Yhdistä kaaviot työvihkoon" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, fuzzy, kde-format +#| msgid "" +#| "Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +#| "notebook format" +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Käytä tallennettaessa Jupyter-työvihkomuotoon muotoiltua tekstisyötettä" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Yhtälöt:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, fuzzy, kde-format +#| msgid "Ask for confirmation when restarting the backend" +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "Pyydä vahvistus taustajärjestelmän uudelleenkäynnistykseen" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "Suorita rivit uudelleen automaattisesti" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, fuzzy, kde-format +#| msgid "Maximal number of result visible rows (0 for unlimited):" +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Tuloksesta näytetään rivejä enintään (0 = ei rajoitettu):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Komentotietueen tuloksen näkyvien rivien enimmäismäärä. 0 poistaa " +"rajoitukset." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Markdown" +msgid "Markdown:" +msgstr "Markdown" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +#| msgid "Enable LaTeX typesetting for Sage backend" +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "Käytä Sage-taustajärjestelmässä LaTeX-ladontaa" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Etsi…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Lisää mukautettu kohde" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Muunna tekstikentäksi" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Muunna raakasoluksi" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Kohteen MIME-tyyppi:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Kopioi tulos" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Näytä hahmonnettuna" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Näytä koodi" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Näytä HTML-koodi" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Näytä HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Näytä HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "EPS-tiedostoa ei voi hahmontaa. Saatat tarvita lisäpaketteja" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Tallenna tulos" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Tiedostoon %1 kirjoittaminen epäonnistui." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Tiedoston kirjoittaminen epäonnistui." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Virhe tallennettaessa tiedostoa %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "latex.xsl-tyylisivun lataaminen epäonnistui" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Tiedoston %1 avaaminen epäonnistui." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Avaa tiedosto" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Valittua tiedostoa ei voitu avata luettavaksi." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" +"Valittu tiedosto ei ole kelvollinen Cantor- tai Jupyter-projektitiedosto." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Valittu tiedosto ei ole kelvollinen Cantor-projektitiedosto." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python2:ta ei enää tueta" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"%1-taustajärjestelmää ei löytynyt. Tietueita ei voi muokata eikä suorittaa." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Taustaosassa %1 on joitakin ongelmia.\n" +"Tarkista asetukset tai asenna tarvittavat paketit.\n" +"Työvihkoa voi vain katsella." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Versiota 4.5 edeltäviä Jupyter-työkirjoja ei tueta (havaittiin versio %1.%2)." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Versiota 4.5 myöhempiä Jupyter-työkirjoja ei tueta (havaittiin versio %1.%2)." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Työvihko on luotu Python2:lla, jota ei enää tueta. Käytetään Python3:a." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "Tiedosto ei ole kelvollinen Jupyter-työvihko" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Virheellinen Jupyter-työvihkomalli: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Muunna muotoon" + +# Konteksti: "Search in: Commands, Results, Errors, Text, LaTeX Code". Käytetään myös kohtana valikossa, josta voi poistaa tai kohtia luettelosta tai lisätä kohtia siihen. +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Komento" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Kuva" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Sivunvaihto" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Vaakaviiva" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Hierarkiarivi" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Lisää perään" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Lisää ennen nykyistä" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Lisää" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Lähennä" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Loitonna" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Alkuperäinen koko" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Siirrä kenttiä alemmas" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Laske kentät" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Poista kentät" + +#: worksheet.cpp:1947 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Collapse Command Entry Results" +msgstr "Lisää komentokenttä" + +#: worksheet.cpp:1948 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Expand Command Entry Results" +msgstr "Komentokenttä" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Remove Command Entry Results" +msgstr "Komentokenttä" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Scripts to autorun" +msgid "Add Command Entry To Execution" +msgstr "Automaattisesti suoritettavat skriptit" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Tekstin &väri…" + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Väri" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Tekstin &korostus…" + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Fontti" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Fontt&ikoko" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Lihavoitu" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Kursivoitu" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Alleviivattu" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Yliviivattu" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Sijoita &vasemmalle" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Vasemmalle" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Sijoita &keskelle" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Keskelle" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Tasaa &oikealle" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Oikealle" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Tasaa molemmilta reunoilta" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Tasaa" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Poista kaikki tulokset" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Valkoinen" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Musta" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Tummanpunainen" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Punainen" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Vaaleanpunainen" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Tummanvihreä" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Vihreä" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Vaaleanvihreä" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Tummansininen" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Sininen" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Vaaleansininen" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Tummankeltainen" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Keltainen" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Vaaleankeltainen" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Tummansyaani" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Syaani" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Vaaleansyaani" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Tummanvioletti" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Violetti" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Vaaleanvioletti" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Tummanoranssi" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Oranssi" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Vaaleanoranssi" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Tummanharmaa" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Harmaa" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Vaaleanharmaa" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Siirrä ylemmäs" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Siirrä alemmas" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Haluatko varmasti poistaa tämän tietueen?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Poista kenttä" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Vedä kenttää" + +#~ msgid "Animate Worksheet" +#~ msgstr "Animoi työvihko" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "Jos oletustaustajärjestelmä on asetettu, luo työvihko käynnistettäessä " +#~ "siihen sen sijaan, että näytettäisiin taustajärjestelmän valintaikkuna." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Jos valittu, Cantor laskee automaattisesti kunkin syötteen nykyisen alta." + +#~ msgid "Defaults" +#~ msgstr "Oletukset" + +# ID on sotkuinen ja sekava, yritin saada tolkkua mutta jouduin arvailemaan +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "LaTeX-ladontaistuntovalinta mahdollistaa joidenkin tuettujen " +#~ "taustajärjestelmätulosteiden hahmonnuksen LaTeXilla. Esimerkiksi Maximan " +#~ "tuloste hahmonnetaan LaTeXilla, jos valinta otetaan käyttöön." + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "Käytä LaTeX-ladontaa (toimii vain jos LaTeX on asennettu)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "Syntaksikorostusvalinta mahdollistaa syntaksin korotuksen " +#~ "komentosyötteessä." + +#~ msgid "Enable Line Numbers" +#~ msgstr "Käytä rivinumeroita" + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Animoi laskentataulukot" + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "" +#~ "Käytä upotettua matematiikkaa (toimii vain, jos pdflatex on asennettu)" + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Käytä Cantorin vanhaa rivien sisennystapaa" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Jos otetaan käyttöön, Cantor käyttää tekstisyötteessä muotoiltua tekstiä " +#~ "Jupyter-työvihkomuotoon tallennettaessa." + +#~ msgid "" +#~ "Graphical package, for which will be enable support for embedding plots" +#~ msgstr "Graafinen paketti, jonka tukea upotettuun kaavionpiirtoon käytetään" + +#~ msgid "" +#~ "Graphic package, which code will be used for plotting via \"Plot\" Cantor " +#~ "menu." +#~ msgstr "" +#~ "Graafinen paketti, jota Cantorin Kaavionpiirto-valikon kaavionpiirtoon " +#~ "käytetään." + +#~ msgid "Matplotlib (with seaborn, ggplot support too)" +#~ msgstr "matplotlib (myös seaborn-, ggplot-tuella)" + +#~ msgid "Plot.ly" +#~ msgstr "Plot.ly" + +#~ msgid "All supported" +#~ msgstr "Kaikki tuetut" + +#~ msgid "Graphic Package: " +#~ msgstr "Grafiikkapaketti:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      Matematiikkaa KDE:n tapaan" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "Paikallisen Maxima-ohjeistuksen osoite" + +#~ msgid "Documentation:" +#~ msgstr "Ohjeistus:" + +#~ msgid "Url to the local Python documentation" +#~ msgstr "Paikallisen Python-ohjeistuksen osoite" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "Paikallisen Octave-ohjeistuksen osoite" + +#~ msgid "Show %1 Help" +#~ msgstr "Näytä %1-ohje|/|Näytä $[yhdysmerkki %1 ohje]" + +#~ msgid "Path to Julia:" +#~ msgstr "Julian sijainti:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Sisällytä kaaviot työkirjaan" + +#~ msgid "Clear Variables" +#~ msgstr "Tyhjennä muuttujat" + +#~ msgid "Right click here to insert image" +#~ msgstr "Lisää kuva napsauttamalla hiiren oikeaa" + +#~ msgid "Choose Image" +#~ msgstr "Valitse kuva" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "Kuvat (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Vahvistus – Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Tekstikenttä" + +#~ msgid "LaTeX Entry" +#~ msgstr "LaTeX-kenttä" + +#~ msgid "Insert Horizontal Line" +#~ msgstr "Lisää vaakaviiva" + +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Lisää hierarkiarivi" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "scilab-adv-cli-komennon sijainti. (Varoitus: Scilabin version on oltava " +#~ "vähintään 5.4)" + +#~ msgid "Insert Image Attachment" +#~ msgstr "Lisää kuvaliite" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Lisää LaTeX-kenttä" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Octave-ohjelmatiedoston sijainti" + +#~ msgid "Path to Maxima:" +#~ msgstr "Maximan sijainti:" + +#, fuzzy +#~| msgid "Failed to start Sage" +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Sagen käynnistys epäonnistui" + +#~ msgid "Path to Sage:" +#~ msgstr "Sagen sijainti:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "scilab-adv-cli-komennon sijainti:" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Pane Cantor seuraamaan muuttujien luomista ja tuhoamista" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "" +#~ "Yhdistä kaaviot työkirjaan (käynnistä uusi istunto muutosten jälkeen)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Octave-ohjelmatiedoston sijainti" + +#~ msgid "Path to Octave:" +#~ msgstr "Octaven sijainti:" + +#~ msgid "Unnamed" +#~ msgstr "Nimetön" + +#, fuzzy +#~| msgctxt "the url to the documentation Python 2" +#~| msgid "http://docs.python.org/2/" +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "http://docs.python.org/2/" + +#, fuzzy +#~| msgid "" +#~| "

      Python is a remarkably powerful dynamic programming language that is " +#~| "used in a wide variety of application domains. There are several Python " +#~| "packages to scientific programming.

      This backend supports Python 3." +#~| "

      " +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "

      Python on huomattavan tehokas dynaaminen ohjelmointikieli, jota " +#~ "käytetään monilla sovellusaloilla. Tieteellisen ohjelmointiin on useita " +#~ "Python-paketteja.

      Tämä taustaosa tukee Python 3:a.

      " + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Valitse käytettävä taustajärjestelmä:" + +# %1: taustaosan nimi +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Tämä tiedosto on luotu taustajärjestelmälla %1, jota ei ole asennettu." + +#~ msgid "Publish Worksheet" +#~ msgstr "Julkaise työkirja" + +#~ msgid "Waiting for Image..." +#~ msgstr "Odotetaan kuvaa…" + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "%1 ei voida avata: tuntematon MIME-tyyppi" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|LaTeX-tiedosto" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantor-työkirja" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Cantorin R-taustaosan palvelin" + +#~ msgid "R Server" +#~ msgstr "R-palvelin" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "© 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Käyttö: saveVariables tiedosto" + +#~ msgid "Saving failed." +#~ msgstr "Tallennus epäonnistui." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Käyttö: loadVariables tiedosto" + +#~ msgid "Loading failed." +#~ msgstr "Lataus epäonnistui." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "© 2009–2013 Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "python-komennon sijainti" + +#~ msgid "Path to python2 command:" +#~ msgstr "python2-komennon polku:" + +#~ msgid "Could not start the server." +#~ msgstr "Palvelimen käynnistys epäonnistui." diff --git a/po/fr/cantor.po b/po/fr/cantor.po new file mode 100644 index 0000000..26e37ef --- /dev/null +++ b/po/fr/cantor.po @@ -0,0 +1,5289 @@ +# translation of cantor.po to Français +# translation of cantor.po to +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Joëlle Cornavin , 2009, 2010, 2011, 2012, 2013. +# Vincent PINON , 2013, 2014, 2015, 2016, 2017. +# Simon Depiets , 2018, 2020. +# Xavier Besnard , 2020, 2021, 2022. +# +# Xavier BESNARD , 2022, 2023. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2023-01-04 14:09+0100\n" +"Last-Translator: Xavier BESNARD \n" +"Language-Team: fr\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 22.12.0\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Joëlle Cornavin, Vincent Pinon, Simon Depiets, Xavier Besnard" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" +"jcorn@free.fr, vpinon@kde.org, sdepiets@gmail.com, xavier.besnard@neuf.fr" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pause" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Démarrer" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Arrêter" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Enregistrer le résultat de l'animation" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Animations (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Traçage avancé" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Graphe" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Expression :" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Options supplémentaires :" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Tracer un graphique" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Option active" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Calculer" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Différencier" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variable :" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Temps : " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Paquet" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importer un paquet" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Paquet :" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Intégrer" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Limite inférieure :" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Limite supérieure :" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "intégrale définie" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "Algèbre &linéaire" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Créer une matrice" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Colonnes :" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Lignes :" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Calculer des valeurs propres" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrice :" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Calculer des vecteurs propres" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Inverser une matrice" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Graphe 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variable" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Nom" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimum :" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maximum :" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Graphe 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1ère variable" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2e variable" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Exécuter un script" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Résoudre des équations" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Équations :" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variables :" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Choisir le moteur" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Version recommandée : %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Consultez la page %2 pour plus " +"d'informations.
      " + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Certains prérequis ne sont pas remplis : %1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "En faire le moteur par défaut" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"

      Julia est un langage de programmation dynamique de haut niveau et " +"à haute performance pour les calculs techniques. Il offre aux utilisateurs " +"une syntaxe similaire à d'autres environnements de calcul technique. Il " +"intègre un compilateur sophistiqué, une exécution parallèle distribuée, une " +"excellente précision numérique et une bibliothèque très complète de " +"fonctions mathématiques.

      " + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"L'emplacement indiqué dans les réglages de l'application Julia doit " +"référencer directement l'exécutable. Les liens symboliques ne sont pas " +"autorisés. Veuillez fournir l'emplacement correct vers l'application et ré-" +"essayer." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Cantor ne peut pas déterminer la version de Julia pour %1. Veuillez définir " +"l'emplacement correct vers l'exécutable de Julia (et pas un un lien " +"symbolique) et ré-essayer." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Vous essayez d'utiliser Cantor avec Julia v%1.%2.%3. Cette version de Cantor " +"a été compilé pour la prise en charge de Julia v%4.%5.%6. Veuillez " +"référencer cette version de Julia ou recompiler Cantor en utilisant la " +"version %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Emplacement du REPL natif Julia" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Activer la gestion des variables" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Intégrer des graphes dans la feuille de calcul" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Paquet de graphique pour l'assistant « Traçage »" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Désolé mais Gadfly ne prend pas en charge le tracé en 3D" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Fichier de script Julia (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Erreur - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"La session « Julia » ne peut se connecter à cause d'un problème « Julia » " +"interne avec un fichier interne manquant « %1 »" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" +"La session « Julia » ne peut se connecter à cause d'un problème interne " +"inconnu" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "La tâche Julia s'est arrêtée de fonctionner." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Impossible de lancer la tâche associée à Julia." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" +"La communication avec la tâche associée à Julia a échoué pour des raisons " +"inconnues." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Pour Julia, seul « GR » (https://gr-framework.org/), un environnement de " +"développement pour applications d'affichage de données, est pris en charge " +"actuellement. Ce paquet doit être tout d'abord installé, si non déjà fait. " +"Pour cela, veuillez lancer la commande « Pkg.install (« GR » ) » dans Cantor " +"ou dans la console « REPL » de Julia. Veuillez noter que cette opération " +"peut prendre un certain temps et qu'il est conseillé de le faire dans la " +"console « REPL » de Julia, afin de voir l'affichage de la progression lors " +"de l'installation du paquet." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Général" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Exécutable :" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Intégration pour le traçage :" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Si l'option est activée, les tracés seront affichés à l'intérieur de la " +"feuille de travail. Dans le cas contraire, ils apparaîtront dans une fenêtre " +"séparée." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Activé" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Gestionnaire de variables :" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Surveille la création et la destruction de variables et affiche les " +"variables existantes dans le panneau des variables." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Format interne pour le traçage :" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "Formats internes des tracés si leur intégration est activée." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Paquet de graphique à utiliser pour l'assistant « Traçage »" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Paquet pour l'assistant « Traçage »" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Graphes" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Exécuter automatiquement" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Commandes à lancer automatiquement" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Documentation" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Liste des scripts à lancer automatiquement au début de la session" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Erreur : %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1 : %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Les commandes d'exécution automatique s'exécutant au démarrage d'une " +"nouvelle feuille de travail. Cela peut être utile pour les chargements des " +"modules, les modifications d'environnement, etc." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua est un langage rapide et léger reposant sur des scripts et une " +"syntaxe procédurale simple. Plusieurs bibliothèques de Lua sont destinées " +"aux mathématiques et aux sciences." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Emplacement de la commande luajit" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Fichier de script Lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Emplacement vers « luajit » :" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" +"

      Système d’aide de Maxima

      Fonction apropos

      Recherche " +"les noms de Maxima dont le nom apparaît n’importe où. nom doit être " +"une chaîne ou un symbole. Ainsi, apropos(exp) renvoie une liste de " +"toutes les étiquettes et fonctions qui possèdent « exp » dans une partie de " +"leur nom, comme expand, exp et exponentialize. Donc, si " +"vous ne pouvez retenir qu’une partie du nom d’une commande ou d’une variable " +"de Maxima, vous pouvez utiliser cette commande pour trouver le reste du nom. " +"De même, vous pouvez taper apropos(tr_) pour trouver une liste de " +"nombreux commutateurs relatifs au traducteur, dont la plupart commencent par " +"tr_.

      apropos(«  ») renvoie une liste avec tous les " +"noms de Maxima.

      apropos renvoie la liste vide [], si aucun " +"nom n’est trouvé.

      Description des fonctionsdescribe(string) est équivalent à describe(chaîne, exact). " +"

      La fonction describe(chaîne, exact) retrouve un élément dont " +"le titre est égal (sans être sensible à la casse) à « chaîne », s’il un tel " +"élément existe.

      describe(chaîne, inexact) trouve tous les " +"éléments documentés contenant des chaînes dans leurs titres. S’il y a plus " +"d’un tel élément, Maxima demande à l’utilisateur de sélectionner un ou " +"plusieurs éléments à afficher.

      ? foo (avec un espace entre " +"? et foo) est équivalent à describe(« foo », exact), et " +"?? foo est équivalent à describe(« foo », inexact). " +"

      describe(, inexact) fournit une liste de tous les sujets " +"documentés dans le manuel en ligne.

      describe cite son " +"argument. La fonction describe renvoie Vrai si une " +"documentation est trouvée, sinon Faux.

      Exemple de " +"fonction

      La fonction example(sujet) affiche quelques " +"exemples de sujet, qui est un symbole ou une chaîne. Pour obtenir des " +"exemples pour des opérateurs comme if, do ou lambda, " +"l’argument doit être une chaîne, par exemple example(« do »). " +"exemple n’est pas sensible à la casse. La plupart des sujets sont des " +"noms de fonctions.

      example() renvoie la liste de tous les " +"sujets reconnus.

      Le nom du fichier contenant les exemples est donné " +"grâce à la variable d’option globale manual_demo, qui par défaut à la " +"valeur « manual.demo ».

      La fonction example cite son " +"argument. Elle retourne fait sauf si aucun exemple n’est trouvé ou " +"s’il n’y a pas d’argument, auquel cas elle renvoie la liste de tous les " +"sujets reconnus." + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima est un système conçu pour la manipulation d'expressions " +"symboliques et numériques. Il prend en charge la différentiation, " +"l'intégration, les séries de Taylor, les transformées de Laplace, les " +"équations différentielles ordinaires, les systèmes d'équations linéaires, " +"les polynômes, ainsi que les ensembles, les listes, les vecteurs, les " +"matrices et les tenseurs. Maxima fournit des résultats numériques d'une " +"grande précision grâce à l'utilisation de fractions exactes, d'entiers à " +"précision arbitraire et de nombres à virgule flottante à précision variable. " +"Maxima peut tracer des fonctions et des données en deux et trois dimensions. " + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Emplacement de l'exécutable Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Erreur : trop de « */ »" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Erreur : trop de « /* »" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Erreur: « \" » était attendu avant ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "En attente du résultat du tracé" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Fichier séquentiel Maxima (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Impossible de démarrer Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima s'est arrêté de façon anormale. Redémarrage..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima s'est arrêté de façon anormale deux fois en un court laps de temps. " +"Arrêt pour tenter de démarrer" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave est un langage de haut niveau, principalement destiné aux " +"calculs numériques.
      Il fournit une interface pratique en ligne de " +"commande pour résoudre numériquement des problèmes linéaires et non " +"linéaires. Il effectue aussi d'autres expérimentations numériques à l'aide " +"d'un langage en grande partie compatible avec Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Fichier de script Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Erreur de syntaxe" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Échec des tests d'intégration de Plot" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "L'intégration des tracés est désactivée." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"L'intégration des graphes ne fonctionne pas car Cantor a trouvé que Octave " +"ne peut créer de graphes. La raison est qu'il n'y a aucun moteur graphique " +"pour lui. Cette conclusion est faite à cause d'une sortie vide provenant de " +"la fonction « available_graphics_toolkits() ». Il semble que vous devriez " +"installer quelques paquets additionnels de votre système d'exploitation, " +"comme « gnuplot », « fltk » ou « qt » offrant les possibilités de créations " +"de graphes. " + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python est un langage de programmation remarquablement puissant et " +"dynamique, utilisé dans des domaines très variés d'applications. De nombreux " +"paquets Python sont disponibles pour la programmation scientifique." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# Désolé mais Bokeh ne prend pas en charge le tracé en 3D" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Fichier de script Python (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Le serveur Python de Cantor s'est arrêté de fonctionner." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Impossible de démarrer le serveur Python de Cantor." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"La communication avec le serveur Python de Cantor s'est arrêtée pour des " +"raisons inconnues." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Pour utiliser le graphisme intégré avec le paquet « Matplotlib », vous devez " +"installer le paquet Python « Matplotlib » tout d'abord." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Pour utiliser le graphisme intégré avec « Plot.ly », vous devez installer le " +"paquet Python « plotly » et une exécutable « orca » spécial, compatible avec " +"« Plot.ly ». Veuillez consulter l'article « Exportation statique d'images » " +"dans la documentation de « Plot.ly » pour plus d'informations." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Boîte de dialogue de tracé" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Fonctions" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Titre" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Expression" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Ajouter" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Supprimer" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Effacer la liste" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Variable X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Style" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Lignes" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Points" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Points et lignes" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Cases" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogramme" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Pas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Chandeliers" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Points" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Lissage" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Aucun" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monotone" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Splines cubiques naturelles" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bézier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bézier (monotone)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Intervalle de fonction" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Intervalle de X" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Taux d'écha&ntillonnage" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Taille de pa&s" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Options" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Titre du tracé" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Étiquette de l'axe de X" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Étiquette de l'axe de Y" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Position de la légende" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Cacher la légende" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "En haut à gauche" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "En haut à droite" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "En bas à gauche" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "En bas à droite" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "En dessous" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "En dehors" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Afficher une grille" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Afficher une bordure continue" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Utiliser des couleurs" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Afficher dans la feuille de calcul" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Échelle x logarithmique" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Échelle y logarithmique" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Options des fichiers" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Enregistrer le tracé dans un fichier" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Type de fichier" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Détecter à partir du nom de fichier" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! n'est pas votre copie logicielle habituelle de la " +"calculatrice la moins chère disponible. Qalculate! a pour objectif " +"d'utiliser pleinement l'interface, la puissance et la flexibilité " +"supérieures des ordinateurs modernes. Le point fort de Qalculate! est la " +"saisie d'expressions. Au lieu de saisir chaque nombre dans une expression " +"mathématique séparément, vous pouvez directement écrire l'expression " +"complète et la modifier ultérieurement. L'interprétation d'expressions est " +"flexible, tolérante aux erreurs et, néanmoins, en cas d'incorrection, " +"Qalculate! vous le signalera. Les expressions non entièrement solubles ne " +"sont cependant pas toujours des erreurs. Qalculate! simplifiera autant que " +"possible et proposera une expression. En plus des nombres et des opérateurs " +"arithmétiques, une expression peut contenir n'importe quelle combinaison de " +"variables, d'unités et de fonctions." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Indiquez si et comment les unités seront automatiquement converties. Si la " +"valeur est « true », convertit en unités du SI les mieux appropriées (la " +"plus petite quantité d'unités)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Unité d'angle par défaut pour les fonctions trigonométriques." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Base des nombres analysés et évalués." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Indiquez si le résultat de l'évaluation sera simplifié ou factorisé." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Décidez si les nombres rationnels seront affichés avec des décimales, comme " +"une fraction, ou une sorte de compromis entre les deux." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Affiche que la série de chiffres d'un nombre continue indéfiniment avec " +"trois points, au lieu d'arrondir (ex. 2/3 s'affiche sous la forme " +"0,666666... au lieu de 0,666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Utilisez tous les préfixes décimaux du SI. Si cette valeur est « false », " +"les préfixes n'étant pas un multiple de mille (centi, déci, déca, hecto) " +"seront employés automatiquement." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Si la valeur est « true », des exposants négatifs seront employés au d'une " +"division (ex. 5/x^2 devient 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Affichage numérique." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Si la valeur est « true », les tracés seront affichés sur la feuille de " +"calcul. Dans le cas contraire, ils apparaîtront dans une fenêtre séparée." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Décidez s'il faut ou non utiliser des couleurs dans les tracés." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Décidez s'il faut ou non tracer une grille." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" +"Décidez s'il faut ou non que des bordures continues soient dessinées autour " +"du tracé." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Largeur des lignes, en pixels." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Nombre de pas d'interpolation à utiliser dans le traçage." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Mode de lissage dans les tracés." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Style des tracés." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Position de la légende dans les tracés." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" +"Qalculate signale qu'il lui est impossible d'imprimer. Gnuplot est-il " +"installé ?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "manque %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 doit être un nombre." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 doit être un entier." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 doit être un booléen." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "Option non valable pour %1 : %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" +"plusieurs expressions ont été trouvées dans une seule commande de tracé (%1 " +"et %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "ERREUR" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "AVERTISSEMENT" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Aucune fonction, variable ou unité portant le nom spécifié n'existe." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Fonction : %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Interface de traçage" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Trace une ou plusieurs fonctions soit sur la feuille de calcul soit dans une " +"fenêtre séparée." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "expression" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "option" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "valeur" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "entier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "booléen" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "nombre" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "par défaut : %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Le nom de la fonction" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Étiquette du titre" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "Étiquette de l'axe x" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Étiquette de l'axe y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Image dans laquelle enregistrer. Si elle est vide, affiche un graphe dans " +"une fenêtre sur l'écran. Si inline=true l'image est affichée sans tenir " +"compte de cette option." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Le type d'image sous lequel enregistrer. L'un parmi auto, png, ps, eps, " +"LaTeX, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" +"Associez à « true » pour un graphe en couleurs, « false » pour un monochrome." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Valeur minimale de l'axe x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Valeur maximale de l'axe x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Décide si une échelle logarithmique doit être utilisée pour l'axe x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Décide si une échelle logarithmique doit être utilisée pour l'axe y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Base logarithmique pour l'axe x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Base logarithmique pour l'axe y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Décide si une grille doit être affichée dans le tracé." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Décide si le tracé doit être entouré de bordures sur tous les côtés (pas " +"seulement l'axe)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Largeur des lignes." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Décide où la légende du tracé doit être placée. Une valeur parmi « none », " +"« top_left », « top_right », « bottom_left », « bottom_right », « below », " +"« outside »" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Lissage du tracé. Une valeur parmi « none », « unique », « csplines », " +"« bezier », « sbezier »" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Style de tracé. Une valeur parmi « lines », « points », « points_lines », " +"« boxes », « histogram », « steps », « candlesticks », « dots »" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Utilise une échelle sur le second axe x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Utilise une échelle sur le second axe y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" +"Décide si le tracé doit être dessiné sur la feuille de calcul plutôt que " +"dans une nouvelle fenêtre." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Distance entre deux points d'interpolation. Voir aussi « pas »." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Nombre de points d'interpolation. Voir aussi « pas »." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Le nom de la variable x. Ce doit être une variable inconnue" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Enregistrer les variables dans un fichier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Enregistre dans un fichier toutes les variables actuellement définies. Vous " +"pouvez les recharger avec %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "fichier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "fichier : celui dans lequel enregistrer" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Charger des variables depuis un fichier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Charge des variables depuis un fichier précédemment créé par %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "fichier : le fichier à charger" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Base numérique :" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Format des fractions :" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Décimal" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Exact" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Fractionnaire" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Combiné" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Affichage numérique :" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Pur" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Scientifique" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Précision" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Indiquer une série infinie :" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Utiliser tous les préfixes du SI :" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Utiliser des exposants négatifs :" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Évaluer" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Convertir en unités les mieux appropriées du SI :" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radians" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Degrés" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradients" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Mode de structuration :" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Simplifier" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Factoriser" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Unité d'angle :" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Traçage" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Afficher les tracés dans la feuille de calcul :" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Afficher des bordures continues :" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Largeur des lignes :" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Taux d'échantillonnage :" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Mode de lissage :" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Splines cubiques naturelles" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Pas" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Position de la légende :" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Tracés en couleurs :" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Afficher la grille :" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Style de tracé :" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Modifier une entrée" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Ajouter une nouvelle entrée" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Le nom ne peut être vide." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Ajouter une documentation locale" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Obtenir une nouvelle documentation" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Télécharger des documentations supplémentaires" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Le fichier comprimé d'aide de Qt n'est pas valable." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "La documentation a déjà été importée." + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Modifier" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Supprimer" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Veuillez désinstaller ceci via « GHNS »." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Installer les fichiers de documentation supplémentaires." + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Nom" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Emplacement" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Ajouter" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Icônes :" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Sélectionner une icône" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Nom :" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Saisissez un nom" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Sélectionnez un nom…" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Emplacement :" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Sélectionner un fichier d'aide de Qt..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Sélectionner un fichier d'aide de Qt..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" +"

      Système d'aide de R : help() et ? :


      La fonction " +"help() et ? permet à l’opérateur de R d’accéder aux pages de " +"documentation des fonctions de R, des ensembles de données et d’autres " +"objets, à la fois, pour les paquets de la distribution standard de R et pour " +"les paquets contributifs.

      Pour accéder à la documentation relative à " +"la fonction standard lm (modèle linéaire) , par exemple, saisir la " +"commande help(lm) ou help(« lm ») ou ? lm ou " +"?« lm » (les guillemets sont facultatifs).

      Pour accéder à " +"l’aide d’une fonction dans un paquet n'ayant pas encore été chargé, " +"spécifiez en plus le nom du paquet : par exemple, pour obtenir la " +"documentation pour la fonction rlm() (modèle linéaire robuste) dans " +"le paquet « MASS », help(rlm, package=« MASS »).

      Les noms " +"standard dans R sont composés de lettres majuscules et minuscules, de " +"chiffres (0 - 9), de traits soulignés (_) et de points (.). Ils doivent " +"commencer par une lettre ou un point. Pour obtenir de l’aide pour un objet " +"avec un nom non standard (tel que l’opérateur d’aide ?), le nom doit " +"être mis entre guillemets : par exemple, help(« ? ») ou ?« ? » .

      Vous pouvez également utiliser la fonction help() pour " +"accéder à des informations concernant un paquet de votre bibliothèque - par " +"exemple, help(package=« MASS ») - qui affiche un index des pages " +"d’aide disponibles pour le paquet ainsi que d’autres informations. " +"

      Les pages d’aide pour les fonctions proposent généralement une " +"section avec des exemples exécutables, illustrant le fonctionnement des " +"fonctions. Vous pouvez exécuter ces exemples dans la session R courante " +"grâce à la commande example() : par exemple, example(lm)." + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R est un langage et un environnement conçu pour le calcul statistique " +"et le graphisme, similaire au langage et à l'environnement S.
      Il offre " +"une grande variété de techniques statistiques (modélisation linéaire et non " +"linéaire, tests statistiques classiques, analyse de séries temporelles, " +"classification, groupement...) et graphiques, tout en étant très extensible. " +"Le langage « S » est souvent le moyen choisi pour la recherche en " +"méthodologie statistique, alors que « R » fournit une solution " +"« Open source » pour cette activité." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Erreur lors de l'ouverture du fichier %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "Fichier de script R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Erreur de commande d'analyse syntaxique" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "URL de la documentation locale pour R" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Double-cliquez pour ouvrir la boîte de dialogue de sélection" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|Fichiers source R (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage est une suite de logiciels de mathématiques « open source » " +"soumis aux termes de la licence GPL.
      Il combine la puissance de nombreux " +"paquets « open source » existants, regroupés via une interface commune " +"reposant sur Python." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Emplacement de l'exécutable Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Activer la composition LaTeX pour le moteur Sage" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Résultat de %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"La dernière sortie était : \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Fichier de script Python (*.py);;Fichier de script Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"La version de Sage %1.%2 n'est pas prise en charge. Veuillez mettre à jour " +"votre installation de Sage vers une version prise en charge pour qu'elle " +"fonctionne avec Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Impossible de déterminer la version de Sage. Veuillez vérifier votre " +"installation et la sortie de la commande « sage -v »." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "" +"Le processus Sage s'est arrêté de façon anormale lors de l'évaluation de " +"l'expression" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Le processus Sage s'est arrêté de façon anormale" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "" +"Le processus Sage s'est arrêté lors de l'évaluation de cette expression" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Le processus Sage s'est arrêté" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Impossible de démarrer Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "Composition LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"La sortie LaTeX pas toujours correcte. Aussi, la composition LaTeX peut être " +"désactiver pour une meilleure expérience" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab est un ensemble de logiciels libres et multi-plate-forme de " +"calcul numérique ainsi qu'un langage de programmation de haut niveau. Scilab " +"est distribué sous licence CeCILL (compatible GPL)." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Emplacement de l'exécutable Scilab" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Fichier de script Scilab (*.sce);;Fichier de fonction Scilab (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "Le fichier %1 est déjà ouvert." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Ouvrir un fichier" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Télécharger des exemples" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Ouvrir un exemple" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Aller à la feuille de calcul précédente" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Aller à la feuille de calcul suivante" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Tous les fichiers pris en charge (*.cws, *ipynb, *.cws (Feuille Cantor), *." +"ipynb (Jupyter Notebook)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Aucun moteur n'a été trouvé

      \n" +"
      Vous pouvez essayer :\n" +"
      • De modifier les paramètres dans la boîte de dialogue de " +"configuration ;
      • D'installer des paquets pour le programme suivant :" +"
      • %2
      " +msgstr[1] "" +"

      Aucun moteur n'a été trouvé

      \n" +"
      Vous pouvez essayer :\n" +"
      • De modifier les paramètres dans la boîte de dialogue de " +"configuration ;
      • D'installer des paquets pour un des programmes " +"suivants :
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Erreur" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Le moteur %1 n'est pas installé" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"Le moteur %1 est installé mais inactif. Veuillez vérifier votre installation " +"et les paramètres de Cantor" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Session %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Impossible de trouver le composant Cantor: Erreur %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Calcul..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Prêt" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Modifié" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" +"Plusieurs feuilles de travail non enregistrées sont ouvertes. Voulez-vous " +"les fermer ?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Fermer Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Le projet courant a été modifié. Voulez-vous l'enregistrer ?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Enregistrer le projet" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Formatage" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Le moteur utilisé par défaut" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Utiliser la composition par défaut" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Utiliser la coloration syntaxique par défaut" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Activer le complètement par défaut" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Activer la numérotation des expressions par défaut" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Animer les changements dans la feuille de calcul par défaut" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Autoriser le rendu des expressions mathématiques à l'intérieur de $$..$$ " +"pour les entrées par défaut « Texte » et « Marquage » (nécessite que le " +"paquet « pdflatex » soit installé)." + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Réévaluer automatiquement les éléments situés sous l'actuel" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Demander une confirmation pour re-démarrer le moteur :" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Enregistrer en formatage « Rich Text Format » de TextEntry lors de " +"l'enregistrement de la feuille de calcul au format « Notebook Jupyter »" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Utiliser l'ancien style de placement des entrées Cantor" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Afficher l'erreur de rendu intégré de mathématiques" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Limite des lignes visibles pour le résultat textuel" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Police hiérarchique de chapitre" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Taille de la police hiérarchique de chapitre" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Format italique de la police hiérarchique de chapitre" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Format gras de la police hiérarchique de chapitre" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Police hiérarchique de sous-chapitre" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Taille de la police hiérarchique de sous-chapitre" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Format italique de la police hiérarchique de sous-chapitre" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Format gras de la police hiérarchique de sous-chapitre" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Police hiérarchique de section" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Format italique pour la police hiérarchique de section" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Format gras pour la police hiérarchique de section" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Police hiérarchique de sous-section" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Format italique pour la police hiérarchique de sous-section" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Format gras pour la police hiérarchique de sous-section" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Police hiérarchique du paragraphe" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Format italique de la police hiérarchique du paragraphe" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Format gras de la police hiérarchique du paragraphe" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Police hiérarchique du sous-paragraphe" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Format italique de la police hiérarchique du sous-paragraphe" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Format gras de la police hiérarchique du sous-paragraphe" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Enregistrer en texte clair" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Exporter en LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Évaluer une feuille de calcul" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Zoomer" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Composition à l'aide de LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Coloration syntaxique" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Complètement automatique" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Numéros de lignes" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Animations" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Module Math intégré" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Redémarrer le moteur" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Évaluer un élément" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Insérer un élément de commande" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Insérer un élément de texte" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Insérer une entrée Markdown" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Insérer un élément LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Insérer un saut de page" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Insérer une image" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Réduire tous les résultats" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Développer tous les résultats" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Supprimer tous les résultats" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Supprimer l'élément actuel" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Afficher l'éditeur de scripts" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Afficher le complètement automatique" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Feuille de calcul Cantor (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyter Notebook (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Enregistrer sous" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Enregistrer" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Tous les résultats de calcul vont être perdus. Voulez-vous vraiment re-" +"démarrer %1 ?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Re-démarrer %1 ?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Interrompre" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Erreur de session %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Initialisation terminée" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Initialisation..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[lecture seule]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" +"Voulez-vous envoyer la feuille de calcul actuelle à un serveur web public ?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Question - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" +"La feuille de calcul n'est pas enregistrée. Vous devriez l'enregistrer avant " +"de l'envoyer." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Avertissement - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Ce moteur ne prend pas en charge les scripts." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Édition" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Affichage" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Feuille de calcul" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Configuration" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Fichier" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Nouveau" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Panneaux" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Configuration" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Couleur d'arrière-plan" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Défaut" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Couleur du texte" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Police" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Gras" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Italique" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Augmenter la taille de la police" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Diminuer la taille de la police" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Sélectionner" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Réinitialiser aux valeurs par défaut" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Afficher les résultats" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Cacher les résultats" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Afficher l'aide" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Apparence" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Interrompu" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Barre de recherche" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Chercher :" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Suivant" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Précédent" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Remplacer :" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Remplacer" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Tout rempl&acer" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Chercher dans :" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Respecter la casse" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Polices hiérarchiques" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Police de chapitres" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Famille de polices :" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Taille de police :" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Police de sous-chapitres" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Police de sections" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Police de sous-sections" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Police de paragraphes" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Police de sous-paragraphes" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Chapitre" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Sous-chapitre" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Section" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Sous-section" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Paragraphe" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Sous-paragraphe" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Définir le niveau hiérarchique" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Style avec ligne pleine" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Style en ligne avec tirets" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Style en ligne avec pointillés" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Style en ligne avec pointillés" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Style en ligne avec pointillés" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Épaisseur de la ligne" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Fine" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Médium" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Épais " + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Couleur de la ligne" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Style de ligne" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Configurer une image" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Double-cliquez pour configurer les paramètres d'image." + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Impossible de charger l'image %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Enregistrer le résultat en image" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Images (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Paramètres des images" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Ouvrir" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Taille d'affichage" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Largeur" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Hauteur" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Aperçu" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Taille d'impression" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Utiliser la taille d'affichage" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Paramètres des images" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(auto)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Ouvrir un fichier image" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Afficher le code LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Aucun emplacement spécifié pour l'exécutable %1. Veuillez fournir un " +"emplacement correct dans les paramètres de l'application and essayer de " +"nouveau." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"Le fichier spécifié « %1 » pour l'exécutable « %2 » n'existe pas. Veuillez " +"fournir un emplacement correct dans les paramètres de l'application et ré-" +"essayer." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"Le fichier spécifié « %1 » n'est pas un executable. Veuillez fournir un " +"emplacement correct dans les paramètres de l'application et ré-essayer." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"Le programme %1 ne s'est pas terminé après %2 millisecondes durant le test " +"d'intégration des tracés." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" +"Impossible d'ouvrir le fichier %1 durant le test d'intégration des tracés." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" +"Impossible de parcourir le résultat durant le test d'intégration des tracés." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Emplacement de l'exécutable LaTeX" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Emplacement de l'exécutable « dvips »" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Valeur" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 octets>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Depuis :" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Vers:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Titre principal" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Échelle d'abscisse" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Échelle d'ordonnée" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Titre du graphe :" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Ceci est un contenu Jupyter de types non pris en compte (« %1 »)" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"La tâche %1 s'est arrêtée de façon inattendue. Tous les résultats de calcul " +"sont perdus." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"La tâche « %1 » s'est arrêtée de façon inattendue avec le message « %2 ». " +"Tous les résultats de calcul sont perdus." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Vous choisissez la prise en charge pour le paquet de graphisme %1. Mais " +"cette dernière ne peut être activée par suite d'exigences non satisfaites. " +"Pour cette raison, l'intégration de ce paquet sera désactivée. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Interface KDE pour des applications mathématiques" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Mainteneur
      Port vers Qt5/KF5, moteur Scilab et Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Développeur" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Auteur initial
      Mainteneur (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Moteur KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Moteur Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Interface" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Icône Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Utiliser le moteur " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Documents à ouvrir." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Impossible d'ouvrir le fichier « %1 »" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Passer en mode d'édition" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Effacer les pièces jointes" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Erreur mathématique de Cantor" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Impossible de lire l'image « %1 »: erreur « %2 »" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Saut de page ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Aller au contenu" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Rechercher grâce à des mots clé..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Trouver dans le texte de la page de documentation courante" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Réinitialisez le niveau de zoom à 100 %" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Fermer" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Aller à la correspondance suivante" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Aller à la correspondance précédente" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Correspondance sensible à la casse" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" +"Le fichier a été transféré avec succès dans le dossier « Téléchargements »." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Téléchargement réussi." + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Fichiers pour Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Fichiers pour Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Tous les fichiers pris en charge" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Tous les fichiers" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Nom :" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Valeur :" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Ajouter une nouvelle variable" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Charger des variables" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Enregistrer des variables" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Supprimer des variables" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Chercher / Filtrer" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Sensible à la casse" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Faire correspondre par mot complet" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Voulez-vous vraiment supprimer toutes les variables ?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Charger un fichier" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Enregistrer le résultat" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Supprimer le résultat" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Impossible de trouver un composant éditeur de texte pour KDE.\n" +"Veuillez vérifier votre installation KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Éditeur de scripts" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Éditeur de scripts - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Introuvable" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Début atteint" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Fin atteinte" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Remplacé %1 instance" +msgstr[1] "Remplacé %1 instances" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Commandes" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Résultats" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Erreurs" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Texte" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Code LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "Démarrage :" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" +"Créer une nouvelle feuille de travail pour le système sélectionné de moteur. " +"Si aucun moteur n'est sélectionné, une demande sera faite à l'utilisateur " +"sur le système à utiliser au démarrage." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Moteur par défaut :" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Feuille de calcul :" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" +"Activer la composition LaTeX pour les résultats des calculs, si cela est " +"pris en charge par le système de moteurs." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "Composition LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Activer la coloration syntaxique" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Coloration syntaxique" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "Activer le complètement syntaxique" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Afficher les numéros de lignes" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Numéros de lignes" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Activer les effets d'animation dans la feuille de travail" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" +"Si cette option est activée, les entrées de texte sont alignées sur la " +"bordure de la feuille de travail et non sur la bordure du prompt." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "Ne pas indenter les entrées de texte" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Utiliser le format « Rich Text Format » pour les entrées de texte lors de " +"l'enregistrement au format « Notebook Jupyter »" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "Évaluation :" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"Si cette option est activée, une demande sera faite à l'utilisateur pour une " +"confirmation avant de re-démarrer le système de moteurs." + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" +"Si cette option est activée, toutes les entrées sous celle courante seront " +"évaluées automatiquement." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "Réévaluer les entrées automatiquement" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Nombre de colonnes dans le résultat (0 pour illimité) :" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Nombre maximal de colonnes visibles dans le résultat d'une commande. " +"Utiliser 0 pour travailler sans aucune limitation." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown :" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" +"Activer la composition LaTeX pour les expressions mathématiques dans les " +"entrées « Markdown »" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "Expressions mathématiques grâce à LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "Signaler les échecs de rendu pour les expressions mathématiques" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Chercher..." + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Cellules cibles en format brut" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Ajouter une cible personnalisée" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Convertir en entrée texte" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Transformer en cellule au format brut" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Type MIME choisi :" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Copier le résultat" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Afficher le rendu" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Afficher le code" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Afficher le code HTML" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Afficher l'alternative en plein texte " + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Afficher le code HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Afficher le texte HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" +"Impossible de faire un rendu du fichier « EPS ». Il se peut que vous ayez " +"besoin de paquets supplémentaires." + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Enregistrer le résultat en texte" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "Fichiers de texte (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Impossible d'écrire le fichier %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Impossible d'écrire dans le fichier." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Erreur lors de l'enregistrement du fichier %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"En mode lecture seule, Cantor ne peut garantir que l'exportation soit " +"valable pour %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Problème lors du chargement de la feuille de style « latex.xsl »" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Impossible d'ouvrir le fichier « %1 »." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Ouvrir un fichier" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Impossible d'ouvrir le fichier sélectionné pour lecture." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" +"Le fichier sélectionné n'est pas un fichier valable pour un projet Cantor ou " +"Jupyter." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Le fichier sélectionné n'est pas un fichier de projet Cantor valable." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Cette feuille de calcul a été créé en utilisant Python2, qui n'est plus " +"maintenu. A la place, Python3 sera utilisé." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Arrêt de la maintenance de Python2" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"Impossible de trouver le moteur %1. L'édition et l'exécution des entrées " +"sont impossibles." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Il y a quelques problèmes avec le moteur %1.\n" +"Veuillez vérifier votre configuration ou installer les paquets nécessaires.\n" +"Vous ne pourrez qu'afficher cette feuille de calcul." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Les notebooks Jupyter pour les versions inférieures à la version 4.5 " +"(version détectée %1.%2) ne sont plus maintenus." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Les notebooks Jupyter pour les versions supérieures à la version 4.5 " +"(version détectée %1.%2) ne sont plus maintenus." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Ce notebook a été créé en utilisant Python2, qui n'est plus maintenu. " +"Python3 sera utilisé." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "un objet avec les clés : %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "valeur incorrecte d'un objet JSON" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" +"des données incorrectes ont été trouvées (%1), ne faisant pas partie d'une " +"cellule Jupyter" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "Le fichier n'est pas un fichier de notebook Jupyter" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Schéma de notebook Jupyter non valable : %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Convertir en" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Commande" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Image" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Saut de page" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Ligne horizontale" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Entrée hiérarchique" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Insérer après" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Insérer avant" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Insérer" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Zoomer en avant" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Zoomer en arrière" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Taille originale" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Déplacer les entrées vers le haut" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Déplacer les entrées vers le bas" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Évaluer les entrées" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Supprimer des entrées" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Réduire les résultats de la commande saisie" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Développer les résultats de la commande saisie" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Supprimer les résultats de la commande saisie" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Exclure l'entrée de la commande de l'exécution" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Ajouter une commande saisie pour exécution" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "&Couleur du texte..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Couleur" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Surligner du texte..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Police" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Taille de poli&ce" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Gras" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Italique" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Souligné" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Barré" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Aligné à &gauche" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Gauche" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "&Centrer" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Centrer" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Aligner à d&roite" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Droite" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Justifier" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Justifier" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"Cette action supprimera tous les résultats sans annulation possible. Voulez-" +"vous vraiment continuer ?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Supprimer tous les résultats" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Blanc" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Noir" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Rouge foncé" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Rouge" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Rouge clair" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Vert foncé" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Vert" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Vert clair" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Bleu foncé" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Bleu" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Bleu clair" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Jaune foncé" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Jaune" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Jaune clair" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Cyan foncé" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Cyan" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Cyan clair" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Magenta foncé" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Magenta clair" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Orange foncé" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Orange" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Orange clair" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Gris foncé" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Gris" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Gris clair" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Déplacer vers le haut" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Déplacer vers le bas" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Voulez-vous vraiment supprimer cette entrée ?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Supprimer une entrée" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Faire glisser une entrée" + +#~ msgid "Animate Worksheet" +#~ msgstr "Animer une feuille de calcul" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "Au démarrage, si un moteur par défaut est défini, créer une feuille de " +#~ "travail pour lui au lieu d'afficher la boîte de dialogue de sélection de " +#~ "moteur." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Lorsque cette option est cochée, Cantor évalue automatiquement chaque " +#~ "élément situé sous l'actuel." + +#~ msgid "Defaults" +#~ msgstr "Paramètres par défaut" + +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "Ceci est la valeur initiale pour l'option de session « Composeur " +#~ "utilisant LaTeX » permettant d'effectuer des rendus avec les sorties de " +#~ "certains moteurs comme « latex », si pris en charge. Par exemple, les " +#~ "sorties de « Maxima » seront rendus avec « latex », si cette option est " +#~ "activée." + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "" +#~ "Autoriser les paramétrage de type LaTeX (ne fonctionne que si LaTeX est " +#~ "installé)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "Ceci est la valeur initiale pour l'option de session « Coloration " +#~ "syntaxique » permettant d'effectuer des rendus avec la coloration " +#~ "syntaxique dans les saisies de commandes." + +#~ msgid "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." +#~ msgstr "" +#~ "Ceci est la valeur initiale pour l'option de session « Complètement » " +#~ "permettant d'effectuer l'auto-complètement." + +#~ msgid "" +#~ "This is initial value for the session \"Line numbers\" option, which " +#~ "response for presence of command entries execution numbers." +#~ msgstr "" +#~ "Ceci est la valeur initiale pour l'option de session « Numéros de " +#~ "lignes » permettant de vérifier la présence de numéro de lignes dans les " +#~ "saisies de commandes." + +#~ msgid "Enable Line Numbers" +#~ msgstr "Activer les numéros de lignes" + +#~ msgid "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." +#~ msgstr "" +#~ "Ceci est la valeur initiale pour l'option de session « Animation de la " +#~ "feuille de travail » permettant de vérifier la présence de l'animation de " +#~ "la feuille de travail." + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Activer les animations dans les feuilles de calcul" + +#~ msgid "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." +#~ msgstr "" +#~ "Ceci est la valeur initiale pour l'option de session « Formules " +#~ "mathématiques intégrées » permettant d'activer le rendu des expressions " +#~ "mathématiques dans les entrée de texte et de langages à balises. " + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "" +#~ "Autoriser le module intégré Math (ne fonctionne que si le paquet " +#~ "« pdflatex » est installé)" + +#~ msgid "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." +#~ msgstr "" +#~ "Si désactivé, alors, l'alarme concernant le démarrage n'apparaîtra pas " +#~ "sur l'appui du bouton de ré-initialisation." + +#~ msgid "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." +#~ msgstr "" +#~ "Si activé, alors, une fenêtre d'informations apparaîtra lors de toute " +#~ "erreur de rendu pour une formule mathématique, avec une description de " +#~ "l'erreur." + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "" +#~ "Afficher un message d'erreur lors d'un défaut de rendu du module intégré " +#~ "Math" + +#~ msgid "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." +#~ msgstr "" +#~ "Si activé, alors, le style d'indentation des anciennes saisies Cantor " +#~ "(toutes les saisies alignées à gauche) sera utilisé." + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Utiliser l'ancien style d'indentation des entrées Cantor" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Si cette option est activée, alors Cantor enregistrera au format « Rich " +#~ "Text Format » les saisies de texte lors de l'enregistrement vers le " +#~ "format « Notebook Jupyter »." + +#~ msgid "" +#~ "Graphical package, for which will be enable support for embedding plots" +#~ msgstr "" +#~ "Paquet pour le graphisme, dont la prise en charge sera activé pour des " +#~ "tracés intégrés" + +#~ msgid "" +#~ "Graphic package, which code will be used for plotting via \"Plot\" Cantor " +#~ "menu." +#~ msgstr "" +#~ "Paquet graphique dont le code sera utilisé pour le tracé grâce au menu " +#~ "« Tracé » de Cantor." + +#~ msgid "Matplotlib (with seaborn, ggplot support too)" +#~ msgstr "" +#~ "Matplotlib (avec aussi la prise en charge de « seaborn » et de « ggplot »)" + +#~ msgid "Plot.ly" +#~ msgstr "Plot.ly" + +#~ msgid "All supported" +#~ msgstr "Tous pris en charge" + +#~ msgid "" +#~ "Graphic package, used for plotting. When integrated plots option is " +#~ "enabled, then plots from the package will be integrated to worksheet" +#~ msgstr "" +#~ "Paquet de graphisme utilisé pour le tracé. Lorsque l'option de graphisme " +#~ "intégrée est activée, alors, les tracés réalisés à partir du paquet " +#~ "seront intégrés dans le feuille de travail." + +#~ msgid "Graphic Package: " +#~ msgstr "Paquet de graphique :" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      La méthode KDE pour faire des mathématiques" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "URL pour la documentation locale de Maxima" + +#~ msgid "" +#~ "If empty, the \"Show help\" action will show the default online " +#~ "documentation. Otherwise, the specified URL will be opened." +#~ msgstr "" +#~ "Si vide, l'action « Afficher l'aide » affichera la documentation par " +#~ "défaut en ligne. Autrement, l'URL spécifiée sera utilisée." + +#~ msgid "Documentation:" +#~ msgstr "Documentation :" + +#~ msgid "Url to the local Python documentation" +#~ msgstr "URL de la documentation locale de Python" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "URL de la documentation locale d'Octave" + +#~ msgid "Show %1 Help" +#~ msgstr "Afficher l'aide pour %1" + +#~ msgid "Path to Julia:" +#~ msgstr "Emplacement de Julia :" + +#~ msgid "Documentation provided by GHNS" +#~ msgstr "Documentation fournie par « GHNS » (Get Hot New Stuff)" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Intégrer des graphes dans une feuille de calcul" + +#~ msgid "" +#~ "Commands to automatically run on start. They can be useful for loading " +#~ "needed modules, changing environment, etc." +#~ msgstr "" +#~ "Pilote l'exécution automatique au démarrage. Cela peut être utile pour " +#~ "les chargements nécessaires pour les modules, les modifications " +#~ "d'environnement, etc." + +#~ msgid "Clear Variables" +#~ msgstr "Effacer des variables" + +#~ msgid "Exclude from Execution" +#~ msgstr "Exclure de l'exécution" + +#~ msgid "Add to Execution" +#~ msgstr "Ajouter à l'exécution" + +#~ msgid "Right click here to insert image" +#~ msgstr "Cliquez ici avec le bouton droit pour insérer une image" + +#~ msgid "Choose Image" +#~ msgstr "Choisir une image" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "Images (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Confirmation - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Élément de texte" + +#~ msgid "LaTeX Entry" +#~ msgstr "Élément LaTeX" + +#~ msgid "Insert Horizontal Line" +#~ msgstr "Insérer une ligne horizontale" + +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Insérer une entrée hiérarchique" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Emplacement de la commande scilab-adv-cli (Avertissement : la version de " +#~ "Scilab doit être supérieure ou équivalente à la version 5.4)" + +#~ msgid "Insert Image Attachment" +#~ msgstr "Insérer une pièce jointe" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Insérer un élément LaTeX" + +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Emplacement vers l'exécutable Python du serveur Cantor" + +#~ msgid "" +#~ "Path to directory, which contains Cantor plugins (cantorpart and all " +#~ "backends)" +#~ msgstr "" +#~ "Emplacement du dossier contenant les modules externes Cantor (modules et " +#~ "moteur Cantor)" + +#~ msgid "Paths (advance settings)" +#~ msgstr "Emplacements (Paramètres avancés)" + +#~ msgid "Path to Cantor plugin directory:" +#~ msgstr "Emplacement du dossier des modules externes Cantor :" + +#~ msgid "" +#~ "Path to directory, which contains Cantor backend plugins. This is " +#~ "important setting - with wrong path Cantor can't create any worksheets." +#~ msgstr "" +#~ "Emplacement du dossier contenant les modules externes du moteur de " +#~ "Cantor. Ceci est un paramètre important. Si l'emplacement est incorrect, " +#~ "Cantor ne pourra créer aucune feuille de travail." + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "Format intermédiaire des tracés dans la feuille de calcul :" + +#~ msgid "Preferred package for the \"Plot\" menu: " +#~ msgstr "Paquet préféré pour le menu « Tracé » :" + +#~ msgid "Path to Maxima:" +#~ msgstr "Emplacement de Maxima :" + +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Emplacement vers le serveur Python de Cantor :" + +#~ msgid "Path to Sage:" +#~ msgstr "Emplacement de Sage :" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Emplacement de la commande scilab-adv-cli :" + +#~ msgid "" +#~ "On this moment, integrated graphic can handle only one of Julia packages " +#~ "- GR graphic package. And for using this feature you need to install the " +#~ "package first. For this, run Pkg.install(\"GR\") in Cantor or in julia " +#~ "REPL. Also, it is important to note, that this is a long operation and " +#~ "better use julia REPL, because Cantor doesn't show intermediate text " +#~ "unlike the julia." +#~ msgstr "" +#~ "A cet instant, la partie graphique intégrée ne peut gérer que un seul " +#~ "paquet de « Julia », le paquet « GR ». Et, pour l'utilisation de cette " +#~ "fonctionnalité, vous avez besoin d'installer d'abord le paquet. Pour " +#~ "ceci, veuillez lancer le commande « run Pkg.install(\"GR\") » dans Cantor " +#~ "ou dans le « REPL » de « Julia ». Aussi, il est important de noter que " +#~ "ceci est une opération longue et une meilleure utilisation du « REPL » de " +#~ "« Julia » car Cantor n'affiche aucun texte intermédiaire comme le fait " +#~ "« Julia »." + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "" +#~ "Permettre à Cantor de suivre la création / la destruction des variables" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "" +#~ "Intégrer des graphes dans une feuille de calcul (démarrer une nouvelle " +#~ "session après changement)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Emplacement de l'exécutable Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Emplacement de Octave :" + +#~ msgid "Unnamed" +#~ msgstr "Sans nom" + +#, fuzzy +#~| msgctxt "the url to the documentation Python 2" +#~| msgid "http://docs.python.org/2/" +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "http://docs.python.org/2/" + +#, fuzzy +#~| msgid "" +#~| "

      Python is a remarkably powerful dynamic programming language that is " +#~| "used in a wide variety of application domains. There are several Python " +#~| "packages to scientific programming.

      This backend supports Python 3." +#~| "

      " +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "

      Python est un langage de programmation dynamique remarquablement " +#~ "puissant, qui est utilisé dans des domaines d'application très variés. Il " +#~ "y a plusieurs paquets Python pour la programmation scientifique.

      Ce " +#~ "moteur prend en charge Python 3.

      " + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Choisissez le moteur à utiliser :" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Le moteur avec lequel ce fichier a été généré n'est pas installé. Il " +#~ "nécessite %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Publier la feuille de calcul" + +#~ msgid "Waiting for Image..." +#~ msgstr "En attente d'une image..." + +#~ msgid "%1: %2" +#~ msgstr "%1 : %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "impossible d'ouvrir le fichier %1 : type MIME inconnu" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|Document LaTeX" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Feuille de calcul Cantor" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Serveur pour le moteur R de Cantor" + +#~ msgid "R Server" +#~ msgstr "Serveur R" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Utilisation : " + +#~ msgid "Saving failed." +#~ msgstr "L'enregistrement a échoué." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Utilisation : fichier loadVariables" + +#~ msgid "Loading failed." +#~ msgstr "Le chargement a échoué." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2013 Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "Emplacement de la commande python" + +#~ msgid "Cantor Server for R" +#~ msgstr "Serveur Cantor pour R" + +#~ msgid "Path to python2 command:" +#~ msgstr "Emplacement de la commande python2" + +#~ msgid " Enable Variable Management" +#~ msgstr " Activer la gestion des variables" + +#~ msgid "Could not start the server." +#~ msgstr "Impossible de démarrer le serveur." + +#~ msgid "Start Animation" +#~ msgstr "Démarrer l'animation" + +#~ msgid "Restart Animation" +#~ msgstr "Redémarrer l'animation" + +#~ msgid "Append Latex Entry" +#~ msgstr "Ajouter un élément LaTeX" + +#~ msgid "Append Image" +#~ msgstr "Ajouter une image" + +#~ msgid "Append Page Break" +#~ msgstr "Ajouter un saut de page" + +#~ msgid "Other" +#~ msgstr "Autre" + +#~ msgid "And %1 more..." +#~ msgstr "Et %1 de plus..." + +#~ msgid "Main Toolbar" +#~ msgstr "Barre principale" + +#~ msgid "Popup" +#~ msgstr "Fenêtre qui apparaît" + +#~ msgid "The style used for Completion" +#~ msgstr "Le style utilisé pour le complètement du texte" diff --git a/po/fr/docs/cantor/index.docbook b/po/fr/docs/cantor/index.docbook new file mode 100644 index 0000000..18f67b8 --- /dev/null +++ b/po/fr/docs/cantor/index.docbook @@ -0,0 +1,1013 @@ + + + + ATEX"> + + +]> + + + +Manuel utilisateur de &cantor; + + + Alexander Rieder alexanderrieder@gmail.com +&traducteurJoelleCornavin;&relecteurLudovicGrossard; + + + +2009 +Alexander Rieder + +&FDLNotice; + +12/10/2012 +0.4 (&kde; 4.10) + + +&cantor; est une application dont le but est de fournir une vue esthétique des feuilles de calcul pour d'autres paquets de programmes de mathématiques issus du Logiciel libre. + + + +KDE +kdeedu +mathématiques +maths +Cantor +Sage +R +Maxima + + + + + +Introduction + +&cantor; est une application conçue que vous puissiez utiliser vos applications de mathématiques favorites à partir d'une élégante interface de feuilles de calcul intégrée à &kde;. Elle fournit des boîtes de dialogue pour vous assister dans les tâches courantes et permet de partager vos feuilles de calcul avec d'autres utilisateurs. + + + +Utilisation de &cantor; + +Capture d'écran : +Voici une capture d'écran de &cantor; + + + + + + Capture d'écran + + + + + + + +Fonctionnalités de &cantor; + + Vue intuitive d'une feuille de calcul pour évaluer des expressions. + Résultats de la représentation graphique dans la feuille de calcul. + Structure simple reposant sur des modules externes permettant d'ajouter différents moteurs. + Intégration de nouveautés (GetHotNewStuff) permettant de télécharger (ou d'envoyer vers un serveur) des exemples de feuilles de calcul. + Composition de formules mathématiques à l'aide de &latex;. + Coloration syntaxique prenant en compte le moteur. + Boîtes de dialogue reposant sur des assistants pour vous aider dans les tâches courantes, telles que l'intégration d'une fonction ou la saisie d'une matrice. + + + + +Les moteurs de &cantor; +&cantor; offre plusieurs choix de moteurs que vous pourriez être amené à utiliser avec cette application. Le choix à effectuer dépend de ce que vous voulez réaliser. +Actuellement, sont disponibles les moteurs suivants : + + Sage : + + Sage est un progiciel de mathématiques open source gratuit sous licence GPL. Il combine la puissance de nombreux paquets open source existants, au sein d'une interface reposant sur Python. Consultez http://sagemath.org pour plus d'informations. + + + + Maxima : + + Maxima est un système conçu pour la manipulation d'expressions symboliques et numériques, dont la différentiation, l'intégration, la série de Taylor, les transformées de Laplace, les équations différentielles ordinaires, les systèmes d'équations linéaires, les polynômes, les ensembles, les listes, les vecteurs, les matrices et les. Maxima produit des résultats numériques d'une grande précision grâce à l'utilisation de fractions exactes, d'entiers à précision arbitraire et de nombres à virgule flottante à précision variable. Maxima peut tracer des fonctions et des données en deux et trois dimensions. Consultez http://maxima.sourceforge.net pour plus d'informations. + + + + R : + + R est un langage et un environnement pour le calcul statistique et le graphisme, similaire au langage et à l'environnement S. Il offre une large diversité de techniques statistiques (modélisation linéaire et non linéaire, tests statistiques classiques, analyse de séries chronologiques, classification, agrégation (clustering)... et graphiques, tout en étant très extensible. Le langage S est souvent le véhicule de choix pour la recherche en méthodologie statistique, alors que le langage R lui fournit une route open source. Consultez http://www.r-project.org pour plus d'informations. + + + + KAlgebra : + + KAlgebra est une calculatrice graphique reposant sur MathML livrée avec le projet KDE Education. Consultez http://edu.kde.org/kalgebra/ pour plus d'informations. + + + + Qalculate! : + + Qalculate! n'est pas votre réplication logicielle habituelle de la calculatrice la moins chère disponible. Qalculate! a pour objectif d'utiliser pleinement l'interface, la puissance et la flexibilité supérieures des ordinateurs modernes. Le centre de l'attention, dans Qalculate!, est la saisie d'expressions. Au lieu de saisir chaque nombre dans une expression mathématique séparément, on peut directement écrire l'expression entière et la modifier ultérieurement. L'interprétation d'expressions est flexible, tolère les erreurs et cependant, en cas d'incorrection, Qalculate! vous en fera part. Les expressions non entièrement solubles ne sont néanmoins pas des erreurs. Qalculate! simplifiera autant que faire se peut et répondra par une expression. En plus des nombres et des opérateurs arithmétiques, une expression peut contenir n'importe quelle combinaison de variables, d'unités et de fonctions. Consultez http://qalculate.sourceforge.net/ pour plus d'informations. + + + + Scilab : + + Scilab est un paquet de calcul numérique multi plates-formes, ainsi qu'un langage de programmation orienté numériquement, de haut niveau, issu du Logiciel libre. + Scilab est distribué sous licence CeCILL (compatible GPL). Consultez http://www.scilab.org/ pour plus d'informations. + + Il faut que la version 5.4 ou supérieure de Scilab soit installée dans votre système pour rendre ce moteur utilisable. + + + + + Octave : + + Octave de GNU est un langage de haut niveau, principalement destiné aux calculs numériques. Il fournit une interface en ligne de commande pratique pour résoudre numériquement des problèmes linéaires et non linéaires et pour effectuer d'autres expérimentations numériques à l'aide d'un langage en grande partie compatible avec MATLAB. Consultez http://www.gnu.org/software/octave/ pour plus d'informations. + + + + + + + +L'espace de travail de &cantor; + + + Capture d'écran de l'espace de travail de &cantor; + + + + + + Capture d'écran de l'espace de travail de &cantor; + + + + +L'interface de feuille de calcul de &cantor; est composée de trois parties : + La barre d'onglets, où vous pouvez naviguer entre les feuilles de calcul ouvertes. + Un panneau d'aide, où s'affiche l'aide pour une commande spécifique si vous saisissez ? commande. + Un panneau de gestionnaire de variables où on peut voir la liste de toutes les variables disponibles sur la feuille de calcul actuelle. Les panneaux Aide et Gestionnaire de variables sont affichés sous forme d'onglets sur une barre latérale d'une fenêtre de &cantor;. On peut employer le gestionnaire de variables pour Maxima (s'il est activé dans la page ConfigurationConfigurer &cantor;... Maxima), les moteurs KAlgebra, Octave et Qualculate uniquement. + La feuille de calcul proprement dite. + + + +La feuille de calcul +La feuille de calcul est la zone de base pour travailler avec &cantor;. Grâce à celle-ci, on peut saisir des expressions, autoriser le moteur à effectuer des calculs et en observer les résultats. Comme les commandes qu'accepte la feuille de calcul dépendent du moteur choisi, vous devrez apprendre la syntaxe du programme principal approprié (le bouton Afficher l'aide vous y mène directement). Lorsque vous connaissez la commande mais que vous avez besoin d'informations supplémentaires, vous pouvez saisir ? commande pour faire apparaître l'aide contextuelle à droite de la feuille de calcul. Si vous voulez voir quelques exemples de feuilles de calcul, vous pouvez cliquer sur Télécharger des exemples de feuilles de calcul dans le menu Fichier et télécharger les feuilles de calcul que d'autres utilisateurs ont publiées. +Pour contrôler chaque élément de commande de la feuille de calcul, on peut utiliser les boutons de contrôle affichés sur la partie droite de la feuille de calcul lorsqu'on fait passer le curseur de la souris sur le champ de saisie. Il existe trois actions de base pour chaque élément : Évaluer un élément pour actualiser le résultat des calculs concernant l'élément, Faire glisser un élément pour le déplacer ailleurs dans la feuille de calcul actuelle et Supprimer un élément pour supprimer l'élément de la feuille de calcul actuelle. +On peut modifier les paramètres des polices et l'alignement des éléments de la feuille de calcul à l'aide d'une barre d'outils située au-dessus de la feuille de calcul. + + Configuration + Le menu Configuration permet de modifier certains paramètres de l'apparence de votre feuille de calcul actuelle. + + + Composition à l'aide de &latex; + + Cette option modifie la manière dont les résultats vous sont présentés. Si elle est cochée, cette option fait passer le résultat par le système &latex;pour produire des formules visuellement esthétiques. Par exemple, 3*x^2*sqrt(2)*x+2/3 devient + + + + 3*x^2*sqrt(2)*x+2/3 + + + + + + Coloration syntaxique + + La coloration syntaxique augmente la lisibilité du code, en surlignant des mots clés ou en appariant des accolades dans différentes couleurs. + + + + Complètement + + Lorsque cette option est cochée, &cantor; affiche les complètements possibles pour la commande que vous saisissez actuellement quand vous appuyez sur la touche Tab. S'il ne reste qu'un seul choix, ce paramètre insérera le reste de la commande à votre place. + + + + Activer les numéros de lignes + + Ce réglage décide s'il faut ou non afficher un numéro devant les différentes expressions. Il permet de rappeler des résultats antérieurs - dans Maxima, par exemple, il s'agit de la commande %O1. + + + + Animer la feuille de calcul + + Ce paramètre décide s'il faut ou non utiliser les différentes animarions pour surligner les changements sur une feuille de calcul. + + + + + + + + + +Référence des commandes + + +La fenêtre principale de &cantor; + +&cantor; comporte des éléments de menus en commun avec KDE. Pour plus d'informations, consultez le chapitre Menu des Fondamentaux de &kde;. + +Éléments de menus additionnels ou spéciaux dans &cantor; : + + +Le menu <quote +>Fichier</quote +> + + + + &Ctrl;N Fichier Nouveau +Crée une nouvelle feuille de calcul avec le moteur par défaut. + + +Fichier Nouveau Moteur +Crée une nouvelle feuille de calcul avec le moteur choisi. + + +Fichier Télécharger des exemples de feuilles de calcul +Ouvre la boîte de dialogue pour télécharger des exemples envoyés par d'autres utilisateurs de &cantor; avec GetHotNewStuff (Obtention de nouveautés). + + +Fichier Ouvrir un exemple +Ouvre la boîte de dialogue pour choisir un exemple à charger. Les exemples devront être téléchargés avec Fichier Télécharger des exemples de feuilles de calcul au préalable. + + +Fichier Enregistrer en texte clair +Permet d'enregistrer la feuille de calcul actuelle sous la forme d'un document en texte clair. + + +Fichier Exporter en LaTeX +Permet d'enregistrer la feuille de calcul actuelle en &latex;. + + +Fichier Publier la feuille de calcul +Ouvre la boîte de dialogue pour publier votre feuille de calcul actuelle et la mettre à la disposition d'autres utilisateurs de &cantor; grâce à la fonction GetHotNewStuff. + + +Fichier Exécuter un script +Permet de charger et d'exécuter les scripts par lots pour le moteur actuel. + + + + + + + +Le menu <quote +>Affichage</quote +> + + + + &Ctrl;+ Affichage Zoom avant +Effectue un zoom avant de la feuille de calcul actuelle de 10 %. + + + &Ctrl;- Affichage Zoom arrière +Effectue un zoom arrière de la feuille de calcul actuelle de 10 %. + + +Affichage Afficher l'éditeur de scripts +Ouvre la fenêtre de l'éditeur de scripts par lots pour le moteur actuel. + + +Affichage Panneaux Aide +(Des)Active la visibilité de l'onglet Aide dans la barre latérale. + + +Affichage Panneaux Gestionnaire de variables +(Dés)Active la visibilité de l'onglet Gestionnaire de variables dans la barre latérale. + + + + + + +Le menu <quote +>Feuille de calcul</quote +> + + + +Feuille de calcul Évaluer une feuille de calcul +Déclenche l'évaluation de la feuille de calcul entière. + + + &Maj;Entrée Feuille de calcul Évaluer un élément +Déclenche l'évaluation de l'élément actuel. + + + &Ctrl;Entrée Feuille de calcul Insérer un élément de commande +Insère un nouvel élément de commande sous la position actuelle du curseur. + + +Feuille de calcul Insérer un élément de texte +Insère un élément de texte sous la position actuelle du curseur. + + +Feuille de calcul Insérer une image +Insère le modèle de l'image sous la position actuelle du curseur. Il vous faudra cliquer avec le &BDS; sur le modèle pour configurer les détails de l'image. + + +Feuille de calcul Insérer un saut de page +Insère le saut de page sous la position actuelle du curseur. + + + &Maj;Suppr Feuille de calcul Supprimer l'élément actuel +Supprime l'élément actuel de la feuille de calcul. + + + + + + +Le menu <quote +>Configuration</quote +> +Ce menu contient les éléments de configuration standard de &kde;, ainsi que ceux décrits dans la section Configuration. + + + +Le menu <quote +>Aide</quote +> +&help.menu.documentation; + + + + + +Guide du développeur de &cantor; + +&cantor; est facilement extensible par des modules externes. Vous pouvez écrire + + Des moteurs : + + Un nouveau moteur permet d'utiliser l'interface de &cantor; avec un programme différent. + + + + Des assistants : + + Les assistants fournissent des boîtes de dialogue permettant d'automatiser des tâches courantes (telles que la saisie d'une matrice ou l'exécution d'un script). + + + + +Pour le moment, comme il n'existe pas de tutoriels spéciaux pour les développeurs ni de documentation de l'API, si vous voulez écrire un module externe, vous devrez lire les sources du début à la fin. Toutes les définitions de l'interface se trouvent dans le dossier /lib. Pour voir quelques exemples d'implémentations, jetez un coup d'œil aux modules externes livrés avec &cantor;. + + + + +Questions et réponses +&reporting.bugs; &updating.documentation; + + L'élément de menu Composition à l'aide de LaTeX n'est pas disponible + Tous les moteurs ne prennent pas en charge toutes les options. La version actuelle prend en charge la sortie &latex; pour les moteurs Maxima, Qualculate! et Sage. + + + J'ai installé Sage / Maxima, mais le moteur approprié n'apparaît pas. + + Une explication possible est que &cantor; n'a pas correctement détecté l'emplacement. Allez dans la boîte de dialogue ConfigurationConfigurer &kappname;... et changez l'emplacement de l'application appropriée. + + + + Quel nom particulier - qu'a-t-il à voir avec les mathématiques ? + Le nom donné à &cantor; vient du mathématicien allemand Georg Cantor, l'auteur de la théorie des ensembles. + + + + + + +Remerciements et licence + +&cantor; +Programme sous copyright 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +Documentation sous copyright © 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +Traduction française par &JoelleCornavin;. Relecture par &LudovicGrossard; +&underFDL; &underGPL; + + +Installation + + +Comment obtenir &cantor; +&install.intro.documentation; + + +Prérequis + +Pour pouvoir employer &cantor; avec succès, il vous faut &kde; 4. Si vous souhaitez que la prise en charge de la composition soit activée, installez &latex; etLibSpectre. Pour utiliser les différents moteurs, le paquet de mathématiques approprié est requis. + + + + + + + + + +Compilation et installation +&install.compile.documentation; + + +Configuration + +Selon votre système, vous pouvez être amené à ajuster les emplacements des différentes applications que &cantor; utilise. + + + + + +&documentation.index; + + + diff --git a/po/fr/docs/cantor/screenshot.png b/po/fr/docs/cantor/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ffbada5cfb5247cfb885f6800375b3b9bb6d3a GIT binary patch literal 101130 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%0DG&*c& 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�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 r8H4}cBjeg?bx7|?IHK~;@F_R#R}K!|Dj literal 0 HcmV?d00001 diff --git a/po/ga/cantor.po b/po/ga/cantor.po new file mode 100644 index 0000000..93f800b --- /dev/null +++ b/po/ga/cantor.po @@ -0,0 +1,4698 @@ +# Irish translation of cantor +# Copyright (C) 2009 This_file_is_part_of_KDE +# This file is distributed under the same license as the cantor package. +# Kevin Scannell , 2009. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2009-12-24 06:59-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " +"3 : 4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Kevin Scannell" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "kscanne@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Sos" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Stad" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Breac" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Slonn:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Roghanna breise:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Breac" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Ríomh" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Athróg:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Íosteorainn:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Uasteorainn:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Colúin:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Rónna:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Athróg" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Ainm" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Íosmhéid:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Uasmhéid:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "An Chéad Athróg" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "An Dara hAthróg" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Rith Script" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "" + +#: backendchoosedialog.cpp:64 +#, fuzzy, kde-format +#| msgid "Octave backend" +msgid "Select the Backend" +msgstr "Inneall Octave" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Julia script file (*.jl)" +msgstr "*.R|Comhad scripte R" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Earráid - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Ginearálta" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Cumasaithe" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Variable:" +msgid "Variable Management:" +msgstr "Athróg:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plots" +msgstr "Breac" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "PyPlot" +msgstr "Breac" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documentation" +msgstr "Cáipéis le hoscailt" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "http://docs.kde.org/stable/en/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Earráid: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "" + +#: backends/lua/luaextensions.cpp:20 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Lua script file (*.lua)" +msgstr "*.R|Comhad scripte R" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" + +#: backends/octave/octaveextensions.cpp:34 +#, fuzzy, kde-format +#| msgid "*.m|Octave script file" +msgid "Octave script file (*.m)" +msgstr "*.m|Comhad scripte Octave" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Earráid Chomhréire" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Python script file (*.py)" +msgstr "*.R|Comhad scripte R" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "plot.ly" +msgstr "Breac" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Feidhmeanna" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Teideal" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Slonn" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Cuir Leis" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Bain" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Athróg X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Stíl" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Línte" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Pointí" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Pointí agus Línte" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Boscaí" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histeagram" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Céimeanna" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Poncanna" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Slíomachán" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Neamhní" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, fuzzy, kde-format +#| msgid "Step size" +msgid "Step si&ze" +msgstr "Méid na céime" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Roghanna" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Barr ar chlé" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Barr ar dheis" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Bun ar chlé" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Bun ar dheis" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Thíos" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Amuigh" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Roghanna Comhaid" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Cineál an chomhaid" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "%1 ar iarraidh" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "EARRÁID" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "RABHADH" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "slonn" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "rogha" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "luach" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "slánuimhir" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "Boole" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "uimhir" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "comhad" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Deachúil" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Beacht" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Codánach" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Comhcheangailte" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Taispeáint uimhriúil:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Glan" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Eolaíoch" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Beachtas" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Luacháil" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Raidiain" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Céimeanna" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Graidiain" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Simpligh" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Fachtóirigh" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Aonad uillinne:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Breacadh" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Taispeáin greille:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "2nd Variable" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "An Dara hAthróg" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Add local documentation" +msgstr "Cáipéis le hoscailt" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Document to open" +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Cáipéis le hoscailt" + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Additional options:" +msgid "Download additional documentations" +msgstr "Roghanna breise:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Ainm" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, fuzzy, kde-format +#| msgid "Add" +msgctxt "@action:button" +msgid "Add" +msgstr "Cuir Leis" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Octave backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Inneall Octave" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name:" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Ainm:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "" + +#: backends/R/rextensions.cpp:22 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "R script file (*.R)" +msgstr "*.R|Comhad scripte R" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" + +#: backends/sage/sageextensions.cpp:32 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "*.R|Comhad scripte R" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "" + +#: backends/scilab/scilabextensions.cpp:23 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "*.R|Comhad scripte R" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, fuzzy, kde-format +#| msgid "file" +msgid "Open file" +msgstr "comhad" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Earráid" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Seisiún %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Á Áireamh..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Réidh" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, fuzzy, kde-format +#| msgid "Error - Cantor" +msgid "Close Cantor" +msgstr "Earráid - Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "Plotting" +msgid "Formatting" +msgstr "Breacadh" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Aibhsiú Comhréire" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Críoch" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Uimhreacha Línte" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Functions" +msgid "Animations" +msgstr "Feidhmeanna" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "" + +#: cantor_part.cpp:278 +#, fuzzy, kde-format +#| msgid "Insert LaTeX Entry" +msgid "Insert Markdown Entry" +msgstr "Ionsáigh Iontráil LaTeX" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Ionsáigh Iontráil LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Ionsáigh Íomhá" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Expand All Results" +msgstr "Torthaí" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Remove All Results" +msgstr "Torthaí" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "" + +#: cantor_part.cpp:406 +#, fuzzy, kde-format +#| msgid "(C) 2009-2012 Alexander Rieder" +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "© 2009-2012 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, fuzzy, kde-format +#| msgid "Save" +msgid "Save as" +msgstr "Sábháil" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Sábháil" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Idirbhriseadh" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Eagar" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Amharc" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "&Socruithe" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Comhad" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Nua" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Painéil" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Socruithe" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "Default" +msgstr "Réamhshocruithe" + +#: commandentry.cpp:151 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Text &Color..." +msgid "Text Color" +msgstr "Dath Téa&cs..." + +#: commandentry.cpp:176 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "&Font" +msgid "Font" +msgstr "&Cló" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, fuzzy, kde-format +#| msgctxt "@action boldify selected text" +#| msgid "&Bold" +msgid "Bold" +msgstr "&Trom" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, fuzzy, kde-format +#| msgctxt "@action italicize selected text" +#| msgid "&Italic" +msgid "Italic" +msgstr "&Iodálach" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Show Results" +msgstr "Torthaí" + +#: commandentry.cpp:338 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Hide Results" +msgstr "Torthaí" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Show Help" +msgstr "Torthaí" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Idirbhriste" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Aimsigh:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Ar Aghaidh" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Roimhe Seo" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Ionadaigh:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Ionadaigh" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Ion&adaigh Uile" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Cuardaigh i:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Comhoiriúnaigh an cás" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Font Size:" +msgstr "Méid Phriontála" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Section" +msgstr "feidhm" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Subsection" +msgstr "feidhm" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Text &Color..." +msgid "Line Color" +msgstr "Dath Téa&cs..." + +#: horizontalruleentry.cpp:351 +#, fuzzy, kde-format +#| msgid "Style" +msgid "Line Style" +msgstr "Stíl" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Save image result" +msgstr "Bain Iontráil" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Image" +msgid "Images (%1)" +msgstr "Íomhá" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Socruithe Íomhá" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Oscail" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Leithead" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Airde" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, fuzzy, kde-format +#| msgid "&Previous" +msgid "Preview" +msgstr "&Roimhe Seo" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Méid Phriontála" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Socruithe Íomhá" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "pct" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Luach" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "X variable" +msgid "" +msgstr "Athróg X" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Ó:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Chuig:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Príomhtheideal" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "" + +#: main.cpp:74 +#, fuzzy, kde-format +#| msgid "(C) 2009-2012 Alexander Rieder" +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "© 2009-2012 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, fuzzy, kde-format +#| msgid "Scilab backend" +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Inneall Scilab" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, fuzzy, kde-format +#| msgid "Alexander Rieder" +msgid "Alexander Semke" +msgstr "Alexander Rieder" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Inneall KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Inneall Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Comhéadan" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "" + +#: main.cpp:92 +#, fuzzy, kde-format +#| msgid "Use this backend" +msgid "Use backend " +msgstr "Úsáid an t-inneall seo" + +#: main.cpp:95 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documents to open." +msgstr "Cáipéis le hoscailt" + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, fuzzy, kde-format +#| msgid "Syntax Error" +msgid "Cantor Math Error" +msgstr "Earráid Chomhréire" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Briseadh Leathanaigh ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, fuzzy, kde-format +#| msgid "&Match case" +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "&Comhoiriúnaigh an cás" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "file" +msgid "Jupyter files" +msgstr "comhad" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, fuzzy, kde-format +#| msgid "file" +msgid "All files" +msgstr "comhad" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Ainm:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Luach:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "2nd Variable" +msgid "Add New Variable" +msgstr "An Dara hAthróg" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Luchtaigh Athróga" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Load Variables" +msgid "Save Variables" +msgstr "Luchtaigh Athróga" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Load Variables" +msgid "Remove Variables" +msgstr "Luchtaigh Athróga" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, fuzzy, kde-format +#| msgid "Search in:" +msgid "Search/Filter" +msgstr "Cuardaigh i:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +#| msgid "Loading failed." +msgid "Load file" +msgstr "Theip ar luchtú." + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Níor aimsíodh comhpháirt eagarthóra KDE;\n" +"seiceáil do shuiteáil KDE le do thoil." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Eagarthóir Scripteanna" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Gan aimsiú" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Orduithe" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Torthaí" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Earráidí" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Téacs" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Cód LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Aibhsiú Comhréire" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Aibhsiú Comhréire" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Uimhreacha Línte" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Uimhreacha Línte" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Evaluate" +msgid "Evaluation:" +msgstr "Luacháil" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Insert LaTeX Entry" +msgid "Markdown:" +msgstr "Ionsáigh Iontráil LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, fuzzy, kde-format +#| msgid "Find:" +msgid "Find…" +msgstr "Aimsigh:" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, fuzzy, kde-format +#| msgid "Insert LaTeX Entry" +msgid "Convert to Text Entry" +msgstr "Ionsáigh Iontráil LaTeX" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Copy result" +msgstr "Torthaí" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "" + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +#| msgid "file" +msgid "Open File" +msgstr "comhad" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Insert LaTeX Entry" +msgid "Convert To" +msgstr "Ionsáigh Iontráil LaTeX" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Commands" +msgid "Command" +msgstr "Orduithe" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Insert LaTeX Entry" +msgid "Markdown" +msgstr "Ionsáigh Iontráil LaTeX" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Íomhá" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Briseadh Leathanaigh" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, fuzzy, kde-format +#| msgid "Points and Lines" +msgid "Horizontal Line" +msgstr "Pointí agus Línte" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert LaTeX Entry" +msgid "Insert After" +msgstr "Ionsáigh Iontráil LaTeX" + +#: worksheet.cpp:1856 +#, fuzzy, kde-format +#| msgid "Insert Before" +msgid "Insert Before" +msgstr "Ionsáigh" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Ionsáigh" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "Méid Phriontála" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Insert LaTeX Entry" +msgid "Move Entries Down" +msgstr "Ionsáigh Iontráil LaTeX" + +#: worksheet.cpp:1933 +#, fuzzy, kde-format +#| msgid "Evaluate" +msgid "Evaluate Entries" +msgstr "Luacháil" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Entries" +msgstr "Bain Iontráil" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Command Entry Results" +msgstr "Bain Iontráil" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Dath Téa&cs..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Aibhsiú &Téacs..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Cló" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Trom" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Iodálach" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Scríoblíne" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Ailínigh Ar &Chlé" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Ar Chlé" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Ailínigh &Sa Lár" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Sa Lár" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Ailínigh Ar &Dheis" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Comhfhadaigh" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Comhfhadaigh" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove all results" +msgstr "Bain Iontráil" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +#| msgid "Ready" +msgid "Red" +msgstr "Réidh" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Bain Iontráil" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "" + +#~ msgid "Defaults" +#~ msgstr "Réamhshocruithe" + +#, fuzzy +#~| msgid "Plot" +#~ msgid "Plot.ly" +#~ msgstr "Breac" + +#, fuzzy +#~| msgid "Document to open" +#~ msgid "Documentation:" +#~ msgstr "Cáipéis le hoscailt" + +#~ msgid "Clear Variables" +#~ msgstr "Glan Athróga" + +#, fuzzy +#~| msgid "Insert Image" +#~ msgid "Choose Image" +#~ msgstr "Ionsáigh Íomhá" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Deimhniú - Cantor" + +#~ msgid "LaTeX Entry" +#~ msgstr "Iontráil LaTeX" + +#, fuzzy +#~| msgid "Insert LaTeX Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Ionsáigh Iontráil LaTeX" + +#, fuzzy +#~| msgid "Insert Image" +#~ msgid "Insert Image Attachment" +#~ msgstr "Ionsáigh Íomhá" + +#~ msgid "Unnamed" +#~ msgstr "Gan ainm" + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "© 2009 Alexander Rieder" + +#~ msgid "Loading failed." +#~ msgstr "Theip ar luchtú." + +#, fuzzy +#~| msgid "(C) 2009-2012 Alexander Rieder" +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "© 2009-2012 Alexander Rieder" + +#~ msgid "Other" +#~ msgstr "Eile" + +#~ msgid "Main Toolbar" +#~ msgstr "Príomhbharra Uirlisí" + +#~ msgid "Popup" +#~ msgstr "Preabfhuinneog" + +#~ msgid "Help" +#~ msgstr "Cabhair" diff --git a/po/gl/cantor.po b/po/gl/cantor.po new file mode 100644 index 0000000..f9f22d4 --- /dev/null +++ b/po/gl/cantor.po @@ -0,0 +1,5189 @@ +# translation of mathematik.po to galician +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Marce Villarino , 2009. +# Xosé , 2009, 2010, 2011. +# Marce Villarino , 2012, 2013, 2014. +# Miguel Branco , 2013. +# Adrián Chaves Fernández , 2015, 2016, 2017. +# Adrián Chaves (Gallaecio) , 2017, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: mathematik\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2019-11-17 09:29+0100\n" +"Last-Translator: Adrián Chaves (Gallaecio) \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.03.70\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Xosé Calvo, Marce Villarino" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "xosecalvo@gmail.com, mvillarino@kde-espana.es" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pausa" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Comezar" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Deter" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Gardar o resultado" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Representación avanzada" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Representar" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Expresión:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Opcións adicionais:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "Re&presentar" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Opción activa" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Calcular" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Derivar" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variábel:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Veces: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Paquete" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importar un paquete" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Paquete:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integrar" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Límite inferior:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Límite superior:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "integral definida" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "Álxebra &lineal" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Crear unha matriz" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Columnas:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Filas:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Calcular os valores propios" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matriz:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Calcular os vectores propios" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Inverter a matriz" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Representar en 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variábel" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Nome" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Mínimo:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Máximo:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Representar en 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1ª variábel" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2ª variábel" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Executar un script" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Resolver ecuacións" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Ecuacións:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variábeis:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Selecciona a infraestrutura" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Versión recomendada: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Consulte %2 para máis " +"información.
      " + +#: backendchoosedialog.cpp:125 +#, fuzzy, kde-format +#| msgid "
      Some requirements are not fulfilled: %1
      " +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "
      Non se cumpren algúns dos requisitos: %1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Empregar esta infraestrutura de maneira predeterminada" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia é unha linguaxe de programación dinámica de alto rendemento e " +"alto nivel para informática técnica, cunha sintaxe que lles resultará " +"familiar aos usuarios doutros ambientes de informática técnica. Fornece un " +"compilador sofisticado, execución distribuída en paralelo, precisión " +"numérica, e unha extensa biblioteca de funcións matemáticas." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"A ruta de Julia indicada na configuración da aplicación debe apuntar " +"directamente ao executábel. Non se permiten as ligazóns simbólicas. Forneza " +"a ruta correcta na configuración da aplicación e inténteo de novo." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Сantor non puido determinar a versión de Julia de %1. Indique a ruta " +"correcta do executábel de Julia (non se permiten ligazóns simbólicas) e " +"inténteo de novo." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Está a intentar usar Cantor con Julia v%1.%2.%3. Esta versión de Cantor " +"compilouse con compatibilidade con Julia v%4.%5.%6. Apunte a esta versión de " +"Julia ou compile Cantor de novo usando a versión %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Ruta da REPL nativa de Julia" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Activar a xestión de variábeis" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Intercalar as gráficas na folla de traballo" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Ficheiro de script de Julia (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Erro - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "O proceso de Julia deixou de funcionar." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Non se puido iniciar o proceso de Julia." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "A comunicación co proceso de Julia fallou por motivos descoñecidos." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Xeral" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Plot Integration:" +msgstr "Integrar" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, fuzzy, kde-format +#| msgid "" +#| "If true, plots will be displayed inside the worksheet. If not they appear " +#| "in a separate window." +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Se escolle esta opción as gráficas hanse ver dentro da folla de traballo, en " +"caso contrario han aparecer nunha xanela á parte." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Activado" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Enable Variable Management" +msgid "Variable Management:" +msgstr "Activar a xestión de variábeis" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Integrate Plots in Worksheet" +msgid "Internal Plot Format:" +msgstr "Incorporar as gráficas na folla de traballo" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plots" +msgstr "Representar" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "PyPlot" +msgstr "Representar" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, fuzzy, kde-format +#| msgid "Scripts to autorun" +msgid "Commands to autorun" +msgstr "Scripts para executar automaticamente" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Documents to open." +msgid "Documentation" +msgstr "Documentos para abrir." + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "The url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "https://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/stable/en/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Lista de scripts para executar automaticamente ao iniciar unha sesión" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Erro: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua é unha linguaxe de scripting rápida e lixeira, cunha sintaxe " +"procedural simple. Existen varias bibliotecas de Lua para matemáticas e " +"ciencia." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Ruta á orde luajit" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Ficheiro de script de Lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Path to luajit command:" +msgid "Path to luajit:" +msgstr "Ruta á orde luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima é un sistema para a manipulación de expresións simbólicas e " +"numéricas, incluídas derivadas, integrais, series de Taylor, transformadas " +"de Laplace, ecuacións diferenciais ordinarias, sistemas de ecuacións " +"lineais, polinomios e conxuntos, listas, vectores, matrices e tensores. " +"Maxima achega resultados numéricos de gran precisión mediante o uso de " +"fraccións exactas, enteiros de precisión arbitraria e números de coma " +"flotante de precisión variábel. Maxima pode representar as funcións e os " +"datos en dúas e tres dimensións." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Ruta ao executábel de Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Erro: Demasiados */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Erro: Demasiados /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Erro: agardábase \" antes do ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Agardando polo resultado da gráfica" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Ficheiro de lotes de Maxima (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Non se puido iniciar Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima quebrou; reiníciase…" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima quebrou dúas veces nun período de tempo curto. Detense para intentar " +"iniciar" + +#: backends/octave/octavebackend.cpp:62 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Octave, please check if there is a " +#| "translated version (currently Czech and Japanese) and use the correct url" +#| msgid "https://octave.org/doc/interpreter/" +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"Octave de GNU é unha linguaxe de alto nivel deseñada principalmente " +"para cálculos numéricos.
      Fornece unha interface de liña de ordes cómoda " +"para resolver numericamente problemas lineais e non lineais e para realizar " +"outros experimentos numéricos empregando unha linguaxe que é bastante " +"compatíbel con Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Ficheiro de script de Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Hai un erro sintáctico" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, fuzzy, kde-format +#| msgctxt "The url to the documentation Python 3" +#| msgid "https://docs.python.org/3/" +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +# skip-rule: trasno-app +#: backends/python/pythonbackend.cpp:72 +#, fuzzy, kde-format +#| msgid "" +#| "Python is a remarkably powerful dynamic programming language that " +#| "is used in a wide variety of application domains. There are several " +#| "Python packages to scientific programming. This backend supports Python 2." +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python é unha linguaxe de programación dinámica utilizada en moitos " +"eidos de aplicación. Hai varios paquetes de Python para facer programación " +"científica. Esta infraestrutura dá compatibilidade con Python 2." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Ficheiro de script de Python (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "O servidor de Python de Cantor deixou de funcionar." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Non se puido iniciar o servidor de Python de Cantor." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"A comunicación co servidor de Python de Cantor fallou por motivos " +"descoñecidos." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "plot.ly" +msgstr "Representar" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Diálogo de representación" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funcións" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Título" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Expresión" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Engadir" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Retirar" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Limpar a lista" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Variábel X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Estilo" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Liñas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Puntos" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Puntos e liñas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Caixas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histograma" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Pasos" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Velas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Puntos" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Suavizado" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Ningún" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monotónico" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Splines cúbicos naturais" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (monotónico)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Intervalo da función" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Intervalo nas X" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Taxa de &mostraxe" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "T&amaño do paso" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Opcións" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Título da gráfica" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Lenda do eixo X" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Lenda do eixo Y" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Posición da lenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Agochar a lenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Arriba á esquerda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Arriba á dereita" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "No fondo á esquerda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "No fondo á dereita" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Por baixo" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Fóra" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Mostrar a grade" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Mostrar todo o bordo" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Usar cores" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Mostrar intercalada" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Escala logarítmica en X" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Escala logarítmica en Y" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Opcións do ficheiro" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Gardar o debuxo nun ficheiro" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Tipo de ficheiro" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Detectar polo nome" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! non pretende copiar as calculadoras normais, senón usar a " +"interface, potencia e flexibilidade dos computadores modernos. O centro da " +"atención de Qalculate! é a entrada da expresión; no canto de inserir cada " +"número da expresión matemática por separado pode escribir toda a expresión e " +"posteriormente modificala. O intérprete das expresións é flexíbel e " +"tolerante aos fallos, e aínda que vostede faga algo equivocado, Qalculate! " +"hallo dicir. Porén as expresións non totalmente resolúbeis non son erros, " +"simplificaranse tanto como se poida e a resposta será unha expresión. " +"Ademais de números e operadores aritméticos as expresións poden conter " +"calquera combinación de variábeis, unidades e funcións." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Indica se as unidades deben converterse e como. Se a activa ha converter ao " +"conxunto de unidades do SI máis axeitado (o máis reducido)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Unidade angular predeterminada para as funcións trigonométricas." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "A base dos números analizados e avaliados." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Indica se o resultado da avaliación ha simplificarse ou factorizado." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Indica se os números racionais han mostrarse con decimais, como fraccións ou " +"algo entre medias." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Indica con tres puntos que a serie de díxitos dun número continúa " +"infinitamente, no canto de redondear (p.ex. 2/3 resulta en 0.666666… no " +"canto de 0,666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Usa todos os prefixos decimais do SI. Se non o escolle non se han usar " +"automaticamente os prefixos que non sexan múltiplos de mil (centi, deci, " +"deca, hecto)." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Se escolle esta opción hanse usar expoñentes negativos no canto de cocientes " +"(p.ex. 5/x^2 ha ser 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Pantalla numérica." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Se escolle esta opción as gráficas hanse ver dentro da folla de traballo, en " +"caso contrario han aparecer nunha xanela á parte." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Indica se deben usarse cores nas gráficas." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Indica se debe debuxarse unha grade." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Indica se debe debuxarse todo o bordo arredor da gráfica." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "A anchura das liñas, en píxeles." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" +"A cantidade de pasos de interpolación que se han usar na representación." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "O método de suavizado nas gráficas." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "O estilo das gráficas." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "A posición da lenda nas gráficas." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate di que non pode imprimir. Está instalado o gnuplot?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "falta un %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 ten que ser un número." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 ten que ser un enteiro." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 ten que ser un booleano." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "opción incorrecta para %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "atopáronse varias expresións nunha orde de representación (%1 e %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "ERRO" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "ADVERTENCIA" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" +"Non hai ningunha función, variábel nin unidade co nome que se especificou." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Función: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Interface de debuxo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Representa unha ou máis funcións tanto intercalándoa como nunha xanela " +"separada." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "expresión" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "opción" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "valor" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "enteiro" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "lóxico" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "número" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "predeterminado: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "O nome da función" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Etiqueta de título" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "etiqueta do eixo X" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "etiqueta do eixo Y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"A imaxe onde gardar a gráfica. Se o deixa baleira mostrarase nunha xanela na " +"pantalla. Se inline=true a imaxe móstrase con independencia do que diga esta " +"opción." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"O tipo co que se debe gardar a imaxe. Os valores admitidos son auto, png, " +"ps, eps, latex, svg e fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" +"Estabelézao como certo para que a gráfica colorada, ou falso para monocromo." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Valor mínimo do eixo X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Valor máximo do eixo X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Indica se debe usarse unha escala logarítmica para o eixo X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Indica se debe usarse unha escala logarítmica para o eixo Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "A base do logaritmo do eixo X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "A base do logaritmo do eixo Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Indica se debe usarse unha grade no debuxo." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Indica se o debuxo debe rodearse por un bordo por cada lado (non só o eixo)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Anchura das liñas." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Indica onde se debe pór a lenda. O valor pode ser none (ningunha posición), " +"top_left (arriba á esquerda), top_right (arriba á dereita), bottom_left " +"(abaixo á esquerda), bottom_right (abaixo á dereita), below (abaixo), " +"outside (fóra)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "O suavizado da gráfica. Pode ser único, csplines, bezier ou sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"O estilo da gráfica. Pode ser puntos, liñas e puntos, caixas, histograma, " +"pasos, velas ou puntos." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Pór unha escala no segundo eixo X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Pór unha escala no segundo eixo Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Indica se o debuxo vai debuxarse intercalado ou nunha nova xanela." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "A distancia entre dous puntos de interpolación." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "O número de puntos de interpolación. Consulte tamén o paso." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "O nome da variábel x. Esta variábel debe ser unha incógnita." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Gardar as variábeis nun ficheiro" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Garda nun ficheiro todas as variábeis definidas. Poden cargarse de novo con " +"%1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "ficheiro" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "ficheiro: o ficheiro onde gardar" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Cargar as variábeis dun ficheiro" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Carga as variábeis dun ficheiro previamente creado con %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "ficheiro: o ficheiro que se vai cargar" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Base numérica:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Formato da fraccións:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Decimal" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Exacto" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Fraccionario" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Combinado" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Pantalla numérica:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Pura" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Científica" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Precisión" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Indicar as series infinitas:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Usar todos os prefixos do SI:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Usar expoñentes negativos:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Avaliar" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Converter para as mellores unidades do SI:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radiáns" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Graos" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradiáns" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Método de estruturación:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Simplificar" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Factorizar" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Unidade dos ángulos:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Representación" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Intercalar as gráficas:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Mostrar todos os bordos:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Anchura das liñas:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Taxa de mostraxe:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Método de suavizado:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Splines cúbicos naturais" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Pasos" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Posición da lenda:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Colorear as gráficas:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Mostrar a grade:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Estilo da gráfica:" + +#: backends/qthelpconfig.cpp:45 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Entrada de orde" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Append Text Entry" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Amecer unha entrada de texto" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Path to local documentation:" +msgid "Add local documentation" +msgstr "Ruta da documentación local:" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Documents to open." +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Documentos para abrir." + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Path to local documentation:" +msgid "Download additional documentations" +msgstr "Ruta da documentación local:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Nome" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, fuzzy, kde-format +#| msgid "Add" +msgctxt "@action:button" +msgid "Add" +msgstr "Engadir" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Select the Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Selecciona a infraestrutura" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name:" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Nome:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R é unha linguaxe e un ambiente de cálculo e gráficos estatísticos, " +"similar á linguaxe e ao ambiente S.
      Fornece unha ampla variedade de " +"técnicas estatísticas (modelado lineal e non lineal, probas de estatística " +"clásicas, análise de series temporais, clasificación, clustering, …) e " +"gráficas e é moi extensíbel. A linguaxe S é con frecuencia o ambiente " +"preferido na investigación en métodos estatísticos pero R ofrece a " +"alternativa de código aberto para traballar nese eido." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Produciuse un erro ao abrir o ficheiro %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "Ficheiro de script de R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Producise un erro ao analizar a orde" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "URL da documentación local de R" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Prema dúas veces para abrir o diálogo de selección de ficheiros" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|Ficheiros fonte de R (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://doc.sagemath.org/html/en/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage é un sistema de software matemático de código aberto publicado " +"coa licenza GPL.
      Combina a potencia de moitos paquetes de código aberto " +"existentes nunha interface común baseada en Python." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Ruta ao executábel de Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Activar a composición con LaTeX" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Resultado de %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"A última saída foi: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" +"Ficheiro de script de Python (*.py);;Ficheiro de script de Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Non se permite a versión %1.%2 de Sage. Actualice a súa instalación a unha " +"das versións compatíbeis para facer que funcione con Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Non se puido determina a versión de Sage. Revise a instalación e a saída de " +"«sage -v»." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "O proceso de Sage quebrou mentres avaliaba esta expresión" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "O proceso de Sage quebrou" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "O proceso de Sage saíu mentres avaliaba esta expresión" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "O proceso de Sage saíu" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Non se puido iniciar Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting:" +msgstr "Activar a composición con LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab é un paquete de software libre multiplataforma de cálculo " +"numérico e unha linguaxe de programación de alto nivel orientada a números. " +"Scilab distribúese baixo a licenza CeCILL (compatíbel coa GPL)." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to the Sage executable" +msgid "Path to the Scilab executable" +msgstr "Ruta ao executábel de Sage" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +";;Ficheiro de script de Scilab (*.sce);;Ficheiro de funcións de Scilab (*." +"sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Abrir un ficheiro" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "Download Example Worksheets" +msgid "Download Examples" +msgstr "Descargar follas de traballo de exemplo" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Abrir un exemplo" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Ir á folla de traballo anterior" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Ir á seguinte folla de traballo" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Non se atopou ningunha infraestrutura

      \n" +"
      Pódese intentar o seguinte:\n" +"
      • Cambiar as opcións no diálogo de configuración;
      • " +"
      • Instalar os paquetes do seguinte programa:
      • %2
      " +msgstr[1] "" +"

      Non se atopou ningunha infraestrutura

      \n" +"
      Pódese intentar o seguinte:\n" +"
      • Cambiar as opcións no diálogo de configuración;
      • " +"
      • Instalar os paquetes dun dos seguintes programas:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Erro" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Non está instalada a infraestrutura %1" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"Instalouse a infraestrutura %1, pero está inactiva. Revise a instalación e a " +"configuración de Cantor" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sesión %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Non se puido atopar a compoñente de Cantor co erro %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Estase a calcular…" + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Preparado" + +#: cantor.cpp:480 +#, fuzzy, kde-format +#| msgid "Orange" +msgid "Changed" +msgstr "Laranxa" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "Hai varias follas de traballo abertas e sen gardar. Quere pechalas?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Pechar Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Modificouse o proxecto actual. Quere gardalo?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Gardar o proxecto" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "Plotting" +msgid "Formatting" +msgstr "Representación" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "A infraestrutura que se emprega de maneira predeterminada" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Compor de maneira predeterminada" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Realzar a sintaxe de maneira predeterminada" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Activar o completado de maneira predeterminada" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Activar a numeración das expresións de maneira predeterminada" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Animar os cambios na folla de traballo de maneira predeterminada" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Activar de maneira predeterminada a renderización das expresións matemáticas " +"entre $$ nas entradas de texto e de Markdown (require pdflatex instalado)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Avaliar de novo automaticamente as entradas por debaixo da actual" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Pedir confirmación cando se reinicie a infraestrutura" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Gardar o formato de texto enriquecido das entradas de texto ao gardar a " +"folla de traballo no formato de caderno de notas de Jupyter" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Mostrar o erro de renderización de matemáticas incrustadas" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Gardar texto simple" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Exportar para LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Avaliar a folla de traballo" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Composición mediante LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Realce da sintaxe" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Completado" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Números de liña" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Pause Animation" +msgid "Animations" +msgstr "Deter a animación" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Matemáticas incrustadas" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Reiniciar a infraestrutura" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Avaliar a entrada" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Inserir unha entrada de orde" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Inserir unha entrada de texto" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Inserir unha entrada de Markdown" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Inserir unha entrada de LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Inserir un salto de páxina" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Inserir unha imaxe" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Hide Results" +msgid "Expand All Results" +msgstr "Agochar os resultados" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove All Results" +msgstr "Retirar o resultado" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Retirar esta entrada" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Mostrar o editor de scripts" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Mostrar o completado" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "© 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Folla de traballo de Cantor (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Caderno de notas de Jupyter (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Gardar como" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Gardar" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Perderanse todos os resultados de cálculos dispoñíbeis. Seguro que quere " +"reiniciar %1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Reiniciar %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Interromper" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Produciuse un erro na sesión: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Concluíu a inicialización" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Inicializando…" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[só lectura]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Quere enviar esta folla de traballo a un servidor público?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Pregunta - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Esta folla non está gardada. Haina que gardar antes de enviala." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Aviso - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Esta infraestrutura non admite scripts." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Editar" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Vista" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "Fo&lla de traballo" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "&Configuración" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Ficheiro" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Novo" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Paneis" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Configuración" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Cor de fondo" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "Default" +msgstr "Valores predeterminados" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Cor do texto" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Fonte" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Grosa" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Cursiva" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Aumentar o tamaño" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Diminuír o tamaño" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Seleccionar" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Mostrar os resultados" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Agochar os resultados" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Mostrar a axuda" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Interrompido" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Barra de buscas" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "…" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Atopar:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Seguinte" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Anterior" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Substituír:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Substituír" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Substituír &todo" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Buscar en:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Distinguir as maiúsculas das minúsculas" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Font &Size" +msgid "Font Size:" +msgstr "Tamaño da &letra" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Section" +msgstr "función" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Subsection" +msgstr "función" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Solid Line Style" +msgstr "Estilo de completado:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Dot Line Style" +msgstr "Estilo de completado:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgid "Use Colors" +msgid "Line Color" +msgstr "Usar cores" + +#: horizontalruleentry.cpp:351 +#, fuzzy, kde-format +#| msgid "Style" +msgid "Line Style" +msgstr "Estilo" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Configurar a imaxe" + +#: imageentry.cpp:256 +#, fuzzy, kde-format +#| msgid "Double click to open file selection dialog" +msgid "Double click here to configure image settings" +msgstr "Prema dúas veces para abrir o diálogo de selección de ficheiros" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Non se pode cargar a imaxe %1" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Gardar o resultado" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Image" +msgid "Images (%1)" +msgstr "Imaxe" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Configuración da imaxe" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Abrir" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Tamaño da vista" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Anchura" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Altura" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Vista previa" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Tamaño de impresión" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Usar o tamaño da vista" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Configuración da imaxe" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(automático)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Abrir un ficheiro de imaxe" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Mostrar o código LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Non se indicou a ruta do executábel %1. Forneza a ruta correcta na " +"configuración da aplicación e inténteo de novo." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"O ficheiro indicado «%1» para o executábel %2 non existe. Forneza a ruta " +"correcta na configuración da aplicación e inténteo de novo." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"O ficheiro indicado «%1» non apunta a un executábel. Forneza a ruta correcta " +"na configuración da aplicación e inténteo de novo." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Ruta ao executábel de latex" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Ruta ao executábel de dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Valor" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "X variable" +msgid "" +msgstr "Variábel X" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "De:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Ata:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Título principal" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Escala das abscisas" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Escala das ordenadas" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Título da gráfica:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Jupyter non permite este tipo de contido («%1»)" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"O proceso %1 morreu inesperadamente. Perdéronse todos os resultados dos " +"cálculos." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"O proceso %1 morreu inesperadamente coa mensaxe «%2». Perdéronse todos os " +"resultados dos cálculos." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Interface de KDE para aplicacións matemáticas" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "© 2016 Filipe Saraiva
      © 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" +"Mantedor.
      Adaptación a Qt5 e KF5, infraestruturas de Scilab e Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Desenvolvedor" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Autor orixinal.
      Mantedor (2009-2015)." + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Infraestrutura de KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Infraestrutura de Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Interface" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Icona de Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Usar a infraestrutura ." + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Documentos para abrir." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Non se puido abrir o ficheiro %1." + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Baleirar os anexos" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Erro de matemáticas de Cantor" + +#: markdownentry.cpp:796 +#, fuzzy, kde-format +#| msgid "Cantor failed to read image with error \"%1\"" +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Cantor non puido ler a imaxe por mor do erro «%1»" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Salto de páxina ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, fuzzy, kde-format +#| msgid "Go to previous worksheet" +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Ir á folla de traballo anterior" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, fuzzy, kde-format +#| msgid "&Match case" +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "&Distinguir as maiúsculas das minúsculas" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor icon" +msgid "Cantor files" +msgstr "Icona de Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "Jupyter" +msgid "Jupyter files" +msgstr "Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, fuzzy, kde-format +#| msgid "file" +msgid "All files" +msgstr "ficheiro" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Nome:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Valor:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgid "Add New Variable" +msgstr "Engadir unha variábel nova" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Cargar as variábeis" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Save Variables" +msgstr "Almacenar as variábeis" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Remove Variables" +msgstr "Almacenar as variábeis" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, fuzzy, kde-format +#| msgid "SearchBar" +msgid "Search/Filter" +msgstr "Barra de buscas" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Seguro que quere retirar todas as variábeis?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Cargar un ficheiro" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Gardar o resultado" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Retirar o resultado" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Non se puido atopar ningún compoñente de editor de textos de KDE;\n" +"comprobe a instalación de KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Editor de scripts" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Editor de scripts - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Non atopado" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Chegar ao comezo" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Chegar ao remate" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Substituíuse %1 instancia" +msgstr[1] "Substituíronse %1 instancias" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Ordes" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Resultados" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Erros" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Texto" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Código LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "Comezar" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Infraestrutura predeterminada:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "Fo&lla de traballo" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "Activar a composición con LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting" +msgstr "Activar a composición con LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Activar o realce da sintaxe" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Realce da sintaxe" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "Activar o completado" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Números de liña" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Números de liña" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "Intercalar as gráficas na folla de traballo" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, fuzzy, kde-format +#| msgid "" +#| "Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +#| "notebook format" +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Gardar o formato de texto enriquecido das entradas de texto ao gardar a " +"folla de traballo no formato de caderno de notas de Jupyter" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Ecuacións:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, fuzzy, kde-format +#| msgid "Ask for confirmation when restarting the backend" +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "Pedir confirmación cando se reinicie a infraestrutura" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "Avaliar de novo automaticamente as entradas" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Markdown Entry" +msgid "Markdown:" +msgstr "Entrada de Markdown" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "Activar a composición con LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Atopar…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Celas de destino en cru" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Engadir un destino personalizado" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Converter nunha entrada de texto" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Converter nunha cela en cru" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Tipo MIME de destino:" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Copy result" +msgstr "Retirar o resultado" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Mostrar renderizado" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Mostrar o código" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Mostrar o código HTML" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Mostrar a alternativa en texto simple" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Mostrar o HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Mostrar o HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" +"Non se pode mostrar o ficheiro Eps. Quizais precise de paquetes adicionais" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Gardar o resultado" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Non se pode escribir no ficheiro %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Non se pode escribir no ficheiro." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Produciuse un erro ao gardar o ficheiro %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"No modo de só lectura Cantor non puido garantir que a exportación será " +"válida para %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Produciuse un erro ao cargar a folla de estilo latex.xsl" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Non se puido abrir o ficheiro %1." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Abrir un ficheiro" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Non se puido abrir o ficheiro seleccionado para lectura." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" +"O ficheiro seleccionado non é un ficheiro válido de proxecto de Cantor ou de " +"Jupyter." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" +"O ficheiro seleccionado non é un ficheiro de proxecto de Cantor válido." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"Non se atopou a infraestrutura %1. Non se poden editar nin executar entradas." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Hai algúns problemas coa infraestrutura %1;\n" +"comprobe a configuración ou instale os paquetes precisos.\n" +"Só poderá ver esta folla de traballo." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Non se permiten cadernos de notas de Jupyter con versións inferiores á 4.5 " +"(detectouse a %1.%2)." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Non se permiten cadernos de notas de Jupyter con versións superiores á 4.5 " +"(detectouse a %1.%2)." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "un obxecto con claves: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "valor JSON distinto de obxecto" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" +"atopáronse datos incorrectos (%1) que non corresponden a unha cela de Jupyter" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "O ficheiro non é un caderno de notas de Jupyter correcto" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Esquema incorrecto de caderno de notas de Jupyter: %1" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Convert Entry To" +msgid "Convert To" +msgstr "Converter a entrada en" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Commands" +msgid "Command" +msgstr "Ordes" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Markdown Entry" +msgid "Markdown" +msgstr "Entrada de Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Imaxe" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Salto de páxina" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, fuzzy, kde-format +#| msgid "Points and Lines" +msgid "Horizontal Line" +msgstr "Puntos e liñas" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +#| msgid "Drag Entry" +msgid "Hierarchy Entry" +msgstr "Arrastrar a entrada" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert Entry After" +msgid "Insert After" +msgstr "Inserir unha entrada despois" + +#: worksheet.cpp:1856 +#, fuzzy, kde-format +#| msgid "Insert Entry Before" +msgid "Insert Before" +msgstr "Inserir unha entrada antes" + +#: worksheet.cpp:1875 +#, fuzzy, kde-format +#| msgid "Insert" +msgid "Insert" +msgstr "Inserir" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "Tamaño de impresión" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Convert Entry To" +msgid "Move Entries Down" +msgstr "Converter a entrada en" + +#: worksheet.cpp:1933 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate Entries" +msgstr "Avaliar a entrada" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Entries" +msgstr "Retirar a entrada" + +#: worksheet.cpp:1947 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Collapse Command Entry Results" +msgstr "Inserir unha entrada de orde" + +#: worksheet.cpp:1948 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Expand Command Entry Results" +msgstr "Amecer unha entrada de orde" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Remove Command Entry Results" +msgstr "Entrada de orde" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Add Command Entry To Execution" +msgstr "Amecer unha entrada de orde" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "&Cor do texto…" + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Cor" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "&Realce do texto…" + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Fonte" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Tamaño da &letra" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Negra" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Cursiva" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Subliñar" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "Ri&scado" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Aliñar á &esquerda" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Esquerda" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Aliñar ao ¢ro" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Centro" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Aliñar á &dereita" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Dereita" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Xustificar" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Xustificado" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove all results" +msgstr "Retirar o resultado" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Branco" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Negro" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Vermello escuro" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Vermello" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Vermello claro" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Verde escuro" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Verde" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Verde claro" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Azul escuro" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Azul" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Azul claro" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Amarelo escuro" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Amarelo" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Amarelo claro" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Cian escuro" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Ciano" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Ciano claro" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Maxenta escuro" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Maxenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Maxenta claro" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Laranxa escuro" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Laranxa" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Laranxa claro" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Gris escuro" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Gris" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Gris claro" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, fuzzy, kde-format +#| msgid "Do you also want to export the images?" +msgid "Do you really want to remove this entry?" +msgstr "Desexa exportar tamén as imaxes?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Retirar a entrada" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Arrastrar a entrada" + +#~ msgid "Animate Worksheet" +#~ msgstr "Avaliar as follas de traballo" + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Se activa esta opción Cantor avalía automaticamente todas as entradas por " +#~ "debaixo da actual." + +#~ msgid "Defaults" +#~ msgstr "Valores predeterminados" + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "" +#~ "Activar a composición de LaTeX (só funciona se latex está instalado)" + +#~ msgid "Enable Line Numbers" +#~ msgstr "Activar os números das liñas" + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Activar as animacións na folla de traballo" + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "" +#~ "Activar as matemáticas incrustadas (só funciona se pdflatex está " +#~ "instalado)" + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "" +#~ "Mostrar unha mensaxe de error en caso de fallo de renderización das " +#~ "matemáticas incrustadas" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#, fuzzy +#~| msgid "" +#~| "Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +#~| "notebook format" +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Gardar o formato de texto enriquecido das entradas de texto ao gardar a " +#~ "folla de traballo no formato de caderno de notas de Jupyter" + +#, fuzzy +#~| msgid "Plot" +#~ msgid "Plot.ly" +#~ msgstr "Representar" + +#, fuzzy +#~| msgid "Package:" +#~ msgid "Graphic Package: " +#~ msgstr "Paquete:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      Matemáticas á maneira de KDE" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "URL da documentación local de Maxima" + +#, fuzzy +#~| msgid "Documents to open." +#~ msgid "Documentation:" +#~ msgstr "Documentos para abrir." + +#~ msgid "Url to the local Python documentation" +#~ msgstr "URL da documentación local de Python" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "URL da documentación local de Octave" + +#~ msgid "Show %1 Help" +#~ msgstr "Mostrar axuda sobre %1" + +#~ msgid "Path to Julia:" +#~ msgstr "Ruta de Julia:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Incorporar as gráficas na folla de traballo" + +#~ msgid "Clear Variables" +#~ msgstr "Limpar as variábeis" + +#~ msgid "Right click here to insert image" +#~ msgstr "Faga clic dereito aquí para inserir a imaxe" + +#~ msgid "Choose Image" +#~ msgstr "Escoller a imaxe" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "Imaxes (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Confirmación - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Entrada de texto" + +#~ msgid "LaTeX Entry" +#~ msgstr "Entrada LaTeX" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Inserir unha entrada de texto" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "A ruta á orde scilab-adv-cli (Aviso: A versión de Scilab debe ser igual " +#~ "ou posterior á 5.4)" + +#~ msgid "Insert Image Attachment" +#~ msgstr "Inserir un anexo de imaxe" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Inserir unha entrada de Latex" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Ruta ao executábel de Octave" + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "Formato intermedio das gráficas intercaladas:" + +#~ msgid "Path to Maxima:" +#~ msgstr "Ruta ao Maxima:" + +#, fuzzy +#~| msgid "Failed to start Cantor python server." +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Non se puido iniciar o servidor de Python de Cantor." + +#~ msgid "Path to Sage:" +#~ msgstr "Ruta ao Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Ruta á orde scilab-adv-cli:" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Permite que Cantor siga a construción e destrución de variábeis" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "" +#~ "Incorporar as gráficas na folla de traballo (inicie unha nova sesión se o " +#~ "cambia)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Ruta ao executábel de Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Ruta ao Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Sen nome" + +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "https://docs.python.org/2/" + +# skip-rule: trasno-app +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "Python é unha linguaxe de programación dinámica utilizada en " +#~ "moitos eidos de aplicación. Hai varios paquetes de Python para facer " +#~ "programación científica. Esta infraestrutura dá compatibilidade con " +#~ "Python 3." + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "You should set path to Julia executable" +#~ msgstr "Debería definir a ruta do executábel de Julia" + +#~ msgid "" +#~ "Path to Julia should point directly to julia executable, symlink not " +#~ "allowed" +#~ msgstr "" +#~ "A ruta de Julia debería apuntar directamente ao executábel julia, non se " +#~ "permiten ligazóns simbólicas" + +#~ msgid "" +#~ "Lua backend needs installed Lua programming language. The backend often " +#~ "automatically finds needed Lua binary file, but not in this case. Please, " +#~ "go to Cantor settings and set path to Lua executable." +#~ msgstr "" +#~ "A infraestrutura de Lua require instalar a linguaxe de programación Lua. " +#~ "A infraestrutura adoita atopar automaticamente o ficheiro binario de Lua " +#~ "necesario, pero desta vez non puido. Acceda á configuración de Cantor e " +#~ "defina a ruta do executábel de Lua." + +#~ msgid "" +#~ "In Lua backend settings a path to Lua binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Lua? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "Na configuración da infraestrutura de Lua, a ruta ao ficheiro binario de " +#~ "Lua está definida como %1, pero este ficheiro non é executábel. Está " +#~ "seguro de que esta é a ruta correcta de Lua? Cambie a ruta na " +#~ "configuración de Cantor en caso contrario." + +#~ msgid "" +#~ "Maxima backend needs installed Maxima - a computer algebra system. The " +#~ "backend often automatically finds needed binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Maxima executable" +#~ msgstr "" +#~ "A infraestrutura de Maxima require instalar Maxima, un sistema de álxebra " +#~ "por computador. A infraestrutura adoita atopar automaticamente o ficheiro " +#~ "binario necesario, pero desta vez non puido. Acceda á configuración de " +#~ "Cantor e defina a ruta do executábel de Maxima." + +#~ msgid "" +#~ "In Maxima backend settings a path to maxima binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Maxima? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "Na configuración da infraestrutura de Maxima, a ruta ao ficheiro binario " +#~ "de maxima está definida como %1, pero este ficheiro non é executábel. " +#~ "Está seguro de que esta é a ruta correcta de Maxima? Cambie a ruta na " +#~ "configuración de Cantor en caso contrario." + +#~ msgid "" +#~ "Octave backend needs installed Octave programming language. The backend " +#~ "often automatically finds needed Octave binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Octave binary file " +#~ "with command line interface (CLI)" +#~ msgstr "" +#~ "A infraestrutura de Octave require instalar a linguaxe de programación " +#~ "Octave. A infraestrutura adoita atopar automaticamente o ficheiro binario " +#~ "de Octave necesario, pero desta vez non puido. Acceda á configuración de " +#~ "Cantor e defina a ruta do ficheiro binario de Octave coa interface da " +#~ "liña de ordes (CLI)" + +#~ msgid "" +#~ "In Octave backend settings a path to Octave binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Octave? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "Na configuración da infraestrutura de Octave, a ruta ao ficheiro binario " +#~ "de Octave está definida como %1, pero este ficheiro non é executábel. " +#~ "Está seguro de que esta é a ruta correcta de Octave? Cambie a ruta na " +#~ "configuración de Cantor en caso contrario." + +#~ msgid "" +#~ "R backend uses special binary file - cantor_rserver (installed with R " +#~ "backend), which must be executable." +#~ msgstr "" +#~ "A infraestrutura de R usa un ficheiro binario especial: cantor_rserver " +#~ "(instalado coa infraestrutura de R), que debe ser executábel." + +#~ msgid "" +#~ "Sage backend needs installed Sage programming language. The backend often " +#~ "automatically finds needed Sage binary file, but not in this case. " +#~ "Please, go to Cantor settings and set path to Sage executable" +#~ msgstr "" +#~ "A infraestrutura de Sage require instalar a linguaxe de programación " +#~ "Sage. A infraestrutura adoita atopar automaticamente o ficheiro binario " +#~ "de Sage necesario, pero desta vez non puido. Acceda á configuración de " +#~ "Cantor e defina a ruta do executábel de Sage" + +#~ msgid "" +#~ "In Sage backend settings a path to Sage binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Sage? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "Na configuración da infraestrutura de Sage, a ruta ao ficheiro binario de " +#~ "Sage está definida como %1, pero este ficheiro non é executábel. Está " +#~ "seguro de que esta é a ruta correcta de Sage? Cambie a ruta na " +#~ "configuración de Cantor en caso contrario." + +#~ msgid "" +#~ "Scilab backend needs installed Scilab programming language. The backend " +#~ "often automatically finds needed Scilab binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Scilab executable" +#~ msgstr "" +#~ "A infraestrutura de Scilab require instalar a linguaxe de programación " +#~ "Scilab. A infraestrutura adoita atopar automaticamente o ficheiro binario " +#~ "de Scilab necesario, pero desta vez non puido. Acceda á configuración de " +#~ "Cantor e defina a ruta do executábel de Scilab" + +#~ msgid "" +#~ "In Scilab backend settings a path to Scilab binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Scilab? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "Na configuración da infraestrutura de Scilab, a ruta ao ficheiro binario " +#~ "de Scilab está definida como %1, pero este ficheiro non é executábel. " +#~ "Está seguro de que esta é a ruta correcta de Scilab? Cambie a ruta na " +#~ "configuración de Cantor en caso contrario." + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Escolla a infraestrutura que desexe utilizar:" + +#~ msgid "" +#~ "The file is old Jupyter notebook (found version %1.%2), which isn't " +#~ "supported by Cantor" +#~ msgstr "" +#~ "O ficheiro é un caderno de notas de Jupyter antigo (atopouse a versión %1." +#~ "%2), incompatíbel con Cantor" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Non está instalada a infraestrutura coa que se creou este ficheiro. " +#~ "Precisa %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Publicar a folla de traballo" + +#~ msgid "Waiting for Image..." +#~ msgstr "Agardando pola imaxe…" + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "non se pode abrir o ficheiro %1: Descoñécese o tipo mime" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|Documento en LaTeX" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Follas de traballo de Cantor" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Servidor da infraestrutura de R para Cantor" + +#~ msgid "R Server" +#~ msgstr "Servidor de R" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "© 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Uso: ficheiro gardarVariábeis" + +#~ msgid "Saving failed." +#~ msgstr "A garda fallou." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Uso: ficheiros cargarVariábeis" + +#~ msgid "Loading failed." +#~ msgstr "Fallou a carga." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2013 Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "Ruta á orde python" + +#~ msgid "Cantor Server for R" +#~ msgstr "Servidor de R para Cantor" + +#~ msgid "Path to python2 command:" +#~ msgstr "Ruta á orde python2:" + +#~ msgid " Enable Variable Management" +#~ msgstr " Activar a xestión de variábeis" + +#~ msgid "Could not start the server." +#~ msgstr "Non foi posíbel iniciar o servidor." + +#~ msgid "Start Animation" +#~ msgstr "Iniciar a animación" + +#~ msgid "Restart Animation" +#~ msgstr "Reiniciar a animación" + +#~ msgid "Append Latex Entry" +#~ msgstr "Amecer unha entrada de Latex" + +#~ msgid "Append Image" +#~ msgstr "Amecer unha imaxe" + +#~ msgid "Append Page Break" +#~ msgstr "Amecer un salto de páxina" + +#~ msgid "Other" +#~ msgstr "Outro" + +#~ msgid "And %1 more..." +#~ msgstr "E %1 máis..." + +#~ msgid "Main Toolbar" +#~ msgstr "Barra de ferramentas principal" + +#~ msgid "Popup" +#~ msgstr "Xanela emerxente" + +#~ msgid "The style used for Completion" +#~ msgstr "O estilo utilizado para completar" diff --git a/po/gl/docs/cantor/index.docbook b/po/gl/docs/cantor/index.docbook new file mode 100644 index 0000000..9cadd12 --- /dev/null +++ b/po/gl/docs/cantor/index.docbook @@ -0,0 +1,573 @@ + + + + + +]> + + + +Manual do &cantor; + + + Alexander Rieder alexanderrieder@gmail.com +XoséCalvo
      Tradutor do proxecto Trasno
      +
      + + +2009 +Alexander Rieder + +&FDLNotice; + +2009-08-26 +0.1 + + +O &cantor; é un aplicativo que pretende fornecer unha agradábel vista de ficha para outros paquetes de software libre relacionados coas matemáticas. + + + +KDE +kdeedu +matemáticas +matemáticas +Cantor +Sage +R +Maxima + + +
      + + +Introdución + +O &cantor; é un aplicativo que permite empregar os aplicativos de matemáticas favoritos desde unha interface elegante integrada no &kde; en forma de ficha. Fornece diálogos que axudan nas tarefas frecuentes e permite compartir as fichas con outras persoas. + + + +Uso do &cantor; + +Captura de pantalla: +Velaquí unha captura do &cantor; + + + + + + + + + Captura de pantalla + + + + + + + +Características do &cantor; + + Vista en ficha intuitiva para avaliar expresións. + Resultados da representación de gráficas dentro da ficha. + Estrutura doada baseada en engadidos que permite engadir infraestruturas diversas. + Integración de Obter Novidades, que permite descargar (ou enviar) fichas de exemplo. + Mathematical formula typesetting using LaTeX. + Realce da sintaxe consciente da infraestrutura. + Diálogos de axuda baseados en engadidos que axudan coas tarefas máis frecuentes, como integrar unha munción ou encher unha matriz. + + + + +As infraestruturas do &cantor; +O &cantor; ofrece varias posibilidades de infraestrutura que usar. A escolla depende do que se precise atinxir. +As infraestruturas dispoñíbeis nesta altura son: + + Sage: + + Sage é un sistema de software matemático de código aberto publicado coa licenza GPL.Combina a potencia de moitos paquetes de código aberto existentes nunha interface común baseada en Python. Vexa http://sagemath.org para máis información. + + + + Maxima: + + Maxima é un sistema para a manipulación de expresións simbólicas e numéricas, incluídas diferenciais, integrais, series de Taylor, transformadas de Laplace, ecuacións diferenciais ordinarias, sistemas de ecuacións lineais, polinomiais, conxuntos, listas, vectores, matrices e tensores. Maxima achega resultados numéricos de gran precisión mediante o uso de fraccións exactas, enteiros de precisión arbitraria e números de vírgula flotante de precisión variábel. Maxima pode representar as funcións e os datos en dúas e tres dimensións. Vexa http://maxima.sourceforge.net para máis información. + + + + R: + + R é unha linguaxe e un contorno de computación e gráficos estatísticos semellante á linguaxe e contorno S. Fornece unha ampla variedade de técnicas estatísticas (modelado lineal e non lineal, probas de estatística clásicas, análise de series temporais, clasificación, clustering,...) e gráficas, e é moi extensíbel. A linguaxe S é con frecuencia o vehículo preferido na investigación en metodoloxía estatística e R fornece un roteiro de Código Aberto para participar nesa actividade. Vexa http://www.r-project.org para máis información. + + + + KAlgebra: + + KAlgebra é unha calculadora gráfica baseada no MathML que se inclúe co Proxecto Educativo do KDE. Vexa http://edu.kde.org/kalgebra/ para máis información. + + + + + + + +O espazo de traballo do &cantor; + + + Captura de pantalla do espazo de traballo do &cantor; + + + + + + + + + Captura de pantalla do espazo de traballo do &cantor; + + + + +A interface da ficha do &cantor; consiste en tres partes: + A barra de lapelas, na que se pode alternar entre as fichas abertas; + Un panel de axuda que mostra axuda para unha orde determinada cando se introduce a orde "?"; + A ficha en si. + + + +A ficha +A ficha é a área de traballo básica do &cantor;. Nela pódense introducir expresións, permitir que a infraestrutura realice os cálculos e ver os resultados. As ordes que acepta a folla de traballo dependen da infraestrutura escollida, polo que hai que aprender a sintaxe correspondente a cada infraestrutura (o menú Mostrar a axuda leva alí directamente). Se sabes a orde mais precisas axuda adicional, podes escribir a orde "?" e a axuda de contexto aparece á dereita da ficha. Se quixeres ver algunhas fichas de exemplo, podes ir a Descargar fichas de exemplo no menú Ficheiro e descargar ficheiros que outras persoas publicasen. + + Configuración + O menú Configuración permite mudar algunhas opcións da aparencia da ficha na que esteas a traballar. + + + Typesetting using LaTeX + + This setting changes the way results are presented to you. If enabled, it passes the result through the LaTeX system, to produce visually appealing formulas. For example, 3*x^2*sqrt(2)*x+2/3 becomes + + + + + + + 3*x^2*sqrt(2)*x+2/3 + + + + + + Realce da sintaxe + + Syntax Highlighting increases the readability of code, by highlighting Keywords, or matching brackets in different colors. + + + + Completado + + Cando se activa isto, o &cantor; mostra as posíbeis maneiras de completar a orde que estás a escribir se premes a tecla TAB. Se só fica unha escolla, insire automaticamente o resto da orde. + + + + Números de liña + + Esta opción controla se as diferentes expresións teñen un número diante. Isto permite reutilizar resultados previos - no Maxima, por exemplo, isto faise coa orde %01. + + + + + + + + + +Referencia das ordes + + +A xanela principal do &cantor; + + +The <guimenu +>File</guimenu +> Menu + + + + &Ctrl;N Ficheiro Novo +Creates a new document + + + &Ctrl;S Ficheiro Gardar +Saves the document + + + &Ctrl;Q Ficheiro Saír +Sae do &cantor; + + + + + + + +The <guimenu +>Help</guimenu +> Menu +&help.menu.documentation; + + + + + +Guía do desenvolvedor de &cantor; + +O &cantor; pódese estender facilmente con engadidos. Pódense escribir + + Infraestruturas: + + Unha infraestrutura nova permite empregar a interface do &cantor; cun programa novo. + + + + Asistentes: + + Os asistentes fornecen diálogos que permiten automatizar operacións frecuentes (como encher unha matriz ou executar un script). + + + + +At present, there are no special developer tutorials or API documentation, so if you want to write a plugin you will have to read through the sources. All interface definitions are in the lib directory. For some example implementations, look at the plugins shipped with &cantor;. + + + + +Preguntas e respostas +&reporting.bugs; &updating.documentation; + + O elemento do menú Composición mediante LaTeX non está dispoñíbel + Not every Backend supports every option. + + + Instalei Sage/Maxima, mais non aparece a infraestrutura. + + One possible explanation is that &cantor; did not correctly detect the location. Go to the Settings dialog and change the Path to the appropriate application. + + + + Vaia nome máis raro - que ten que ver coas matemáticas? + Cantor is named after the German mathematician Georg Cantor, the creator of set theory. + + + + + + +Créditos e licenza + +&cantor; +Program copyright 2009 Alexander Rieder alexanderrieder@gmail.com + +Documentation Copyright © 2009 Alexander Rieder alexanderrieder@gmail.com + +Xoséxosecalvo@gmail.com +&underFDL; &underGPL; + + +Instalación + + +Como obter o &cantor; +&install.intro.documentation; + + +Requisitos + +In order to successfully use &cantor;, you need &kde; 4. If you want support for type-setting to be enabled, you need to install LaTeX and LibSpectre. To use the different Backends, the appropriate math package is required. + + + + + + + + + +Compilación e instalación +&install.compile.documentation; + + +Configuración + +Dependendo do sistema pode haber que axustar as rutas aos diferentes aplicativos empregados polo &cantor;. + + + + + +&documentation.index; +
      + + diff --git a/po/hr/cantor.po b/po/hr/cantor.po new file mode 100644 index 0000000..3f315c7 --- /dev/null +++ b/po/hr/cantor.po @@ -0,0 +1,4981 @@ +# Translation of cantor to Croatian +# +# Andrej Dundovic , 2010. +# Ivo Ugrina , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2010-12-05 20:18+0100\n" +"Last-Translator: Marko Dimjašević\n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.1\n" +"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" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Ivo Ugrina, Marko Dimjašević" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "ivo@iugrina.com, marko@dimjasevic.net" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Spremi rezultat" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, fuzzy, kde-format +#| msgid "&Plot" +msgid "Plot" +msgstr "&Nacrtaj" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Izraz:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Dodatne opcije:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Nacrtaj" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Aktivna opcija" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Izračunaj" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Deriviraj" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Varijabla:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integriraj" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Donja granica:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Gornja granica:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "određeni integral" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Linearna algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Stvori matricu" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Stupci:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Redovi:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Izračunaj svojstvene vrijednosti" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrica:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Izračunaj svojstvene vektore" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Invertiraj matricu" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Nacrtaj u 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Varijabla" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Ime" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimum:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maksimum:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Nacrtaj u 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1. varijabla" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2. varijabla" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Pokreni skriptu" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Riješi jednadžbe" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Jednadžbe:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Varijable:" + +#: backendchoosedialog.cpp:64 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Select the Backend" +msgstr "Nanovo pokreni pozadinski servis" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"

      %1

      %2

      Pogledaj %3 za više " +"informacija
      " + +#: backendchoosedialog.cpp:125 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"

      %1

      %2

      Pogledaj %3 za više " +"informacija
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Postavi ovo kao zadani pozadinski servis" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Integriraj slike u radnu tablu" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Julia script file (*.jl)" +msgstr "*.R|R skripta" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Greška – Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Julia process." +msgstr "Neuspješno pokretanje Sage-a" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Opće" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Plot Integration:" +msgstr "Integriraj" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Variable:" +msgid "Variable Management:" +msgstr "Varijabla:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, fuzzy, kde-format +#| msgid "integrate Plots in Worksheet" +msgid "Internal Plot Format:" +msgstr "integriraj slike u radnu tablu" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "&Plot" +msgid "Plots" +msgstr "&Nacrtaj" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "&Plot" +msgid "PyPlot" +msgstr "&Nacrtaj" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, fuzzy, kde-format +#| msgid "Show Script Editor" +msgid "Commands to autorun" +msgstr "Prikaži uređivač skripti" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documentation" +msgstr "Dokument za otvoriti" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "http://docs.kde.org/stable/en/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Lista skripti koje se automatski pokreću na početku sesije" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Pogreška: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Path to luajit command" +msgstr "Putanja do Maxime:" + +#: backends/lua/luaextensions.cpp:20 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Lua script file (*.lua)" +msgstr "*.R|R skripta" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Path to luajit:" +msgstr "Putanja do Maxime:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, fuzzy, kde-format +#| msgid "" +#| "Maxima is a system for the manipulation of symbolic and numerical " +#| "expressions, including differentiation, integration, Taylor series, " +#| "Laplace transforms, ordinary differential equations, systems of linear " +#| "equations, polynomials, and sets, lists, vectors, matrices, and tensors. " +#| "Maxima yields high precision numeric results by using exact fractions, " +#| "arbitrary precision integers, and variable precision floating point " +#| "numbers. Maxima can plot functions and data in two and three dimensions. " +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima je sustav za manipulaciju simboličkih i numeričkih izraza, " +"uključujući deriviranje, integriranje, Taylorov razvoj, Laplaceove " +"transformacije, obične diferencijalne jednadžbe, sisteme linearnih " +"jednadžbi, polinome, skupove, liste, vektore, matrice i tenzore. Maxima " +"vraća numeričke rezultate u velikoj preciznosti koristeći razlomke, prirodne " +"brojeve proizvoljne duljine točnosti i brojeve s pomičnim zarezom u " +"varijabilnoj točnosti. Maxima može crtati funkcije u dvije i tri dimenzije." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Put do Maximine izvršne datoteke" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, fuzzy, kde-format +#| msgid "*.mac|Maxima batch File" +msgid "Maxima batch file (*.mac)" +msgstr "*.mac|Maxima batch datoteka" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Neuspješno podizanje Maxime." + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima se srušila, podizanje nanovo…" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "Maxima se srušila dvaput u kratkom vremenu. Pokušaj ponovnog podizanja" + +#: backends/octave/octavebackend.cpp:62 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Octave, please check if there is a " +#| "translated version (currently Czech and Japanese) and use the correct url" +#| msgid "http://www.gnu.org/software/octave/doc/interpreter/" +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "http://www.gnu.org/software/octave/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" + +#: backends/octave/octaveextensions.cpp:34 +#, fuzzy, kde-format +#| msgid "*.m|Octave script file" +msgid "Octave script file (*.m)" +msgstr "*.m|Octave skriptne datoteke" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Sintaktička pogreška" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Python script file (*.py)" +msgstr "*.R|R skripta" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Cantor python server." +msgstr "Neuspješno pokretanje Sage-a" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "&Plot" +msgid "plot.ly" +msgstr "&Nacrtaj" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Functions" +msgstr "Jednadžbe:" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, fuzzy, kde-format +#| msgid "Expression:" +msgid "Expression" +msgstr "Izraz:" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Remove" +msgstr "Spremi rezultat" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, fuzzy, kde-format +#| msgid "Variables:" +msgid "Clear List" +msgstr "Varijable:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, fuzzy, kde-format +#| msgid "Variable" +msgid "X variable" +msgstr "Varijabla" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, fuzzy, kde-format +#| msgid "Option active" +msgid "Options" +msgstr "Aktivna opcija" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, fuzzy, kde-format +#| msgid "Expression:" +msgid "expression" +msgstr "Izraz:" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, fuzzy, kde-format +#| msgid "Completion" +msgid "option" +msgstr "Dovršavanje" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, fuzzy, kde-format +#| msgid "Variable:" +msgid "value" +msgstr "Varijabla:" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "integer" +msgstr "Integriraj" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "number" +msgstr "Brojevi linija" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, fuzzy, kde-format +#| msgid "Defaults:" +msgid "default: %1" +msgstr "Zadano:" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, fuzzy, kde-format +#| msgid "2nd Variable" +msgid "Load variables from a file" +msgstr "2. varijabla" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, fuzzy, kde-format +#| msgid "Expression:" +msgid "Precision" +msgstr "Izraz:" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate" +msgstr "Evaluiraj unos" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, fuzzy, kde-format +#| msgid "&Plot" +msgid "Plotting" +msgstr "&Nacrtaj" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show grid:" +msgstr "Prikaži kod" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Plot Style:" +msgstr "Stil dovršavanja:" + +#: backends/qthelpconfig.cpp:45 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Unesi" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Unesi" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Add local documentation" +msgstr "Putanja do Maxime:" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Document to open" +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Dokument za otvoriti" + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Download additional documentations" +msgstr "Putanja do Maxime:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, fuzzy, kde-format +#| msgid "Name" +msgctxt "@title:column" +msgid "Name" +msgstr "Ime" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Nanovo pokreni pozadinski servis" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Ime" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, fuzzy, kde-format +#| msgid "" +#| "R is a language and environment for statistical computing and graphics, " +#| "similar to the S language and environment.
      It provides a wide " +#| "variety of statistical (linear and nonlinear modelling, classical " +#| "statistical tests, time-series analysis, classification, clustering, ...) " +#| "and graphical techniques, and is highly extensible. The S language is " +#| "often the vehicle of choice for research in statistical methodology, and " +#| "R provides an Open Source route to participation in that activity." +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R je programski jezik i okolina za statističko računanje i grafiku. Sličan " +"je jeziku i okolini S.
      R pruža široku lepezu statističkih (linearno i " +"nelinearno modeliranje, klasični statistički testovi, analiza vremenskih " +"nizova, klasifikacija, klasteriranje, …) i grafičkih metoda. Također, R se " +"može jednostavno proširiti raznim metodama i funkcijama. R je otvoren i " +"slobodan softver." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Greška pri otvaranju datoteke %1" + +#: backends/R/rextensions.cpp:22 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "R script file (*.R)" +msgstr "*.R|R skripta" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Greška prilikom parsiranja komande" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, fuzzy, kde-format +#| msgid "" +#| "Sage is a free open-source mathematics software system licensed under the " +#| "GPL.
      It combines the power of many existing open-source packages " +#| "into a common Python-based interface." +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage je slobodan i otvoren softver za matematiku licenciran pod uvjetima GPL " +"licence.
      Kombinira snagu mnogih postojećih otvorenih paketa u " +"zajedničko Python sučelje." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Put do Sage-ove izvršne datoteke" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Rezultat od %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Zadnji izlaz je bio: \n" +"%2" + +#: backends/sage/sageextensions.cpp:32 +#, fuzzy, kde-format +#| msgid "" +#| "*.py|Python script file\n" +#| "*.sage|Sage script file" +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" +"*.py|Python skripta\n" +"*.sage|Sage skripta" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Sage proces se srušio tijekom evaluiranja ovog izraza" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Sage servis se srušio" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Sage servis je završio tijekom evaluiranje ovog izraza" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Sage servis je završio" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Neuspješno pokretanje Sage-a" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to the Sage executable" +msgid "Path to the Scilab executable" +msgstr "Put do Sage-ove izvršne datoteke" + +#: backends/scilab/scilabextensions.cpp:23 +#, fuzzy, kde-format +#| msgid "" +#| "*.py|Python script file\n" +#| "*.sage|Sage script file" +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +"*.py|Python skripta\n" +"*.sage|Sage skripta" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Open file" +msgstr "&Otvori primjer" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "Download Example Worksheets" +msgid "Download Examples" +msgstr "Preuzmi primjere radnih tabli" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Otvori primjer" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Nije pronađen pozadinski servis

      \n" +"
      Možete pokušati:\n" +"
      • Promjena opcija u konfiguracijskom dijalogu;
      • " +"
      • Instaliranje paketa za sljedeći program:
      • %2
      " +msgstr[1] "" +"

      Nije pronađen pozadinski servis

      \n" +"
      Možete pokušati:\n" +"
      • Promjena opcija u konfiguracijskom dijalogu;
      • " +"
      • Instaliranje paketa za sljedeće programe:
      • %2
      " +msgstr[2] "" +"

      Nije pronađen pozadinski servis

      \n" +"
      Možete pokušati:\n" +"
      • Promjena opcija u konfiguracijskom dijalogu;
      • " +"
      • Instaliranje paketa za sljedeće programe:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Greška" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Pozadinski servis %1 nije instaliran" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sesija %1" + +#: cantor.cpp:386 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to find the Cantor Part with error %1" +msgstr "Neuspješno pronalaženje Cantora" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Računam …" + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Spreman" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Close Cantor" +msgstr "Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save Project" +msgstr "Spremi rezultat" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "&Plot" +msgid "Formatting" +msgstr "&Nacrtaj" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Pozadinski servis koji je zadan" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Istakni sintaksu od početka" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Omogući dovršavanje od početka" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Omogući numeriranje izraza od početka" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Automatski nanovo evaluiraj unose ispod trenutnog" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Evaluiraj radnu tablu" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Osvjetljavanje sintakse" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Dovršavanje" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Brojevi linija" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Pause Animation" +msgid "Animations" +msgstr "Pauziraj animaciju" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Nanovo pokreni pozadinski servis" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Evaluiraj unos" + +#: cantor_part.cpp:266 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Insert Command Entry" +msgstr "Unesi" + +#: cantor_part.cpp:272 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Insert Text Entry" +msgstr "Unesi" + +#: cantor_part.cpp:278 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Insert Markdown Entry" +msgstr "Unesi" + +#: cantor_part.cpp:285 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Insert LaTeX Entry" +msgstr "Unesi" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Expand All Results" +msgstr "Rezultat" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Remove All Results" +msgstr "Spremi rezultat" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Prikaži uređivač skripti" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Prikaži dopunu" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, fuzzy, kde-format +#| msgid "(C) 2009 Alexander Rieder" +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "© 2009 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, fuzzy, kde-format +#| msgid "*.cws|Cantor Worksheet" +msgid "Cantor Worksheet (*.cws)" +msgstr "*.cws|Cantor radna tabla" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, fuzzy, kde-format +#| msgid "Save" +msgid "Save as" +msgstr "Spremi" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Spremi" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Restart %1?" +msgstr "Nanovo pokreni pozadinski servis" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Prekid" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Greška sesije: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Inicijaliziranje završeno" + +#: cantor_part.cpp:690 +#, fuzzy, kde-format +#| msgid "Initializing Session" +msgid "Initializing..." +msgstr "Inicijaliziranje sesije" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Da li želite objaviti trenutnu radnu tablu na javnom web serveru?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Pitanje – Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" +"Radna tabla nije spremljena. Trebali biste ju snimiti prije objavljivanja." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Upozorenje – Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Ovaj pozadinski servis ne dopušta skripte." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "Pogled" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "Radna tabla" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "&Postavke" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Datoteka" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, fuzzy, kde-format +#| msgid "New" +msgid "&New" +msgstr "Novi" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Postavke" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +#| msgid "Defaults:" +msgid "Default" +msgstr "Zadano:" + +#: commandentry.cpp:151 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Text Color" +msgstr "Unesi" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Show Results" +msgstr "Rezultat" + +#: commandentry.cpp:338 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Hide Results" +msgstr "Rezultat" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Help" +msgstr "Prikaži pomoć za %1" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Prekinuto" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Section" +msgstr "Jednadžbe:" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Subsection" +msgstr "Jednadžbe:" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Dot Line Style" +msgstr "Stil dovršavanja:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Line Color" +msgstr "Unesi" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, fuzzy, kde-format +#| msgid "Cannot write file %1." +msgid "Cannot load image %1" +msgstr "Neuspješno pisanje u datoteku %1." + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Spremi rezultat" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Images (%1)" +msgstr "Spremi rezultat" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Image Settings" +msgstr "&Postavke" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Otvori" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "&Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "&Postavke" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, fuzzy, kde-format +#| msgid "x" +msgid "px" +msgstr "x" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "" + +#: latexentry.cpp:61 textentry.cpp:111 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show LaTeX code" +msgstr "Prikaži kod" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Put od latex izvršne datoteke" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Put do dvips izvršne datoteke" + +#: lib/defaultvariablemodel.cpp:70 +#, fuzzy, kde-format +#| msgid "Variable:" +msgctxt "@title:column" +msgid "Value" +msgstr "Varijabla:" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "Variable" +msgid "" +msgstr "Varijabla" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDE-ovo sučelje prema matematičkim aplikacijama" + +#: main.cpp:74 +#, fuzzy, kde-format +#| msgid "(C) 2009 Alexander Rieder" +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "© 2009 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, fuzzy, kde-format +#| msgid "Alexander Rieder" +msgid "Alexander Semke" +msgstr "Alexander Rieder" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Octave backend" +msgstr "Nanovo pokreni pozadinski servis" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "" + +#: main.cpp:84 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Interface" +msgstr "Integriraj" + +#: main.cpp:86 main.cpp:87 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor icon" +msgstr "Cantor" + +#: main.cpp:92 +#, fuzzy, kde-format +#| msgid "Use this backend" +msgid "Use backend " +msgstr "Koristi ovaj pozadinski servis" + +#: main.cpp:95 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documents to open." +msgstr "Dokument za otvoriti" + +#: main.cpp:130 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1" +msgstr "Greška pri otvaranju datoteke %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, fuzzy, kde-format +#| msgid "Syntax Error" +msgid "Cantor Math Error" +msgstr "Sintaktička pogreška" + +#: markdownentry.cpp:796 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Neuspješno pronalaženje Cantora" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor files" +msgstr "Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Jupyter files" +msgstr "&Otvori primjer" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, fuzzy, kde-format +#| msgid "Name" +msgid "Name:" +msgstr "Ime" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, fuzzy, kde-format +#| msgid "Variable:" +msgid "Value:" +msgstr "Varijabla:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "2nd Variable" +msgid "Add New Variable" +msgstr "2. varijabla" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, fuzzy, kde-format +#| msgid "2nd Variable" +msgid "Load Variables" +msgstr "2. varijabla" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "1st Variable" +msgid "Save Variables" +msgstr "1. varijabla" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "1st Variable" +msgid "Remove Variables" +msgstr "1. varijabla" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +#| msgid "2nd Variable" +msgid "Load file" +msgstr "2. varijabla" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Spremi rezultat" + +#: resultitem.cpp:60 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Remove result" +msgstr "Spremi rezultat" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"KDE-ova komponenta za uređivanje teksta nije nađena;\n" +"molim vas da provjerite vašu instalaciju KDE-a." + +#: scripteditor/scripteditorwidget.cpp:139 +#, fuzzy, kde-format +#| msgid "Show Script Editor" +msgid "Script Editor" +msgstr "Prikaži uređivač skripti" + +#: scripteditor/scripteditorwidget.cpp:142 +#, fuzzy, kde-format +#| msgid "Show Script Editor" +msgid "Script Editor - %1" +msgstr "Prikaži uređivač skripti" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Commands" +msgstr "Unesi" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Results" +msgstr "Rezultat" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +#| msgid "Error" +msgid "Errors" +msgstr "Greška" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, fuzzy, kde-format +#| msgid "Default Backend" +msgid "Default Backend:" +msgstr "Zadani pozadinski servis" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "Radna tabla" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Omogući osvjetljavanje sintakse" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Osvjetljavanje sintakse" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "Omogući dovršavanje" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Brojevi linija" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Brojevi linija" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "Integriraj slike u radnu tablu" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Jednadžbe:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "Automatski nanovo evaluiraj izraze" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Markdown:" +msgstr "Unesi" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Convert to Text Entry" +msgstr "Unesi" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Copy result" +msgstr "Spremi rezultat" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Prikaži renderirano" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Prikaži kod" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show HTML Code" +msgstr "Prikaži kod" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Html" +msgstr "Prikaži pomoć za %1" + +#: textresultitem.cpp:90 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show HTML" +msgstr "Prikaži pomoć za %1" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Neuspješno renderiranje Eps datoteke, Možda trebate dodatne pakete?" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Spremi rezultat" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Neuspješno pisanje u datoteku %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, fuzzy, kde-format +#| msgid "Cannot write file %1." +msgid "Cannot write file." +msgstr "Neuspješno pisanje u datoteku %1." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Neuspješno spremanje datoteke %1." + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "" + +#: worksheet.cpp:1327 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1." +msgstr "Greška pri otvaranju datoteke %1" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Open File" +msgstr "&Otvori primjer" + +#: worksheet.cpp:1350 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the selected file for reading." +msgstr "Greška pri otvaranju datoteke %1" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Postoje neki problemi s %1 pozadinskim servisom,\n" +"molim vas provjeriti vašu konfiguraciju ili instalirajte potrebne pakete.\n" +"Bit ćete u mogućnosti jedino pregledavati ovu radnu tablu." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Convert To" +msgstr "Unesi" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Command" +msgstr "Unesi" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Markdown" +msgstr "Unesi" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Image" +msgstr "Spremi rezultat" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Hierarchy Entry" +msgstr "Spremi rezultat" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Insert After" +msgstr "Unesi" + +#: worksheet.cpp:1856 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Insert Before" +msgstr "Unesi" + +#: worksheet.cpp:1875 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Insert" +msgstr "Unesi" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Move Entries Down" +msgstr "Unesi" + +#: worksheet.cpp:1933 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate Entries" +msgstr "Evaluiraj unos" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Remove Entries" +msgstr "Spremi rezultat" + +#: worksheet.cpp:1947 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Collapse Command Entry Results" +msgstr "Unesi" + +#: worksheet.cpp:1948 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Expand Command Entry Results" +msgstr "Unesi" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Remove Command Entry Results" +msgstr "Unesi" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Add Command Entry To Execution" +msgstr "Unesi" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "" + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "" + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "" + +#: worksheet.cpp:2111 +#, fuzzy, kde-format +#| msgid "Inline" +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Ugrađeno" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Remove all results" +msgstr "Spremi rezultat" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +#| msgid "Ready" +msgid "Red" +msgstr "Spreman" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Remove Entry" +msgstr "Spremi rezultat" + +#: worksheetentry.cpp:850 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Drag Entry" +msgstr "Spremi rezultat" + +#, fuzzy +#~| msgid "Evaluate Worksheet" +#~ msgid "Animate Worksheet" +#~ msgstr "Evaluiraj radnu tablu" + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Kada je omogućeno, Cantor će automatski evaluirati svaki unos ispod " +#~ "trenutnog." + +#, fuzzy +#~| msgid "Defaults:" +#~ msgid "Defaults" +#~ msgstr "Zadano:" + +#~ msgid "Enable Line Numbers" +#~ msgstr "Omogući numeriranje linija" + +#, fuzzy +#~| msgid "Evaluate Worksheet" +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Evaluiraj radnu tablu" + +#, fuzzy +#~| msgid "&Plot" +#~ msgid "Plot.ly" +#~ msgstr "&Nacrtaj" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      KDE-ov pristup matematici" + +#, fuzzy +#~| msgid "Document to open" +#~ msgid "Documentation:" +#~ msgstr "Dokument za otvoriti" + +#~ msgid "Show %1 Help" +#~ msgstr "Prikaži pomoć za %1" + +#, fuzzy +#~| msgid "Path to Maxima:" +#~ msgid "Path to Julia:" +#~ msgstr "Putanja do Maxime:" + +#, fuzzy +#~| msgid "integrate Plots in Worksheet" +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "integriraj slike u radnu tablu" + +#, fuzzy +#~| msgid "Variables:" +#~ msgid "Clear Variables" +#~ msgstr "Varijable:" + +#, fuzzy +#~| msgid "Question - Cantor" +#~ msgid "Confirmation - Cantor" +#~ msgstr "Pitanje – Cantor" + +#, fuzzy +#~| msgid "Insert Entry" +#~ msgid "Text Entry" +#~ msgstr "Unesi" + +#, fuzzy +#~| msgid "Insert Entry" +#~ msgid "LaTeX Entry" +#~ msgstr "Unesi" + +#, fuzzy +#~| msgid "Insert Entry" +#~ msgid "Insert Entry Before" +#~ msgstr "Unesi" + +#, fuzzy +#~| msgid "Insert Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Unesi" + +#, fuzzy +#~| msgid "Insert Entry" +#~ msgid "Insert Latex Entry" +#~ msgstr "Unesi" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Putanja do izvršne datoteke Octavea" + +#~ msgid "Path to Maxima:" +#~ msgstr "Putanja do Maxime:" + +#, fuzzy +#~| msgid "Failed to start Sage" +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Neuspješno pokretanje Sage-a" + +#, fuzzy +#~| msgid "Path to Sage" +#~ msgid "Path to Sage:" +#~ msgstr "Put do Sage-a" + +#, fuzzy +#~| msgid "integrate Plots in Worksheet" +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "integriraj slike u radnu tablu" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Putanja do izvršne datoteke Octavea" + +#~ msgid "Path to Octave:" +#~ msgstr "Putanja do Octavea:" + +#~ msgid "Unnamed" +#~ msgstr "Neimenovano" + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Izaberite pozadinski servis za korištenje:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Pozadinski servis s kojim je ova datoteka generirana nije instaliran. " +#~ "Potrebno je %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Objavi radnu tablu" + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "neuspješno otvaranje datoteke %1: Nepoznat MimeType" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantor radna tabla" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Server za Cantorov pozadinski servis R" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "© 2009 Alexander Rieder" + +#, fuzzy +#~| msgid "2nd Variable" +#~ msgid "Usage: loadVariables file" +#~ msgstr "2. varijabla" + +#, fuzzy +#~| msgid "2nd Variable" +#~ msgid "Loading failed." +#~ msgstr "2. varijabla" + +#, fuzzy +#~| msgid "(C) 2009 Alexander Rieder" +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "© 2009 Alexander Rieder" + +#~ msgid "Cantor Server for R" +#~ msgstr "Cantor server za R" + +#~ msgid "Could not start the server." +#~ msgstr "Neuspješno podizanje servera." + +#~ msgid "Start Animation" +#~ msgstr "Pokreni animaciju" + +#~ msgid "Restart Animation" +#~ msgstr "Nanovo pokreni animaciju" + +#~ msgid "Other" +#~ msgstr "Ostalo" + +#~ msgid "And %1 more..." +#~ msgstr "Još %1 …" + +#, fuzzy +#~| msgid "Insert Entry" +#~ msgid "Append Latex Entry" +#~ msgstr "Unesi" + +#~ msgid "Main Toolbar" +#~ msgstr "Glavna alatna traka" + +#~ msgid "Popup" +#~ msgstr "Skočna tabla" + +#~ msgid "The style used for Completion" +#~ msgstr "Stil koji se koristi za dovršavanje" + +#, fuzzy +#~| msgid "Insert Entry" +#~ msgid "Insert Command Entry Before" +#~ msgstr "Unesi" + +#, fuzzy +#~| msgid "Insert Entry" +#~ msgid "Command Entry Before" +#~ msgstr "Unesi" + +#~ msgid "Help" +#~ msgstr "Pomoć" + +#~ msgid "Show Help Panel" +#~ msgstr "Prikaži panel za pomoć" diff --git a/po/hu/cantor.po b/po/hu/cantor.po new file mode 100644 index 0000000..b42f578 --- /dev/null +++ b/po/hu/cantor.po @@ -0,0 +1,5108 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Laszlo Papp , 2010. +# Kiszel Kristóf , 2010. +# Kristóf Kiszel , 2010, 2011, 2012. +# Balázs Úr , 2012, 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2014-06-15 00:51+0200\n" +"Last-Translator: Balázs Úr \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.5\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Kiszel Kristóf,Úr Balázs" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "ulysses@kubuntu.org,urbalazs@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Szünet" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Indítás" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Leállítás" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Eredmény mentése" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Speciális ábrázolás" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Kirajzolás" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Kifejezés:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "További beállítások:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Kirajzolás" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Aktív beállítás" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "K&iszámítás" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Differenciálás" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Változó:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Idők: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Csomag" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Csomag importálása" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Csomag:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integrálás" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Alsó korlát:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Felső korlát:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "határozott integrál" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Lineáris algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Mátrix létrehozása" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Oszlopok:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Sorok:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Sajátértékek számítása" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Mátrix:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Sajátvektorok számítása" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Mátrix invertálása" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "2D-s ábrázolás" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Változó" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Név" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimum:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maximum:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "3D-s ábrázolás" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "Első változó" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "Második változó" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Szkript futtatása" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Egyenletek megoldása" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Egyenletek:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Változók:" + +#: backendchoosedialog.cpp:64 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Select the Backend" +msgstr "Modul újraindítása" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"

      %1

      %2

      További információkért lásd " +"%3
      " + +#: backendchoosedialog.cpp:125 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"

      %1

      %2

      További információkért lásd " +"%3
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Legyen ez az alapértelmezett modul" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, fuzzy, kde-format +#| msgctxt "the url to the documentation Python 2" +#| msgid "http://docs.python.org/2/" +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "http://docs.python.org/2/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Változókezelés engedélyezése" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Ábrák integrálása a munkalapba" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, fuzzy, kde-format +#| msgid "*.lua|Lua script file" +msgid "Julia script file (*.jl)" +msgstr "*.lua|Lua parancsfájl" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Hiba - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Julia process." +msgstr "Nem sikerült elindítani a Sage-t" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Általános" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Plot Integration:" +msgstr "Integrálás" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, fuzzy, kde-format +#| msgid "" +#| "If true, plots will be displayed inside the worksheet. If not they appear " +#| "in a separate window." +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Ha igaz, az ábrák a munkalapon belül lesznek megjelenítve, különben pedig " +"egy külön ablakban." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Bekapcsolva" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Enable Variable Management" +msgid "Variable Management:" +msgstr "Változókezelés engedélyezése" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Integrate Plots in Worksheet" +msgid "Internal Plot Format:" +msgstr "Ábrák integrálása a munkalapba" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plots" +msgstr "Kirajzolás" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "PyPlot" +msgstr "Kirajzolás" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, fuzzy, kde-format +#| msgid "Scripts to autorun" +msgid "Commands to autorun" +msgstr "Automatikusan futtatandó szkriptek" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documentation" +msgstr "A megnyitandó dokumentum" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "http://docs.kde.org/stable/en/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "A munkamenet kezdetén automatikusan futtatandó szkriptek listája" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Hiba: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, fuzzy, kde-format +#| msgctxt "Lua official documentation" +#| msgid "http://www.lua.org/docs.html" +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "http://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, fuzzy, kde-format +#| msgid "" +#| "

      Lua is a fast and lightweight scripting language, with a simple " +#| "procedural syntax. There are several libraries in Lua aimed at math and " +#| "science.

      This backend supports luajit 2.

      " +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"

      A lua egy gyors és könnyűsúlyú szkriptnyelv egyszerű procedurális " +"szintaxissal. Számos könyvtár található a lua nyelvben matematikai és " +"tudományos céllal.

      Ez a háttérprogram a luajit 2-t támogatja.

      " + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "A luajit parancs elérési útja" + +#: backends/lua/luaextensions.cpp:20 +#, fuzzy, kde-format +#| msgid "*.lua|Lua script file" +msgid "Lua script file (*.lua)" +msgstr "*.lua|Lua parancsfájl" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Path to luajit command:" +msgid "Path to luajit:" +msgstr "A luajit parancs elérési útja:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, fuzzy, kde-format +#| msgid "" +#| "Maxima is a system for the manipulation of symbolic and numerical " +#| "expressions, including differentiation, integration, Taylor series, " +#| "Laplace transforms, ordinary differential equations, systems of linear " +#| "equations, polynomials, and sets, lists, vectors, matrices, and tensors. " +#| "Maxima yields high precision numeric results by using exact fractions, " +#| "arbitrary precision integers, and variable precision floating point " +#| "numbers. Maxima can plot functions and data in two and three dimensions. " +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"A Maxima egy rendszer szimbolikus és numerikus kifejezések kezeléséhez, " +"beleértve a deriválást, integrálást, Taylor-sorokat, Laplace-" +"transzformációt, közönséges differenciálegyenleteket, lineáris " +"egyenletrendszereket, polinomokat és halmazokat, listákat, vektorokat, " +"mátrixokat és tenzorokat. A Maxima nagy pontosságú numerikus eredményeket " +"biztosít pontos törtek, tetszőleges pontosságú egészek és változó pontosságú " +"lebegőpontos számok használatával, emellett képes kirajzolni a függvényeket " +"és adatokat két és három dimenzióban." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "A Maxima program elérési útja" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Hiba: Túl sok */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Hiba: Túl sok /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Hiba: \" várt ; előtt" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, fuzzy, kde-format +#| msgid "*.mac|Maxima batch File" +msgid "Maxima batch file (*.mac)" +msgstr "*.mac|Maxima kötegelt fájl" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Nem sikerült elindítani a Maximát" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "A Maxima összeomlott, újraindítás…" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"A Maxima kétszer is összeomlott rövid időn belül, az indítási kísérlet " +"befejeződik" + +#: backends/octave/octavebackend.cpp:62 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Octave, please check if there is a " +#| "translated version (currently Czech and Japanese) and use the correct url" +#| msgid "http://www.gnu.org/software/octave/doc/interpreter/" +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "http://www.gnu.org/software/octave/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, fuzzy, kde-format +#| msgid "" +#| "GNU Octave is a high-level language, primarily intended for numerical " +#| "computations.
      It provides a convenient command line interface for " +#| "solving linear and nonlinear problems numerically, and for performing " +#| "other numerical experiments using a language that is mostly compatible " +#| "with Matlab." +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"A GNU Octave egy magas szintű, elsősorban numerikus számításokhoz tervezett " +"nyelv.
      Kényelmes parancssori felületet biztosít lineáris és nemlineáris " +"problémák numerikus megoldásához valamint egyéb numerikus kísérletek " +"végrehajtásához egy nagyrészt Matlab-kompatibilis nyelv használatával." + +#: backends/octave/octaveextensions.cpp:34 +#, fuzzy, kde-format +#| msgid "*.m|Octave script file" +msgid "Octave script file (*.m)" +msgstr "*.m|Octave szkriptfájl" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Szintaktikai hiba" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, fuzzy, kde-format +#| msgctxt "the url to the documentation Python 2" +#| msgid "http://docs.python.org/2/" +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "http://docs.python.org/2/" + +#: backends/python/pythonbackend.cpp:72 +#, fuzzy, kde-format +#| msgid "" +#| "

      Python is a remarkably powerful dynamic programming language that is " +#| "used in a wide variety of application domains. There are several Python " +#| "packages to scientific programming.

      This backend supports Python 2." +#| "

      " +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"

      A Python egy feltűnően erőteljes dinamikus programozási nyelv, amelyet a " +"legkülönbözőbb alkalmazási területeken használnak. Számos Python csomag " +"érhető el a tudományos programozáshoz.

      Ez a háttérprogram a Python 2-t " +"támogatja.

      " + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, fuzzy, kde-format +#| msgid "*.py|Python script file" +msgid "Python script file (*.py)" +msgstr "*.py|Python parancsfájl" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Cantor python server." +msgstr "Nem sikerült elindítani a Sage-t" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "plot.ly" +msgstr "Kirajzolás" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - ábra párbeszédablak" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Függvények" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Cím" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Kifejezés" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Hozzáadás" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Eltávolítás" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Lista törlése" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "X változó" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Stílus" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Vonalak" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Pontok" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Pontok és vonalak" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Dobozok" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Hisztogram" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Lépések" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Gyertyatartók" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Pontok" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Simítás" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Nincs" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monoton " + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Természetes köbös spline" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (monoton)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Függvénytartomány" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X tartomány" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, fuzzy, kde-format +#| msgid "Sampling rate" +msgid "Sa&mpling rate" +msgstr "Mintavételi ráta" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, fuzzy, kde-format +#| msgid "Step size" +msgid "Step si&ze" +msgstr "Lépésméret" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Beállítások" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Ábracím" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "X-tengely felirata" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Y-tengely felirata" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Jelmagyarázat helyzete" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Jelmagyarázat elrejtése" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Balra fent" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Jobbra fent" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Balra lent" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Jobbra lent" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Alul" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Kívül" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Rács megjelenítése" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Teljes keret megjelenítése" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Színek használata" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Beágyazott megjelenítése" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logaritmikus x-skála" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logaritmikus y-skála" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Fájlbeállítások" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Ábra mentése fájlba" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Fájltípus" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Felismerés a fájlnévből" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, fuzzy, kde-format +#| msgid "" +#| "Qalculate! is not your regular software replication of the cheapest " +#| "available calculator. Qalculate! aims to make full use of the superior " +#| "interface, power and flexibility of modern computers. The center of " +#| "attention in Qalculate! is the expression entry. Instead of entering each " +#| "number in a mathematical expression separately, you can directly write " +#| "the whole expression and later modify it. The interpretation of " +#| "expressions is flexible and fault tolerant, and if you nevertheless do " +#| "something wrong, Qalculate! will tell you so. Not fully solvable " +#| "expressions are however not errors. Qalculate! will simplify as far as it " +#| "can and answer with an expression. In addition to numbers and arithmetic " +#| "operators, an expression may contain any combination of variables, units, " +#| "and functions." +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"A Qalculate! nem egy, a legolcsóbb számológépet másoló szoftver. A " +"Qalculate! célja a modern számítógépek felületének, erejének és " +"rugalmasságának teljes kihasználása. Egy matematikai kifejezés számainak " +"egyenkénti begépelése helyett közvetlenül megírhatja az egész kifejezést, " +"majd később módosíthatja. A kifejezés értelmezése rugalmas és hibatűrő, de " +"ha valamit mégis rosszul csinálna, a Qalculate! azonnal közölné. A nem " +"teljesen megoldható kifejezések ugyanakkor nem hibák, a Qalculate! a lehető " +"legjobban egyszerűsíti őket és egy kifejezéssel válaszol. Egy kifejezés " +"tartalmazhatja változók, egységek és függvények tetszőleges kombinációját is " +"a számok és aritmetikai operátorok mellett." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Automatikusan konvertálva legyenek-e az egységek, és hogyan. Ha igaz, a " +"konvertálás a legmegfelelőbb SI egységre történik (a legkisebb egységre)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "A trigonometrikus függvények alapértelmezett szögegysége." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "A feldolgozott és kiértékelt számok alapja." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Legyenek-e egyszerűsítve vagy tagokra bontva a kiértékelés eredményei." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"A racionális számok decimálisként számokkal törtként, vagy valahol a kettő " +"közötti módon legyenek-e megjelenítve." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Végtelen tizedestörtek jelzése három ponttal kerekítés helyett (például 2/3 " +"megjelenítése mint 0,6666… a 0,6667 helyett)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Az összes decimális SI előtag használata. Ha hamis a nem ezer többszörös " +"előtagok (centi, deci, deka, hekto) nem lesznek automatikusan használva." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Ha igaz, negatív kitevők lesznek használva osztás helyett (például 5/x^2 " +"helyett 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Számszerű kijelzés." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Ha igaz, az ábrák a munkalapon belül lesznek megjelenítve, különben pedig " +"egy külön ablakban." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Legyenek-e használva színek az ábrákon." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Legyen-e kirajzolva rács." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Legyen-e teljes keret rajzolva az ábra köré." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Vonalvastagság pixelekben." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "A kirajzoláskor használandó interpolációs lépések száma." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Az ábrák simítási módja." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Az ábrák stílusa." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "A jelmagyarázat helyzete az ábrákon." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "A Qalculate nem tud nyomtatni. Telepítve van a gnuplot?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "hiányzó %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 szám kell hogy legyen." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 egész kell hogy legyen." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 logikai érték kell hogy legyen." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "érvénytelen beállítás ehhez: %1 (%2)" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "több kifejezés található egy rajzoló parancsban (%1 és %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "HIBA" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "FIGYELMEZTETÉS" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Nem létezik függvény. változó vagy egység a megadott névvel." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Függvény: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Megjelenítő felület" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "Kirajzol egy vagy több függvényt beágyazva vagy külön ablakban." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "kifejezés" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "opció" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "érték" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "egész" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "logikai" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "szám" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "alapértelmezés: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "A függvény neve" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Címfelirat" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "x-tengely felirata" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "y-tengely felirata" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"A kép amelybe az ábrát menteni kell. Ha üres, az ábra egy ablakban jelenik " +"meg. Ha inline=true, a kép ettől a beállítástól függetlenül megjelenik." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"A képtípus amelybe menteni kell (automatikus, *.png, *.ps, *.eps, *.latex, *." +"svg, *.fig)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "Állítsa true-ra színes, false-ra monokróm ábrához." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Az x-tengely minimális értéke." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Az x-tengely maximális értéke." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Logaritmikus skálát kell-e használni az x-tengelyen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Logaritmikus skálát kell-e használni az y-tengelyen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Logaritmikus alap az x-tengelyen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Logaritmikus alap az y-tengelyen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Kell-e rácsot megjeleníteni az ábrában." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "Kell-e keret az ábra körül (nem csak a tengelyek)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Vonatvastagság." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Hol helyezkedjen el az ábra jelmagyarázata, a következők egyike: none, " +"top_left, top_right, bottom_left, bottom_right, below, outside" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Ábrasimítás, a következők egyike: none, unique, csplines, bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Ábrastílus, a következők egyike: points, points_lines, boxes, histogram, " +"steps, candlesticks, dots" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Skála használata a második x-tengelyen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Skála használata a második y-tengelyen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Beágyazva legyen-e rajzolva az ábra új ablak helyett." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Két interpolációs pont távolsága, lásd még steps." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Az interpolációs pontok száma, lásd még step." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Az x változó neve. Ismeretlen változónak kell lennie" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Változók mentése fájlba" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Az összes jelenleg definiált változó mentése fájlba. A változók " +"újratölthetők a következővel: %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "fájl" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "fájl: ebbe a fájlba kell menteni" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Változók betöltése fájlból" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Változók betöltése a(z) %1 által korábban létrehozott fájlból." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "fájl: a betöltendő fájl" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Alapszám:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Törtformátum:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Decimális" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Pontos" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Tört alak" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Kombinált:" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Számszerű kijelzés:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Sima" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Tudományos" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Pontosság" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Végtelen sorok jelzése:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "SI előtagok használata:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Negatív kitevők használata:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Kiértékelés" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Konvertálás a legjobb SI egységekre:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radián" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Fok" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradián" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Struktrúlási mód:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Egyszerűsítés" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Tényezőkre bontás" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Szög egység:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Kirajzolás" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Ábrák megjelenítése beágyazva:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Teljes keretek megjelenítése:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Vonalvastagság:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Mintavételi ráta:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Simítási mód:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Természetes köbös spline" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Lépések" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Jelmagyarázat helyzete:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Színezett ábrák:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Rács megjelenítése:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Kirajzolási stílus:" + +#: backends/qthelpconfig.cpp:45 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Parancsbejegyzés" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Append Text Entry" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Szövegbeviteli mező hozzáfűzése" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Path to luajit command:" +msgid "Add local documentation" +msgstr "A luajit parancs elérési útja:" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Document to open" +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "A megnyitandó dokumentum" + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Path to luajit command:" +msgid "Download additional documentations" +msgstr "A luajit parancs elérési útja:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Név" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, fuzzy, kde-format +#| msgid "Add" +msgctxt "@action:button" +msgid "Add" +msgstr "Hozzáadás" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Modul újraindítása" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name:" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Név:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, fuzzy, kde-format +#| msgid "" +#| "R is a language and environment for statistical computing and graphics, " +#| "similar to the S language and environment.
      It provides a wide " +#| "variety of statistical (linear and nonlinear modelling, classical " +#| "statistical tests, time-series analysis, classification, clustering, ...) " +#| "and graphical techniques, and is highly extensible. The S language is " +#| "often the vehicle of choice for research in statistical methodology, and " +#| "R provides an Open Source route to participation in that activity." +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"Az R egy, az S-hez hasonló programozási nyelv és szoftverkörnyezet " +"statisztikai számításokhoz és ábrázoláshoz.
      Statisztikai és ábrázolási " +"techikák (lineáris és nemlineáris modellezés, klasszikus statisztikai " +"tesztek, idősoros elemzés, osztályozás, csoportosítás, …) széles választékát " +"kínálja, és nagy mértékben bővíthető. Az S nyelvet gyakran választják " +"statisztikai módszertani kutatásokhoz, az R pedig egy nyílt forrású utat " +"biztosít a tevékenységben való részvételhez." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Hiba történt a(z) %1 fájl megnyitásakor" + +#: backends/R/rextensions.cpp:22 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "R script file (*.R)" +msgstr "*.R|R parancsfájl" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Hiba történt a parancs értelmezése közben" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Kattintson duplán a fájlkiválasztó párbeszédablak megnyitásához" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R forrásfájlok (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, fuzzy, kde-format +#| msgid "" +#| "Sage is a free open-source mathematics software system licensed under the " +#| "GPL.
      It combines the power of many existing open-source packages " +#| "into a common Python-based interface." +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"A Sage egy szabad, nyílt forráskódú matematikai szoftverrendszer amely a GPL " +"licenc feltételei szerint érhető el.
      Számos meglévő nyílt forráskódú " +"csomag erejét integrálja egyetlen közös, Python-alapú felületbe." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "A Sage program elérési útja" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "LaTeX típusbeállítás engedélyezése" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "%1 eredménye" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Az utolsó kimenet: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, fuzzy, kde-format +#| msgid "" +#| "*.py|Python script file\n" +#| "*.sage|Sage script file" +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" +"*.py|Python szkriptfájl\n" +"*.sage|Sage szkriptfájl" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "A Sage folyamat összeomlott a kifejezés kiértékelése közben" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "A Sage folyamat összeomlott" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "A Sage folyamat kilépett ezen kifejezés kiértékelése közben" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "A Sage folyamat kilépett" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Nem sikerült elindítani a Sage-t" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting:" +msgstr "LaTeX típusbeállítás engedélyezése" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Scilab, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.scilab.org/support/documentation" +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "http://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, fuzzy, kde-format +#| msgid "" +#| "

      Warning: this backend works only with Scilab version 5.5 or " +#| "later

      Scilab is a free software, cross-platform numerical " +#| "computational package and a high-level, numerically oriented programming " +#| "language.

      Scilab is distributed under CeCILL license (GPL compatible)" +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"

      Figyelmeztetés: ez a modul csak a Scilab 5.5 vagy újabb verziókkal " +"működik.

      A Scilab egy szabad szoftver, keresztplatformos numerikus " +"számítási csomag és magas szintű, numerikus orientáltságú programozási nyelv." +"

      A Scilab a GPL-kompatibilis CeCILL licenc alatt érhető el" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to the Sage executable" +msgid "Path to the Scilab executable" +msgstr "A Sage program elérési útja" + +#: backends/scilab/scilabextensions.cpp:23 +#, fuzzy, kde-format +#| msgid "" +#| "*.sce|Scilab script file\n" +#| "*.sci|Scilab function file" +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +"*.sce|Scilab parancsfájl\n" +"*.sci|Scilab függvény fájl" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Open file" +msgstr "Képfájl megnyitása" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "Download Example Worksheets" +msgid "Download Examples" +msgstr "Mintamunkalapok letöltése" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "Példa &megnyitása" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Nem található modul

      \n" +"
      Megpróbálhatja:\n" +"
      • Módosítani a beállításokat a beállítóablakban,
      • " +"
      • vagy a következő program csomagjait telepíteni:
      • %2
      " +msgstr[1] "" +"

      Nem található modul

      \n" +"
      Megpróbálhatja:\n" +"
      • Módosítani a beállításokat a beállítóablakban,
      • " +"
      • vagy a következő programok csomagjait telepíteni:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Hiba" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "A(z) %1 modul nincsen telepítve" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "%1. munkamenet" + +#: cantor.cpp:386 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to find the Cantor Part with error %1" +msgstr "A Cantor Part nem található." + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Számolás…" + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Kész" + +#: cantor.cpp:480 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Changed" +msgstr "X tartomány" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Close Cantor" +msgstr "Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save Project" +msgstr "Eredmény mentése" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "Plotting" +msgid "Formatting" +msgstr "Kirajzolás" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Az alapértelmezett modul" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Kiszedés készítése alapértelmezésben" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Szintaxiskiemelés alapértelmezésben" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Kiegészítés bekapcsolása alapértelmezésben" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Kifejezések számozásának bekapcsolása alapértelmezésben" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Változtatások animálása a munkalapon alapértelmezetten" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Az aktuális mező alatti mezők automatikus újra kiértékelése" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Egyszerű szöveg mentése" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Exportálás LateX-fájlba" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Munkalap kiértékelése" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Kiszedés LaTeX használatával" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Szintaxiskiemelés" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Kiegészítés" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Sorszámok" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Pause Animation" +msgid "Animations" +msgstr "Animáció szüneteltetése" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Modul újraindítása" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Bejegyzés kiértékelése" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Parancsbejegyzés beszúrása" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Szövegbejegyzés beszúrása" + +#: cantor_part.cpp:278 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Insert Markdown Entry" +msgstr "Parancsbejegyzés beszúrása" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "LaTeX bejegyzés beszúrása" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Oldaltörés beszúrása" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Kép beszúrása" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Expand All Results" +msgstr "Eredmények" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove All Results" +msgstr "Eredmény törlése" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Aktuális bejegyzés eltávolítása" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Szkriptszerkesztő megjelenítése" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Kiegészítés megjelenítése" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, fuzzy, kde-format +#| msgid "(C) 2009-2013 Alexander Rieder" +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "© Alexander Rieder, 2009-2013." + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, fuzzy, kde-format +#| msgid "*.cws|Cantor Worksheet" +msgid "Cantor Worksheet (*.cws)" +msgstr "*.cws|Cantor munkalap" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, fuzzy, kde-format +#| msgid "Save" +msgid "Save as" +msgstr "Mentés" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Mentés" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Restart %1?" +msgstr "Modul újraindítása" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Megszakítás" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Munkamenet hiba: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Az inicializálás befejeződött" + +#: cantor_part.cpp:690 +#, fuzzy, kde-format +#| msgid "Initializing Session" +msgid "Initializing..." +msgstr "Munkamenet inicializálása" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" +"Szeretné feltölteni egy webkiszolgálóra és publikálni az aktuális munkalapot?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Kérdés - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "A munkalap nincs mentve, feltöltés előtt mentenie kell." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Figyelmeztetés - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Ez a modul nem támogatja a szkripteket." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Szerkesztés" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Nézet" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Munkalap" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "&Beállítások" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Fájl" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "Ú&j" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Panelek" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Beállítások" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "Default" +msgstr "Alapértelmezések" + +#: commandentry.cpp:151 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Text &Color..." +msgid "Text Color" +msgstr "S&zövegszín…" + +#: commandentry.cpp:176 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "&Font" +msgid "Font" +msgstr "B&etűtípus" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, fuzzy, kde-format +#| msgctxt "@action boldify selected text" +#| msgid "&Bold" +msgid "Bold" +msgstr "&Félkövér" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, fuzzy, kde-format +#| msgctxt "@action italicize selected text" +#| msgid "&Italic" +msgid "Italic" +msgstr "&Dőlt" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Show Results" +msgstr "Eredmények" + +#: commandentry.cpp:338 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Hide Results" +msgstr "Eredmények" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Help" +msgstr "A(z) %1 súgó megjelenítése" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Megszakítva" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Keresősáv" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "…" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Keresés:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Következő" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Előző" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Csere:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Csere" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Az összes cs&eréje" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Keresés itt:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Illesztés" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Font &Size" +msgid "Font Size:" +msgstr "Betűmé&ret" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Section" +msgstr "függvény" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Subsection" +msgstr "függvény" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Solid Line Style" +msgstr "Kiegészítési stílus:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Dot Line Style" +msgstr "Kiegészítési stílus:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgid "Use Colors" +msgid "Line Color" +msgstr "Színek használata" + +#: horizontalruleentry.cpp:351 +#, fuzzy, kde-format +#| msgid "Style" +msgid "Line Style" +msgstr "Stílus" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Kép beállítása" + +#: imageentry.cpp:256 +#, fuzzy, kde-format +#| msgid "Double click to open file selection dialog" +msgid "Double click here to configure image settings" +msgstr "Kattintson duplán a fájlkiválasztó párbeszédablak megnyitásához" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Nem sikerült betölteni a képet: %1" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Eredmény mentése" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Image" +msgid "Images (%1)" +msgstr "Kép" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Képbeállítások" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Megnyitás" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Megjelenítési méret" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Szélesség" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Magasság" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, fuzzy, kde-format +#| msgid "&Previous" +msgid "Preview" +msgstr "&Előző" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Nyomtatási méret" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Megjelenítési méret használata" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Képbeállítások" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(automatikus)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Képfájl megnyitása" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Kód megjelenítése" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "A latex program elérési útja" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "A dvips program elérési útja" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Érték" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "X variable" +msgid "" +msgstr "X változó" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Ettől:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Eddig:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Főcím" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Abszcisszaskála" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Ordinátaskála" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Ábracím:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDE előtétprogram matematikai alkalmazásokhoz" + +#: main.cpp:74 +#, fuzzy, kde-format +#| msgid "(C) 2009-2013 Alexander Rieder" +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "© Alexander Rieder, 2009-2013." + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, fuzzy, kde-format +#| msgid "Scilab and Python backends" +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Scilab és Python háttérprogramok" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, fuzzy, kde-format +#| msgid "Alexander Rieder" +msgid "Alexander Semke" +msgstr "Alexander Rieder" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra-modul" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave-modul" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Felület" + +#: main.cpp:86 main.cpp:87 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor icon" +msgstr "Cantor" + +#: main.cpp:92 +#, fuzzy, kde-format +#| msgid "Use this backend" +msgid "Use backend " +msgstr "Ezen modul használata" + +#: main.cpp:95 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documents to open." +msgstr "A megnyitandó dokumentum" + +#: main.cpp:130 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1" +msgstr "Hiba történt a(z) %1 fájl megnyitásakor" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, fuzzy, kde-format +#| msgid "Syntax Error" +msgid "Cantor Math Error" +msgstr "Szintaktikai hiba" + +#: markdownentry.cpp:796 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "A Cantor Part nem található." + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "Oldaltörés" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, fuzzy, kde-format +#| msgid "&Match case" +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "&Illesztés" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor files" +msgstr "Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Jupyter files" +msgstr "Képfájl megnyitása" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, fuzzy, kde-format +#| msgid "file" +msgid "All files" +msgstr "fájl" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Név:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Érték:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgid "Add New Variable" +msgstr "Új változó hozzáadása" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Változók betöltése" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Save Variables" +msgstr "Változók mentése" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Remove Variables" +msgstr "Változók mentése" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, fuzzy, kde-format +#| msgid "SearchBar" +msgid "Search/Filter" +msgstr "Keresősáv" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Biztosan törölni szeretne minden változót?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +#| msgid "Loading failed." +msgid "Load file" +msgstr "A betöltés meghiúsult." + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Eredmény mentése" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Eredmény törlése" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Nem található KDE-s szövegszerkesztő komponens\n" +"Ellenőrizze, rendben telepítve van-e a KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Szkriptszerkesztő" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Szkriptszerkesztő - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Nem található" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Az elejére ért" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "A végére ért" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "%1 előfordulás cserélve" +msgstr[1] "%1 előfordulás cserélve" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Parancsok" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Eredmények" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Hibák" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Szöveg" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX kód" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "Indítás" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Alapértelmezett modul:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "&Munkalap" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "LaTeX típusbeállítás engedélyezése" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting" +msgstr "LaTeX típusbeállítás engedélyezése" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Szintaxiskiemelés engedélyezése" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Szintaxiskiemelés" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "Kiegészítés bekapcsolása" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Sorszámok" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Sorszámok" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "Ábrák integrálása a munkalapba" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Egyenletek:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "Mezők automatikus újra kiértékelése" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown:" +msgstr "Parancsbejegyzés beszúrása" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "LaTeX típusbeállítás engedélyezése" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, fuzzy, kde-format +#| msgid "Find:" +msgid "Find…" +msgstr "Keresés:" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert to Text Entry" +msgstr "Szövegbejegyzés beszúrása" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Copy result" +msgstr "Eredmény törlése" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Renderelt megjelenítése" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Kód megjelenítése" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show HTML Code" +msgstr "Kód megjelenítése" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Html" +msgstr "A(z) %1 súgó megjelenítése" + +#: textresultitem.cpp:90 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show HTML" +msgstr "A(z) %1 súgó megjelenítése" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Nem lehet Eps fájlt renderelni, további csomagokra lehet szükség" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Eredmény mentése" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Nem sikerült írni a(z) %1 fájlt." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, fuzzy, kde-format +#| msgid "Cannot write file %1." +msgid "Cannot write file." +msgstr "Nem sikerült írni a(z) %1 fájlt." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Hiba történt a(z) %1 fájlba mentés közben" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Hiba a latex.xsl stíluslap betöltése közben" + +#: worksheet.cpp:1327 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1." +msgstr "Hiba történt a(z) %1 fájl megnyitásakor" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Open File" +msgstr "Képfájl megnyitása" + +#: worksheet.cpp:1350 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the selected file for reading." +msgstr "Hiba történt a(z) %1 fájl megnyitásakor" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Problémák vannak a(z) %1 modullal,\n" +"ellenőrizze a telepítését vagy telepítse a szükséges csomagokat.\n" +"Csak megnézni tudja ezt a munkalapot." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert To" +msgstr "Szövegbejegyzés beszúrása" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Commands" +msgid "Command" +msgstr "Parancsok" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown" +msgstr "Parancsbejegyzés beszúrása" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Kép" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Oldaltörés" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, fuzzy, kde-format +#| msgid "Points and Lines" +msgid "Horizontal Line" +msgstr "Pontok és vonalak" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +#| msgid "Drag Entry" +msgid "Hierarchy Entry" +msgstr "Bejegyzés húzása" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Insert After" +msgstr "Szövegbejegyzés beszúrása" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Beszúrás elé" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Beszúrás" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "Nyomtatási méret" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Move Entries Down" +msgstr "Szövegbejegyzés beszúrása" + +#: worksheet.cpp:1933 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate Entries" +msgstr "Bejegyzés kiértékelése" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Entries" +msgstr "Bejegyzés törlése" + +#: worksheet.cpp:1947 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Collapse Command Entry Results" +msgstr "Parancsbejegyzés beszúrása" + +#: worksheet.cpp:1948 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Expand Command Entry Results" +msgstr "Parancsbeviteli mező hozzáfűzése" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Remove Command Entry Results" +msgstr "Parancsbejegyzés" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Add Command Entry To Execution" +msgstr "Parancsbeviteli mező hozzáfűzése" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "S&zövegszín…" + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Szín" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Szöveg&kiemelés…" + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "B&etűtípus" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Betűmé&ret" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Félkövér" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Dőlt" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Aláhúzott" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "Át&húzott" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "&Balra igazítás" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Balra" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "&Középre igazítás" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Középre" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "&Jobbra igazítás" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Jobbra" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Sorkizárt" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Sorkizárt" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove all results" +msgstr "Eredmény törlése" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +#| msgid "Ready" +msgid "Red" +msgstr "Kész" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Dark Orange" +msgstr "X tartomány" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Orange" +msgstr "X tartomány" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Light Orange" +msgstr "X tartomány" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, fuzzy, kde-format +#| msgid "Do you also want to export the images?" +msgid "Do you really want to remove this entry?" +msgstr "Szeretné exportálni a képeket is?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Bejegyzés törlése" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Bejegyzés húzása" + +#~ msgid "Animate Worksheet" +#~ msgstr "Munkalap animálása" + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Ha be van kapcsolva, a Cantor automatikusan kiértékel minden bejegyzést " +#~ "az aktuális alatt." + +#~ msgid "Defaults" +#~ msgstr "Alapértelmezések" + +#~ msgid "Enable Line Numbers" +#~ msgstr "Sorszámozás bekapcsolása" + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Munkalap animációk engedélyezése" + +#, fuzzy +#~| msgid "Plot" +#~ msgid "Plot.ly" +#~ msgstr "Kirajzolás" + +#, fuzzy +#~| msgid "Package:" +#~ msgid "Graphic Package: " +#~ msgstr "Csomag:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      A KDE út a matematikához" + +#, fuzzy +#~| msgid "Document to open" +#~ msgid "Documentation:" +#~ msgstr "A megnyitandó dokumentum" + +#~ msgid "Show %1 Help" +#~ msgstr "A(z) %1 súgó megjelenítése" + +#, fuzzy +#~| msgid "Path to Maxima:" +#~ msgid "Path to Julia:" +#~ msgstr "A Maxima elérési útja:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Ábrák integrálása a munkalapba" + +#~ msgid "Clear Variables" +#~ msgstr "Változók törlése" + +#~ msgid "Right click here to insert image" +#~ msgstr "Kattintson ide jobb gombbal kép beszúrásához" + +#, fuzzy +#~| msgid "Configure Image" +#~ msgid "Choose Image" +#~ msgstr "Kép beállítása" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Megerősítés - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Szövegbejegyzés" + +#~ msgid "LaTeX Entry" +#~ msgstr "LaTeX bejegyzés" + +#, fuzzy +#~| msgid "Insert Entry" +#~ msgid "Insert Entry Before" +#~ msgstr "Bejegyzés beszúrása" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Szövegbejegyzés beszúrása" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "A scilab-adv-cli parancs elérési útja - Figyelmeztetés: a Scilab verziója " +#~ "nagyobb vagy egyenlő kell hogy legyen mint 5.4" + +#, fuzzy +#~| msgid "Insert Image" +#~ msgid "Insert Image Attachment" +#~ msgstr "Kép beszúrása" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Latex bejegyzés beszúrása" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Az Octave program elérési útja" + +#~ msgid "Path to Maxima:" +#~ msgstr "A Maxima elérési útja:" + +#, fuzzy +#~| msgid "Failed to start Sage" +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Nem sikerült elindítani a Sage-t" + +#~ msgid "Path to Sage:" +#~ msgstr "A Sage elérési útja:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "A scilab-adv-cli parancs elérési útja:" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "A Cantor kövesse a változók létrehozását/megsemmisítését" + +#, fuzzy +#~| msgid "Integrate Plots in Worksheet" +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "Ábrák integrálása a munkalapba" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Az Octave program elérési útja" + +#~ msgid "Path to Octave:" +#~ msgstr "Az Octave elérési útja:" + +#~ msgid "Unnamed" +#~ msgstr "Névtelen" + +#, fuzzy +#~| msgctxt "the url to the documentation Python 2" +#~| msgid "http://docs.python.org/2/" +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "http://docs.python.org/2/" + +#, fuzzy +#~| msgid "" +#~| "

      Python is a remarkably powerful dynamic programming language that is " +#~| "used in a wide variety of application domains. There are several Python " +#~| "packages to scientific programming.

      This backend supports Python 2." +#~| "

      " +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "

      A Python egy feltűnően erőteljes dinamikus programozási nyelv, amelyet " +#~ "a legkülönbözőbb alkalmazási területeken használnak. Számos Python csomag " +#~ "érhető el a tudományos programozáshoz.

      Ez a háttérprogram a Python " +#~ "2-t támogatja.

      " + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Válassza ki a használandó modult:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "A fájlt generáló modul nincs telepítve, %1 szükséges hozzá" + +#~ msgid "Publish Worksheet" +#~ msgstr "Munkalap publikálása" + +#~ msgid "Waiting for Image..." +#~ msgstr "Várakozás a képre…" + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "Nem lehet megnyitni a(z) %1 fájlt: ismeretlen MIME-típus" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|LaTeX dokumentum" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantor munkalap" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Kiszolgáló a Cantor R modulhoz" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "© Alexander Rieder, 2009." + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Használat: saveVariables fájl" + +#~ msgid "Saving failed." +#~ msgstr "A mentés meghiúsult." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Használat: loadVariables fájl" + +#~ msgid "Loading failed." +#~ msgstr "A betöltés meghiúsult." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "© Alexander Rieder, 2009-2013." + +#~ msgid "Path to python command" +#~ msgstr "A python parancs elérési útja" + +#~ msgid "Cantor Server for R" +#~ msgstr "Cantor R szerver" + +#~ msgid "Path to python2 command:" +#~ msgstr "A python2 parancs elérési útja:" + +#~ msgid " Enable Variable Management" +#~ msgstr " Változókezelés engedélyezése" + +#~ msgid "Could not start the server." +#~ msgstr "Nem sikerült elindítani a kiszolgálót." + +#~ msgid "Start Animation" +#~ msgstr "Animáció elindítása" + +#~ msgid "Restart Animation" +#~ msgstr "Animáció újraindítása" + +#~ msgid "Append Latex Entry" +#~ msgstr "Latex-beviteli mező hozzáfűzése" + +#~ msgid "Append Image" +#~ msgstr "Kép hozzáfűzése" + +#~ msgid "Append Page Break" +#~ msgstr "Oldaltörés hozzáfűzése" + +#~ msgid "Other" +#~ msgstr "Egyéb" + +#~ msgid "And %1 more..." +#~ msgstr "És %1 további…" + +#~ msgid "Main Toolbar" +#~ msgstr "Alap eszköztár" + +#~ msgid "Popup" +#~ msgstr "Felugró" + +#~ msgid "The style used for Completion" +#~ msgstr "A kiegészítés stílusa" + +#, fuzzy +#~| msgid "Insert Entry" +#~ msgid "Insert Command Entry Before" +#~ msgstr "Bejegyzés beszúrása" + +#, fuzzy +#~| msgid "Insert Entry" +#~ msgid "Command Entry Before" +#~ msgstr "Bejegyzés beszúrása" + +#~ msgid "GroupBox" +#~ msgstr "GroupBox" + +#~ msgid "Help" +#~ msgstr "Súgó" + +#~ msgid "Show Help Panel" +#~ msgstr "Súgó panel megjelenítése" diff --git a/po/ia/cantor.po b/po/ia/cantor.po new file mode 100644 index 0000000..5edf493 --- /dev/null +++ b/po/ia/cantor.po @@ -0,0 +1,4959 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the cantor package. +# +# Giovanni Sora , 2020, 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-11-14 15:02+0100\n" +"Last-Translator: giovanni \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 21.12.3\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Giovanni Sora" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "g.sora@tiscali.it" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pausa" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Initia" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Stoppa" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Salveguarda exito de animation" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Animationes (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Traciar (Plotting) avantiate" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Plot (Tracia)" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Expression:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Op&tiones additional" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Plot (Tracia)" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Option active" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Calcula" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Differentiar" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variabile:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Tempores: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Pacchetto" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importa paccetto" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Pacchetto:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integrar" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Limite inferior:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Limite superior:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "integral definitive" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "Algebra &Linear" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Crea Matrice" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Columnas" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Lineas:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Computa valores Eigen" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrice:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Computa vectores Eigen" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Inverte Matrice" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Plot 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variabile" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Nomine" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minime" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maxime" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Plot 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1me Variabile" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2de Variabile" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Exeque script" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Resolve equationes" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Equationes:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variabiles:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Selige le retro-administration" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Version Recommendate: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Vide%2 per plus information." + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Alcun requirimentos non es satisfacite: %1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Rebde iste le retro-administration predefinite" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia es un lignguage de programmation dynamic de alte nivello e " +"alte efficientia per computar technic, con syntaxe que es familiar a " +"usatores de altere ambientes de computar technic. Illo forni un compilator " +"sophisticate, execution parallel distribuite, accuratessa numeric, e un " +"ample bibliotheca de funcion mathematic." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"Le percurso a Julia specificate in le preferentias de application debe " +"punctar directemente al executabile. Simlinks (ligamines symulate) non es " +"permettite. Pro favor forni le correcte percurso in le preferentias de " +"application e essaya novemente." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Cantor nonn poteva determinar le version de Julia per %1. Pro favor tu " +"specifica le percurso al executabile de Julia (necun symlinks permettite) e " +"essaya novemente." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Tu es essayante a usar Cantor con Julia v%1.%2.%3. Iste version de Cantor " +"esseva compilate con le supporto de Julia v%4.%5.%6. Pro favor tu puncta a " +"iste version de Julia o recompila Cantor usante le version %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Percuro al REPL native de Julia" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Habilita Gestion de Variabile" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Integra Plots (tracias) in le folio de travalio" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Pacchetto graphic per assistente de Plot(Tracia) Plot-Assitant" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Desolate, ma Gadfly non supporta tracias (plot) 3d" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "File de script de Julia (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Error - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"Session de JUla non pote authenticarse debite a problema interne de Julia " +"con file interne mancante - \"%1\"" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" +"Session de Julia non pote authenticarse debite a problema interne incognite" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Processo de Julia stoppava a functionar." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Falleva a initiar processo de Julia." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "Communication con le processo de Julia falleva per rationes incognite." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Al momento, per Julia, solmente es supportate GR (https://gr-framework." +"org/), un infrastructura per applicationes de visualisation. Iste pacchetto " +"debe esser installate prime, si ancora non facite. Per isto, executa Pkg." +"install(\"GR\") in Cantor o in Juia REPL. Nota, iste operation pote prender " +"alcun tempore e es melior executar lo in Julia REPL, que es capace de " +"monstrar le progresso currente del installation de pacchetto." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "General" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Executabile:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Integration de tracia (plot):" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Si habilitate, tracias (plots) essera monstrate intra le folio de travalio. " +"Alteremente, tracias (plots) esssera monstrate in un fenestra externe." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Habilitate" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Gestion de Variabile:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Controla le creation e destruction de variabiles e monstra le variabiles " +"existente in le pannello de variabile." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Formato de tracia (plot) interne:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" +"Formato interne de tracias (plots), si incorporar de tracis (plots) es " +"habilitate. " + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Pacchetto graphic per assistente de Plot(Tracia)" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Pacchetto per assistente de Plot(Tracia)-Plot Assistant" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Plots (Tracias)" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Autorun (Executa automaticamente)" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Commandos per executar automaticamente" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Documentation" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Lista de scripts de executar automaticamente al initio de session" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Error: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Iste commando de autoexecution (autorun), le qual executara nove folio de " +"travalio al initio. Illos pote esser utile per cargar modulos necessari, " +"cambiar ambiente, etc." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua es unrapide e legier linguage de script, con un syntaxe " +"procedural simple. Il ha multe bibliothecas in Lua mirate a mathematica e " +"scientia." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Percurso a commando de luajit" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "File de script de Lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Percurso a luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" +"

      Systema de adjuta de Maxima

      Function apropos

      Cerca " +"nomines de Maxima cuje nomine appre ubique intra illos; name debe " +"esser uncatena o un symbolo. Assi, apropos(exp) returna un lista de " +"tote le flags (banderas) e functiones que ha exp como parte de lor nomin, " +"tal como expand, exp, e exponentialize. Ergo, si tu " +"solmente pote memorar parte del nomine de un commando de Maxima o un " +"variabile, tu pote usariste commando pro trovar le resto del nomine. " +"Similemente, tu pote typar apropos(tr_) pro trovar un lista de multe " +"del commutatores pertinente al traductor, le plus del qual initia con " +"tr_.

      apropos(\"\") returna un lista con tote le nomines " +"de Maxima.

      apropos returna le lista vacue[], si necun nomine " +"es trovate.

      Function describe

      describe(string) " +"es equivalente a describe(string, exact).

      describe(string, exact) trova un elemento con titulo equal (non sensibile al caso de majuscule e " +"minuscule) a string, si il ha alcun tal elemento.

      describe(string, " +"inexact) trova omne elementos documentate que contine string in lor " +"titulos. Si il ha plus que un elemento, Maxima demanda al usator seliger un " +"elemento o elementos a monstrar.

      ? foo (con un spatio inter " +"? and foo) es equivalente adescribe(\"foo\", exact), " +"and ?? foo is equivalente a describe(\"foo\", inexact)." +"

      describe(, inexact) da un lista de tote le topicos " +"documentate in le manuale in linea.

      describe su argumento " +"inter quotationes. describe retorna true,i.e. ver, si alcun " +"documentation es trovate, alteremente false.

      Function " +"example

      example(topic) monstra alcun exemplos de topic, que es un symbolo o un catena. Pro obtener exemplos de operatores como " +"if, do, o lambda le argumento debe esser un catena, p." +"ex.. example(\"do\"). example non sensibile a majuscula o " +"minuscula. Le plus de topicos es nomines de function.

      example() retorna le lista de tote le topicos recognoscite.

      Le nomine del " +"file continente le exemplos es date per le variabile de option global " +"manual_demo, que es predefinitte a \"manual.demo\"." +"

      example su argumento inter quotationes. example " +"retorna done,i.e. facite, a minus que necun exemplo es trovate o il " +"ha nulle argumento, in qual caso example retorna le lista de tote le " +"topicos recognoscite." + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima es un systema per le manipulation de expressiones symbolic e " +"numeric, includente differentiation, integration, series de Taylor, " +"transformatas de Laplace, equationes diferential ordinari, systemas de " +"equationes linear, polynomiales, e insimules, listas, vectores,matrices, e " +"tensores. Maxima da resultatos numeric de alte precision per usar fractiones " +"exacte, integres de precision arbitrari, e numeros de punctos flottante de " +"precision variabile. Maxim pote traciar (plot) functiones e datos in duo e " +"tres dimensiones." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Percurso a executabile de Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Error: Troppo de */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Error: Troppo de /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Error: attendite \" ante ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Attendente le exito de plot (tracia)" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "File batch de Maxima (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Falleva a startar Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima habeva un crash, restartante..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima habeva un crash duo vices intra un breve tempore. Stoppar per essayar " +"startar" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave es un linguag de alte nivello, primariamente intendite per " +"computationes numeric.
      Il forni un interfacie de linea de commando " +"conveniente per resolver problemas linar e non linear numericamente, e per " +"executar altere experimentos usante un linguage que es supertoto compatibile " +"con Mathlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "File de script de Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Error de syntaxe." + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Test de Integration de tracia (plot) falleva." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "Le integration de tracis (plots) essera dishabilitate." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"Le integration de traciar (plot) non functiona proque Cantor trovava que " +"Octave non pote crear tracias (plots), proque il non ha " +"retroadministrationes graphic pro illo: iste conclusion esseva facite sur le " +"base de exitos vacue ex function grapgics_toolkit8) disponibile. Il sembla " +"que tu deberea installar alcun paccos additional de SO, como gnuplot, fltk e " +"qt per possibilitate de crear tracias (plots)." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python es in linguage de programmar dynamic remarcabilemente potente " +"que es usate in un grande varietate de dominios de application. Il ha multe " +"pacchettos de Python per programmar scientific." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# Desolate, ma Bokeh non supporta tracias (plot) 3d" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "File de script de Python (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Servitor de Python de Cantor stoppava functionar." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Fallev a startar servitor de Python de Cantor." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"Communication con servitr de python de Cantor falleva per rationes incognite." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Per usar graphicos integrate connpacchettos de Matplotlib, tu necessita a " +"installar primo le pacchetto de python \"matplotlib\"." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Per usar graphico integrate con Plot.ly, tu necessita installar pacchetto de " +"python \"plotly\" e executabile \"orca\" compatibile con Plot-ly. Vide le " +"articulo \"Static Image Export\" in le documentation de Plot.ly per detalios." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Dialogo de Plot (Tracia)" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Functiones" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Titulo" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Expression" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Adde" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Remove" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Netta Lista" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Variabile X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Stilo" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Lineas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Punctos" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Punctos e lineas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Quadros" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogramma" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Passos" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Candelabros (Candlesticks)" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Punctos" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Lisiar" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Necun" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monotonic" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Splines cubic natural" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (monotonic)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Extension de function" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Extension de X" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Frequentia de exe&mplar" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "G&randor de passo" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Optiones" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Titulo de traciar (plot):" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Etiquetta de axe X" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Etiquetta de axe Y" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Position de legenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Cela legenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Culmine a sinistra" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Culmine a dextera" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Basso a sinistra" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Basso a dextera" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "De Basso" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Exterior" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Montra grillia" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Monstra margine complete" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Usa colores" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Monstra incorporate" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Scala logarithmic x" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Scala logarithmic y" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Optiones de file" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Salveguarda tracia (plot) a file" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Typo de File" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Discoperi ex nomine de file" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG." + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! non es tu replica regular de software del plus economic " +"calculator disponibile. Qalculate! aspira a facer uso complete del " +"interfacie superior, potentia e flexibilitate de computatores moderne. Le " +"centro de attention in Qalculate! es le entrata de expression. In loco de " +"insertar cata numero in un expression mathematic separatemente, tu pote " +"scriber directemente le expression integre e plus tarde modificar lo. Le " +"interpretationde expressiones es flexibile e tolerante faltas, e si tu " +"totevia face alcun cosa incorrecte, Qalculate! te lo dicera. Expressiones " +"non completemente solvibile es tamen non errores. Qalculate! simplificara lo " +"plus que illo pote e respondera con un expression. In addition a numeros e " +"operatores arithmetic, un expression pote continer ulle combination de " +"variabiles, unitates, e functiones." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Si e como unitates essera convertite automaticamente. Si ver (true), " +"converte al unitate de SI plus adapte (le minor amonta de unitates)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Unitate de angulo predefinite per functiones trigonometric." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Base de numeros analysate e evalutate." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Si le resultato de evalutation essera simplificate o factorisate." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Si numeros rational essera monstrate con decimales, como un fraction, o " +"qualcosa in le medie." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Monstra que le series de cifra de un numero continua per sempre con tres " +"punctos, in loco de rotundar (ex 2/3 es monstrate como 0,666666... in loco " +"de 0,666667)" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Usa omne prefixos de SI. Si false, profixos que non es un multiple de mille " +"(centi,deci,deca,hecto) non sara usate automaticamente." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Si ver, exponentes negative essera usate in loco de division (ex. 5/x^2 " +"deveni 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Monstrator numeric." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Si ver, tracias (plots) essera monstrate intra le folio de travalio. si non " +"illos appare in un fenestra separate." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Si colores deberea esser usate in tracias (plots)." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Se un grillia deberea esser traciate (plotted)." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Si margines complete deberea esser traciate circa le tracia (plot)." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Largessa de lineas, in pixeles." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" +"Numero de passos de interpolation que debe esser usate in traciar (plotting)." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Modo de lisiar in tracias (plots)." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Stilo de tracias (plots)." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Position de legenda in tracias (plots)." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" +"Qalculate reporta que illo non pote imprimer, Esque gnuplot es installate?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "mancante %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 debe esser un numero." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 debe esser un integer" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 debe esser un boolean." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "option invalide per %1:%2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" +"trovava expressiones multiple in un commando de traciar (plot)(%1 e %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "ERROR" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "AVISO" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" +"Non existe alcun function, variabile o unitate con le nomine specificate." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Function: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Interfacie de Traciar (Plotting)" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Tracia (plot) un o plus functiones o interne o in un fenestra separate." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "expression" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "option" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "Valor" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "integre" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "boolean" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "numero" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "predefinite: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Le nmine de function" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Etiquetta de titulo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "Etiquetta de axe x" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Etiquetta de axe y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Imagine ubi salveguardar le tracia (plot). Si vacue monstra le tracia " +"(plot) in un fenestra sur le schermo. si incorporate=ver le imagine es " +"monstrate indifferente a iste option." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Le typo de imagine de cmo salveguardar. Un de auto, png, eps, latex, svg, " +"fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "Fixa a ver per tracia (plot) colorate, false per monochrome." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Minime valor de axe-x" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Maxime valor de axe-x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Si un scala logarithmic essera usate per le axe x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Si un scala logarithmic essera usate per le axe y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Base logarithmic per le asse x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Base logarithmic per le asse y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Siun grillia essera monstrate in le tracia (plot)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Si le tracia (plot) essera circumferite per bordos sur omne lateres (non " +"solmente axes)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Largessa de lineas." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Ubi le legenda de tracia (plot) essera placiate. Un de necun, in alto a " +"sinistra, in alto a dextera, in basso a sinistra, in basso a dextera, in " +"basso, exterior" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "Lisiar de tracia (plot). Un de necun,unic,csplines,bezier,sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Stilo de tracia (plot). Un de lineas,punctos,punctos_lineas,quadros," +"diagramma, passos,candelabros, punctos" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Ua scala sur secunde axe x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Usa scala sur secunde axe y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" +"Si le tracia (plot) debe esser designate incorporate in vice de un nove " +"fenestra" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Distantia inter duo punctos de interpolation. Vide anque passos." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Numero de punctos de interpolation. Vide anque passos." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Le nomine del variabile x. Isto debe esser un variabile incognite" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Salveguarda variabiles a un file" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Salveguarda omne variabiles currentemente definite a un file. Illos pote " +"esser recargate con %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "file" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "file: le file ub salveguardar" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Carga variabiles ab un file" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Carga variabiles ab un file ha essite previemente create per %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "file:le file a cargar" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Base de numero:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Formato de fraction:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Decimal" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Exacte" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Fractional" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Combinate" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Monstrator numeric:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Pure" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Scientific" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Precision" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Indica series infinite:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Usa omne prefixos SI:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Usa exponentes negative:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Evaluta" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Converte a melior unitates SI:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radiantes" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Grados" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradiantes" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Modo de structurar:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Simplifica" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Factorisa" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Unitate de angulo:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Plotting (traciar)" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Monstra tracias (plots) incorporate:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Monstra margines complete:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Largessa de lineas:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Frequentia de exemplar:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Modo de lisiar:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Splines cubic natural" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Passos" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Position de legenda:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Tracias (plot) colorate:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Monstra grillia:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Stilo de traciar (Plot):" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Modificar Entrata" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Adde un nove entrata" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Nomine non pte esser vacue." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Adde documentation Local" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Obtene nove documentation:" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Discarga documentationes additional" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "File de adjuta comprimite de Qt non es valide." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Documentation jam importate" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Modifica" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Dele" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Pro favor deinstalla isto via GHNS." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Installa files de documentation additional" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Nomine" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Percurso" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Adde" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Icone:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Selige un icone" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Nomine:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Inserta un nomine" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Selectiona un nomine..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Percurso:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Selige un file de Adjuta de Qt ..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Selige un file de Adjuta de Qt ..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" +"

      Systema de Adjuta de R' : help() e ?:


      Le function " +"help() e le operator de adjuta ? in R forni accesso al " +"paginas de documentation per le functiones de R, insimules de datos, e " +"altere objectos, sia per pacchettos in le distribution standard de R " +"distribution que per pacchetos contribuite.

      Peracceder al " +"documentation per le function standard lm (linear model,i.e. modello " +"linear), pro exemplo, inserta le command help(lm) o " +"help(\"lm\"), o ?lm o ?\"lm\" (i.e., le quotation es " +"optional).

      Peracceder a adjuta per un function in a pacchettoque non " +"es currentemente cargate, specifica in addition le nomine del pacchetto. Pro " +"examplo, pro obtener documentation per le function rlm() (robust " +"linear model) in le pacchetto MASS, help(rlm, package=\"MASS\")." +"

      Nomines standard in R consiste delitteras majuscule e minuscule, " +"numerales (0-9), sublineas (_), e punctos (.), e debe initiar con un littera " +"o un puncto. Pro obtener adjuta per un objecto conun nomine non standard " +"(tal como le operator de adjuta ?), le nomine debe haber " +"quotationes: pro exemplo, help('?') or ?\"?\".

      Tu " +"anque pote usar le function help() pro acceder a information re un " +"pacchetto in tu bibliotheca — for example, help(package=\"MASS\") — " +"que monstra un indice de paginas de adjuta disponibile per le pacchetto " +"preter alcun altere information.

      Paginas de adjuta per functiones " +"solitemente include un section conexemplos executabile monstrante como le " +"functiones functiona. Tu pote exequer iste exemplos in le session currente " +"de R via le commando example() : e.g., example(lm)." + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R es un linguage e ambiente per computar statistic e graphicos, " +"simile al ambiente e linguaggio S.
      Illo forni un vaste varietate de " +"technicas statistic (modellar linear e nonlinear,classic testz statistic, " +"analysis de serie temporal, classification, clustering,...) e graphic, e es " +"multo extensibile. Sovente le linguage S es le vehiculo de election per " +"recerca in methodologia statistic, e R forni un strata Open Source a " +"participar in ille activitate." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Error durante que il aperiva le file %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "file de script de R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Commando de analysar de error" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "Url al documentation local de R" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Duple pulsa per aperir dialogo de selecion de file" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R files fonte (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage es un systema de software mathematic libere de fonte aperite " +"licentiate sub le GPL.
      Illo combina le potentia de multe paccos de " +"fonte aperite existente in un interfacie commun basate sur Python." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Percurso a executabile de Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Habilita typographic de LaTeX per retroadministration de Sage" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Exito de %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"The last output was: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "File de script de Python (*.py);;file de script de Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Version de Sage %1.%2 es non supportate. Pro favor actualisa tu installation " +"al version supportate per facer lo functionar con Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Il falleva a determinar le version de Sage. Pro favor tu verifica tu " +"installation e le exito de 'sage-v'." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "" +"Le processo de Sage habeva un crash durante que evalutava iste expression" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Le processo de Sage habeva un crash" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Le processo de Sage exiva durante que evalutava iste expression" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Le processo de Sage exiva" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Falleva a initiar Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "Typographic de LaTeX:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"Exito LaTex de Sage non sempre correcte, assi typographic de latex pote " +"esser deactivate per un experientia melior" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab es software libere, pacchetto de computation numeric trans " +"platteforma e linguage de programmar de alte nivello orientate al numeros. " +"Scilab es distribuite sub CeCILL (compatibile con GPL)." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Percurso a executabile de Scilab" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;File de script de Scilab (*.sce);;File de functin de Scilab (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "Le file %1 ja es aperite." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Aperi file" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Discarga exemplos" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Aperi Exemplo" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Vade a previe folio de travalio" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Vade a proxime folio de travalio" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Omne file supportate (*.cws *ipynb);;Folios de travalio de Cantor (*.cws);;" +"Jupyter Notebook (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Necun retroadministration trovate

      \n" +"
      Tu poterea essayar:\n" +"
      • Cambiar le preferentias in le dialogo de configuration;
      • " +"
      • Installante pacchettos per le programma sequente:
      • %2
      " +msgstr[1] "" +"

      Necun retroadministration trovate

      \n" +"
      Tu poterea essayar:\n" +"
      • Cambiar le preferentias in le dialogo de configuration;
      • " +"
      • Installante pacchettos per le programmas sequente:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Error" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "retroadministration %1 non es installate" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"Retroadministration %1 installate, ma inactive. Pro favor tu verifica tu " +"installation e preferentias de Cantor " + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Session %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Falleva trovar Cantor Part con error %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Il calcula..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Preste" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Modificate" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "Folios de labor multiple es aperite. Tu vole clauder los?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Caude Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Le currente projecto ha essite modificate. Tu vole salveguardar lo?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Salveguarda projecto" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Da formato" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Le retroadministration que es usate per definition" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Face typographic per definition" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Face Evidentiar de Syntaxe per definition" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Habilita completiones per predefinition" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Habilita Numerar de expressiones per predefinition" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Cambiamentos animate in Folio de labor per predefinition" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Habilita render expressiones mathematic intra $$..$$ in entrata de Texto e " +"Markdown per predefinition (il necessita que pdflatex es installate)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Reevaluta automaticamente le entratas a basso del currente" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Demanda per confirmation quando il restarta le retroadministration" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Salveguarda formatar in texto rich de TextEntry, quando salveguarda folio de " +"travalio in formato de Jupyter notebook" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Usa stilo de collocation de entratas de Cantor de vetere stilo" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Monstra error de render de mathematica incorporate" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Limite de lineas visibile per resultato de texto" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Font de Hierarchia per capitulo" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Grandor de font de Hierarchia per capitulo" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Cursive de font de Hierarchia per capitulo" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Grasse de font de Hierarchia per capitulo" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Font de Hierarchia per subcapitulo" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Grandor de font de Hierarchia per subcapitulo" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Cursive de font de Hierarchia per subcapitulo" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Grasse de font de Hierarchia per subcapitulo" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Font de Hierarchia per section" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Cursive de font de Hierarchia per section" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Grasse de font de Hierarchia per section" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Font de Hierarchia per subsection" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Cursive de font de Hierarchia per subsection" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Grasse de font de Hierarchia per subsection" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Font de Hierarchia per paragrapho" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Cursive de font de Hierarchia per paragrapho" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Grasse de font de Hierarchia per paragrapho" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Font de Hierarchia per subparagrapho" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Cursive de font de Hierarchia per subparagrapho" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Grasse de font de Hierarchia per subparagrapho" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Salveguarda texto plan" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Exporta a LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Evaluta Folio de labor" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Insimul de typar usante LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Evidentiar syntaxe" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Completion" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Numeros de linea" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Animationes" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Mathematica incorporate" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Re.initia retro-administration" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Evaluta entrata" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Insert entrata de commando" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Insert entrata de texto" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Inserta entrata de Markdown" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Inserta entrata de LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Inserta interruption de pagina" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Inserta imagine" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Plica omne exitos" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Expande omne exitos" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Remove omne exitos" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Remove entrata currente" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Monstra editor de script" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Monstra completion" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Folio de labor de Cantor (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyter Notebook (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Salveguarda como" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Salveguarda" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Tote le resultatos de calculation disponibile essera perdite. Tu vermente " +"vole restartar %1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Re-Initia %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Interruption" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Error de session: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Initialisation completate" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr " Il es initializante..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[Solmente de lectura]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" +"Tu vole incargar le Folio de travalio currente al servitor de web public?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Demanda - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" +"Iste Folio de travalio non es salveguardate. Tu deberea salveguardar lo ante " +"incargar." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Aviso - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Iste retroadministration non supporta scripts." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Edita" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Vide" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "F&olio de labor" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Preferentias" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&File" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Nove " + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Pannellos" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "Preferentia&s" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Color de fundo" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Predefinite" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Color de texto " + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Font" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Grasse" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Italic" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Augmenta grandor" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Diminue grandor" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Selige" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Reporta al Predefinite" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Monstra exitos" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Cela exitos" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Monstra adjuta" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Apparentia" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Interrumpite" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Barra de cerca" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Trova:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "Seque&nte" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Previe" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Reimplacia:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Reimplacia" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Reimpl&acia Toto" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Cerca in" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Distingue inter majusculas e minusculas" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Fonts de hierarchia" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Font de capitulo" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Familia de Font:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Dimension de Font:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Font de sub-capitulo" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Font de section" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Font de sub-section" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Font de paragrapho" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Font de subparagrapho" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Capitulo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Subcapitulo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Section" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Sub-section" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Paragrapho" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Sub-paragrapho" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Fixa Nivello de Herarchia" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Stilo de line solid" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Stilo de linea a lineetta" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Stilo de linea a punctos" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Stilo de linea a lineetta puncto" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Stilo de linea lineetta puncto puncto" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Spissor de linea" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Subtil" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Medie" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Spisse" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Color de linea" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Stilo de linea" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Configura imagine" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Duple pulsa hic per configurar preferentias de image" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Non pote cargar imagine %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Salveguarda exito de imagine" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Images (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Preferentias de imagine" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Aperi" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Grandor de monstrator" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Largessa" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Altessa" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Vista preliminar" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Grandor de imprimer" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Usa grandor de monstrator" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Preferentias de imagine" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(auto)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Aperi file de imagine" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Monstr codice LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Necun percurso per le executabile %1 specificate. Pro favor tu forni le " +"percurso correcte in le preferentias de application e essaya novemente." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"Le file specificate '%1' per le executabile '%2' non existe. Pro favor tu " +"forni le percurso corecte in le preferentias de application e essaya de novo." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"Le file specificate '%1' non puncta a un executabie. Pro favor tu forni le " +"percurso correcte in le preferentias de application e essaya novemente." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"Le programma %1 non finiva le execution postea %2 millisecundas durante le " +"test de integration de tracia (plot)." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" +"Falleva a aperir le file %1 durante le test de integration de tracia (plot)." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" +"Falleva a analysar le resultato durante le test de integration de tracia " +"(plot)." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Percurso al executabile de latex" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Percurso al executabile de dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Valor" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 bytes>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Ex:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "A:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Titulo principal" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Scala de abscissa" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Scala de ordinata" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Titulo de traciar (plot):" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Isto es contento de Jupyter non supportate de typos ('%1')" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"processo %1 ha morite inexpectatemente. Omne resultatos de calculation " +"essera perdite." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"processo %1 ha morite inexpectatemente con message \"%2\". Omne resultatos " +"de calculation essera perdite." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Tu selige supporto per pacchetto graphic %1, ma le supporto non pote esser " +"activate debite al exigentias mancante, assi le integrtion per iste pachetto " +"essera dishabilitate. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Interfacie de KDE a applicationes matematic" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" +"Mantenitor
      porto de Qt5/KF5, retro-administrationes de Scilab e Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Disveloppator" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Autor original
      Mantenitor (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Retro-administration de KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Retro-administration de Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Interfacie" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Icone de Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Usa retroadminstration " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Documentos de aperir." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Non poteva aperir le file %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Entra modo de modificar" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Netta attachamentos" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Error Mathematic de Cantor" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Falleva a leger le imagine \"%1\". Error \"%2\"" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Interruption de pagina ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Vade a contentos" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Cerca per parolas clave..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Trova in texto de pagina de documentation currente" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Refixa nivello de zoom a 100%" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Claude" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Salta al proxime objecto coincidente" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Salta al previe objecto coincidente" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Distingue sensibilemente inter majusculas e minusculas" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "Le file ha essite discargate con successo a Discargamentos (Downloads)" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Discargamento successose" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Files de Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Files de Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Omne files supportate" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Omne files" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Nomine:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Valor:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Adde nove variabile" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Carga variabiles" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Salveguarda Variabiles" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Remove Variabiles" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Cercar/Filtrar" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Sensibile al differentia inter majusculas e minusculas" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Coincide con parola complete" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Tu es secur que tu vole remover omne variabiles?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Carga File" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Salveguarda exito" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Remove exito" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Un componente del editor de texto KDE non pote trovar se;\n" +"Si vos place, vos controla vostre installation de KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Editor de script" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Editor de script -%1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Non trovate" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Attingite initio" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Attingite fin" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Reimplaciava %1 instantia" +msgstr[1] "Reimplaciava %1 instantias" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Commandos" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Resultatos" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Errores" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Texto" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Codice LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "Starta :" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" +"Crea un nove folio de labor per le systema de retroadministration seligite. " +"Si necun esseligite il essre demandate al usator qual sytema debe esser " +"usate al startar." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Retroadministration predefinite:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Folio de labor" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" +"Habilita typographic de LaTeX per le exitos de calculationes, si supportate " +"per le syustema de retroadministration" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "Typographic de LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Activa Evidentiar de Syntaxe" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Evidentiar syntaxe" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "Habilita Completion de syntaxe" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Monstra numeros de linea" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Numeros de linea" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Integra effectos de animation le folio de travalio" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" +"Sihabilitate, entratas de texto es alineate al margine del folio de labor e " +"non al margine del prompt" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "Non indentar entratas de texto" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Salveguarda formatar in texto rich quando salveguarda folio de travalio in " +"formato de Jupyter notebook" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "Evaluattion:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"Si habilitate, le usator essera demandate per confirmation ante restartar " +"le systema de retroadministration" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" +"Si habilitate, omne entratas a basso del currente essera evalutate " +"automaticamente" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "Reevaluta automaticamente entratas" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Numero de rangosin le resultato (0 per sin limite):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Maxime numero de rangos visibile in le resultato de entrata de commando. Usa " +"0 per functionar sin limitationes." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" +"Habilita typographic de LaTeX per expressiones mathematic in entratas de " +"MArkdown" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "Expressione mathematic via LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "Notifica re render fallimentos per expressiones mathematic" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Trova…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Objectivos de Cella Crude" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Adde objectivo personalisate." + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Converte a entrata de texto" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Converte a Cella Crude" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Objecto typo MIME:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Copia resultato" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Monstra renderite" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Monstra codice" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Monstra codice HTML" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Monstra Alternative Plan" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Monstra Html" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Monstra HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Non pote render File Eps. Tu pote necessitar pacchettos additional" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Salveguarda exito de texto" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "Files de texto (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Non pot escriber file %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Non pote scriber file." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Error durante que il salveguardava %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"In mod de sol lectura, Cantor non poteva garantir que le exportation essera " +"valide per %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Error cargante foli de stilo de latex.xsl" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Non poteva aperir le file %1." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Aperi file" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Non poteva aperir le file selectionate per leger." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" +"Le file selectionat non es un file valide projecto de Cantor o Jupyter. " + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Le file selectionate non es un valide file de projecto de Cantor," + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Iste folio de travalio esseva create usante Python2 que non es plus " +"supportate. Python3 essera usate." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python2 non es plus supportate" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"retroadministration de %1 non esseva trovate. Modificar e executar entratas " +"non es possibile." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Il ha alcun problemas con le retroadministration de %1,\n" +"pro favor verifica tu configuration o installa le paccos necessari.\n" +"Tu solmente potera vider iste folio de labor." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Notebooks de Jupyter con versiones minor que 4.5 (discoperite version %1.%2) " +"non es supportate." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Notebooks de Jupyter con versiones major que 4.5 (dicoperite version %1.%2) " +"non es supportate." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Iste notebook esseva create usante Python2 que non es plus supportate. " +"Python 3 essera usate." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "un objecto con claves: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "valor de non objecto JSON" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "trovate datos incorrecte (%1) que non es un cella de Jupyter" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "Le file non es notebook Jupyter valide" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Invalide schema de notebook Jupyter: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Converte a" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Commando" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Imagine" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Interruption de pagina" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Linea horizontal" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Entrata de hierarchia" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Inserta postea" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Inserta ante" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Inserta" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Zoom In (aggrandir)" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Zoom Out (Diminuer)" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Grandor Original" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Move entratas in alto" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Move entratas a basso" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Evaluta entratas" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Remove entratas" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Plica exitos de entrata de commando" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Expande exitos de entrata de commando" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Remove exitos de entrata de commando" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Exclude entrata de commando ex execution" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Adde entrata de commando de executar" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "&Color de texto ..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Color" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "&Evidentia texto ..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Font" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Dimen&sion de Font" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Bold" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Italic" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "S&ublineate" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Strike Out" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Alinea a &Sinistra" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Sinistra" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Alinea a &Centro" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Centro" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Alinea a Dexte&ra" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Dextera" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Justifica" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Justifica" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"Iste action removera omne resultatos sin le possibilitate de cancellation, " +"Tu es secur?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Remove omne exitos" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Blanco" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Nigre" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Rubie obscur" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Rubie" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Rubie Legier" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Verde obscur" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Verde" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Verde legier" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Blau obscur" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Blau" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Blau legier" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Jalne obscur" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Jalne" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Jalne Legier" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Cyano Obscur" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Cyano" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Cyano Legier" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Magenta obscur" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Magenta legier" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Orange obscur" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Orange" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Orange legier" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Gris Obscur" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Gris" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Gris Legier" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Move in alto" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Move a basso " + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Tu vermente vole remover iste entrara?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Remove entrata" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Entrata Obscur" + +#~ msgid "Animate Worksheet" +#~ msgstr "Folio de Travalio Animate" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "Al initiar, si un retroadministration predefinite es fixate, crea un " +#~ "folio de travalio per illo in loco de monstrar le dialogo de seliger le " +#~ "retroadministration." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Quando habilitate, Cantor evalutera automaticamente cata entrata infra " +#~ "le currente." + +#~ msgid "Defaults" +#~ msgstr "Predefinite" + +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "Isto es valor initial per le option \"Typar usante LaTeX\" de session, " +#~ "cuje responsa es permitter render alcun exito de retroadministration " +#~ "como latex, si supportate. Pro exemplo, exitos de Maxima esssera rendite " +#~ "via latex, si le option es habilitate." + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "" +#~ "Activa typographic de LaTeX (functiona solmente si latex es installate)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "Isto ed valor initial per le option de session \"Evidentiar de Syntaxe\", " +#~ "cuje responsa es evidentiar de syntaxe intra entratas de commando. " + +#~ msgid "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." +#~ msgstr "" +#~ "Iste es le valor initial per le option de \"Completion\" de session, que " +#~ "responde per autocompletion de codice." + +#~ msgid "" +#~ "This is initial value for the session \"Line numbers\" option, which " +#~ "response for presence of command entries execution numbers." +#~ msgstr "" +#~ "Isto es valor initial per le option \"Numeros de linea\" de session, cuje " +#~ "responsa es le presentia de numeros de execution de entratas de commando." + +#~ msgid "Enable Line Numbers" +#~ msgstr "Habilita numeros de linea" + +#~ msgid "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." +#~ msgstr "" +#~ "Isto es valor initial per le option \"Folio de travalio animate\" de " +#~ "session, cuje responsa es le presentia de animation de folio de travalio." + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Habilita Animationes de Folio de Travalio" + +#~ msgid "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." +#~ msgstr "" +#~ "Iste es le valor initial per le option de \"Mathematica incorporate\" de " +#~ "session, cujeresponsa es habilitar le rendition de expression mathematic " +#~ "in entratas de texto e markdown." + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "" +#~ "Habilita Mathematica Incorporate (il functiona solmente si pdflatex es " +#~ "installate)" + +#~ msgid "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." +#~ msgstr "" +#~ "Si dishabilitate, alora un aviso re reinitiar nn apparera al pression de " +#~ "button de reinitiar" + +#~ msgid "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." +#~ msgstr "" +#~ "Si habilitate, alora sur ulle error de render mathematic apparera un " +#~ "fenestra de information con description de error." + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "" +#~ "Monstra message re error sur fallimento a render mathematica incorporate" + +#~ msgid "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." +#~ msgstr "" +#~ "Si habilitate, alora vetere stilo de identar de entratas de Cantor (omne " +#~ "entratas alineate a sinistra) essera usate." + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Usa vetere stilo de indentar de entratas de Cantor" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Si habilitate, alora Cantor immagazinara rich formatar de entratas de " +#~ "texto al salveguardar a formato de ntebook de Jupyter." + +#~ msgid "" +#~ "Graphical package, for which will be enable support for embedding plots" +#~ msgstr "" +#~ "Pcchetto graphic, pro le qual essera habilitate supporto per tracias " +#~ "(plots) incorporate" + +#~ msgid "" +#~ "Graphic package, which code will be used for plotting via \"Plot\" Cantor " +#~ "menu." +#~ msgstr "" +#~ "Pacchetto graphic, cuje codice essera usate per traciar (plotting) via " +#~ "menu de Cantor \"Plot (Tracia)\"." + +#~ msgid "Matplotlib (with seaborn, ggplot support too)" +#~ msgstr "Matplotlib (anque con supporto de seaborn, ggplot)" + +#~ msgid "Plot.ly" +#~ msgstr "Plot.ly" + +#~ msgid "All supported" +#~ msgstr "Toto supportate" + +#~ msgid "" +#~ "Graphic package, used for plotting. When integrated plots option is " +#~ "enabled, then plots from the package will be integrated to worksheet" +#~ msgstr "" +#~ "Pacchetto graphic, usate per traciar (plotting). Quando le option de " +#~ "tracias (plots) integrate es habilitate, alora tracias (plots) ex le " +#~ "pacchetto essera integrate al folio de labor" + +#~ msgid "Graphic Package: " +#~ msgstr "Pacchetto graphic: " + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      Le modo de KDE de facer Mathematica" + +#~ msgid "Documentation:" +#~ msgstr "Documentation:" + +#~ msgid "Show %1 Help" +#~ msgstr "Monstra adjuta %1" + +#~ msgid "Path to Julia:" +#~ msgstr "Percurso per Julia:" + +#~ msgid "Choose Image" +#~ msgstr "Elige Imagine" diff --git a/po/it/cantor.po b/po/it/cantor.po new file mode 100644 index 0000000..e2f3830 --- /dev/null +++ b/po/it/cantor.po @@ -0,0 +1,5312 @@ +# translation of cantor.po to Italian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the cantor package. +# Pino Toscano , 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021. +# Paolo Zamponi , 2022. +# Vincenzo Reale , 2022, 2023. +# +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-09-12 15:27+0200\n" +"Last-Translator: Vincenzo Reale \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 22.12.1\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Paolo Zamponi,Pino Toscano" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "zapaolo@email.it,toscano.pino@tiscali.it" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pausa" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Avvia" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Ferma" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Salva risultato dell'animazione" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Animazioni (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Grafico avanzato" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Grafico" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Espressione:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Opzioni aggiuntive:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Grafico" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Opzione attiva" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Calcola" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Calcola differenziale" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variabile:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Volte:" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Pacchetto" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importa pacchetto" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Pacchetto:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integra" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Limite inferiore:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Limite superiore:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "integrale definito" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "Algebra &lineare" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Crea matrice" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Colonne:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Righe:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Calcola autovalori" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrice:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Calcola autovettori" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Inverti matrice" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Grafico 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variabile" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Nome" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimo:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Massimo:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Grafico 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1a variabile" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2a variabile" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Avvia script" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Risolvi equazioni" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Equazioni:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variabili:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Scegli il motore" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Versione raccomandata: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"

      %1

      Per ulteriori informazioni, consulta %2.
      " + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Alcuni requisiti non sono " +"soddisfatti: %1

      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Rendi questo motore il predefinito" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia è un linguaggio di programmazione dinamico di alto livello ed " +"elevate prestazioni per il calcolo tecnico, con una sintassi familiare agli " +"utenti di altri ambienti di calcolo tecnico. Fornisce un compilatore " +"avanzato, esecuzione parallela e distribuita, accuratezza numerica e una " +"completa libreria di funzioni matematiche." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"Il percorso di Julia specificato nelle impostazioni dell'applicazione deve " +"essere l'eseguibile, e collegamenti simbolici non sono permessi. Fornisci il " +"percorso corretto nelle impostazioni dell'applicazione e riprova." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Cantor non ha potuto determinare la versione di Julia per «%1». Specifica il " +"percorso corretto dell'eseguibile di Julia (un collegamento simbolico non è " +"permesso) e riprova." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Stai provando ad usare Cantor con Julia v%1.%2.%3. Questa versione di Cantor " +"è stata compilata con il supporto a Julia v%4.%5.%6. Indica questa versione " +"di Julia oppure ricompila Cantor usando la versione %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Percorso del REPL nativo di Julia" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Avvia gestione delle variabili" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Integra grafici nel foglio di lavoro" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Pacchetto grafico per l'assistente per il grafico" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Spiacente, ma Gadfly non supporta grafici 3D" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "*File di script Julia (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Errore – Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"Impossibile accedere alla sessione di Julia a causa di un problema interno " +"col file interno mancante - «%1»" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" +"Impossibile accedere alla sessione di Julia a causa di un problema interno " +"sconosciuto" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Il processo di Julia ha smesso di funzionare." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Impossibile avviare il processo di Julia." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" +"La comunicazione con il processo di Julia non è riuscita per motivi " +"sconosciuti." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Attualmente per Julia è supportato solo GR (https://gr-framework.org/), un " +"framework per la visualizzazione di applicazioni. Se non lo hai già fatto, " +"installa questo pacchetto. Per farlo, esegui Pkg.install(\"GR\") in Cantor o " +"in Julia REPL. Nota, questa operazione può essere lunga e dovrebbe essere " +"eseguita preferibilmente in Julia REPL, che è in grado di mostrare i " +"progressi dell'installazione del pacchetto." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Generale" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Eseguibile:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Integrazione del grafico:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Se abilitato, i grafici saranno mostrati dentro il foglio di lavoro. " +"Altrimenti appariranno in una finestra separata." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Abilitato" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Gestione delle variabili:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Monitora la creazione e la distruzione delle variabili e mostra le variabili " +"esistenti nel pannello delle variabili." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Formato interno del grafico:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" +"Formato interno dei grafici, se l'incorporazione dei grafici è abilitata." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Pacchetto grafico da usare con l'assistente per il Grafico" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Pacchetto per l'assistente per il grafico" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Plots" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Esegui automaticamente" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Comandi da eseguire automaticamente" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Documentazione" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra&language=it" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Lista di script da eseguire automaticamente all'inizio di una sessione" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Errore: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Comandi di avvio automatico, che saranno eseguiti alla creazione di un " +"foglio di lavoro. Possono essere utili per caricare moduli necessari, " +"modificare l'ambiente, ecc." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua è un linguaggio leggero per script, con una semplice sintassi " +"procedurale. Ci sono diverse librerie matematiche e scientifiche in Lua." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Percorso del comando «luajit»" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "*File di script Lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Percorso a luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" +"

      Sistema di aiuto per Maxima

      La funzione apropos

      Cerca " +"nomi di Maxima che appaiono ovunque al loro interno; name deve essere " +"una stringa o un simbolo. Quindi apropos(exp) restituisce un elenco " +"di tutti i flag e delle funzioni che hanno exp nel loro nome, ad esempio " +"expand, exp e exponentialize. Quindi, se ti ricordi " +"solo una parte di un comando o di una variabile di Maxima puoi usare questo " +"comando per trovare il resto. Allo stesso modo puoi digitare " +"apropos(tr_) per trovare un elenco degli interruttori relativi al " +"traduttore, la maggior parte dei quali inizia con tr_." +"

      apropos(\"\") restituisce invece un elenco con tutti i nomi " +"di Maxima.

      apropos restituisce un elenco vuoto [] se non viene " +"trovato nessun nome.

      La funzione describedescribe(string) è equivalente a describe(string, exact)." +"

      describe(string, exact) trova una voce con il titolo uguale " +"(a parte le maiuscole) a string, se c'è.

      describe(string, " +"inexact) trova tutte le voci documentate che contengono string nel loro " +"titolo. Se ce n'è più di una Maxima chiede all'utente di selezionarne una o " +"più da visualizzare.

      ? pippo (con uno spazio tra ? e " +"pippo) è equivalente a describe(\"pippo\", exact), mentre " +"?? pippo è equivalente a describe(\"pippo\", inexact)." +"

      describe(, inexact) produce un elenco con tutti gli argomenti " +"documentati nel manuale in linea.

      describe cita il suo " +"argomento. describe restituisce true se viene trovata della " +"documentazione, diversamente false.

      La funzione example

      example(topic) visualizza alcuni esempi di topic, che è " +"un simbolo o una stringa. Per ottenere degli esempi per operatori come " +"if, do, o lambda l'argomento deve essere una stringa ad " +"esempio example(\"do\"). example non è sensibile alle " +"maiuscole. La maggior parte degli argomenti sono nomi di funzioni." +"

      example() restituisce l'elenco di tutti gli argomenti " +"riconosciuti.

      Il nome del file contenente gli esempi è dato dalla " +"variabile di opzione globale manual_demo, che per comportamento " +"predefinito è «manual.demo».

      example cita il suo " +"argomento. example restituisce done se non sono stati trovati " +"esempi o non ci sono argomenti, diversamente restituisce l'elenco di tutti " +"quelli riconosciuti." + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima è un sistema per la manipolazione delle espressioni simboliche " +"e numeriche, incluse la differenziazione, l'integrazione, la serie di " +"Taylor, le trasformate di Laplace, le equazioni differenziali ordinarie, i " +"sistemi di equazioni lineari, i polinomi, oltre agli insiemi, le liste, i " +"vettori, le matrici e i tensori. Maxima produce risultati numeri ad alta " +"precisione usando le frazioni esatte, i numeri interi a precisione " +"arbitraria e i numeri in virgola mobile a precisione variabile. Maxima può " +"disegnare il grafico di funzioni e i dati in due o in tre dimensioni." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Percorso dell'eseguibile di Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Errore: troppi */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Errore: troppi /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Errore: atteso \" prima di ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "In attesa del risultato del grafico" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "File batch di Maxima (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Non è stato possibile avviare Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima è andato in crash. Riavvio..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima è andato in crash due volte in un breve periodo. Riavvio annullato." + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave è un linguaggio di alto livello, orientato principalmente " +"al calcolo numerico.
      Fornisce una conveniente interfaccia a riga di " +"comando per risolvere in modo numerico problemi lineari e non lineari, e per " +"effettuare altri esperimenti numerici usando un linguaggio molto compatibile " +"con Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "File di script di Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Errore di sintassi" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Prova di integrazione del grafico non riuscita" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "L'integrazione dei grafici verrà disabilitata." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"L'integrazione dei grafici non funziona perché Cantor ha scoperto che non " +"c'è nessun motore grafico per Octave, che non può creare i grafici. Questa " +"conclusione è stata presa in seguito al mancato output alla funzione " +"available_graphics_toolkits(). Sembra che tu debba installare alcuni " +"pacchetti aggiuntivi, ad esempio gnuplot, fltk oppure qt per poter creare " +"dei grafici." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python è un linguaggio di programmazione dinamico abbastanza potente " +"usato in vari ambiti scientifici. Ci sono diversi pacchetti scientifici per " +"Python." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# Spiacente, ma Bokeh non supporta grafici 3D" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "File di script Python (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Il server Python di Cantor ha smesso di funzionare." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Impossibile avviare il server Python di Cantor." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"La comunicazione con il server Python di Cantor è fallita per motivi " +"sconosciuti." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Per poter usare la grafica integrata col pacchetto Matplotlib, devi prima " +"installare il pacchetto python «matplotlib»." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Per poter usare la grafica integrata con Plot.ly, devi prima installare il " +"pacchetto python «plotly» e uno speciale eseguibile «orca» compatibile con " +"«Plot.ly». Per i dettagli, vedi l'articolo «Static Image Export» nella " +"documentazione di Plot.ly." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Finestra del grafico" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funzioni" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Titolo" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Espressione" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Aggiungi" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Rimuovi" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Pulisci lista" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Variabile X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Stile" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Linee" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Punti" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Punti e linee" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Scatole" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Istogramma" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Passi" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Candele giapponesi" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Punti" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Smussamento" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Nessuno/a" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monotòno" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Spline naturale cubica" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bézier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bézier (monotòno)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Intervallo della funzione" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Intervallo X" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Tasso di ca&mpionamento" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Dimensione del &passo" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Opzioni" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Titolo del grafico" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Etichetta dell'asse X" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Etichetta dell'asse Y" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Posizione della legenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Nascondi legenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Alto a sinistra" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Alto a destra" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Basso a sinistra" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Basso a destra" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Sotto" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Fuori" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Mostra griglia" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Mostra bordo completo" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Usa colori" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Mostra in linea" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Scala X logaritmica" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Scala Y logaritmica" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Opzioni del file" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Salva grafico su file" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Tipo di file" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Rileva dal nome del file" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! non è la replica del software normalmente disponibile " +"nelle calcolatrici economiche. Qalculate! mira a fare un uso completo " +"dell'interfaccia, della potenza e della flessibilità superiori dei computer " +"moderni. Il centro dell'attenzione in Qalculate! è l'inserimento delle " +"espressioni. Invece di inserire ogni numero separatamente in un'espressione " +"matematica, puoi scrivere direttamente l'espressione intera e modificarla in " +"seguito. La valutazione delle espressioni è flessibile e tollera gli errori, " +"e anche nel caso di errore Qalculate! lo segnalerà. Tuttavia, le espressioni " +"che non possono essere risolte correttamente non sono errori. Qalculate! " +"semplificherà il più possibile e risponderà con un'espressione. In aggiunta " +"a numeri e operatori aritmetici, un'espressione può contenere una qualsiasi " +"combinazione di variabili, unità e funzioni." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Se e come convertire automaticamente le unità. Se vero, converte alle unità " +"del SI che si adattano meglio (il minor numero di unità)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Unità predefinita per gli angoli in funzioni trigonometriche." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "La base dei numeri analizzati e valutati." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Se il risultato della valutazione sarà semplificato o fattorizzato." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Se i numeri razionali saranno visualizzati con i decimali, come frazione, " +"oppure come una forma intermedia." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Mostra con tre puntini che le cifre di un numero continuano all'infinito, " +"invece di arrotondare (ad es. 2/3 viene mostrato come 0.666666... invece di " +"0.666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Usa tutti i prefissi decimali del SI. Se falso, i prefissi che non sono un " +"multiplo di migliaia (centi, deci, deca, hecto) non saranno usati " +"automaticamente." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Se abilitato, saranno usati esponenti negativi invece della divisione (ad " +"es. 5/x^2 diventa 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Visualizzazione dei numeri." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Se abilitato, i grafici saranno mostrati dentro il foglio di lavoro. " +"Altrimenti appariranno in una finestra separata." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Se usare i colori nei grafici." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Se disegnare una griglia." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Se disegnare bordi completi attorno ai grafici." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Spessore delle linee, in pixel." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Numero di passi di interpolazione da usare nei grafici." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Modalità di smussamento nei grafici." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Stile dei grafici." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Posizione della legenda nei grafici." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate segnala che non può stampare. gnuplot è installato?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "%1 mancante" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 deve essere un numero." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 deve essere un numero intero." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 deve essere un valore booleano." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "opzione non valida per %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "trovate espressioni multiple in un comando «plot» (%1 e %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "ERRORE" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "AVVISO" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Non esiste alcuna funzione, variabile o unità con il nome specificato." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funzione: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Interfaccia dei grafici" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Disegna una o più funzioni in un grafico in linea o in una finestra separata." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "espressione" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "opzione" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "valore" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "intero" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "booleano" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "numero" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "predefinito: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Il nome della funzione" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Etichetta del titolo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "Etichetta dell'asse X" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Etichetta dell'asse Y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"L'immagine in cui salvare il grafico. Se vuoto mostra il grafico in una " +"finestra sullo schermo. Se inline=true, l'immagine è mostrata " +"indipendentemente dal valore di questa opzione." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Il formato di immagine da usare. Uno di auto, png, ps, eps, latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "Imposta a true per grafici a colori, false per bianco e nero." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Valore minimo dell'asse X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Valore massimo dell'asse X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Se usare una scala logaritmica per l'asse X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Se usare una scala logaritmica per l'asse Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Base logaritmica per l'asse X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Base logaritmica per l'asse Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Se mostrare una griglia nel grafico." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "Se circondare il grafico da bordi su tutti i lati (non solo da assi)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Spessore delle linee." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Dove posizionare la legenda del grafico. Uno di none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Smussamento nel grafico. Uno di none, unique, csplines, bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Stile del grafico. Uno di lines, points, points_lines, boxes, histogram, " +"steps, candlesticks, dots" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Usa scala per il secondo asse X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Usa scala per il secondo asse Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Se disegnare il grafico in linea, invece di una nuova finestra." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "La distanza tra due punti di interpolazione. Vedi anche «steps»." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Il numero di punti di interpolazione. Vedi anche «steps»." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Il nome della variabile X. Deve essere una variabile sconosciuta" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Salva variabili su file" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Salva su un file tutte le variabili definite. Possono essere ricaricate con " +"%1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "file" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "file: il file in cui salvare" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Carica variabili da file" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Carica variabili da un file precedentemente creato con %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "file: il file da caricare" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Base dei numeri:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Formato delle frazioni:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Decimale" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Esatto" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Frazionale" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Combinato" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Visualizzazione dei numeri:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Pura" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Scientifica" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Precisione" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Indica serie infinite:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Usa tutte le unità del SI:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Usa esponenti negativi:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Valutazione" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Converti alle unità migliori del SI:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radianti" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Gradi" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradi centesimali" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Modalità di struttura:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Semplifica" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Fattorizza" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Unità degli angoli:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Grafico" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Mostra grafici in linea:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Mostra bordi completi:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Spessore delle linee:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Tasso di campionamento:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Modalità di smussamento:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Spline naturale cubica" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Passi" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Posizione della legenda:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Grafici a colori:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Mostra griglia:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Stile del grafico:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Modifica voce" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Aggiungi una nuova voce" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Il nome non può essere vuoto." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Aggiungi documentazione locale" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Ottieni nuova documentazione" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Scarica documentazione aggiuntiva" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Il file compresso d'aiuto di Qt non è valido." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "La documentazione è stata già importata." + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Modifica" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Elimina" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Disinstalla questo tramite GHNS." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Installa ulteriori file della documentazione" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Nome" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Percorso" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Aggiungi" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Icona:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Seleziona un'icona" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Nome:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Inserisci un nome" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Seleziona un nome..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Percorso:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Seleziona un file Qt Help..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Seleziona un file Qt Help..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" +"

      Sistema di aiuto di R: help() e ?:


      la funzione " +"help() e l'operatore di aiuto in R ? forniscono l'accesso alle " +"pagine di documentazione delle funzioni di R, degli insiemi di dati e degli " +"altri oggetti, sia per i pacchetti nella distribuzione standard di R che per " +"quelli aggiuntivi.

      Ad esempio, per aver accesso alla documentazione " +"della funzione lm (linear model) standard, digita il comando " +"help(lm), oppure help(\"lm\"), o ?lm o anche ?" +"\"lm\" (le virgolette sono facoltative).

      Per aver accesso a una " +"funzione in un pacchetto che non è attualmente caricato, specifica anche il " +"nome del pacchetto: ad esempio, per ottenere quella della funzione rlm() (robust linear model) del pacchetto MASS, help(rlm, package=\"MASS\").

      In R, i nomi standard consistono di lettere maiuscole e " +"minuscole, numeri (0-9), caratteri di sottolineatura (_) e punti (.), " +"inoltre devono iniziare con una lettera o con un punto. Devi quotare un nome " +"non standard per ottenere aiuto su un oggetto con questo nome (come " +"l'operatore di aiuto ?): ad esempio, help('?') o ?\"?\"." +"

      Puoi anche usare la funzione help() per accedere alla " +"informazioni su un pacchetto della libreria, ad esempio help(package=" +"\"MASS\"), che visualizza un indice delle pagine di aiuto disponibili " +"sul pacchetto, insieme ad altre informazioni.

      Le pagine di aiuto per " +"le funzioni di solito includono una sezione con degli esempi eseguibili che " +"illustrano come agisce la funzione. Puoi eseguirli nella sessione di R " +"corrente con il comando example(), ad esempio example(lm)." + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R è un linguaggio di programmazione e un ambiente per l'analisi e il " +"disegno statistico, simile al linguaggio di programmazione e ambiente S.
      Dispone di un'ampia varietà di tecniche statistiche (modellazione lineare e " +"non lineare, classici test di statistica, analisi di serie storiche, " +"classificazione, clustering, ...) e di disegno; inoltre è altamente " +"estensibile. Spesso il linguaggio S è scelto per le ricerche statistiche, e " +"R fornisce un modo open source per prendere parte a quella attività." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Errore durante l'apertura del file «%1»" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "File di script R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Errore durante l'analisi del comando" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "URL della documentazione locale di R" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Doppio clic per aprire la finestra di dialogo di scelta file" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|Sorgenti R (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage è un software matematico libero open source rilasciato secondo i " +"termini della licenza GPL.
      Combina la potenza di molti pacchetti open " +"source in un'unica interfaccia basata su Python." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Percorso dell'eseguibile di Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Abilita la scrittura LaTeX per il motore Sage" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Risultato di %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"L'ultimo output è stato: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "File di script Python (*.py);;File di script Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"La versione di Sage %1.%2 non è supportata. Aggiorna la tua installazione a " +"versioni supportate per usarla in Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Non è stato possibile determinare la versione di Sage. Controlla la tua " +"installazione e il risultato di «sage -v»." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "" +"Il processo Sage è andato in crash durante la valutazione di questa " +"espressione" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Il processo Sage è andato in crash" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "" +"Il processo Sage è terminato durante la valutazione di questa espressione" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Il processo Sage è terminato" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Impossibile avviare Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "Scrittura LaTeX:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"Il risultato LaTeX di Sage non è sempre corretto, quindi la scrittura LaTeX " +"può essere disabilitata per una migliore esperienza" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab è un pacchetto di software libero multi-piattaforma per il " +"calcolo numerico e un linguaggio di programmazione di alto livello orientato " +"numericamente. Scilab è distribuito secondo i termini della licenza CeCILL " +"(compatibile con la licenza GPL)." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Percorso dell'eseguibile di Scilab" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;File di script di Scilab (*.sce);;File di funzioni di Scilab (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "Il file %1 è già aperto." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Apri file" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Scarica gli esempi" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Apri esempio" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Vai al foglio di lavoro precedente" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Vai al foglio di lavoro successivo" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Tutti i file supportati (*.cws *ipynb);;Foglio di lavoro Cantor (*.cws);;" +"Jupyter Notebook (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Non è stato trovato nessun motore

      \n" +"
      Puoi provare a:\n" +"
      • modificare le impostazioni nella finestra di configurazione;
      • installare i pacchetti per il seguente programma:
      • %2
      " +msgstr[1] "" +"

      Non è stato trovato nessun motore

      \n" +"
      Puoi provare a:\n" +"
      • modificare le impostazioni nella finestra di configurazione;
      • installare i pacchetti per uno dei seguenti programmi:
      • " +"%2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Errore" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Il motore %1 non è installato" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"Il motore %1 è installato, ma è inattivo. Controlla la tua installazione e " +"le impostazioni di Cantor" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sessione %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Impossibile trovare il componente di Cantor, errore %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Calcolo..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Pronto" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Modificato" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "Ci sono fogli di lavoro non salvati. Vuoi chiudere?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Chiudi Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Il progetto corrente è stato modificato. Vuoi salvarlo?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Salva progetto" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Formattazione" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Il motore che viene usato come predefinito" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Abilita la scrittura LaTeX in modo predefinito" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Attiva l'evidenziazione della sintassi in modo predefinito" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Abilita completamento delle parole in modo predefinito" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Attiva la numerazione delle espressioni in modo predefinito" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Anima le modifiche nel foglio di lavoro" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Abilita la visualizzazione di espressioni matematiche dentro $$..$$ in voci " +"di testo e Markdown (richiede che pdflatex sia installato)." + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Rivaluta automaticamente le voci al di sotto di quella corrente" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Chiedi conferma prima di riavviare il motore" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Salva formattazione di testo ricco delle voci testuali quando salvi in " +"formato Jupyter notebook" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Usa il vecchio stile di Cantor per il piazzamento delle voci" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Mostra l'errore di visualizzazione delle formule matematiche" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Limite di linee visibili per risultati di testo" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Gerarchia dei caratteri per i capitoli" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Gerarchia dei caratteri in corsivo per i capitoli" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Gerarchia dei caratteri in corsivo per i capitoli" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Gerarchia dei caratteri in grassetto per i capitoli" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Gerarchia dei caratteri per i sotto-capitoli" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Gerarchia dei caratteri in corsivo per i sotto-capitoli" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Gerarchia dei caratteri in corsivo per i sotto-capitoli" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Gerarchia dei caratteri in grassetto per i sotto-capitoli" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Gerarchia dei caratteri per le sezioni" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Gerarchia dei caratteri in corsivo per le sezioni" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Gerarchia dei caratteri in grassetto per le sezioni" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Gerarchia dei caratteri per le sotto-sezioni" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Gerarchia dei caratteri in corsivo per le sotto-sezioni" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Gerarchia dei caratteri in grassetto per le sotto-sezioni" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Gerarchia dei caratteri per i paragrafi" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Gerarchia dei caratteri in corsivo per i paragrafi" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Gerarchia dei caratteri in grassetto per i paragrafi" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Gerarchia dei caratteri per i sotto-paragrafi" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Gerarchia dei caratteri in corsivo per i sotto-paragrafi" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Gerarchia dei caratteri in grassetto per i sotto-paragrafi" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Salva come testo semplice" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Esporta come LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Vàluta foglio di lavoro" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Ingrandimento" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Scrittura usando LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Evidenziazione della sintassi" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Completamento" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Numeri di riga" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Animazioni" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Formule matematiche" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Riavvia il motore" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Vàluta voce" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Inserisci voce di comando" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Inserisci voce di testo" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Inserisci voce di Markdown" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Inserisci voce di LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Inserisci interruzione di pagina" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Inserisci immagine" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Collassa tutti i risultati" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Espandi tutti i risultati" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Rimuovi tutti i risultati" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Rimuovi la voce corrente" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Mostra editor degli script" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Mostra completamento delle parole" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "Componente Cantor" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Foglio di lavoro di Cantor (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyter Notebook (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Salva come" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Salva" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Tutti i risultati disponibili dei calcoli saranno persi. Vuoi veramente " +"riavviare %1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Riavviare %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Interrompi" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Errore di sessione: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Inizializzazione completata" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Inizializzazione..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[sola lettura]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Vuoi inviare il foglio di lavoro corrente ad un server web pubblico?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Domanda – Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" +"Il foglio di lavoro non è salvato. Dovresti salvarlo prima di inviarlo." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Avviso – Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Questo motore non supporta gli script." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Modifica" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Visualizza" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Foglio di lavoro" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Impostazioni" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&File" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Nuovo" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Pannelli" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "Imp&ostazioni" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Colore di sfondo" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Predefinito" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Colore del testo" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Carattere" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Grassetto" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Corsivo" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Aumenta dimensione" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Diminuisci dimensione" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Seleziona" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Valori predefiniti" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Mostra risultati" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Nascondi risultati" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Mostra aiuto" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Aspetto" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Interrotto" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Barra di ricerca" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Trova:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Successivo" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Precedente" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Sostituisci:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Sostituisci" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Sostituisci &tutto" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Cerca in:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Distingui le maiuscole" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Gerarchia dei caratteri" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Carattere dei capitoli" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Famiglia di caratteri:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Dimensione carattere:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Carattere dei sottocapitoli" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Carattere delle sezioni" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Carattere delle sottosezioni" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Carattere dei paragrafi" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Carattere dei sottoparagrafi" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Capitolo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Sottocapitolo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Sezione" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Sottosezione" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Paragrafo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Sottoparagrafo" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Imposta il livello della gerarchia" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Stile pieno" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Stile trattino" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Stile punto" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Stile trattino-punto" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Stile trattino-punto-punto" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Spessore della linea" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Fine" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Media" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Spessa" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Colore della linea" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Stile della linea" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Configura immagine" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Doppio clic qui per configurare le impostazioni dell'immagine" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Impossibile caricare l'immagine %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Salva il risultato come immagine" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Immagini (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Impostazioni dell'immagine" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Apri" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Dimensioni per la visualizzazione" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Larghezza" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Altezza" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Anteprima" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Dimensioni per la stampa" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Usa le dimensioni per la visualizzazione" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Impostazioni dell'immagine" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(automatica)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Apri immagine" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Mostra codice LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Non è stato specificato alcun percorso per l'eseguibile %1. Fornisci il " +"percorso corretto nelle impostazioni dell'applicazione e riprova." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"Il file specificato «%1» per l'eseguibile di %2 non esiste. Fornisci il " +"percorso corretto nelle impostazioni dell'applicazione e riprova." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"Il file specificato «%1» non è un eseguibile. Fornisci il percorso corretto " +"nelle impostazioni dell'applicazione e riprova." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"Il programma %1 non ha terminato l'esecuzione della prova di integrazione " +"del grafico dopo %2 millisecondi" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "Impossibile aprire il file %1 nella prova di integrazione del grafico." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" +"Impossibile elaborare il risultato nella prova di integrazione del grafico." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Percorso dell'eseguibile «latex»" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Percorso dell'eseguibile «dvips»" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Valore" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 byte>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Da:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "A:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Titolo principale" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Scala delle ascisse" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Scala delle ordinate" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Titolo del grafico:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Questo tipo di contenuti di Jupyter («%1») non è supportato" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"Il processo %1 è terminato in maniera inaspettata. Tutti i risultati dei " +"calcoli sono persi." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"Il processo %1 è terminato in maniera inaspettata con messaggio «%2». Tutti " +"i risultati dei calcoli sono persi." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Hai scelto il supporto per il pacchetto grafico %1, ma questo non può essere " +"attivato per mancanza di requisiti. L?integrazione per questo pacchetto " +"verrà disabilitata. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Interfaccia KDE per applicazioni matematiche" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Responsabile
      Conversione a Qt5/KF5, motori Scilab e Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Sviluppatore" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Autore originale
      Responsabile (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Motore di KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Motore di Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Interfaccia" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Icona di Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Usa il motore " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Documento da aprire." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Impossibile aprire il file «%1»" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Entra in modalità di modifica" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Annulla allegati" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Errore matematico di Cantor" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Impossibile leggere l'immagine «%1». Errore «%2»" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Interruzione di pagina ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Vai ai contenuti" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Cerca per parole chiave..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Trova nel testo della pagina di documentazione attuale" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Ripristina il livello di ingrandimento al 100%" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Chiudi" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Passa alla corrispondenza successiva" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Passa alla corrispondenza precedente" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Corrispondenza maiuscole/minuscole" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "Il file è stato scaricato con successo in Scaricati." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Scaricato con successo" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "File di Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "File di Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Tutti i file supportati" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Tutti i file" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Nome:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Valore:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Aggiungi una nuova variabile" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Carica variabili" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Salva variabili" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Rimuovi variabili" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Ricerca/Filtro" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Distingui maiuscole" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Corrispondenza con la parola completa" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Sei sicuro di voler rimuovere tutte le variabili?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Apri file" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Salva risultato" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Rimuovi risultato" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Impossibile trovare un componente di editor di testi per KDE;\n" +"controlla la tua installazione di KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Editor degli script" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Editor degli script - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Non trovato" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Raggiunto l'inizio" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Raggiunta la fine" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Sostituita %1 occorrenza" +msgstr[1] "Sostituite %1 occorrenze" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Comandi" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Risultati" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Errori" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Testo" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Codice LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "Avvio:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" +"Crea un nuovo foglio di lavoro per il sistema di motore selezionato. Se non " +"ne è stato selezionato nessuno, all'utente viene chiesto quale sistema usare " +"all'avvio." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Motore predefinito:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Foglio di lavoro:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" +"Abilita l'impaginazione LaTeX per i risultati dei calcoli, se supportata dal " +"motore di sistema" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "Scrittura LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Abilita evidenziazione della sintassi" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Evidenziazione della sintassi" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "Abilita il completamento della sintassi" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Mostra i numeri di riga" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Numeri di riga" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Abilita gli effetti di animazione nel foglio di lavoro" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" +"Se abilitata, le voci di testo sono allineate al bordo del foglio di lavoro " +"e non al bordo del prompt" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "Non usare il rientro per le voci di testo" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Usa la formattazione in testo ricco per le voci testuali quando salvi in " +"formato Jupyter Notebook" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "Valutazione:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"Se abilitato, all'utente verrà chiesta una conferma prima di riavviare il " +"motore di sistema" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" +"Se abilitato, tutte le voci sotto alla corrente verranno valutate " +"automaticamente" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "Rivaluta automaticamente le voci" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Numero di righe nel risultato (0 per non avere limiti):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Numero massimo di righe visibili nel risultato di una voce di comando. Usa 0 " +"per non avere limiti." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" +"Abilita la composizione LaTeX per le espressioni matematiche nelle voci " +"Markdown" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "Espressioni matematiche con LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "Notifica l'impossibilità di visualizzare le formule matematiche" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Trova…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Destinazioni come celle grezze" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Aggiungi obiettivo personalizzato" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Converti in voce di testo" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Converti in cella grezza" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Tipo MIME di destinazione:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Copia risultato" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Mostra risultato della visualizzazione" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Mostra codice" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Mostra codice HTML" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Mostra alternativa semplice" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Mostra HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Mostra HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" +"Impossibile visualizzare il file Eps. Potresti aver bisogno di pacchetti " +"aggiuntivi." + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Salva il risultato come testo" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "File di testo (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Impossibile scrivere il file %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Impossibile scrivere il file." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Errore durante il salvataggio del file «%1»" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"In modalità in sola lettura Cantor non può garantire che l'esportazione di " +"%1 sarà valida." + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Errore durante il caricamento del foglio di stile «latex.xsl»." + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Impossibile aprire il file «%1»." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Apri file" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Impossibile aprire il file selezionato per leggerlo." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "Il file selezionato non è un progetto valido di Cantor o di Jupyter." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Il file selezionato non è un progetto valido di Cantor." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Questo foglio di lavoro è stato creato con Python 2 che non è più " +"supportato. Sarà usato Python 3." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python 2 non è più supportato" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"Il motore %1 non è stato trovato. Non sarà possibile modificare ed eseguire " +"le voci." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Ci sono dei problemi con il motore %1,\n" +"controlla la tua configurazione o installa i pacchetti richiesti.\n" +"Potrai solo vedere questo foglio di lavoro." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"I Jupyter notebook con versione precedente alla 4.5 (versione rilevata %1." +"%2) non sono supportati." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"I Jupyter notebook con versione successiva alla 4.5 (versione rilevata %1." +"%2) non sono supportati." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Questo notebook è stato creato con Python 2, che non è più supportato. Verrà " +"usato Python 3." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "un oggetto con chiavi: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "valore JSON diverso da oggetto" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "trovato un dato non corretto (%1) che non è una cella Jupyter" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "Il file non è un Jupyter notebook valido" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Schema Jupyter notebook non valido: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Converti in" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Comando" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Immagine" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Interruzione di pagina" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Linea orizzontale" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Gerarchia delle voci" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Inserisci dopo" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Inserisci prima" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Inserisci" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Ingrandisci" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Rimpicciolisci" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Dimensione originale" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Muovi voci su" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Rovi voci giù" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Vàluta voci" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Rimuovi voci" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Chiudi risultati delle voci di comando" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Espandi risultati delle voci di comando" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Rimuovi risultati delle voci di comando" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Esclusi voce comando dall'esecuzione" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Aggiungi voce di comando per l'esecuzione" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "&Colore del testo..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Colore" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "&Evidenziazione del testo..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Carattere" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Dimen&sione del testo" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Grassetto" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Corsivo" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Sottolineato" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Barrato" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Allinea a &sinistra" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Sinistra" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Allinea al ¢ro" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Centro" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Allinea a &destra" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Destra" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Giustifica" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Giustificato" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"Questa azione rimuoverà tutti i risultati senza possibilità di annullare. " +"Sei sicuro?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Rimuovi tutti i risultati" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Bianco" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Nero" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Rosso scuro" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Rosso" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Rosso chiaro" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Verde scuro" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Verde" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Verde chiaro" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Blu scuro" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Blu" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Blu chiaro" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Giallo scuro" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Giallo" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Giallo chiaro" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Ciano scuro" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Ciano" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Ciano chiaro" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Magenta scuro" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Magenta chiaro" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Arancione scuro" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Arancione" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Arancione chiaro" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Grigio scuro" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Grigio" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Grigio chiaro" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Sposta in alto" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Sposta in basso" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Sei sicuro di voler rimuovere questa voce?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Rimuovi voce" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Trascina Voce" + +#~ msgid "Animate Worksheet" +#~ msgstr "Anima il foglio di lavoro" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "Se è stato impostato un motore predefinito, all'avvio crea un foglio di " +#~ "lavoro con questo al posto di mostrare la finestra per scegliere i motori." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Se abilitata, Cantor rivaluterà automaticamente tutte le voci al di sotto " +#~ "di quella corrente." + +#~ msgid "Defaults" +#~ msgstr "Predefiniti" + +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "È il valore iniziale con l'opzione di sessione «Scrittura usando LaTeX», " +#~ "quale risposta al permesso di usare la visualizzazione con un motore come " +#~ "latex, se supportato. Ad esempio, i risultati di Maxima verranno resi con " +#~ "latex, se l'opzione è abilitata." + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "Abilita la scrittura LaTeX (funziona solo se latex è installato)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "È il valore iniziale con l'opzione di sessione «Evidenziazione della " +#~ "sintassi», quale risposta all'evidenziazione della sintassi all'interno " +#~ "di voci di comando." + +#~ msgid "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." +#~ msgstr "" +#~ "È il valore iniziale con l'opzione di sessione «Completamento», quale " +#~ "risposta al completamento automatico del codice." + +#~ msgid "Enable Line Numbers" +#~ msgstr "Abilita i numeri di riga" + +#~ msgid "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." +#~ msgstr "" +#~ "È il valore iniziale con l'opzione di sessione «Anima il foglio di " +#~ "lavoro», quale risposta alla presenza dell'animazione del foglio di " +#~ "lavoro." + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Abilita animazioni dei fogli di lavoro" + +#~ msgid "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." +#~ msgstr "" +#~ "È il valore iniziale con l'opzione di sessione «Formule matematiche», " +#~ "quale risposta all'abilitazione della visualizzazione delle espressioni " +#~ "matematiche nelle voci di testo e di markdown." + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "" +#~ "Abilita le formule matematiche (funziona solo se pdflatex è installato)" + +#~ msgid "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." +#~ msgstr "" +#~ "Se disabilitato, l'avviso sul riavvio alla pressione dell'apposito " +#~ "pulsante non apparirà." + +#~ msgid "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." +#~ msgstr "" +#~ "Se abilitato, per qualsiasi errore di visualizzazione apparirà una " +#~ "finestra informativa con la descrizione dell'errore." + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "" +#~ "Mostra gli errori sull'impossibilità di visualizzazione delle formule " +#~ "matematiche" + +#~ msgid "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." +#~ msgstr "" +#~ "Se abilitato verrà usato il vecchio stile di rientro per le voci di " +#~ "Cantor (tutte le voci allineate a sinistra)." + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Usa il vecchio stile di rientro per le voci di Cantor" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Se abilitato, Cantor salverà le informazioni sulla formattazione ricca " +#~ "del testo al salvataggio nel formato Jupyter notebook." + +#~ msgid "Matplotlib (with seaborn, ggplot support too)" +#~ msgstr "Matplotlib (con supporto seaborn e ggplot)" + +#~ msgid "Plot.ly" +#~ msgstr "Plot.ly" + +#~ msgid "All supported" +#~ msgstr "Tutti i supportati" + +#~ msgid "Graphic Package: " +#~ msgstr "Pacchetto per la grafica: " + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      La modalità KDE per la matematica" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "URL della documentazione locale di Maxima" + +#~ msgid "" +#~ "If empty, the \"Show help\" action will show the default online " +#~ "documentation. Otherwise, the specified URL will be opened." +#~ msgstr "" +#~ "Se non specificato, l'azione «Mostra aiuto» aprirà la documentazione in " +#~ "linea predefinita. Altrimenti sarà aperto l'URL specificato." + +#~ msgid "Documentation:" +#~ msgstr "Documentazione:" + +#~ msgid "Url to the local Python documentation" +#~ msgstr "URL della documentazione locale di Python" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "URL della documentazione locale di Octave" + +#~ msgid "Show %1 Help" +#~ msgstr "Mostra aiuto di %1" + +#~ msgid "Path to Julia:" +#~ msgstr "Percorso di Julia:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Integra grafici nei fogli di lavoro" + +#~ msgid "" +#~ "Commands to automatically run on start. They can be useful for loading " +#~ "needed modules, changing environment, etc." +#~ msgstr "" +#~ "Comandi da eseguire automaticamente all'avvio. Possono essere utili per " +#~ "caricare moduli necessari, modificare l'ambiente, ecc." + +#~ msgid "Clear Variables" +#~ msgstr "Cancella variabili" + +#~ msgid "Exclude from Execution" +#~ msgstr "Escludi dall'esecuzione" + +#~ msgid "Add to Execution" +#~ msgstr "Aggiungi all'esecuzione" + +#~ msgid "Right click here to insert image" +#~ msgstr "Fai clic col tasto destro per inserire un'immagine" + +#~ msgid "Choose Image" +#~ msgstr "Scegli immagine" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "Immagini (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Conferma – Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Voce di testo" + +#~ msgid "LaTeX Entry" +#~ msgstr "Voce di LaTeX" + +#~ msgid "Insert Entry Before" +#~ msgstr "Inserisci voce prima" + +#~ msgid "Insert Horizontal Line" +#~ msgstr "Inserisci linea orizzontale" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Inserisci voce di testo" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Percorso dell'eseguibile di Scilab (attenzione: la versione di Scilab " +#~ "deve essere 5.4 o successiva)" + +#, fuzzy +#~| msgid "Insert Image" +#~ msgid "Insert Image Attachment" +#~ msgstr "Inserisci immagine" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Inserisci voce di LaTeX" + +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Percorso del server Python di Cantor" + +#~ msgid "" +#~ "Path to directory, which contains Cantor plugins (cantorpart and all " +#~ "backends)" +#~ msgstr "" +#~ "Percorso della directory con le estensioni di Cantor (cantorpart e tutti " +#~ "i backend)" + +#~ msgid "Paths (advance settings)" +#~ msgstr "Percorsi (impostazioni avanzate)" + +#~ msgid "Path to Cantor plugin directory:" +#~ msgstr "Percorso della directory con le estensioni di Cantor:" + +#~ msgid "" +#~ "Path to directory, which contains Cantor backend plugins. This is " +#~ "important setting - with wrong path Cantor can't create any worksheets." +#~ msgstr "" +#~ "Percorso della directory che contiene estensioni di backend di Cantor. È " +#~ "un'impostazione importante: con un percorso errato Cantor potrebbe non " +#~ "creare fogli di lavoro." + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "Formato intermedio dei grafici in linea:" + +#~ msgid "Preferred package for the \"Plot\" menu: " +#~ msgstr "Pacchetto preferito per il menu «Grafico»: " + +#~ msgid "Path to Maxima:" +#~ msgstr "Percorso di Maxima:" + +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Percorso del server Python di Cantor:" + +#~ msgid "Path to Sage:" +#~ msgstr "Percorso di Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Percorso del comando «scilab-adv-cli»:" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "" +#~ "Permetti a Cantor di seguire la creazione e distruzione delle variabili" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "" +#~ "Integra grafici nei fogli di lavoro (avvia una nuova sessione quando " +#~ "modificati)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Percorso dell'eseguibile di Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Percorso di Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Senza nome" + +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "https://docs.python.org/2/" + +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "Python è un linguaggio di programmazione dinamico abbastanza " +#~ "potente usato in vari ambiti scientifici. Ci sono diversi package " +#~ "scientifici per Python. Questo backend supporta Python 3." + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "You should set path to Julia executable" +#~ msgstr "Dovresti impostare il percorso dell'eseguibile di Julia" + +#~ msgid "" +#~ "Path to Julia should point directly to julia executable, symlink not " +#~ "allowed" +#~ msgstr "" +#~ "Il percorso di Julia deve puntare direttamente all'eseguibile «julia», un " +#~ "collegamento simbolico non è permesso" + +#~ msgid "" +#~ "Lua backend needs installed Lua programming language. The backend often " +#~ "automatically finds needed Lua binary file, but not in this case. Please, " +#~ "go to Cantor settings and set path to Lua executable." +#~ msgstr "" +#~ "Il backend Lua richiede il linguaggio di programmazione Lua installato. " +#~ "Il backend spesso trova l'eseguibile di Lua automaticamente, ma non in " +#~ "questo caso. Vai nelle impostazioni di Cantor e imposta il percorso " +#~ "dell'eseguibile di Lua." + +#~ msgid "" +#~ "In Lua backend settings a path to Lua binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Lua? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "Nelle impostazioni del backend Lua un percorso all'eseguibile di Lua è " +#~ "impostato a «%1», ma questo file non è eseguibile. Sei sicuro che questo " +#~ "percorso è corretto? Se non lo è, cambialo nella impostazioni di Cantor." + +#~ msgid "" +#~ "Maxima backend needs installed Maxima - a computer algebra system. The " +#~ "backend often automatically finds needed binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Maxima executable" +#~ msgstr "" +#~ "Il backend Maxima richiede Maxima installato. Il backend spesso trova " +#~ "l'eseguibile automaticamente, ma non in questo caso. Vai nelle " +#~ "impostazioni di Cantor e imposta il percorso dell'eseguibile di Maxima" + +#~ msgid "" +#~ "In Maxima backend settings a path to maxima binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Maxima? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "Nelle impostazioni del backend Maxima un percorso all'eseguibile «maxima» " +#~ "è impostato a «%1», ma questo file non è eseguibile. Sei sicuro che " +#~ "questo percorso è corretto? Se non lo è, cambialo nella impostazioni di " +#~ "Cantor." + +#~ msgid "" +#~ "Octave backend needs installed Octave programming language. The backend " +#~ "often automatically finds needed Octave binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Octave binary file " +#~ "with command line interface (CLI)" +#~ msgstr "" +#~ "Il backend Octave richiede il linguaggio di programmazione Octave " +#~ "installato. Il backend spesso trova l'eseguibile di Octave " +#~ "automaticamente, ma non in questo caso. Vai nelle impostazioni di Cantor " +#~ "e imposta il percorso dell'eseguibile di Octave con l'interfaccia a riga " +#~ "di comando." + +#~ msgid "" +#~ "In Octave backend settings a path to Octave binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Octave? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "Nelle impostazioni del backend Octave un percorso all'eseguibile di " +#~ "Octave è impostato a «%1», ma questo file non è eseguibile. Sei sicuro " +#~ "che questo percorso è corretto? Se non lo è, cambialo nella impostazioni " +#~ "di Cantor." + +#~ msgid "" +#~ "R backend uses special binary file - cantor_rserver (installed with R " +#~ "backend), which must be executable." +#~ msgstr "" +#~ "Il backend R usa un file binario speciale - cantor_rserver (installato " +#~ "con il backend R), che deve essere eseguibile." + +#~ msgid "" +#~ "Sage backend needs installed Sage programming language. The backend often " +#~ "automatically finds needed Sage binary file, but not in this case. " +#~ "Please, go to Cantor settings and set path to Sage executable" +#~ msgstr "" +#~ "Il backend Sage richiede il linguaggio di programmazione Sage installato. " +#~ "Il backend spesso trova l'eseguibile di Sage automaticamente, ma non in " +#~ "questo caso. Vai nelle impostazioni di Cantor e imposta il percorso " +#~ "dell'eseguibile di Sage" + +#~ msgid "" +#~ "In Sage backend settings a path to Sage binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Sage? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "Nelle impostazioni del backend Sage un percorso all'eseguibile di Sage è " +#~ "impostato a «%1», ma questo file non è eseguibile. Sei sicuro che questo " +#~ "percorso è corretto? Se non lo è, cambialo nella impostazioni di Cantor." + +#~ msgid "" +#~ "Scilab backend needs installed Scilab programming language. The backend " +#~ "often automatically finds needed Scilab binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Scilab executable" +#~ msgstr "" +#~ "Il backend Scilab richiede il linguaggio di programmazione Scilab " +#~ "installato. Il backend spesso trova l'eseguibile di Scilab " +#~ "automaticamente, ma non in questo caso. Vai nelle impostazioni di Cantor " +#~ "e imposta il percorso dell'eseguibile di Scilab" + +#~ msgid "" +#~ "In Scilab backend settings a path to Scilab binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Scilab? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "Nelle impostazioni del backend Scilab un percorso all'eseguibile di " +#~ "Scilab è impostato a «%1», ma questo file non è eseguibile. Sei sicuro " +#~ "che questo percorso è corretto? Se non lo è, cambialo nella impostazioni " +#~ "di Cantor." + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Scegli il backend da usare:" + +#~ msgid "" +#~ "Julia backend uses special binary file - %1 (installed with Julia " +#~ "backend), which must be executable" +#~ msgstr "" +#~ "Il backend Julia usa un file binario speciale - %1 (installato con il " +#~ "backend Julia), che deve essere eseguibile" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Il backend con cui questo file è stato creato non è installato. Richiede " +#~ "%1." + +#~ msgid "Publish Worksheet" +#~ msgstr "Pubblica foglio di lavoro" + +#~ msgid "Waiting for Image..." +#~ msgstr "In attesa di un'immagine..." + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "impossibile aprire il file «%1»: tipo di file sconosciuto" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|Documento LaTeX" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Foglio di lavoro di Cantor" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Server per il backend R di Cantor" + +#~ msgid "R Server" +#~ msgstr "Server R" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Uso: saveVariables file" + +#~ msgid "Saving failed." +#~ msgstr "Salvataggio non riuscito." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Uso: loadVariables file" + +#~ msgid "Loading failed." +#~ msgstr "Caricamento non riuscito." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2013 Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "Percorso del comando «python»:" + +#~ msgid "Cantor Server for R" +#~ msgstr "Server di Cantor per R" + +#~ msgid "Path to python2 command:" +#~ msgstr "Percorso del comando «python2»:" + +#~ msgid " Enable Variable Management" +#~ msgstr "Abilita gestione delle variabili" + +#~ msgid "Could not start the server." +#~ msgstr "Impossibile avviare il server." + +#~ msgid "The style used for Completion" +#~ msgstr "Lo stile usato per il completamento delle parole" + +#~ msgid "Main Toolbar" +#~ msgstr "Barra degli strumenti principale" + +#~ msgid "Other" +#~ msgstr "Altro" + +#~ msgid "And %1 more..." +#~ msgstr "E altri %1..." + +#~ msgid "Start Animation" +#~ msgstr "Avvia animazione" + +#~ msgid "Restart Animation" +#~ msgstr "Riavvia l'animazione" + +#~ msgid "Popup" +#~ msgstr "Menu a comparsa" + +#~ msgid "Append Latex Entry" +#~ msgstr "Aggiungi voce LaTeX in coda" + +#~ msgid "Append Image" +#~ msgstr "Aggiungi immagine in coda" + +#~ msgid "Append Page Break" +#~ msgstr "Aggiungi interruzione di pagina in coda" + +#~ msgid "Insert Command Entry Before" +#~ msgstr "Inserisci una voce di comando prima" + +#~ msgid "Command Entry Before" +#~ msgstr "Voce di comando prima" + +#~ msgid "Show Help Panel" +#~ msgstr "Mostra il pannello di aiuto" + +#~ msgid "Error uploading File %1" +#~ msgstr "Errore durante l'invio del file «%1»" diff --git a/po/it/docs/cantor/index.docbook b/po/it/docs/cantor/index.docbook new file mode 100644 index 0000000..b6a7a3e --- /dev/null +++ b/po/it/docs/cantor/index.docbook @@ -0,0 +1,1577 @@ + +ATEX"> + + +]> + + + +Manuale di &cantor; + + + Alexander Rieder alexanderrieder@gmail.com +PinoToscano
      toscano.pino@tiscali.it
      Traduzione italiana
      +
      + + +2009 +Alexander Rieder + +&FDLNotice; + +16/12/2020 +Applications 20.12 + + +&cantor; mira a fornire una comoda interfaccia a fogli di lavoro per altri software matematici. + + + +KDE +kdeedu +matematica +matematica +Cantor +Julia +Lua +Maxima +Octave +Python +Qalculate +R +Sage +Scilab + + +
      + + +Introduzione + +&cantor; è un'applicazione che ti permette di usare le tue applicazioni matematiche preferite da una elegante interfaccia a fogli di lavoro integrata in &kde;. Fornisce assistenti per aiutare con le operazioni comuni e ti permette di condividere i tuoi fogli di lavoro con altre persone. + + + +Uso di &cantor; + +Immagine: +Ecco un'immagine di &cantor; + + + + + + Immagine + + + + + + + +Funzioni di &cantor; + + Intuitiva vista a fogli di lavoro per la valutazione di espressioni. + Risultati del disegno di grafici mostrati nel foglio di lavoro. + Semplice struttura ad estensioni che permette di aggiungere vari motori. + Integrazione con il sistema «Scarica le novità» di &kde; che permette di scaricare o inviare fogli di lavoro. + Scrittura di formule matematiche usando &latex;. + Evidenziazione della sintassi specifica per il motore. + Estensioni per assistenti per aiutare con operazioni comuni, ad esempio l'integrazione di una funzione o l'inserimento di una matrice. + + + + +I motori di &cantor; +&cantor; offre diversi motori da usare. La scelta del motore dipende dagli obiettivi da realizzare. +Al momento, sono disponibili i seguenti motori: + + Sage: + + Sage è un software matematico libero open source rilasciato secondo i termini della licenza GPL. Combina la potenza di molti pacchetti open source in un'unica interfaccia basata su Python. Per maggiori informazioni, consulta https://sagemath.org + + + + Maxima: + + Maxima è un sistema per la manipolazione di espressioni simboliche e numeriche, includendo differenziazione, integrazione, serie di Taylor, trasformate di Laplace, equazioni differenziali ordinarie, sistemi di equazioni lineari, polinomi, e di insiemi, liste, vettori, matrici e tensori. Maxima ottiene risultati numeri ad alta precisione usando frazioni esatta, numeri interi di precisione arbitraria e numeri in virgola mobile a precisione variabile. Maxima può disegnare il grafico di funzioni e dati in due e tre dimensioni. Per maggiori informazioni, consulta http://maxima.sourceforge.net + + + + R: + + R è un linguaggio di programmazione e un ambiente per l'analisi e il disegno statistico, simile al linguaggio di programmazione e ambiente S. Dispone di un'ampia varietà di tecniche statistiche (modellazione lineare e non lineare, classici test di statistica, analisi di serie storiche, classificazione, clustering, ...) e di disegno; inoltre è altamente estensibile. Spesso il linguaggio S è scelto per le ricerche statistiche, e R fornisce un modo open source per prendere parte a quella attività. Per maggiori informazioni, consulta https://www.r-project.org + + + + Julia: + + Julia è un linguaggio di programmazione dinamico di alto livello ed elevate prestazioni per il calcolo tecnico, con una sintassi familiare agli utenti di altri ambienti simili. Fornisce un compilatore avanzato, un'esecuzione parallela e distribuita, un'accuratezza numerica e una completa libreria di funzioni matematiche. Per maggiori informazioni, consulta la documentazione di Julia. + + + + &kalgebra;: + + KAlgebra è una calcolatrice grafica basata su MathML, fornita come parte del progetto «&kde; Education». Per maggiori informazioni, consulta https://edu.kde.org/kalgebra/. + + + + Qalculate!: + + Qalculate! non è la replica del software normalmente disponibile nelle calcolatrici economiche. Qalculate! mira a fare un uso completo dell'interfaccia, della potenza e della flessibilità superiori dei computer moderni. Il centro dell'attenzione in Qalculate! è l'inserimento delle espressioni. Invece di inserire ogni numero separatamente in un'espressione matematica, puoi scrivere direttamente l'espressione intera e modificarla in seguito. La valutazione delle espressioni è flessibile e tollera gli errori, e anche nel caso di errore Qalculate! lo segnalerà. Tuttavia, le espressioni che non possono essere risolte correttamente non sono errori. Qalculate! semplificherà il più possibile e risponderà con un'espressione. In aggiunta a numeri e operatori aritmetici, un'espressione può contenere una qualsiasi combinazione di variabili, unità e funzioni. Per ulteriori informazioni vedi https://qalculate.github.io/. + + + + Python2 e Python3: + + Python è un linguaggio di programmazione dinamico abbastanza potente usato in vari ambiti scientifici. Ci sono diversi pacchetti scientifici per Python. + Python è distribuito secondo i termini della licenza Python Software Foundation (compatibile con la licenza GPL). Per maggiori informazioni, consulta il sito ufficiale. + + Questo motore aggiunge un nuovo elemento al menu principale di &cantor;, Pacchetto. L'unica voce in questo menu è PacchettoImporta pacchetto. Questa voce può essere usata per importare i pacchetti di Python nel foglio di lavoro. + + + + + Scilab: + + Scilab è un pacchetto di software libero multi-piattaforma per il calcolo numerico e un linguaggio di programmazione di alto livello orientato numericamente. + Scilab è distribuito secondo i termini della licenza CeCILL (compatibile con la licenza GPL). Per maggiori informazioni, consulta https://www.scilab.org/. + + Per usare questo motore hai bisogno di Scilab versione 5.5 o successiva installato + + + + + Octave: + + &GNU; Octave è un linguaggio di alto livello, orientato principalmente al calcolo numerico. Fornisce una conveniente interfaccia a riga di comando per risolvere in modo numerico problemi lineari e non lineari, e per effettuare altri esperimenti numerici usando un linguaggio molto compatibile con MATLAB. Per maggiori informazioni, consulta https://www.gnu.org/software/octave/. + + + + Lua: + + Lua è un linguaggio leggero per script, con una semplice sintassi procedurale. Ci sono diverse librerie matematiche e scientifiche in Lua. + Per maggiori informazioni, consulta https://www.lua.org/. + Questo motore supporta luajit 2. + + + + + + + +Il foglio di lavoro di &cantor; + + + Immagine del foglio di lavoro di &cantor; + + + + + + Immagine del foglio di lavoro di &cantor; + + + + +L'interfaccia di un foglio di lavoro di &cantor; consiste in tre parti: + la barra delle schede, che puoi usare per cambiare il foglio di lavoro aperto. + Un pannello di aiuto, dove viene mostrata la guida di un comando specifico se inserisci ?? comando, describe(comando) oppureexample(comando) (motore Maxima). + Un pannello «Gestore variabili» dove puoi vedere la lista di tutte le variabili disponibili nel foglio di lavoro corrente. I pannelli «Aiuto» e «Gestore Variabili» sono mostrati come schede nella barra laterale della finestra di &cantor;. Il gestore delle variabili può essere usato per i motore Maxima (se abilitato nella pagina Maxima in ImpostazioniConfigura &cantor;...), &kalgebra;, Octave, Python2, Python3, Qalculate e Scilab. + il foglio di lavoro. + + + +Il foglio di lavoro +Il foglio di lavoro è l'area principale usata per lavorare in &cantor;. Usando i fogli di lavoro puoi inserire espressioni, permettere ai motori di effettuare calcoli e osservare i risultati. I comandi accettati dai fogli di lavoro dipendono dal motore usato, quindi dovresti imparare la sintassi corretta a seconda del motore (il pulsante Mostra aiuto te la mostra direttamente). Se conosci un comando, ma hai bisogno di informazioni aggiuntive, puoi scrivere «? comando», facendo così apparire l'aiuto contestuale a destra del foglio di lavoro. Se vuoi vedere alcuni fogli di lavoro d'esempio, puoi andare in FileScarica foglio di lavoro di esempio e scaricare quindi i fogli di lavoro che altri utenti hanno pubblicato. +Per controllare ciascuna voce di comando nel foglio di lavoro puoi usare i pulsanti di controllo mostrati a destra del foglio di lavoro, passando con il cursore sopra il campo della voce. Ci sono tre azioni di base per ciascuna voce: Vàluta voce per aggiornare il risultato dei calcoli per la voce, Trascina voce per spostare la voce in un'altra posizione all'interno del foglio di lavoro, e Rimuovi voce per rimuovere la voce dal foglio di lavoro. +Le impostazioni dei caratteri e l'allineamento delle voci del foglio di lavoro possono essere modificati usando una barra posta sopra il foglio di lavoro. + + Impostazioni + Il menu Impostazioni ti permette di modificare alcune impostazioni dell'aspetto del foglio di lavoro corrente. + + + Scrittura usando LaTeX + + Questa impostazione cambia il modo in cui i risultati sono mostrati. Se abilitata, i risultati sono passati al sistema &latex;, producendo formule eleganti. Ad esempio, 3*x^2*sqrt(2)*x+2/3 diventa + + + + 3*x^2*sqrt(2)*x+2/3 + + + + + + Evidenziazione della sintassi + + L'evidenziazione della sintassi aumenta la leggibilità del codice, evidenziando con vari colori le parole chiave o le parentesi corrispondenti. + + + + Completamento delle parole + + Quando questa opzione è abilitata, premendo il tasto Tab &cantor; mostrerà i possibili completamenti per il comando che stai scrivendo. Se c'è solo una scelta possibile, il resto del comando sarà inserito automaticamente. + + + + Numeri di riga + + Questa impostazione controlla se ci dovrebbe essere un numero prima di ogni espressione. Ciò permette di richiamare i risultati più vecchi — ad esempio, in Maxima ciò viene fatto con il comando %O1. + + + + Anima foglio di lavoro + + Questa impostazione decide se usare diverse animazioni per evidenziare le modifiche ad un foglio di lavoro. + + + + Formule matematiche + + Questa impostazione controlla la resa delle espressioni matematiche in $$..$$ nelle voci di testo e &Markdown;. È abilitata per impostazione predefinita (richiede che pdflatex sia installata). + + + + + + + +Le finestra degli assistenti +Ci sono diverse finestre implementate in &cantor; per semplificare alcune operazioni di base. +È possibile accedere a queste finestre usando le voci nel menu principale. Ciascun motore ha finestre proprie. + +La finestra «Crea matrice» + + Immagine della finestra di creazione matrici di &cantor; + + + + + + Immagine della finestra di creazione matrici di &cantor; + + + +Questa finestra può essere usata per inserire matrici. Puoi definire la dimensione di una matrice e i suoi elementi. +È possibile navigare velocemente tra le varie celle durante l'inserimento usando il tasto . + + +La finestra delle operazioni sulle matrici + + Immagine della finestra di inserimento matrici &cantor; + + + + + + Immagine della finestra di inserimento matrici &cantor; + + + +Questa finestra permette di inserire il nome della matrice per calcolarne gli autovettori, gli autovalori, o per invertirla. Il valore predefinito (%) rappresenta il risultato del precedente calcolo o inserimento. + + +Finestra di differenziazione + + Immagine della finestra di differenziazione di &cantor; + + + + + + Immagine della finestra di differenziazione di &cantor; + + + +Questa finestra permette di inserire l'espressione della funzione da differenziare, il nome della variabile e l'ordine della derivata. + + +Finestra di integrazione + + Immagine della finestra di integrazione di &cantor; + + + + + + Immagine della finestra di integrazione di &cantor; + + + +Questa finestra permette di inserire l'espressione della funzione da integrare, il nome della variabile e i limiti dell'integrata (per l'integrale definito). + + +Finestra risolvi equazioni + + Immagine della finestra di risoluzione equazioni di &cantor; + + + + + + Immagine della finestra di risoluzione equazioni di &cantor; + + + +Questa finestra permette di inserire equazioni da risolvere (ciascuna equazione in una riga) e le variabili da determinare (separate da virgola). + + +Finestra di importazione del pacchetto + + Immagine della finestra di importazione dei pacchetti di &cantor; + + + + + + Immagine della finestra di importazione dei pacchetti di &cantor; + + + +Questa finestra permette di inserire il nome del pacchetto da importare (⪚ numpy per Python). + + +Finestra del grafico + + Immagine della finestra del grafico di &cantor; (scheda «Funzioni») + + + + + + Immagine della finestra del grafico di &cantor; (scheda «Funzioni») + + + +Le opzioni di questa finestra sono separate in due gruppi di schede. La scheda Funzioni permette di inserire le funzioni da disegnare. +Per inserire una nuova funzione, premi Aggiungi. Fai doppio clic sulla cella Titolo e inserisci il titolo, quindi fai doppio clic sulla cella Espressione e inserisci l'espressione della funzione. + + Immagine della finestra del grafico di &cantor; (scheda «Opzioni») + + + + + + Immagine della finestra del grafico di &cantor; (scheda «Opzioni») + + + +La scheda Opzioni è usata per definire le opzioni di grafici e legende. Puoi regolare quasi tutte le opzioni dei grafici per avere l'aspetto gradevole che desideri. + + +Finestra grafico 2D + + Immagine della finestra del grafico 2D di &cantor; + + + + + + Immagine della finestra del grafico 2D di &cantor; + + + +Questa finestra permette di inserire l'espressione della funzione, la sua variabile e i limiti della variabile. + + +Finestra grafico 3D + + Immagine della finestra del grafico 3D di &cantor; + + + + + + Immagine della finestra del grafico 3D di &cantor; + + + +Questa finestra permette di inserire l'espressione della funzione, le sue variabili e i limiti delle variabili. + + + + + +Guida ai comandi + + +La finestra principale di &cantor; + +&cantor; ha le voci di menu comuni di &kde;; per maggiori informazioni, consulta il capitolo Menu dei «Fondamentali di &kde;». + +Segue la lista delle voci di menu aggiuntive o speciali in &cantor;. Nota che alcuni menu sono mostrati solo per i motore che li implementano. + + +Il menu File + + + + &Ctrl;N File Nuovo +Crea un nuovo foglio di lavoro con il motore predefinito. + + +File Nuovo Motore +Crea un nuovo foglio di lavoro con il motore scelto. + + + &Ctrl;O File Apri... +Apre con la finestra dei file un nuovo foglio di lavoro supportato. + + +File Apri recenti +Scegli un foglio di lavoro da un elenco di file usati di recente. + + +File Scarica fogli di lavoro d'esempio +Apre la finestra per scaricare esempi inviati da altri utenti di &cantor; usando GetHotNewStuff. + + +File Apri esempio +Apre la finestra per caricare un esempio. Gli esempi devono essere prima scaricati usando File Scarica fogli di lavoro d'esempio. + + +File Salva come testo semplice +Permette di salvare il foglio di lavoro corrente come documento di testo semplice. + + +File Esporta come LaTeX +Permette di salvare il foglio di lavoro corrente come documento &latex;. + + +File Pubblica foglio di lavoro +Apre la finestra per pubblicare il tuo foglio di lavoro corrente e renderlo disponibile ad altri utenti di &cantor; per mezzo di GetHotNewStuff. + + +File Avvia script +Permette di caricare ed eseguire script con il motore corrente. + + + + + + + +Il menu Visualizza + + + +VisualizzaPannelli +Ti permette di visualizzare o di nascondere alcune schede nella barra laterale. Le scelte sono: + + Navigatore dei file + Mostra o nasconde la scheda Navigatore dei file nella barra laterale. + + + + Aiuto + Mostra o nasconde la scheda Aiuto nella barra laterale. + + + + Gestore variabili + Mostra o nasconde la scheda Gestore variabili nella barra laterale. + + + + + &Ctrl;+ Visualizza Ingrandisci +Ingrandisce il foglio di lavoro corrente del 10%. + + + &Ctrl;- Visualizza Riduci +Riduce il foglio di lavoro corrente 10%. + + +Visualizza Mostra editor degli script +Apre la finestra per la modifica degli script per il motore corrente. + + + + + + +Il menu Foglio di lavoro + + + + &Ctrl;E Foglio di lavoro Vàluta foglio di lavoro +Avvia la valutazione dell'intero foglio di lavoro. + + + &Shift;&Enter; Foglio di lavoro Vàluta voce +Avvia la valutazione della voce corrente. + + + &Ctrl;&Enter; Foglio di lavoro Inserisci voce di comando +Inserisce una nuova voce di comando sotto la posizione corrente del cursore. + + +Foglio di lavoro Inserisci voce di testo +Inserisce una nuova voce di testo sotto la posizione corrente del cursore. + + +Foglio di lavoro Inserisci voce di Markdown +Inserisce una nuova voce di &Markdown; sotto la posizione corrente del cursore. + + +Worksheet Inserisci voce di LaTeX +Inserisce una nuova voce di &latex; sotto la posizione corrente del cursore. + + +Foglio di lavoro Inserisci immagine +Inserisce un'immagine sotto la posizione corrente del cursore. + + +Foglio di lavoro Inserisci interruzione di pagina +Inserisce un'interruzione di pagina sotto la posizione corrente del cursore. + + +Foglio di lavoro Collassa tutti i risultati +Collassa tutti i risultati della voce di comando. + + +Foglio di lavoro Espandi tutti i risultati +Espandi tutti i risultati della voce di comando. + + +Foglio di lavoro Rimuovi tutti i risultati +Rimuovi tutti i risultati della voce di comando. + + + &Shift;∇ Foglio di lavoro Rimuovi la voce corrente +Rimuove la voce corrente dal foglio di lavoro. + + + + + + +Il menu Algebra lineare + + + +Algebra lineare Crea matrice +Apre la finestra di creazione delle matrici. + + +Algebra lineare Calcola autovalori +Apre la finestra dell'assistente all'inserimento del nome della matrice per calcolare i suoi autovalori e la dimensione della molteplicità nell'ordine corrispondente. + + +Algebra lineare Calcola autovettori +Apre la finestra dell'assistente all'inserimento del nome della matrice per calcolare i suoi autovalori e la dimensione della molteplicità degli autovalori e degli autovettori nell'ordine corrispondente. + + +Algebra lineare Inverti matrice +Apre la finestra di dialogo di inserimento del nome della matrice per trovare l'inversa di una matrice. + + + + + + +Il menu Calcola + + + +Calcola Calcola differenziale +Apre la finestra dei parametri del differenziale. + + +Calcola Integra +Apre la la finestra dei parametri dell'integrata. + + +Calcola Risolvi equazioni +Apre la finestra di dialogo di inserimento parametri per risolvere equazioni lineari e non lineari. + + + + + + +Il menu Pacchetto + + + +Pacchetto Importa pacchetto +Apre la finestra di importazione dei pacchetti. + + + + + + +Il menu Grafico + + + +Grafico Grafico +Apre la finestra dei parametri del grafico. + + +Grafico Grafico 2D +Apre la finestra dei parametri del grafico. + + +Grafico Grafico 3D +Apre la finestra dei parametri del grafico. + + + + + + +I menu Impostazioni e Aiuto +&cantor; ha le voci di menu Impostazioni e Aiuto comuni di &kde;; per maggiori informazioni, consulta le sezioni sul menu Impostazioni e sul menu Aiuto dei «Fondamentali di &kde;». + + + + + + + +Domande e risposte + + + + La voce di menu Scrittura usando LaTeX non è disponibile + Non tutti i motore supportano tutte le opzioni. Nella versione corrente, &latex; è disponibile solo con i motore Maxima, Qalculate! e Sage. + + + Ho installato Sage/Maxima o un altro CAS supportato, ma il motore corrispondente non appare. + + Una possibile spiegazione è che &cantor; non ne ha trovato la posizione. Vai nella finestra ImpostazioniConfigura &cantor;... e modifica il Percorso dell'applicazione nella scheda del motore. + + + + Che nome strano – cosa ha che fare con la matematica? + &cantor; è chiamato così in onore del matematico tedesco Georg Cantor, il creatore della teoria degli insiemi. + + + + + + +Riconoscimenti e licenza + +&cantor; +Copyright del programma 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +Copyright della documentazione © 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +Traduzione italiana di Pino Toscano toscano.pino@tiscali.it &underFDL; &underGPL; + +&documentation.index; +
      + + diff --git a/po/ja/cantor.po b/po/ja/cantor.po new file mode 100644 index 0000000..ccb3844 --- /dev/null +++ b/po/ja/cantor.po @@ -0,0 +1,4508 @@ +msgid "" +msgstr "" +"Project-Id-Version: mathematik\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2009-05-18 00:19+0900\n" +"Last-Translator: Japanese KDE translation team \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +msgstr[1] "" + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "" + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "" + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "" + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" +msgstr[1] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "" + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "" + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "" + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "" diff --git a/po/ka/cantor.po b/po/ka/cantor.po new file mode 100644 index 0000000..f4c3753 --- /dev/null +++ b/po/ka/cantor.po @@ -0,0 +1,4516 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the cantor package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2023-02-08 11:59+0100\n" +"Last-Translator: Temuri Doghonadze \n" +"Language-Team: Georgian \n" +"Language: ka\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.2.2\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Temuri Doghonadze" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "Temuri.doghonadze@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "შეჩერება" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "გაშვება" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "შეჩერება" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "ანიმაციის შედეგის შენახვა" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "ანიმაციები (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "დამატებითი ხაზვა" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "გრაფიკი" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "გამოსახულება:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "დამატებითი პარამეტრები:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&გრაფიკი" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "პარამეტრი ჩართულია" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&გამოთვლა" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "განსხვავება" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "ცვლადი:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "რამდენჯერ: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&პაკეტი" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "პაკეტის შემოტანა" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "პაკეტი:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "ინტეგრირება" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "ქვედა ლიმიტი:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "ზედა ლიმიტი:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "განაზღვრული ინტეგრალი" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&წრფივი ალგებრა" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "მატრიცის შექმნა" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "სვეტი:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "სტრიქონები:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "საკუთრივი მნიშვნელობების გამოთვლა" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "მატრიცა:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "საკუთრივი ვექტორების გამოთვლა" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "მატრიცის ინვერსია" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "2D გრაფიკი" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "ცვლადი" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "სახელი" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "მინიმუმი:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "მაქსიმუმი:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "3D გრაფიკი" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "პირველი ცვლადი" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "მეორე ცვლადი" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "სკრიპტის გაშვება" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "ტოლობების ამოხსნა" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "ტოლობები:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "ცვლადები:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "აირჩიეთ უკანაბოლო" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      რეკომენდებული ვერსია: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      მეტი ინფორმაციისვის იხილეთ %2." + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      ზოგი მოთხოვნა შესრულებული არაა: " +"%1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "ამის ნაგულისხმებ უკანაბოლოდ გადაკეთება" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "ბილიკი Julia-ის REPL-მდე" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "ცვლადების მართვის ჩართვა" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "სამუშაო ფურცელზე ნახაზების ინტეგრაცია" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Julia -ის სკრიპტის ფაილი (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "შეცდომა - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Julia-ის პროცესმა მუშაობა დაასრულა." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Julia-ის პროცესის გაშვების შეცდომა." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "მთავარი" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "გამსვები ფაილი:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "გრაფიკის ინტეგრაცია:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "ჩართულია" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "ცვლადების მართვა:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "შიდა გრაფიკის ფორმატი:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "პაკეტი გრაფიკის დამხმარისთვის" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "გრაფიკები" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "ავტომატური გაშვება" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "ბრძანებები ავტომატურად გასაშვებად" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "დოკუმენტაცია" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "შეცდომა: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "ბილიკი luajit ბრძანებამდე" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Lua სკრიპტის ფაილი (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "ბილიკი luajit-მდე:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "ბილიკი Maxima-ის გამშვებ ფაილებამდე" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "შეცდომა: მეტისმეტად ბევრი */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "შეცდომა: მეტისმეტად ბევრი /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "შეცდომა: ;-მდე \"-ს მოველოდი ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Maxima -ის სცენარის ფაილი (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Maxima-ის გაშვების შეცდომა" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima ავარიულად დასრულდა. თავიდან გაშვება..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Octave -ის სკრიპტის ფაილები (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "სინტაქსური შეცდომა" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Python -ის სკრიპტის ფაილი (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Canton-ის Python სერვერმა მუშაობა შეწყვიტა." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Cantor -ის python სერვერს გაშვების შეცდომა." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - გრაფიკის ფანჯარა" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "ფუნქციები" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "სათაური" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "გამოსახულება" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "დამატება" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "წაშლა" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "სიის გასუფთავება" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "X ცვლადი" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "სტილი" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "ხაზები" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "წერტილები" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "წეტილები და წირები" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "ყუთები" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "ჰისტოგრამა" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "ნაბიჯები" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "იაპონური სანთლები" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "წერტილები" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "მოგლუვება" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "არაფერი" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "მონოტონური" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "ნატურალური კუბური სპლაინები" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "ბეზიე" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "ბეზიე (მონოტონური)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "ფუნქციის დიაპაზონი" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X დიაპაზონი" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "&სემპლინგის შიჩქარე" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "ბიჯის &ზომა" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "პარამეტრები" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "გრაფიკის სათაური" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "X-ღერძის ჭდე" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Y-ღერძის ჭდე" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "შინაარსის მდებარეობა" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "შინაარსის დამალვა" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "ზედა მარცხენა" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "ზედა მარჯვენა" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "ქვედა მარცხენა" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "ქვედა მარჯვენა" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "ქვემოთ" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "გარედან" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "ბადის ჩვენება" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "სრული საზღვრის ჩვენება" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "ფერების გამოყენება" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "იქვე ჩვენება" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "X-ის ლოგარითმული მასშტაბირება" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Y-ის ლოგარითმული მასშტაბირება" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "ფაილის მორგება" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "გრაფიკის ფაილში შენახვა" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "ფაილის ტიპი" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "ფაილის სახელიდან მიხვედრა" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "ტრიგონომეტრიული ფუნქციების კუთხის ნაგულისხმები ერთეული." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "რიცხვის ჩაწერის ფორმატი." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "დაიხაზება თუ არა ბადე." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "ხაზის სიგანე, პიქსელებში." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "გრაფიკებს მოგლუვების რეჟიმი." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "გრაფიკების სტილი." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "შინაარსის მდებარეობა გრაფიკებზე." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "აკლია %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 რიცხვი უნდა იყოს." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 მთელი რიცხვი უნდა იყოს." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 ლოგიკური მნიშვნელობა უნდა იყოს." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "%1-ის არასწორი პარამეტრი: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "გაფრთხილება" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "ფუნქცია: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "გამსახულება" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "მორგება" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "მნიშვნელობა" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "მთელი რიცხვი" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "ლოგიკური" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "ნომერი" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "ნაგულისხმები: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "ფუნქციის სახელი" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "სათაურის ჭდე" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "x-ღერძის ჭდე" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "y-ღერძის ჭდე" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "ხაზების სიგანე." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "ცვლადების ფაილში ჩაწერა" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "ფაილი" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "ფაილი: შესანახი ფაილი" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "ცვლადების ფაილიდან წაკითხვა" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "ფაილი: ჩასატვირთი ფაილი" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "ათვლის სისტემა:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "წილადის ფორმატი:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "ათობითი" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "ზუსტი" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "წილადი" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "სწორი წილადები" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "რიცხვის ჩაწერის წესი:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Pure" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "სამეცნიერო" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "სიზუსტე" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "უსასრულო მწკრივის მითითება:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "ყველა SI პრეფიქსის გამოყენება:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "უარყოფითი ხარისხის გამოყენება:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "შეფასება" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "რადიანები" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "გრადუსი" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "გრადიანები" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "ფორმულების გამარტივება:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "გამარტივება" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "მამრავლებად დაშლა" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "კუთხის ერთეული:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "გრაფიკები" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "გრაფიკების იქვე ჩვენება:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "სრული საზღვრების ჩვენება:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "ხაზების სიგანე:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "სემპლინგის სიჩქარე:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "მოგლუვების რეჟიმი:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "ნატურალური კუბური სპლაინები" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "ნაბიჯები" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "შინაარსის მდებარეობა:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "ფერადი გრაფიკები:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "ბადის ჩვენება:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "გრაფიკის სტილი:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "ელემენტის ჩასწორება" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "ელემენტის დამატება" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "სახელი ცარიელი არ შეიძლება იყოს." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "ლოკალური დოკუმენტაციის დამატება" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "ახალი დოკუმენტაციის მიღება" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "დამატებითი დოკუმენტაციების გადმოწერა" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Qt-ს შეკუმშული დახმარების ფაილი არასწორია." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "დოკუმენტაცია უკვე შემოტანილია" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "ჩასწორება" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "წაშლა" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "წაშალეთ GHNS-ით." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "დოკუმენტაციის დამატებითი ფაილების დამატება" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "სახელი" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "ბილიკი" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "დამატება" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "ხატულა:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "აირჩიეთ ხატულა" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "სახელი:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "შეიყვანეთ სახელი" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "აირჩიეთ სახელი..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "ბილიკი:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "აირჩიეთ Qt-ის დახმარების ფაილი..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "აირჩიეთ Qt-ის დახმარების ფაილი..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "ფაილის (%1) გახსნის შეცდომა" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "R სკრიპტის ფაილი (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "ბრძანების დამუშავების შეცდომა" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "ბმული R-ის ლოკალურ დოკუმენტაციამდე" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R კოდის ფაილები (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "%1-ის შედეგი" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "ფაილი %1 უკვე ღიაა." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "ფაილის გახსნა" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "მაგალითების გადმოწერა" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&მაგალითის გახსნა" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "წინა სამუშაო ცხრილზე გადასვლა" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "შემდეგ სამუშაო ცხრილზე გადასვლა" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +msgstr[1] "" + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "შეცდომა" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "უკანაბოლო %1 დაყენებული არაა" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "სესია %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "გაანგარიშება..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "მზადაა" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "შეცვლილია" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Cantor-ისდახურვა" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "პროექტის შენახვა" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "ფორმატირება" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "იერარქიის ფონტი თავისთვის" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "იერარქიის ფონტის ზომა თავისთვის" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "იერარქიის კურსივი ფონტი თავისთვის" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "იერარქიის სქელი ფონტი თავისთვის" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "იერარქიის ფონტი ქვეთავისთვის" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "იერარქიის ფონტის ზომათავისთვის" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "იერარქიის კურსივი ფონტი ქვეთავისთვის" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "იერარქიის სქელი ფონტი ქვეთავისთვის" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "იერარქიის ფონტი განყოფილებისთვის" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "იერარქიის კურსივი ფონტი განყოფილებისთვის" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "იერარქიის სქელი ფონტი განყოფილებისთვის" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "იერარქიის ფონტი ქვეგანყოფილებისთვის" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "იერარქიის კურსივი ფონტი ქვეგანყოფილებისთვის" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "იერარქიის სქელი ფონტი ქვეგანყოფილებისთვის" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "იერარქიის ფონტი პარაგრაფისთვის" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "იერარქიის კურსივი ფონტი პარაგრაფისთვის" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "იერარქიის სქელი ფონტი პარაგრაფისთვის" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "იერარქიის ფონტი ქვეპარაგრაფისთვის" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "იერარქიის კურსივი ფონტი ქვეპარაგრაფისთვის" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "იერარქიის სქელი ფონტი ქვეპარაგრაფისთვის" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "უბრალო ტექსტად შენახვა" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Latex-ად გატანა" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "გადიდება" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "სინტაქსის ხაზგასმა" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "დასრულება" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "ხაზის ნომრები" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "ანიმაციები" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "ჩადგმული მათემატიკა" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "უკანაბოლოს გადატვირთვა" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "გამოსახულების დათვლა" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "ბრძანების ჩანაწერის ჩასმა" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "ტექსტის ჩანაწერის ჩასმა" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "მარკდაუნის ჩანაწერის ჩასმა" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "LaTeX -ის ჩანაწერის ჩასმა" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "გვერდის გამოტოვების ჩასმა" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "გამოსახულების დამატება" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "ყველა შედეგის ჩაკეცვა" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "ყველა შედეგის ამოკეცვა" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "ყველა შედეგის წაშლა" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "მიმდინარე ჩანაწერის წაშლა" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "სკრიპტის რედაქტორის ჩვენება" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "დასრულების ჩვენება" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Cantor-ის სამუშაო ფურცელი (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "შენახვა როგორც" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "შენახვა" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "გადავტვირთო %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "შეწყვეტა" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "სესიის შეცდომა: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "ინიციალიზაცია დასრულდა" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "ინიციალიზაცია..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "კითხვა - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "გაფრთხილება - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&ჩასწორება" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&ხედი" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "Cantor-ის სამუშაო ფურცელი" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "პარამეტრები" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&ფაილი" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&ახალი" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "პანელები" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "გამართვა" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "ფონის ფერი" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "სტანდარტული" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "ტექსტის ფერი" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "ფონტი" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "გასქელება" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "დახრა" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "ზომის გადიდება" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "ზომის შემცირება" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "აირჩიეთ" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "ნაგულისხმებ მნიშვნელობაზე დაბრუნება" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "შედეგების ჩვენება" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "შედეგების დამალვა" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "დახმარების ჩვენება" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "გარემოს იერსახე" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "შეწყვეტილია" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "ძებნის პანელი" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "მოძებნა:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&შემდეგი" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&წინა" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "ჩანაცვლება:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&ჩანაცვლება" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "ყველას &ჩანაცვლება" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "ძებნა:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&დიდი და პატარა ასოების სხვაობა" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "იერარქიის ფონტები" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "თავის ფონტი" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "ფონტის ოჯახი:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "ფონტის ზომა:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "ქვეთავის ფონტი" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "სექციის ფონტი" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "ქვესექციის ფონტი" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "პარაგრაფის ფონტი" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "ქვეპარაგრაფის ფონტი" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "თავი" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "ქვეთავი" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "სექცია" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "ქვესექცია" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "პარაგრაფი" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "ქვეპარაგრაფი" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "იერარქიის დონის დამატება" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "სქელი ხაზის სტილი" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "პუნქტირიანი ხაზის სტილი" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "ტირე, წერტილი, წერტილიანი ხაზის ტილი" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "წერტილ-ტირიანი ხაზის სტილი" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "ტირე, წერტილი, წერტილიანი ხაზის სტილი" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "ხაზის სისქე" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "თხელი" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "საშუალო" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "სქელი" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "ხაზის ფერი" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "ხაზის სტილი" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "გამოსახულების მორგება" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "გამოსახულების შედეგის შენახვა" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "სურათები (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "გამოსახულების პარამეტრები" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "გახსნა" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "ეკრანის ზომა" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "სიგანე" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "სიმაღლე" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "მინიატურა" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "საბეჭდი ზომა" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "ეკრანის ზომის გამოყენება" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "გამოსახულების პარამეტრები" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(ავტო)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "გამოსახულების ფაილის გახსნა" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "LaTeX -ის კოდის ჩვენება" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "ბილიკი latex გამშვებ ფაილამდე" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "ბილიკი dvips გამშვებ ფაილამდე" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "მნიშვნელობა" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 ბაიტი>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "მთავარი სათაური" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "აბსცისის ღერძი" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "ორდინატების ღერძი" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "გრაფიკის სათაური:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "პროგრამისტი" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra-ის უკანაბოლო" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "მიჰა ჩანჩულა" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave-ის უკანაბოლო" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "ინტერფეისი" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Cantor ხატულა" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "" + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "გასახსნელი დოკუმენტები." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "რედაქტირების რეჟიმში გადასვლა" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "მიმაგრებული ფაილების გასუფთავება" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Cantor -ის მათემატიკის შეცდომა" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "შემცველობაზე გაასვლა" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "დახურვა" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "შემდეგ დამთხვევაზე გადასვლა" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "წინა დამთხვევაზე გადასვლა" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Cantor-ის ფაილები" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "ყველა მხარდაჭერილი ფაილი" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "ყველა ფაილი" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "სახელი:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "მნიშვნელობა:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "ახალი ცვლადის დამატება" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "ცვლადების ჩატვირთვა" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "ცვლადების შენახვა" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "ცვლადების წაშლა" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "ძებნა/გაფილტვრა" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "დიდი ასოს გმრძნობიარე" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "ფაილის ჩატვირთვა" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "შედეგს შენახვა" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "შედეგის წაშლა" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "სკრიპტის რედაქტორი" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "სკრიპტის რედაქტორი - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "ნაპოვნი არაა" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" +msgstr[1] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "ბრძანებები" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "შედეგები" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "შედომები" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "ტექსტი" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "გაშვებისას:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "ხაზის ნომრების ჩვენება" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "ხაზის ნომრები" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "მარკდაუნი:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "ძებნა…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "შედეგის კოპირება" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "კოდის ჩვენება" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "HTML კოდის ჩვენება" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "HTML-ის ჩვენება" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "HTML-ის ჩვენება" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "ტექსტური ფაილები (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "ფაილში ჩაწერის შეცდომა: %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "ფაილში ჩაწერის შეცდომა." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "ფაილის გახსნა" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "გარდაქმნა" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "ბრძანება" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "მარკდაუნი" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "სურათი" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "ჰორიზონტალური ხაზი" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "ჩასმა შემდეგ" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "ჩასმა მანამდე" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "ჩამატება" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "გადიდება" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "საწყისი ზომა" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "ტექსტის &ფერი..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "ფერი" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "ტექსტის &გამოკვეთა..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&ფონტი" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "ფონტის &ზომა" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&სქელი" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&დახრილი" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&ხაზგასმა" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&ხაზგადასმული" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "&მარცხნვ სწორება" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Left" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "&ცენტრზე სწორება" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "ცენტრი" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "მარ&ჯვნივ სწორება" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "მარჯვნივ" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "ტექსტის მარჯვნივ და მარცხნივ გასწორება" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "გადამრთეველი" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "თეთრი" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "შავი" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "მუქი წითელი" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "წითელი" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "ღია წითელი" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "მუქი მწვანე" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "მწვანე" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "ღია მწვანე" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "მუქი ლურჯი" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "ლურჯი" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "ღია ლურჯი" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "მუქი ყვითელი" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "ყვითელი" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "ღია ყვითელი" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "მუქი ცისფერი" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "ცისფერი" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "ღია ცისფერი" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "მუქი ალისფერი" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "ალისფერი" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "ღია ალისფერი" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "მუქი ნარინჯისფერი" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "ნარინჯისფერი" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "ღია ნარინჯისფერი" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "მუქი ნაცრისფერი" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "ნაცრისფერი" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "ღია ნაცრისფერი" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "აწევა" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "ჩამოწევა" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "ჩანაწერის ამოღება" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "" diff --git a/po/kk/cantor.po b/po/kk/cantor.po new file mode 100644 index 0000000..16e2b29 --- /dev/null +++ b/po/kk/cantor.po @@ -0,0 +1,5066 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sairan Kikkarin , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2013-11-01 23:02+0600\n" +"Last-Translator: Sairan Kikkarin \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 1.2\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Сайран Киккарин" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "sairan@computer.org" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Аялдау" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Бастау" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Тоқтату" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Нәтижені сақтау" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Жетеленген график сызу" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "График" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Өрнек:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Қосымша параметрлер:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&График" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Келтірілген" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Есептеу" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Дифферециалдау" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Айнымалы:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Еселігі: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Десте" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Дестені импорттау" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Дестесі:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Интегралды алу" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Төменгі шегі:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Жоғарғы шегі:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "анықталған интеграл" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "С&ызықтық алгебра" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Матрицаны құру" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Бағандар:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Жолдар:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Өзіндік мәндерін есептеу" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Матрица:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Өзіндік векторларын есептеу" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Матрицаны керілеу" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Екі-өлшемді график" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Айнымалы" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Атауы" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Минимум:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Максимум:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Үш-өлшемді график" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1-айнымалы" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2-айнымалы" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Скриптті жегу" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Теңеулерді шешу" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Теңеулер:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Айнымалылар:" + +#: backendchoosedialog.cpp:64 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Select the Backend" +msgstr "Орындауыш тетігін қайта жегу" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"

      %1

      %2

      Толығрақ %3 дегеннен " +"қараңыз
      " + +#: backendchoosedialog.cpp:125 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"

      %1

      %2

      Толығрақ %3 дегеннен " +"қараңыз
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Осы тетік әдетті болсын" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, fuzzy, kde-format +#| msgctxt "the url to the documentation Python 2" +#| msgid "http://docs.python.org/2/" +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "http://docs.python.org/2/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Айнымалы басқаруын рұқсат ету" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Графиктер құжатқа ендірілсін" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Julia script file (*.jl)" +msgstr "*.R|R скрипт файлы" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Қате - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Julia process." +msgstr "Sage жегу жаңылысы" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Жалпы" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Plot Integration:" +msgstr "Интегралды алу" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, fuzzy, kde-format +#| msgid "" +#| "If true, plots will be displayed inside the worksheet. If not they appear " +#| "in a separate window." +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Рұқсат етілсе, график құжаттың құрамында көрсетіледі, әйтпесе - бөлек " +"терезеде." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Рұқсат етілсін" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Enable Variable Management" +msgid "Variable Management:" +msgstr "Айнымалы басқаруын рұқсат ету" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Integrate Plots in Worksheet" +msgid "Internal Plot Format:" +msgstr "Графиктер құжатқа ендірілсін" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plots" +msgstr "График" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "PyPlot" +msgstr "График" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, fuzzy, kde-format +#| msgid "Scripts to autorun" +msgid "Commands to autorun" +msgstr "Автожегілетін скрипттер" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documentation" +msgstr "Ашатын құжат" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "http://docs.kde.org/stable/en/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Сеанс басында автожегілетін скрипттер тізімі" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Қате: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to python command" +msgid "Path to luajit command" +msgstr "python командасының жолы" + +#: backends/lua/luaextensions.cpp:20 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Lua script file (*.lua)" +msgstr "*.R|R скрипт файлы" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Path to python2 command:" +msgid "Path to luajit:" +msgstr "python2 командасының жолы:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, fuzzy, kde-format +#| msgid "" +#| "Maxima is a system for the manipulation of symbolic and numerical " +#| "expressions, including differentiation, integration, Taylor series, " +#| "Laplace transforms, ordinary differential equations, systems of linear " +#| "equations, polynomials, and sets, lists, vectors, matrices, and tensors. " +#| "Maxima yields high precision numeric results by using exact fractions, " +#| "arbitrary precision integers, and variable precision floating point " +#| "numbers. Maxima can plot functions and data in two and three dimensions. " +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima деген символды және санды өрнектерімен айналысатын жүйе. Онымен " +"дифференциал, интеграл, Тейлор қатары, Лаплас түрлендіруі, қарапайым " +"дифференциалдық теңдеу, сызқтық теңеулер жүйесі, полином, жиын, тізім, " +"вектор, матрицалармен есеп шығаруға болады. Maxima нақты бөлшек, ұзындығы " +"қажетті бүтін сан және дәлдігі өзгермелі жылжымалы үтірлі сандарды " +"пайдаланып дәлдігі жоғары нәтижелер береді. Maxima екі-өлшемді, үш-өлшемді " +"графиктарды сызып бере алады." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Maxima орындалатын файлының жолы" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Қате: Тым көп */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Қате: Тым көп /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Қате: ; алдында \" болу тиіс" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, fuzzy, kde-format +#| msgid "*.mac|Maxima batch File" +msgid "Maxima batch file (*.mac)" +msgstr "*.mac|Maxima десте файлы" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Maxima жегу жаңылысы" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima қирады. Жаңадан бастап көреді..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "Maxima қысқа мерзімде екі мәрте қирады. Әрекет доғарылады" + +#: backends/octave/octavebackend.cpp:62 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Octave, please check if there is a " +#| "translated version (currently Czech and Japanese) and use the correct url" +#| msgid "http://www.gnu.org/software/octave/doc/interpreter/" +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "http://www.gnu.org/software/octave/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, fuzzy, kde-format +#| msgid "" +#| "GNU Octave is a high-level language, primarily intended for numerical " +#| "computations.
      It provides a convenient command line interface for " +#| "solving linear and nonlinear problems numerically, and for performing " +#| "other numerical experiments using a language that is mostly compatible " +#| "with Matlab." +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave деген, көбіненсе сандық есептерге арналған, жоғары- деңгейлі " +"программалау тілі.
      Ол көбінде Matlab тілімен үйлесімді, сызықтық және " +"сызықтық емес теңдеу және басқа да сандық есептердің шешімін ыңғайлы " +"командалық жолы интерфейсімен шығарып беретін тіл." + +#: backends/octave/octaveextensions.cpp:34 +#, fuzzy, kde-format +#| msgid "*.m|Octave script file" +msgid "Octave script file (*.m)" +msgstr "*.m|Octave скрипт файлы" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Синтаксис қатесі" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, fuzzy, kde-format +#| msgctxt "the url to the documentation Python 2" +#| msgid "http://docs.python.org/2/" +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "http://docs.python.org/2/" + +#: backends/python/pythonbackend.cpp:72 +#, fuzzy, kde-format +#| msgid "" +#| "

      Python is a remarkably powerful dynamic programming language that is " +#| "used in a wide variety of application domains. There are several Python " +#| "packages to scientific programming.

      This backend supports Python 2." +#| "

      " +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"

      Python деген тамаша, түрлі салада қолданатын программалау тіл. Ғылыми " +"программалауға арналған бірнеше Python дестелері бар.

      Осындағы тетік " +"Python 2-ні таниды.

      " + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Python script file (*.py)" +msgstr "*.R|R скрипт файлы" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Cantor python server." +msgstr "Sage жегу жаңылысы" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "plot.ly" +msgstr "График" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - График диалогы" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Функциялар" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Атау" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Өрнек" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Қосу" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Өшіру" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Тізімді тазалау" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "X айнымалысы" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Стилі" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Сызықтар" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Нүктелер" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Нүктелер мен сызықтар" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Шаршылар" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Гистограмма" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Баспалдақ" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Жапон шырағы" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Дақ нүктелер" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Тегістеу" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Жоқ" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Бірсарынды" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Натурал кубтық сплайн" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Безье" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Безье (бірсарынды)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Функция ауқымы" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X ауқымы" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, fuzzy, kde-format +#| msgid "Sampling rate" +msgid "Sa&mpling rate" +msgstr "Дискреттеу жиілігі" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, fuzzy, kde-format +#| msgid "Step size" +msgid "Step si&ze" +msgstr "Қадамы" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Параметрлері" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Графиктің атауы" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "X-осін жарлығы" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Y-осін жарлығы" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Түсіндірменің орны" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Түсіндірмені жасыру" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Жоғары солда" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Жоғары оңда" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Төменгі солда" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Төменгі оңда" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Төменде" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Тыста" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Торы болсын" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Толық қоршау" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Түрлі-түсті" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Бірге көрсетілсін" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "x - логарифмдік" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "y - логарифмдік" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Файл параметрлері" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Графикті файлға сақтау" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Файл түрі" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Файл атауы бойынша" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, fuzzy, kde-format +#| msgid "" +#| "Qalculate! is not your regular software replication of the cheapest " +#| "available calculator. Qalculate! aims to make full use of the superior " +#| "interface, power and flexibility of modern computers. The center of " +#| "attention in Qalculate! is the expression entry. Instead of entering each " +#| "number in a mathematical expression separately, you can directly write " +#| "the whole expression and later modify it. The interpretation of " +#| "expressions is flexible and fault tolerant, and if you nevertheless do " +#| "something wrong, Qalculate! will tell you so. Not fully solvable " +#| "expressions are however not errors. Qalculate! will simplify as far as it " +#| "can and answer with an expression. In addition to numbers and arithmetic " +#| "operators, an expression may contain any combination of variables, units, " +#| "and functions." +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! толып жатқан арзан калькуляторлардың бірі емес. Qalculate! " +"заманауи компьютерлердің асқан қуатын, интерфейсін, икемділігін толығымен " +"қолданатын бағдарлама. Qalculate! назарының ортасында кіріс өрнегі. " +"Математикалық өрнегіне әрбір санды бөлек енгізгеннің орына, оны есептейтін " +"(соңында өзгертуге келетін) өрнегін тікелей келтіруге болады. Өрнекті " +"талдауы икемді және қате қарсы нық болса да қате жіберсеңіз Qalculate! ол " +"туралы ескереді. Толық шешімі жоқ өрнектер қатеге әкелмейді. Qalculate! оны " +"мейілінше ықшамдатқан өрнегін қайтарып береді. Өрнек. сандар мен амалдардан " +"басқа. кез-келген айнымалы, бірлік, функциялар комбинациясынан тұра алады." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Өлшем біріліктері автоматты түрде аударыла ма және қалай аудалылады. Болса, " +"мәе лайықты (жазуы ең қысқа) СИ бірлігіне келтіріледі." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Тригонометриялық функциялардың әдетті бұрыш бірлігі." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Пайдаланатын сандар есеп негізі." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Нәтижесі ықшамдатылу не көбейткіштеріне жіктелу керегін ұйғару." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "Рационал сандар ондық, бөлшек, не аралас түрде көрсетуін ұйғару." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Ақырсыз ондық бөлшек дөңгелектеу орнына соңына үш нүктелеп (мыс., 2/3 " +"бөлшегі 0.666667 деп емес, 0.666666... деп) көрсетіледі. " + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"СИ жүйесінің ондық префикстерін пайдалану бола ма. Болмаса, мыңдық (кило-, " +"мили-) еместері (санти-, деци-, дека-, гекто-) атвоматты түрде қолданбайды." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Рұқсат етілсе, бөлудің орнына теріс дәреже қолданылады (мыс., 5/x^2 деген " +"5*x^-2 болады)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Сандар пішімі." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Рұқсат етілсе, график құжаттың құрамында көрсетіледі, әйтпесе - бөлек " +"терезеде." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "График түрлі-түсті болу-болмауын ұйғару." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Торды салу-салмауын ұйғару." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Графикті айнала толық қоршауын салу-салмауын ұйғару." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Сызықтар қалыңдығы (пиксел) ." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Графикте қолданатын интерполяция қадамдарының саны." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Графиктегі тегістеу әдісі." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Графиктің стилі ғой." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "График түсіндірмесінің орны." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate баса алмайды. Ggnuplot орнатылған ба?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "%1 жетіспейді" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 сан болу тиіс." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 бүтін сан болу тиіс." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 логикалық мән болу тиіс." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "%1 үшін жарамсыз параметрі: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "График командасында бірнеше өрнек (%1 және %2\")" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "ҚАТЕ" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "ЕСКЕРТУ" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Былай аталған функция да, айнымалы да, бірлк те жоқ. " + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Фкнкция: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Графиктің интерфейсі" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "Бір не бірнеше функцияны бірге қатар не бөлек терезелерде салу." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "өрнек" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "параметр" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "мән" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "бүтін" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "логикалық мән" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "сан" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "әдетті: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Функцияның аты" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Атау жарлығы" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "x-осін жарлығы" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "y-осін жарлығы" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Суретті сақтайтын кескін. Бос болса сурет экрандағы терезеде көрсетіледі. " +"Егерде inline=true болса кескін бул параметрдің қатысуысз көрсетіледі." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Сақтайтын кескіннің түрі. Келесінің бірі: auto, png, ps, eps, latex, svg, " +"fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" +"Түрлі-түсті болу үшін 'true' деп қойыңыз, әйтпесе - 'false' деп қойыңыз." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "x-тың минимумы" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "x-тың максимумы" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "x-осін логарифмдік қылу." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "y-осін логарифмдік қылу." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "x-осінің логарифмдік негізі." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "y-осінің логарифмдік негізі." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "График өрісін торлы қылу." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "Графиктің бүкіл жағынан қоршау салу (тек ось жақтарынан ғана емес)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Сызықтардың қалыңдығы." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Графиктің түсіндірмесін көрсететін орны. Келесінің бірі болу керек: none, " +"top_left, top_right, bottom_left, bottom_right, below, outside" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Графикті тегістеу әдісі. Келесінің бірі болу керек: none, unique, csplines, " +"bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Графиктің стилі. Келесінің бірі болу керек: lines, points, points_lines, " +"boxes, histogram, steps, candlesticks, dots" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Екінші x - осі болсын" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Екінші y - осі болсын" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Жаңа терезені ашпай графикті бұрынғысына сала беру." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Интерполяция нүктелерінің аралығы. Оның қадамын да қараңыз." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Интерполяция нүктелерінің саны. Оның қадамын да қараңыз." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "x айнымалының атауы. Беймәлім айнымалы болу тиіс." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Анымалыларды файлға сақтау" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Анықталған айнымалыларды файлға сақтау. Оларды %1 деп қайта жүктеп алуға " +"болады." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "файл" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "файл: сақтайтын файлы" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Айнымалыларды қайта жүктеп алу" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Алдында %1 деп сақталған айнымалыларды файлдан қайта жүктеп алу." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "файл: жүктеп алатын файлы" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Есеп жүйесі:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Бөлшек пішімі:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Ондық" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Нақты" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Бөлшекті" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Аралас" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Сандар пішімі:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Кәдімгі" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Инженерлік" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Нақты" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Ақырсыз тізбектерді белгілеу:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Барлық СИ префикстері:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Теріс дәрежелер:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Есептеу" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Лайықты СИ бірліктеріне келтіру:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Радиан" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Градус" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Градиан" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Келтіру режімі:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Ықшамдату" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Көбейткіштерге жіктеу" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Бұрыш бірлігі:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Графикті сызу" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Графиктерді бірге көрсету:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Толық қоршауы:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Сызықтар қалыңдығы:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Дискреттеу жиілігі:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Тегістеуі:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Натурал кубтық сплайн" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Баспалдақ" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Түсіндірменің орны:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Түрлі-түсті графиктер:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Торды көрсету:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "График стилі:" + +#: backends/qthelpconfig.cpp:45 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Команда жазуы" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Append Text Entry" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Мәтін жазуын жалғау" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Path to python2 command:" +msgid "Add local documentation" +msgstr "python2 командасының жолы:" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Document to open" +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Ашатын құжат" + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Path to python2 command:" +msgid "Download additional documentations" +msgstr "python2 командасының жолы:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Атауы" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, fuzzy, kde-format +#| msgid "Add" +msgctxt "@action:button" +msgid "Add" +msgstr "Қосу" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Орындауыш тетігін қайта жегу" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name:" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Аты:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, fuzzy, kde-format +#| msgid "" +#| "R is a language and environment for statistical computing and graphics, " +#| "similar to the S language and environment.
      It provides a wide " +#| "variety of statistical (linear and nonlinear modelling, classical " +#| "statistical tests, time-series analysis, classification, clustering, ...) " +#| "and graphical techniques, and is highly extensible. The S language is " +#| "often the vehicle of choice for research in statistical methodology, and " +#| "R provides an Open Source route to participation in that activity." +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R деген статистикалық есеп пен графиктарды сызуға арналған программалаутіл " +"және орта. Ол S деген программалау тіл мен ортаға ұқсас.
      Ол, кеңейту " +"мүмкіндігі мол, көп статистикалық (сызықтық және сызықтық емес үлгілеу, " +"классикалық статистикалық сынақтар, уақыттық-тізбектік талдау, жіктеу, " +"шоғырландыру, ...) амалдарды жасау және графиктарды сызу құралы. S тілін " +"статистика саласында жиі қолданады. R деген оның еркін таратылатын жуықтауы." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "%1 файлын ашу қатесі" + +#: backends/R/rextensions.cpp:22 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "R script file (*.R)" +msgstr "*.R|R скрипт файлы" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Команданы талдау қатесі" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Файл таңдау диалогын қос түртіп ашу" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R файлдары (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, fuzzy, kde-format +#| msgid "" +#| "Sage is a free open-source mathematics software system licensed under the " +#| "GPL.
      It combines the power of many existing open-source packages " +#| "into a common Python-based interface." +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage деген GPL лицензиялы, коды ашық, еркін математикалық бағдарлама жүйесі. " +"
      Ол бір қатар коды ашық математикалық дестелердің қуатын біріктіріп, " +"ортақ Python негізіндегі интерфейсті қамтамасыз етеді." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Sage орындалатын файлының жолы" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "LaTeX пішімдеуі пайдалансын" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "%1 дегеннің нәтижесі" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Соңғы шығысы: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, fuzzy, kde-format +#| msgid "" +#| "*.py|Python script file\n" +#| "*.sage|Sage script file" +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" +"*.py|Python скрипт файлы\n" +"*.sage|Sage скрипт файлы" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Бұл өрнекті есептеу кезде Sage процесі қирады" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Sage процесі қирады" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Бұл өрнекті есептеу кезде Sage процесінен шығып кетті" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Sage процесінен шығып кетті" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Sage жегу жаңылысы" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting:" +msgstr "LaTeX пішімдеуі пайдалансын" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Scilab, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.scilab.org/support/documentation" +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "http://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, fuzzy, kde-format +#| msgid "" +#| "

      Warning: this backend works only with Scilab version 5.5 or " +#| "later

      Scilab is a free software, cross-platform numerical " +#| "computational package and a high-level, numerically oriented programming " +#| "language.

      Scilab is distributed under CeCILL license (GPL compatible)" +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"

      Ескерту: Осындағы тетігімен тек Scilab-тың 5.5 нұсқасы (не одан да " +"жаңасы) ғана істейді

      Scilab деген еркін таратылатын, көп-платформалық " +"санды есептеуіш десте және есеп шығаруға бағытталған жоғары-деңгейлі " +"программалау тілі..

      Scilab CeCILL лицензиясы бойынша (GPL-мен үйлесімді) " +"таратылады." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to the Sage executable" +msgid "Path to the Scilab executable" +msgstr "Sage орындалатын файлының жолы" + +#: backends/scilab/scilabextensions.cpp:23 +#, fuzzy, kde-format +#| msgid "" +#| "*.py|Python script file\n" +#| "*.sage|Sage script file" +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +"*.py|Python скрипт файлы\n" +"*.sage|Sage скрипт файлы" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Open file" +msgstr "Кескін файлды ашу" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "Download Example Worksheets" +msgid "Download Examples" +msgstr "Мысалдарын жүктеп алу" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "Мысалды &ашу" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Орындаушы тетігі жоқ

      \n" +"
      Амалдар:\n" +"
      • Баптау диалогындағы параметрлерін өзгерту;
      • Келесі " +"бағдарламалардың бірін орнату:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Қате" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "%1 тетігі орнатылмаған" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "%1 сеансы" + +#: cantor.cpp:386 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to find the Cantor Part with error %1" +msgstr "Cantor бөлшегі табылмады." + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Есептеу..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Дайын" + +#: cantor.cpp:480 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Changed" +msgstr "X ауқымы" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Close Cantor" +msgstr "Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save Project" +msgstr "Нәтижені сақтау" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "Plotting" +msgid "Formatting" +msgstr "Графикті сызу" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Әдетте қолданатын тетігі " + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Әдетте LaTex пішімдеуін пайдалану" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Әдетте ситаксисін талдап бояулау" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Әдетте автотолықтыруын рұқсат ету" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Әдетте өрнектерді нөмірлеу " + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Әдетте құжат өзгерістерін анимациялау" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Назардағыдан төменгі өрнектеді автоматты түрде қайта есептеп шығу" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Жәй мәтінді сақтау" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "LaTeX-ке экспорттау" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Құжатты есептеу" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "LaTeX көмегімен көрсетілсін" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Ситаксисін талдап бояулау" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Автотолықтыру" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Жол нөмірлеуі" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Pause Animation" +msgid "Animations" +msgstr "Анимацияны аялдату" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Орындауыш тетігін қайта жегу" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Жазуды есептеу" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Команда жазуын енгізу" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Мәтін жазуын енгізу" + +#: cantor_part.cpp:278 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Insert Markdown Entry" +msgstr "Команда жазуын енгізу" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Latex жазуын енгізу" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Бет үзілімін енгізу" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Кескінді енгізу" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Expand All Results" +msgstr "Нәтижелер" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove All Results" +msgstr "Нәтижені өшіру" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Назардағы жазуды өшіру" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Скрипт редакторы көрсетілсін" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Автотолықтырулар көрсетілсін" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, fuzzy, kde-format +#| msgid "(C) 2009-2012 Alexander Rieder" +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2012 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, fuzzy, kde-format +#| msgid "*.cws|Cantor Worksheet" +msgid "Cantor Worksheet (*.cws)" +msgstr "*.cws|Cantor құжаты" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save as" +msgstr "Нәтижені сақтау" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Restart %1?" +msgstr "Орындауыш тетігін қайта жегу" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Есепті үзу" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Сеанс қатесі: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Сеансты бастау күйіне келтірілді" + +#: cantor_part.cpp:690 +#, fuzzy, kde-format +#| msgid "Initializing Session" +msgid "Initializing..." +msgstr "Сеансты бастау күйіне келтіру" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" +"Назардағы құжатты жариялап ашық веб -серверге жүктеп беруді қалайсыз ба?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Сұрақ - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Құжат сақталмаған. Жүктеп берудің алдында сақтау керек." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Ескерту - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Бұл тетік скрипттерді қолдамайды." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Өзгерту" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Көрініс" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "Құ&жат" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "&Баптау" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Файл" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Жаңа" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Панельдер" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Баптау" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "Default" +msgstr "Әдетте" + +#: commandentry.cpp:151 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Text &Color..." +msgid "Text Color" +msgstr "Мәтіннің &түсі..." + +#: commandentry.cpp:176 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "&Font" +msgid "Font" +msgstr "&Қаріп" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, fuzzy, kde-format +#| msgctxt "@action boldify selected text" +#| msgid "&Bold" +msgid "Bold" +msgstr "Қал&ың" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, fuzzy, kde-format +#| msgctxt "@action italicize selected text" +#| msgid "&Italic" +msgid "Italic" +msgstr "Көл&беу" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Show Results" +msgstr "Нәтижелер" + +#: commandentry.cpp:338 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Hide Results" +msgstr "Нәтижелер" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Help" +msgstr "%1 анықтамасын көрсету" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Есеп үзілді" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Іздеу панелі" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Мынаны табу:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Келесі" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Алдыңғысы" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Нені ауыстыру:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Ауыстыру" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "&Бүкілін Ауыстыру" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Мынада іздеу:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "Үлкен-кішілігін &ескеріп" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Font &Size" +msgid "Font Size:" +msgstr "Қаріп өл&шемі" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Section" +msgstr "Функция" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Subsection" +msgstr "Функция" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Solid Line Style" +msgstr "Автотолықтыру стилі:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Dot Line Style" +msgstr "Автотолықтыру стилі:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgid "Use Colors" +msgid "Line Color" +msgstr "Түрлі-түсті" + +#: horizontalruleentry.cpp:351 +#, fuzzy, kde-format +#| msgid "Style" +msgid "Line Style" +msgstr "Стилі" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Кескінді баптау" + +#: imageentry.cpp:256 +#, fuzzy, kde-format +#| msgid "Double click to open file selection dialog" +msgid "Double click here to configure image settings" +msgstr "Файл таңдау диалогын қос түртіп ашу" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "%1 кескіні жүктелмеді " + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Нәтижені сақтау" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Image" +msgid "Images (%1)" +msgstr "Кескін" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Кескін параметрлері" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Ашу" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Көрсететін өлшемі" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Ені" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Биіктігі" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, fuzzy, kde-format +#| msgid "&Previous" +msgid "Preview" +msgstr "&Алдыңғысы" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Өлшемін басу" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Экран өлшемі қолдалылсын" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Кескін параметрлері" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(авто)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "пкс" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Кескін файлды ашу" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "LaTeX кодын көрсету" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Орындалатын latex файлдың жолы" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Орындалатын dvips файлдың жолы" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Мәні" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "X variable" +msgid "" +msgstr "X айнымалысы" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Мынадан:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Мынаған дейін:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Негізгі атауы" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Абциссасы" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Ординатасы" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Графиктің атауы:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Математикалық қолданбаларға KDE-нің интерфейсі" + +#: main.cpp:74 +#, fuzzy, kde-format +#| msgid "(C) 2009-2012 Alexander Rieder" +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2012 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, fuzzy, kde-format +#| msgid "Scilab and Python backends" +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Scilab мен Python тетіктері" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, fuzzy, kde-format +#| msgid "Alexander Rieder" +msgid "Alexander Semke" +msgstr "Alexander Rieder" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra орындауышы бағдарламасы" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave орындауышы бағдарламасы" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Интерфейсі" + +#: main.cpp:86 main.cpp:87 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor icon" +msgstr "Cantor" + +#: main.cpp:92 +#, fuzzy, kde-format +#| msgid "Use this backend" +msgid "Use backend " +msgstr "Осы пайдалансын" + +#: main.cpp:95 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documents to open." +msgstr "Ашатын құжат" + +#: main.cpp:130 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1" +msgstr "%1 файлын ашу қатесі" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, fuzzy, kde-format +#| msgid "Syntax Error" +msgid "Cantor Math Error" +msgstr "Синтаксис қатесі" + +#: markdownentry.cpp:796 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Cantor бөлшегі табылмады." + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Бет үзілімі ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, fuzzy, kde-format +#| msgid "&Match case" +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Үлкен-кішілігін &ескеріп" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor files" +msgstr "Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Jupyter files" +msgstr "Кескін файлды ашу" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, fuzzy, kde-format +#| msgid "file" +msgid "All files" +msgstr "файл" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Аты:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Мәні:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgid "Add New Variable" +msgstr "Жаңа айнымалыны қосу" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Айнымалыларды жүктеп алу" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Save Variables" +msgstr "Айнымалыларды сақтау" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Remove Variables" +msgstr "Айнымалыларды сақтау" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, fuzzy, kde-format +#| msgid "SearchBar" +msgid "Search/Filter" +msgstr "Іздеу панелі" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Бүкіл айнымалыларды өшірмексіз бе?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +#| msgid "Loading failed." +msgid "Load file" +msgstr "Жүктеу жаңылысы." + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Нәтижені сақтау" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Нәтижені өшіру" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"KDE-нің мәтін өңдегіш компоненті табылмады;\n" +"KDE орнатуын түгелдеңіз" + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Скрипт редакторы" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Скрипт редакторы - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Табылмады" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Басына жетті" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Соңына жетті" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "%1 рет ауыстырылды" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Командалар" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Нәтижелер" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Қателер" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Мәтін" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX коды" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "Бастау" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Әдетті тетігі:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "Құ&жат" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "LaTeX пішімдеуі пайдалансын" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting" +msgstr "LaTeX пішімдеуі пайдалансын" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Ситаксисін талдап бояулау болсын" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Ситаксисін талдап бояулау" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "Автотолықтыру болсын" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Жол нөмірлеуі" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Жол нөмірлеуі" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "Графиктер құжатқа ендірілсін" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Теңеулер:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "Жазуларды қайта автоесептелсін" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown:" +msgstr "Команда жазуын енгізу" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "LaTeX пішімдеуі пайдалансын" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, fuzzy, kde-format +#| msgid "Find:" +msgid "Find…" +msgstr "Мынаны табу:" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert to Text Entry" +msgstr "Мәтін жазуын енгізу" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Copy result" +msgstr "Нәтижені өшіру" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Кескіндеп көрсету" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Кодын көрсету" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show HTML Code" +msgstr "Кодын көрсету" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Html" +msgstr "%1 анықтамасын көрсету" + +#: textresultitem.cpp:90 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show HTML" +msgstr "%1 анықтамасын көрсету" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Eps файлы кескінделмеді. Қосымша дестелер қажеті мүмкін" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Нәтижені сақтау" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "%1 файлы жазылмады." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, fuzzy, kde-format +#| msgid "Cannot write file %1." +msgid "Cannot write file." +msgstr "%1 файлы жазылмады." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "%1 файлын сақтау қатесі" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "latex.xsl стиль кестесін жүктеу қатесі" + +#: worksheet.cpp:1327 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1." +msgstr "%1 файлын ашу қатесі" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Open File" +msgstr "Кескін файлды ашу" + +#: worksheet.cpp:1350 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the selected file for reading." +msgstr "%1 файлын ашу қатесі" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"%1 орындауыш бағдарламаның бір мәселесі бар.\n" +"Баптауларыңызды тексеріңіз не керегін орнатыңыз.\n" +"Бұл құжатты тек қарай аласыз. " + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert To" +msgstr "Мәтін жазуын енгізу" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Commands" +msgid "Command" +msgstr "Командалар" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown" +msgstr "Команда жазуын енгізу" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Кескін" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Бет үзілімі" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, fuzzy, kde-format +#| msgid "Points and Lines" +msgid "Horizontal Line" +msgstr "Нүктелер мен сызықтар" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +#| msgid "Drag Entry" +msgid "Hierarchy Entry" +msgstr "Жазуды сүйреу" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Insert After" +msgstr "Мәтін жазуын енгізу" + +#: worksheet.cpp:1856 +#, fuzzy, kde-format +#| msgid "Insert Before" +msgid "Insert Before" +msgstr "Алдына енгізу" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Ендіру" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "Өлшемін басу" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Move Entries Down" +msgstr "Мәтін жазуын енгізу" + +#: worksheet.cpp:1933 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate Entries" +msgstr "Жазуды есептеу" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Entries" +msgstr "Жазуды өшіру" + +#: worksheet.cpp:1947 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Collapse Command Entry Results" +msgstr "Команда жазуын енгізу" + +#: worksheet.cpp:1948 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Expand Command Entry Results" +msgstr "Команда жазуын жалғау" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Remove Command Entry Results" +msgstr "Команда жазуы" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Add Command Entry To Execution" +msgstr "Команда жазуын жалғау" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Мәтіннің &түсі..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Түсі" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Мәтінді &белгілеу..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Қаріп" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Қаріп өл&шемі" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "Қал&ың" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "Көл&беу" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Асты сызылған" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Сызып тастаған" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "&Солға туралау" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Солға" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "&Ортаға туралау" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Ортаға" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "&Оңға туралау" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Оңға" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Ені бойынша" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Ені бойынша" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove all results" +msgstr "Нәтижені өшіру" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +#| msgid "Ready" +msgid "Red" +msgstr "Дайын" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Dark Orange" +msgstr "X ауқымы" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Orange" +msgstr "X ауқымы" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Light Orange" +msgstr "X ауқымы" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, fuzzy, kde-format +#| msgid "Do you also want to export the images?" +msgid "Do you really want to remove this entry?" +msgstr "Кескінді де экспорт етуді қалайсыз ба?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Жазуды өшіру" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Жазуды сүйреу" + +#~ msgid "Animate Worksheet" +#~ msgstr "Құжатты анимациялау" + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Рұқсат етілсе, Cantor автоматты түрде назардағынан төменгі жазуларын " +#~ "есептеп шығады." + +#~ msgid "Defaults" +#~ msgstr "Әдетте" + +#~ msgid "Enable Line Numbers" +#~ msgstr "Жол нөмірлеуі болсын" + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Құжат анимациясы болсын" + +#, fuzzy +#~| msgid "Plot" +#~ msgid "Plot.ly" +#~ msgstr "График" + +#, fuzzy +#~| msgid "Package:" +#~ msgid "Graphic Package: " +#~ msgstr "Дестесі:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      KDE математика құралы" + +#, fuzzy +#~| msgid "Document to open" +#~ msgid "Documentation:" +#~ msgstr "Ашатын құжат" + +#~ msgid "Show %1 Help" +#~ msgstr "%1 анықтамасын көрсету" + +#, fuzzy +#~| msgid "Path to Maxima:" +#~ msgid "Path to Julia:" +#~ msgstr "Maxima қайда:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Графиктер құжатқа ендірілсін" + +#~ msgid "Clear Variables" +#~ msgstr "Айнымалыларды тазалау" + +#~ msgid "Right click here to insert image" +#~ msgstr "Кескінді енгізу үшін оң батырманы түртіңіз" + +#, fuzzy +#~| msgid "Configure Image" +#~ msgid "Choose Image" +#~ msgstr "Кескінді баптау" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Құптау - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Мәтін жазуы" + +#~ msgid "LaTeX Entry" +#~ msgstr "Latex жазуы" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Мәтін жазуын енгізу" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "scilab-adv-cli командасының жолы(Ескерту: Scilab нұсқасы 5.4 не одан да " +#~ "жаңа болу керек)" + +#, fuzzy +#~| msgid "Insert Image" +#~ msgid "Insert Image Attachment" +#~ msgstr "Кескінді енгізу" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Latex жазуын енгізу" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Octave орындалатын файлының жолы" + +#~ msgid "Path to Maxima:" +#~ msgstr "Maxima қайда:" + +#, fuzzy +#~| msgid "Failed to start Sage" +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Sage жегу жаңылысы" + +#~ msgid "Path to Sage:" +#~ msgstr "Sage қайда:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "scilab-adv-cli командасының жолы:" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Cantor айнымалыларды құру/жоюды қадағаласын" + +#, fuzzy +#~| msgid "Integrate Plots in Worksheet" +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "Графиктер құжатқа ендірілсін" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Octave орындалатын файлының жолы" + +#~ msgid "Path to Octave:" +#~ msgstr "Octave қайда:" + +#~ msgid "Unnamed" +#~ msgstr "Аталмаған" + +#, fuzzy +#~| msgctxt "the url to the documentation Python 2" +#~| msgid "http://docs.python.org/2/" +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "http://docs.python.org/2/" + +#, fuzzy +#~| msgid "" +#~| "

      Python is a remarkably powerful dynamic programming language that is " +#~| "used in a wide variety of application domains. There are several Python " +#~| "packages to scientific programming.

      This backend supports Python 2." +#~| "

      " +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "

      Python деген тамаша, түрлі салада қолданатын программалау тіл. Ғылыми " +#~ "программалауға арналған бірнеше Python дестелері бар.

      Осындағы " +#~ "тетік Python 2-ні таниды.

      " + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Орындауыш тетігі:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "Бұл файлды құрған бағдарламасы орнатылмаған. Оған керегі: %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Кұжатты жариялау" + +#~ msgid "Waiting for Image..." +#~ msgstr "Кескінді күту" + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "%1 файлы ашылмады: Беймәлім MIME түрі" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|LaTeX құжаты" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantor құжаты" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Cantor R тетігінің орындаушы сервері" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Қолдануы: saveVariables файлы" + +#~ msgid "Saving failed." +#~ msgstr "Сақтау жаңылысы." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Қолдануы: loadVariables файлы" + +#~ msgid "Loading failed." +#~ msgstr "Жүктеу жаңылысы." + +#, fuzzy +#~| msgid "(C) 2009-2012 Alexander Rieder" +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2012 Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "python командасының жолы" + +#~ msgid "Cantor Server for R" +#~ msgstr "R Cantor сервері" + +#~ msgid "Path to python2 command:" +#~ msgstr "python2 командасының жолы:" + +#~ msgid " Enable Variable Management" +#~ msgstr " Айнымалы басқаруы болсын" + +#~ msgid "Could not start the server." +#~ msgstr "Сервері жегілмеді." + +#~ msgid "Start Animation" +#~ msgstr "Анамацияны бастау" + +#~ msgid "Restart Animation" +#~ msgstr "Анамацияны жаңадан бастау" + +#~ msgid "Append Latex Entry" +#~ msgstr "Latex жазуын жалғау" + +#~ msgid "Append Image" +#~ msgstr "Кескінді жалғау" + +#~ msgid "Append Page Break" +#~ msgstr "Бет үзілімін жалғау" + +#~ msgid "Other" +#~ msgstr "Басқа" + +#~ msgid "And %1 more..." +#~ msgstr "Және басқа %1..." + +#~ msgid "Main Toolbar" +#~ msgstr "Негізгі құралдар" + +#~ msgid "Popup" +#~ msgstr "Қалқымалы" + +#~ msgid "The style used for Completion" +#~ msgstr "Қолданатын автотолықтыру стилі" diff --git a/po/ko/cantor.po b/po/ko/cantor.po new file mode 100644 index 0000000..72ec0f0 --- /dev/null +++ b/po/ko/cantor.po @@ -0,0 +1,4936 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Shinjo Park , 2011, 2015, 2020, 2021, 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-10-03 15:21+0200\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 21.12.3\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "박신조" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "kde@peremen.name" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "일시 정지" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "시작" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "정지" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "애니메이션 결과 저장" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "애니메이션 (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "고급 그래프 그리기" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "플롯" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "수식:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "추가 옵션:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "플롯(&P)" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "옵션 활성화됨" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "계산(&C)" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "미분" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "변수:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "횟수: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "패키지(&P)" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "패키지 가져오기" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "패키지:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "적분" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "최솟값:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "최댓값:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "정적분" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "선형 대수(&L)" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "행렬 생성" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "열:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "행:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "고윳값 계산" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "행렬:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "고유벡터 계산" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "역행렬 계산" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "2차원 플롯" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "변수" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "이름" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "최솟값:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "최댓값:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "3차원 플롯" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1번째 변수" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2번째 변수" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "스크립트 실행" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "수식 풀기" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "수식:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "변수:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "백엔드 선택" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      추천 버전: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      더 많은 정보를 보려면 %2을(를) " +"참조하십시오.
      " + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      일부 조건을 만족하지 않았습니다: %1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "기본 백엔드로 사용" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia는 기술 컴퓨팅을 위한 고수준 고성능 동적 프로그래밍 언어이며, 다" +"른 기술 컴퓨팅 환경과 비슷한 문법을 사용합니다. 고급 컴파일러, 분산 병렬 실" +"행, 수치 정확성, 다양한 수학 함수 라이브러리를 제공합니다." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"프로그램 설정에서 지정한 Julia 경로는 실행 파일을 가리켜야 합니다. 심볼릭 링" +"크는 사용할 수 없습니다. 프로그램 설정에서 올바른 경로를 지정하고 다시 시도하" +"십시오." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Cantor에서 %1의 Julia 버전을 알 수 없습니다. 올바른 Julia 실행 파일 경로를 지" +"정한 다음(심볼릭 링크 사용 불가능) 다시 시도하십시오." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Cantor와 Julia v%1.%2.%3을(를) 사용하려고 하고 있습니다. 이 버전의 Cantor는 " +"Julia v%4.%5.%6을(를) 지원하도록 컴파일되었습니다. 이 버전의 Julia를 지정하거" +"나 Cantor를 Julia v%1.%2.%3을(를) 사용하여 다시 컴파일하십시오." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Julia 네이티브 REPL 경로" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "변수 관리 활성화" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "워크시트에 플롯 통합" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "플롯 도우미용 그래픽 패키지" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# 죄송합니다. Gadfly에서는 3D 플롯을 지원하지 않습니다" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Julia 스크립트 파일 (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "오류 - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"Julia 세션에 로그인할 수 없습니다. 다음 내부 파일이 없어서 Julia 내부 오류가 " +"발생했습니다 - \"%1\"" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "알 수 없는 내부 오류로 Julia 세션에 로그인할 수 없음" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Julia 프로세스가 중단되었습니다." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Julia 프로세스를 시작할 수 없습니다." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "알 수 없는 이유로 Julia 프로세스와 통신할 수 없습니다." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Julia에서는 현재 프로그램 시각화 프레임워크 GR(https://gr-framework.org/)만 " +"지원합니다. 이 패키지를 설치하지 않았다면 설치하십시오. Cantor나 Julia REPL에" +"서 Pkg.install(\"GR\") 명령을 내리면 됩니다. 이 작업은 시간이 걸릴 수 있으므" +"로 패키지 설치 진행 상태를 표시할 수 있는 Julia REPL에서 수행하기를 추천합니" +"다." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "일반" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "실행 파일:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "플롯 통합:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"이 옵션을 사용하면 플롯을 워크시트 내부에 표시합니다. 이 옵션을 사용하지 않으" +"면 플롯을 외부 창으로 표시합니다." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "사용함" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "변수 관리:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "변수의 생성과 해제를 감시하고 기존 변수를 변수 패널에 표시합니다." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "내부 플롯 형식:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "플롯 임베드가 활성화되었을 때 사용할 내부 플롯 형식입니다." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "플롯 도우미에서 사용할 그래픽 패키지" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "플롯 도우미용 패키지" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "플롯" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "자동 실행" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "자동 실행할 명령" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "문서" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "세션을 시작할 때 자동으로 실행할 스크립트 목록" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "오류: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"이 명령은 새 워크시트를 시작할 때 자동으로 실행합니다. 필요한 모듈을 불러오거" +"나 환경을 변경하는 등에 유용합니다." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua는 간단한 절차적 문법을 가지고 있는 빠르고 가벼운 스크립트 언어입니" +"다. Lua에는 수학과 과학 라이브러리가 있습니다." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "luajit 명령 경로" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Lua 스크립트 파일 (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "luajit 경로:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima는 미분, 적분, 테일러 급수, 라플라스 변환, 미분 방정식, 선형 방" +"정식의 계, 다항식, 집합, 목록, 행렬, 텐서를 지원하는 기호 및 수치 수식 처리 " +"시스템입니다. Maxima는 정확한 분수, 고정밀 정수, 가변 정밀도 부동 소수점을 사" +"용하여 정밀도 높은 결과를 반환합니다. Maxima는 데이터와 함수를 2차원과 3차원" +"으로 플롯할 수 있습니다." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Maxima 실행 파일 경로" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "오류: */ 문자열이 너무 많음" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "오류: /* 문자열이 너무 많음" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "오류: ; 앞에 \"가 와야 함" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "플롯 결과 대기 중" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Maxima 배치 파일 (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Maxima를 시작할 수 없음" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima가 충돌함. 다시 시작하는 중..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "Maxima가 짧은 시간 동안 두 번 충돌했습니다. 재시작을 중단합니다" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave는 수치 계산용 고급 언어입니다.
      선형 및 비선형 문제를 수" +"치 계산으로 푸는 명령행 인터페이스를 제공하며, 다른 수치 계산은 Matlab과 호환" +"되는 언어를 사용합니다." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Octave 스크립트 파일 (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "구문 오류" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "플롯 통합 시험이 실패했습니다." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "플롯 통합이 비활성화됩니다." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"Cantor에서 Octave의 플롯 그래픽 백엔드가 설치되어 있지 않기 때문에 플롯을 생" +"성할 수 없다고 판단했습니다. available_graphics_toolkits() 함수에서 빈 출력" +"을 반환했습니다. 플롯을 생성하려면 gnuplot, fltk, qt 등 추가 OS 패키지를 설치" +"해야 할 수도 있습니다." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python은 다양한 영역에서 사용되는 강력한 동적 프로그래밍 언어입니다. " +"과학 프로그래밍에 사용되는 여러 Python 패키지가 있습니다." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# 죄송합니다. Bokeh에서는 3D 플롯을 지원하지 않습니다" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Python 스크립트 파일 (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Cantor Python 서버가 중단되었습니다." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Cantor Python 서버를 시작할 수 없습니다." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "알 수 없는 이유로 Cantor Python 서버 프로세스와 통신할 수 없습니다." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Matplotlib 패키지의 내장 그래픽을 사용하려면 \"matplotlib\" Python 패키지를 " +"먼저 설치하십시오." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Plot.ly 내장 그래픽을 사용하려면 \"plotly\" Python 패키지와 Plot.ly와 호환되" +"는 \"orca\" 실행 파일을 설치하십시오. Plot.ly 문서의 \"Static Image Export\" " +"부분을 참조하십시오." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - 플롯 대화 상자" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "함수" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "제목" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "수식" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "추가" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "삭제" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "목록 비우기" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "X 변수" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "스타일" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "선" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "점" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "점과 선" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "상자" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "히스토그램" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "단계" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "캔들스틱" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "도트" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "부드럽게" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "없음" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "단조" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "자연 3차 스플라인" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "베지어" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "베지어(단조)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "함수 범위" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X 범위" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "샘플링 레이트(&M)" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "단계 크기(&Z)" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "옵션" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "플롯 제목" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "X축 이름표" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Y축 이름표" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "범례 위치" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "범례 숨기기" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "왼쪽 위" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "오른쪽 위" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "왼쪽 아래" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "오른쪽 아래" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "아래" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "외부" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "격자 표시" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "전체 경계 표시" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "색상 사용" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "인라인으로 표시" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "로그 단위 X축" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "로그 단위 Y축" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "파일 옵션" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "플롯을 파일로 저장" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "파일 형식" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "파일 이름에서 감지" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate!는 단순히 저렴한 탁상용 계산기를 대체하는 소프트웨어가 아닙" +"니다. Qalculate!는 현대적인 컴퓨터의 인터페이스, 성능, 유연함을 완전히 사용하" +"는 것을 목표로 합니다. Qalculate! 기능의 중심점은 수식 입력입니다. 모든 숫자" +"를 개별적으로 수식으로 입력하지 않고, 전체 수식을 입력한 다음 나중에 수정할 " +"수도 있습니다. 수식 처리는 유연하고 오류를 받아들일 수 있어서, 무언가를 잘못 " +"입력했다면 Qalculate!에서 알려 줍니다. 완전히 해결할 수 없는 수식은 오류로 취" +"급되지 않습니다. Qalculate!는 해당 수식을 최대한 간략화한 다음 다른 수식으로 " +"대답합니다. 수식에는 숫자와 수학 연산자 외에도 변수, 단위, 함수를 자유롭게 사" +"용할 수 있습니다." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"단위 자동 변환 사용 여부와 방식입니다. 이 옵션을 사용하면 최적 SI 단위(값이 " +"가장 작은 단위)로 변환합니다." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "삼각 함수에 사용할 기본 각도 단위입니다." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "해석하고 계산한 숫자의 진수입니다." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "계산 결과를 간략화하거나 인수분해할지 여부입니다." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "유리수를 소수, 분수, 그 사이의 무언가로 표시할지 여부입니다." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"이 옵션을 사용하면 순환소수의 연속되는 자릿수를 반올림하지 않고 점 세 개로 표" +"시합니다(예: 2/3을 0.666667이 아닌 0.666666...으로 표시함)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"이 옵션을 사용하면 모든 십진 SI 접두사를 사용합니다. 이 옵션을 사용하지 않으" +"면 1000의 배수가 아닌 접두사(센티, 데시, 데카, 헥토)를 자동으로 사용하지 않습" +"니다." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"이 옵션을 사용하면 나눗셈 대신 음수 제곱수를 사용합니다(예: 5/x^2 대신 " +"5*x^-2 사용)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "숫자 디스플레이입니다." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"이 옵션을 사용하면 워크시트 내에 플롯을 표시합니다. 이 옵션을 사용하지 않으" +"면 별도의 창으로 플롯을 표시합니다." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "플롯에 색상을 사용할지 여부입니다." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "격자를 플롯에 포함할지 여부입니다." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "플롯 주위에 전체 테두리를 그릴지 여부입니다." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "픽셀 단위 선 굵기입니다." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "플롯 시 사용할 보간 단계 수입니다." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "플롯에서의 부드럽게 표시 모드입니다." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "플롯 스타일입니다." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "플롯에 범례를 표시할 위치입니다." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" +"Qalculate에서 출력할 수 없다고 보고했습니다. gnuplot이 설치되어 있습니까?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "%1 없음" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1이(가) 숫자여야 합니다." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1이(가) 정수여야 합니다." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1이(가) 이진 값이어야 합니다." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "%1의 옵션 잘못됨: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "플롯 명령 한 개에서 여러 수식을 찾았습니다(%1, %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "오류" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "경고" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "지정한 이름의 함수, 변수, 단위가 없습니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "함수: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "플롯 인터페이스" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "함수를 인라인이나 별도의 창으로 플롯합니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "수식" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "옵션" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "값" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "정수" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "이진 값" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "숫자" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "기본값: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "함수 이름" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "제목 이름표" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "X축 이름표" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Y축 이름표" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"플롯을 저장할 그림 파일입니다. 비워 두면 화면에 플롯을 표시합니다. " +"inline=true이면 이 옵션과 관계 없이 이미지를 표시합니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"저장할 그림 형식입니다. auto, png, ps, eps, latex, svg, fig 중에서 지정해야 " +"합니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "플롯에 색상을 사용하려면 true, 단색 플롯은 false입니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "최소 X축 값입니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "최대 X축 값입니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "X축에 로그 단위 눈금을 사용할지 여부입니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Y축에 로그 단위 눈금을 사용할지 여부입니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "X축의 로그 밑입니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Y축의 로그 밑입니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "플롯에 격자를 표시할지 여부입니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "플롯의 모든 변에 테두리를 표시할지 여부입니다(축 외에도)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "선 굵기입니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"플롯 범례를 표시할 위치입니다. none, top_left, top_right, bottom_left, " +"bottom_right, below, outside 중 하나여야 합니다" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"플롯을 부드럽게 합니다. none, unique, csplines, bezier, sbezier 중 하나여야 " +"합니다" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"플롯 스타일입니다. lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots 중 하나여야 합니다" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "두 번째 X축의 축척입니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "두 번째 Y축의 축척입니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "플롯을 새 창이 아닌 인라인으로 표시할지 여부입니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "두 보간 지점간 거리입니다. 단계 설정도 참조하십시오." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "보간 지점의 개수입니다. 단계 설정도 참조하십시오." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "X 변수의 이름입니다. 알 수 없는 변수여야 합니다" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "파일로 변수 저장" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"현재 정의된 모든 변수를 파일로 저장합니다. %1(으)로 다시 불러올 수 있습니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "file" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "file: 저장할 파일" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "파일에서 변수 불러오기" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "%1에서 이전에 만든 파일에서 변수를 불러옵니다." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "file: 불러올 파일" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "숫자 진수:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "분수 형식:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "10진수" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "정확함" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "분수" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "대분수" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "숫자 표시:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "순수" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "과학" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "정밀" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "무한 급수 표시:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "모든 SI 접두사 사용:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "음의 제곱수 사용:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "계산" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "최적 SI 단위로 변환:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "라디안" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "도" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "그라디안" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "구조화 모드:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "간략하게" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "인수분해" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "각도 단위:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "플롯" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "인라인으로 플롯 표시:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "전체 테두리 표시:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "선 굵기:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "샘플링 레이트:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "부드럽게 표시 모드:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "자연 3차 스플라인" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "단계" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "범례 위치:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "플롯에 색상 사용:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "격자 표시:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "플롯 스타일:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "항목 수정" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "새 항목 추가" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "이름을 비워둘 수 없습니다." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "로컬 문서 추가" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "새 문서 가져오기" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "추가 문서 다운로드" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Qt 압축된 도움말 파일이 잘못되었습니다." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "문서를 이미 가져옴" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "수정" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "삭제" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "GHNS로 삭제하십시오." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "추가 문서 파일 설치" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "이름" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "경로" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "추가" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "아이콘:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "아이콘 선택" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "이름:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "이름 입력" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "이름 선택..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "경로:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Qt 도움말 파일 선택..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Qt 도움말 파일 선택..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R은 통계 계산과 그래픽용 언어 환경으로 S 언어 및 환경과 유사합니다. " +"
      다양한 통계(선형 및 비선형 모델링, 고전 통계학적 시험, 시계열 분석, 분" +"류, 군집, ...) 및 그래픽 기능을 제공하며, 여러 단계로 확장할 수 있습니다. S " +"언어는 통계 계산에 자주 사용되며, R은 오픈 소스로 이러한 기능을 제공합니다." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "파일 %1 열기 오류" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "R 스크립트 파일 (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "명령 처리 중 오류 발생" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "로컬 R 문서의 URL" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "파일 선택 대화 상자를 열려면 두 번 클릭하십시오" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R 소스 파일 (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage는 GPL로 배포되는 오픈소스 수학 소프트웨어 시스템입니다.
      많은 " +"오픈 소스 패키지의 능력을 Python 인터페이스를 기반으로 결합합니다." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Sage 실행 파일 경로" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Sage 백엔드의 LaTeX 조판 사용" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "%1의 결과" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"마지막 출력:\n" +"%2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Python 스크립트 파일 (*.py);;Sage 스크립트 파일 (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Sage 버전 %1.%2은(는) 지원하지 않습니다. Cantor에서 사용하려면 지원하는 버전" +"으로 업그레이드하십시오." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Sage의 버전을 알 수 없습니다. 설치 상태와 'sage -v' 명령의 출력을 확인하십시" +"오." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "이 수식을 처리하는 중 Sage 프로세스가 충돌함" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Sage 프로세스가 충돌함" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "이 수식을 처리하는 중 Sage 프로세스가 종료됨" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Sage 프로세스 종료됨" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Sage를 시작할 수 없음" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "LaTeX 조판:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"Sage의 LaTeX 출력은 올바르지 않을 수도 있으므로 더 나은 사용자 경험을 위해서 " +"LaTeX 조판을 비활성화할 수도 있습니다" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab은 자유 소프트웨어, 크로스 플랫폼 수치 계산 패키지이자 고수준 수" +"치 지향 프로그래밍 언어입니다. Scilab은 GPL과 호환되는 CeCILL 라이선스로 배포" +"됩니다." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Scilab 실행 파일 경로" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Scilab 스크립트 파일 (*.sce);;Scilab 함수 파일 (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "파일 %1이(가) 이미 열려 있습니다." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "파일 열기" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "예제 다운로드" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "예제 열기(&O)" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "이전 워크시트로 이동" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "다음 워크시트로 이동" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"모든 지원하는 파일 (*.cws *ipynb);;Cantor 워크시트 (*.cws);;Jupyter 노트북 " +"(*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      백엔드를 찾을 수 없음

      \n" +"
      다음을 시도해 보십시오:\n" +"
      • 설정 대화 상자의 설정 변경
      • 다음 중 하나 이상의 패키지 설" +"치:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "오류" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "%1 백엔드가 설치되지 않음" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"%1 백엔드가 설치되었지만 비활성화되어 있습니다. 설치 상태와 Cantor 설정을 확" +"인하십시오" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "세션 %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Cantor 부분을 찾을 수 없습니다. 오류 %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "계산 중..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "준비" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "변경됨" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "저장하지 않은 워크시트가 열려 있습니다. 닫으시겠습니까?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Cantor 닫기" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "현재 프로젝트가 수정되었습니다. 저장하시겠습니까?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "프로젝트 저장" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "서식" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "기본으로 사용할 백엔드" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "기본으로 조판 사용" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "기본으로 구문 강조" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "기본으로 자동 완성 사용" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "기본으로 식에 번호 붙이기" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "기본으로 워크시트 변경 애니메이션 사용" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"기본으로 텍스트와 Markdown에서 $$..$$ 안에 있는 수식을 수학적으로 표시" +"(pdflatex 필요)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "자동으로 아래에 있는 식 다시 계산" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "백엔드를 다시 시작할 때 사용자에게 묻기" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "Jupyter 노트북 형식으로 워크시트를 저장할 때 텍스트 항목의 서식 저장" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "이전 Cantor 항목 배치 스타일 사용" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "임베드된 수식 렌더 오류 표시" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "텍스트 결과를 표시할 최대 줄 수" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "장 계층 구조 글꼴" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "장 계층 구조 글꼴 크기" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "장 계층 구조 글꼴 이탤릭" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "장 계층 구조 글꼴 굵게" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "하위 장 계층 구조 글꼴" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "하위 장 계층 구조 글꼴 크기" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "하위 장 계층 구조 글꼴 이탤릭" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "하위 장 계층 구조 글꼴 굵게" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "절 계층 구조 글꼴" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "절 계층 구조 글꼴 이탤릭" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "절 계층 구조 글꼴 굵게" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "하위 절 계층 구조 글꼴" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "하위 절 계층 구조 글꼴 이탤릭" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "하위 절 계층 구조 글꼴 굵게" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "문단 계층 구조 글꼴" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "문단 계층 구조 글꼴 이탤릭" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "문단 계층 구조 글꼴 굵게" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "하위 문단 계층 구조 글꼴" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "하위 문단 계층 구조 글꼴 이탤릭" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "하위 문단 계층 구조 글꼴 굵게" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "일반 텍스트로 저장" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "LaTeX으로 내보내기" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "워크시트 계산" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "확대/축소" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "LaTeX으로 조판" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "구문 강조" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "자동 완성" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "줄 번호" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "애니메이션" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "임베드된 수식" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "백엔드 다시 시작" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "항목 계산" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "명령 항목 삽입" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "텍스트 항목 삽입" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Markdown 항목 삽입" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "LaTeX 항목 삽입" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "쪽 나누기 삽입" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "그림 삽입" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "모든 결과 접기" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "모든 결과 펴기" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "모든 결과 삭제" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "현재 항목 삭제" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "스크립트 편집기 표시" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "자동 완성 표시" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Cantor 워크시트 (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyter 노트북 (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "다른 이름으로 저장" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "저장" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "모든 계산 결과가 손실됩니다. %1을(를) 다시 시작하시겠습니까?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "%1을(를) 다시 시작하시겠습니까?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "중지" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "세션 오류: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "초기화 완료" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "초기화 중..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[읽기 전용]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "현재 워크시트를 공개 웹 서버에 업로드하시겠습니까?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "질문 - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "이 워크시트를 업로드하기 전에 저장해야 합니다." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "경고 - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "이 백엔드는 스크립트를 지원하지 않습니다." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "편집(&E)" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "보기(&V)" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "워크시트(&W)" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "설정" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "파일(&F)" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "새로 만들기(&N)" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "패널" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "설정(&S)" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "배경색" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "기본값" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "글자색" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "글꼴" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "굵게" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "이탤릭" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "글꼴 크기 증가" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "글꼴 크기 감소" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "선택" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "기본값으로 초기화" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "결과 표시" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "결과 숨기기" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "도움말 표시" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "모양" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "중지됨" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "검색 표시줄" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "찾기:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "다음(&N)" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "이전(&P)" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "바꾸기:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "바꾸기(&R)" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "모두 바꾸기(&A)" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "다음에서 찾기:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "대소문자 구별(&M)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "계층 구조 글꼴" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "장 글꼴" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "글꼴 종류:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "글꼴 크기:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "하위 장 글꼴" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "절 글꼴" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "하위 절 글꼴" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "문단 글꼴" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "하위 문단 글꼴" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "장" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "하위 장" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "절" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "하위 절" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "문단" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "하위 문단" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "계층 구조 단계 설정" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "단색 선 스타일" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "대시 선 스타일" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "점 선 스타일" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "대시 점 선 스타일" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "대시 점 점 선 스타일" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "선 두께" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "얇게" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "중간" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "두껍게" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "선 색상" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "선 스타일" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "그림 설정" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "그림 설정을 변경하려면 두 번 클릭하십시오" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "%1 그림을 불러올 수 없음" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "그림 결과 저장" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "그림 (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "그림 설정" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "열기" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "표시 크기" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "너비" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "높이" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "미리 보기" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "인쇄 크기" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "표시 크기 사용" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "그림 설정" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(자동)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "픽셀" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "그림 파일 열기" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "LaTeX 코드 표시" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"%1 실행 파일 경로를 지정하지 않았습니다. 프로그램 설정에서 올바른 경로를 지정" +"하고 다시 시도하십시오." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"%2 실행 파일의 경로 '%1'이(가) 없습니다. 프로그램 설정에서 올바른 경로를 지정" +"하고 다시 시도하십시오." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"지정한 파일 '%1'이(가) 실행 파일을 가리키지 않습니다. 프로그램 설정에서 올바" +"른 경로를 지정하고 다시 시도하십시오." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"플롯 통합 시험 중 %1 프로그램이 %2밀리초 이후 실행을 종료하지 않았습니다." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "플롯 통합 시험 중 %1 파일을 열 수 없습니다." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "플롯 통합 시험 중 시험 결과를 처리할 수 없습니다." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "latex 실행 파일 경로" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "dvips 실행 파일 경로" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "값" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1바이트>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "<너무 큰 변수>" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "시작:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "끝:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "주 제목" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "가로축" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "세로축" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "그래프 제목:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "지원하지 않는 Jupyter 내용 형식('%1')" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"%1 프로세스가 예상하지 못하게 종료되었습니다. 모든 계산 결과가 손실됩니다." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"%1 프로세스가 예상하지 못하게 종료되면서 메시지 \"%2\"을(를) 반환했습니다. 모" +"든 계산 결과가 손실됩니다." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"%1 그래픽 패키지 지원을 선택했지만 필요한 항목이 없어서 지원을 활성화할 수 없" +"습니다. 이 패키지 통합이 비활성화됩니다. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDE 수학 프로그램 프론트엔드" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "관리자
      Qt5/KF5 이식, Scilab 및 Python 백엔드" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "개발자" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "원 작성자
      관리자(2009년-2015년)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra 백엔드" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave 백엔드" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "인터페이스" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Cantor 아이콘" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr " 백엔드 사용" + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "열 문서입니다." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "%1 파일을 열 수 없음" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "편집 모드 진입" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "첨부 파일 지우기" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Cantor 수학 오류" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "\"%1\" 그림을 읽을 수 없습니다. 오류 \"%2\"" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- 쪽 나누기 ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "내용으로 이동" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "키워드로 검색..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "현재 문서 페이지의 텍스트에서 찾기" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "확대/축소를 100%로 초기화" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "닫기" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "다음 일치로 이동" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "이전 일치로 이동" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "대소문자 구분" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "파일을 다운로드 경로에 성공적으로 다운로드했습니다." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "다운로드 성공" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Cantor 파일" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Jupyter 파일" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "모든 지원하는 파일" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "모든 파일" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "이름:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "값:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "새 변수 추가" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "변수 불러오기" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "변수 저장" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "변수 삭제" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "검색/필터" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "대소문자 구분" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "단어 단위로 일치" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "모든 변수를 삭제하시겠습니까?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "파일 불러오기" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "결과 저장" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "결과 삭제" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"KDE 텍스트 편집기 구성 요소를 찾을 수 없습니다.\n" +"설치 상태를 확인하십시오." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "스크립트 편집기" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "스크립트 편집기 - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "찾을 수 없음" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "처음에 도달함" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "끝에 도달함" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "%1개 바뀜" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "명령" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "결과" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "오류" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "텍스트" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX 코드" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "시작:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" +"선택한 백엔드 시스템에서 새 워크시트를 만듭니다. 선택한 백엔드가 없으면 시작" +"할 때 사용할 시스템을 물어봅니다." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "기본 백엔드:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "워크시트:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "백엔드 시스템에서 지원하는 경우 계산 결과에 LaTeX 조판 활성화" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "LaTeX 조판" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "구문 강조 활성화" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "구문 강조" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "자동 완성 활성화" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "줄 번호 표시" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "줄 번호" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "워크시트에 애니메이션 효과 사용" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" +"이 옵션을 사용하면 텍스트 항목을 프롬프트 경계선이 아닌 워크시트 경계선을 따" +"라서 정렬합니다" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "텍스트 항목을 들여 쓰지 않음" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "Jupyter 노트북 형식으로 저장할 때 서식 있는 텍스트 형식 사용" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "평가:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"이 옵션을 사용하면 백엔드 시스템을 다시 시작하기 전에 사용자에게 묻습니다" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "이 옵션을 사용하면 현재 항목 아래의 모든 항목을 자동으로 계산합니다" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "자동으로 항목 다시 계산" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "최대로 표시할 결과 행 개수(0은 무제한):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "명령 항목 결과를 표시할 행 개수입니다. 0으로 지정하면 모두 표시합니다." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "Markdown 항목 내 수식 표현에 LaTeX 조판 사용" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "LaTeX을 통한 수식" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "수식 렌더링 실패 알림" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "찾기…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "원본 셀 대상" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "사용자 정의 대상 추가" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "텍스트 항목으로 변환" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "원본 셀로 변환" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "대상 MIME 형식:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "결과 복사" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "렌더링 결과 표시" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "코드 표시" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "HTML 코드 표시" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "일반 대체 텍스트 표시" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "HTML 표시" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "HTML 표시" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "EPS 파일을 렌더할 수 없습니다. 추가 패키지가 필요합니다" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "텍스트 결과 저장" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "텍스트 파일 (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "파일 %1에 쓸 수 없습니다." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "파일에 쓸 수 없습니다." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "파일 %1 저장 오류" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"읽기 전용 모드에서는 Cantor에서 %1 내보내기가 올바른지 보장할 수 없습니다." + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "latex.xsl 스타일시트를 불러올 수 없음" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "%1 파일을 열 수 없습니다." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "파일 열기" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "선택한 파일에서 읽으려고 열 수 없습니다." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "선택한 파일은 올바른 Cantor나 Jupyter 프로젝트 파일이 아닙니다." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "선택한 파일은 올바른 Cantor 프로젝트 파일이 아닙니다." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"이 워크시트는 더 이상 지원하지 않는 Python 2에서 생성되었습니다. Python 3을 " +"사용합니다." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python 2 지원 중단됨" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "%1 백엔드를 찾을 수 없습니다. 항목 편집과 실행이 불가능합니다." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"%1 백엔드에 문제가 있습니다.\n" +"설정을 확인하고 필요한 패키지를 설치하십시오.\n" +"이 워크시트를 볼 수만 있습니다." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "Jupyter 노트북 버전 4.5 미만(감지된 버전 %1.%2)은 지원하지 않습니다." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "Jupyter 노트북 버전 4.5 초과(감지된 버전 %1.%2)는 지원하지 않습니다." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"이 노트북은 더 이상 지원하지 않는 Python 2에서 생성되었습니다. Python 3을 사" +"용합니다." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "다음 키가 있는 객체: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "객체가 아닌 JSON 값" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "Jupyter 셀이 아닌 잘못된 데이터(%1) 발견함" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "파일이 올바른 Jupyter 노트북이 아님" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "잘못된 Jupyter 노트북 스키마: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "다음으로 변환" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "명령" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "그림" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "쪽 나누기" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "수평선" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "계층 항목" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "이후에 삽입" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "이전에 삽입" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "삽입" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "확대" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "축소" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "원래 크기" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "항목 위로 이동" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "항목 아래로 이동" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "항목 계산" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "항목 삭제" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "명령 항목 결과 접기" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "명령 항목 결과 펴기" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "명령 항목 결과 삭제" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "명령 항목을 실행에서 제외" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "명령 항목을 실행에 추가" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "글자색(&C)..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "색상" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "텍스트 구문 강조(&H)..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "글꼴(&F)" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "글꼴 크기(&S)" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "굵게(&B)" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "이탤릭(&I)" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "밑줄(&U)" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "취소선(&S)" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "왼쪽 정렬(&L)" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "왼쪽" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "가운데 정렬(&C)" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "가운데" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "오른쪽 정렬(&R)" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "오른쪽" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "양쪽 정렬(&J)" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "맞춤" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"이 동작은 모든 결과를 삭제하며 실행 취소할 수 없습니다. 계속 진행하시겠습니" +"까?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "모든 결과 삭제" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "흰색" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "검은색" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "어두운 빨간색" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "빨간색" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "밝은 빨간색" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "어두운 녹색" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "녹색" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "밝은 녹색" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "진한 파란색" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "파란색" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "밝은 파란색" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "어두운 노란색" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "노란색" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "밝은 노란색" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "어두운 청록색" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "청록색" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "밝은 청록색" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "어두운 자홍색" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "자홍색" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "밝은 자홍색" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "어두운 주황색" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "주황색" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "밝은 주황색" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "어두운 회색" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "회색" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "밝은 회색" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "위로 이동" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "아래로 이동" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "이 항목을 삭제하시겠습니까?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "항목 삭제" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "항목 드래그" + +#~ msgid "Animate Worksheet" +#~ msgstr "워크시트 애니메이션" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "기본 백엔드가 설정되어 있으면 해당 워크시트를 생성하며, 그렇지 않으면 백엔" +#~ "드 선택 대화 상자를 표시합니다." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "이 옵션을 사용하면 Cantor에서는 현재 항목 아래의 항목을 자동으로 계산합니" +#~ "다." + +#~ msgid "Defaults" +#~ msgstr "기본값" + +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "세션의 \"LaTeX으로 조판\" 설정의 초기 값입니다. 지원하는 경우 일부 백엔드 " +#~ "출력을 LaTeX으로 렌더합니다. 예를 들어 Maxima 출력은 이 옵션을 사용하면 " +#~ "LaTeX으로 렌더합니다." + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "LaTeX 조판 활성화(latex가 설치되어 있는 경우에만 가능)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "세션의 \"구문 강조\" 설정의 초기 값입니다. 명령 항목의 구문 강조를 제어합" +#~ "니다." + +#~ msgid "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." +#~ msgstr "" +#~ "세션의 \"자동 완성\" 설정의 초기 값입니다. 코드 자동 완성을 제어합니다." + +#~ msgid "" +#~ "This is initial value for the session \"Line numbers\" option, which " +#~ "response for presence of command entries execution numbers." +#~ msgstr "" +#~ "세션의 \"줄 번호\" 설정의 초기 값입니다. 명령 항목의 실행 번호 표시를 제어" +#~ "합니다." + +#~ msgid "Enable Line Numbers" +#~ msgstr "줄 번호 표시" + +#~ msgid "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." +#~ msgstr "" +#~ "세션의 \"워크시트 애니메이션\" 설정의 초기 값입니다. 워크시트의 애니메이" +#~ "션 표시 여부를 제어합니다." + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "워크시트 애니메이션 활성화" + +#~ msgid "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." +#~ msgstr "" +#~ "세션의 \"임베드된 수식\" 설정의 초기 값입니다. 텍스트와 Markdown 항목의 수" +#~ "식 렌더링을 제어합니다." + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "임베드된 수식 활성화(pdflatex가 설치되어 있는 경우에만 가능)" + +#~ msgid "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." +#~ msgstr "" +#~ "이 옵션을 사용하지 않으면 다시 시작 단추를 눌렀을 때 다시 시작 경고를 표시" +#~ "하지 않습니다." + +#~ msgid "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." +#~ msgstr "" +#~ "이 옵션을 사용하면 수식 렌더 오류를 정보 창에 오류 설명과 함께 표시합니다." + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "임베드된 수식 렌더 실패 오류 메시지 표시" + +#~ msgid "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." +#~ msgstr "" +#~ "이 옵션을 사용하면 이전 Cantor 항목 들여쓰기 스타일(모든 항목 왼쪽 정렬)" +#~ "을 사용합니다." + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "이전 Cantor 항목 들여쓰기 스타일 사용" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "이 옵션을 사용하면 Cantor에서 Jupyter 노트북 형식으로 저장할 때 텍스트 서" +#~ "식을 저장합니다." + +#~ msgid "" +#~ "Graphical package, for which will be enable support for embedding plots" +#~ msgstr "플롯 내장 지원에 필요한 그래픽 패키지" + +#~ msgid "" +#~ "Graphic package, which code will be used for plotting via \"Plot\" Cantor " +#~ "menu." +#~ msgstr "" +#~ "Cantor의 \"플롯\" 메뉴에서 사용할 코드가 들어 있는 그래픽 패키지입니다." + +#~ msgid "Matplotlib (with seaborn, ggplot support too)" +#~ msgstr "Matplotlib(seaborn 사용, ggplot 지원 포함)" + +#~ msgid "Plot.ly" +#~ msgstr "Plot.ly" + +#~ msgid "All supported" +#~ msgstr "모든 지원하는 패키지" + +#~ msgid "" +#~ "Graphic package, used for plotting. When integrated plots option is " +#~ "enabled, then plots from the package will be integrated to worksheet" +#~ msgstr "" +#~ "플롯할 때 사용할 그래픽 패키지입니다. 내장 플롯 옵션을 활성화했을 때 해당 " +#~ "패키지의 플롯을 워크시트에 통합합니다" + +#~ msgid "Graphic Package: " +#~ msgstr "그래픽 패키지:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      KDE 수학 도구" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "로컬 Maxima 문서 경로" + +#~ msgid "" +#~ "If empty, the \"Show help\" action will show the default online " +#~ "documentation. Otherwise, the specified URL will be opened." +#~ msgstr "" +#~ "비어 있으면 \"도움말 표시\" 동작을 실행했을 때 기본 온라인 문서를 표시합니" +#~ "다. 그렇지 않으면 지정한 URL을 엽니다." + +#~ msgid "Documentation:" +#~ msgstr "문서:" + +#~ msgid "Url to the local Python documentation" +#~ msgstr "로컬 Python 문서 경로" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "로컬 Octave 문서 URL" + +#~ msgid "Show %1 Help" +#~ msgstr "%1 도움말 표시" + +#~ msgid "Path to Julia:" +#~ msgstr "Julia 경로:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "워크시트에 플롯 통합" + +#~ msgid "" +#~ "Commands to automatically run on start. They can be useful for loading " +#~ "needed modules, changing environment, etc." +#~ msgstr "" +#~ "시작할 때 자동으로 실행할 명령입니다. 필요한 모듈을 불러오거나 환경을 변경" +#~ "하는 등에 유용합니다." + +#~ msgid "Clear Variables" +#~ msgstr "변수 삭제" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "확인 - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "텍스트 항목" + +#, fuzzy +#~| msgid "Text Entry" +#~ msgid "LaTeX Entry" +#~ msgstr "텍스트 항목" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "텍스트 항목 삽입" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Latex Entry" +#~ msgstr "텍스트 항목 삽입" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Octave 실행 파일의 경로" + +#~ msgid "Path to Maxima:" +#~ msgstr "Maxima 경로:" + +#, fuzzy +#~| msgid "Failed to start Sage" +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Sage를 시작할 수 없음" + +#~ msgid "Path to Sage:" +#~ msgstr "Sage 경로:" + +#, fuzzy +#~| msgid "Integrate Plots in Worksheet" +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "워크시트에 그래프 통합하기" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Octave 실행 파일의 경로" + +#~ msgid "Path to Octave:" +#~ msgstr "Octave 경로:" + +#~ msgid "Unnamed" +#~ msgstr "이름 없음" + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "사용할 백엔드 선택:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "이 파일을 생성할 수 있는 백엔드가 설치되어 있지 않습니다. %1이(가) 필요합" +#~ "니다" + +#~ msgid "Publish Worksheet" +#~ msgstr "워크시트 게시하기" + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "파일 %1을(를) 열 수 없음: 알 수 없는 MIME 형식" + +#, fuzzy +#~| msgid "*.tex|LaTex Document" +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|LaTeX 문서" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantor 워크시트" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Cantor R 백엔드 서버" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#, fuzzy +#~| msgid "Load Variables" +#~ msgid "Usage: loadVariables file" +#~ msgstr "변수 불러오기" + +#, fuzzy +#~| msgid "Load Variables" +#~ msgid "Loading failed." +#~ msgstr "변수 불러오기" + +#, fuzzy +#~| msgid "(C) 2009-2010 Alexander Rieder" +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2010 Alexander Rieder" + +#~ msgid "Cantor Server for R" +#~ msgstr "Cantor R 서버" diff --git a/po/lt/cantor.po b/po/lt/cantor.po new file mode 100644 index 0000000..aac3b73 --- /dev/null +++ b/po/lt/cantor.po @@ -0,0 +1,4626 @@ +# Lithuanian translations for cantor package. +# This file is distributed under the same license as the cantor package. +# +# Remigijus Jarmalavičius , 2011. +# Mindaugas Baranauskas , 2017. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2017-06-25 15:07+0200\n" +"Last-Translator: Mindaugas Baranauskas \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" +"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" +"X-Generator: Lokalize 2.0\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Andrius Štikonas" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "andrius@stikonas.eu" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Įrašyti rezultatą" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Išraiška:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Skaičiuoti" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Diferencijuoti" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Kintamasis:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integruoti" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Apatinė riba:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Viršutinė riba:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "apibrėžtinis integralas" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Tiesinė algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Sukurti matricą" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Stulpeliai:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Eilutės:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Skaičiuoti tikrines vertes" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrica:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Skaičiuoti tikrinius vektorius" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Atvirkštinė matrica" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Kintamasis" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Pavadinimas" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimumas" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maksimumas" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "Pirmas kintamasis" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "Antras kintamasis" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Paleisti scenarijų" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Spręsti lygtis" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Lygtys:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Kintamieji:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Julia script file (*.jl)" +msgstr "*.R|R scenarijaus failas" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Klaida – Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Bendri" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Plot Integration:" +msgstr "Integruoti" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Variable:" +msgid "Variable Management:" +msgstr "Kintamasis:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Klaida: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "" + +#: backends/lua/luaextensions.cpp:20 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Lua script file (*.lua)" +msgstr "*.R|R scenarijaus failas" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Klaida: Per daug */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Klaida: Per daug /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" + +#: backends/octave/octaveextensions.cpp:34 +#, fuzzy, kde-format +#| msgid "*.m|Octave script file" +msgid "Octave script file (*.m)" +msgstr "*.m|Octave scenarijaus failas" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Sintaksės klaida" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Python script file (*.py)" +msgstr "*.R|R scenarijaus failas" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funkcijos" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Pridėti" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Pašalinti" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Išvalyti sąrašą" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Stilius" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Linijos" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Taškai" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Taškai ir linijos" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Failo tipas" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "KLAIDA" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "ĮSPĖJIMAS" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funkcija: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "failas" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radianai" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Laipsniai" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradianai" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Prastinti" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Kampo vienetas:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Rodyti tinklelį:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Grafiko stilius:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Pridėti naują kintamąjį" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Pavadinimas" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, fuzzy, kde-format +#| msgid "Add" +msgctxt "@action:button" +msgid "Add" +msgstr "Pridėti" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Pavadinimas" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Klaida atidarant failą %1" + +#: backends/R/rextensions.cpp:22 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "R script file (*.R)" +msgstr "*.R|R scenarijaus failas" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" + +#: backends/sage/sageextensions.cpp:32 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "*.R|R scenarijaus failas" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "" + +#: backends/scilab/scilabextensions.cpp:23 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "*.R|R scenarijaus failas" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Open file" +msgstr "&Atverti pavyzdį" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Download Examples" +msgstr "&Atverti pavyzdį" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Atverti pavyzdį" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Klaida" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sesija %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Skaičiuojama..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Pasiruošęs" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Close Cantor" +msgstr "Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save Project" +msgstr "Įrašyti rezultatą" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Eksportuoti į LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Sintaksės paryškinimas" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Eilučių numeriai" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Functions" +msgid "Animations" +msgstr "Funkcijos" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Expand All Results" +msgstr "Rezultatai" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove All Results" +msgstr "Pašalinti rezultatą" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "" + +#: cantor_part.cpp:406 +#, fuzzy, kde-format +#| msgid "(C) 2009-2012 Alexander Rieder" +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2012 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save as" +msgstr "Įrašyti rezultatą" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Sesijos klaida: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Keisti" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Rodymas" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "&Nuostatos" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Failas" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Naujas" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Skydeliai" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Nuostatos" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "" + +#: commandentry.cpp:151 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Text &Color..." +msgid "Text Color" +msgstr "Teksto &spalva..." + +#: commandentry.cpp:176 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "&Font" +msgid "Font" +msgstr "Š&riftas" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Show Results" +msgstr "Rezultatai" + +#: commandentry.cpp:338 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Hide Results" +msgstr "Rezultatai" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Show Help" +msgstr "Rezultatai" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Ieškoti:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Kitas" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Ankstesnis" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Pakeisti:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Pakeisti" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Pakeisti &viską" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Font &Size" +msgid "Font Size:" +msgstr "Šrifto &dydis" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Section" +msgstr "funkcija" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Subsection" +msgstr "funkcija" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Plot Style:" +msgid "Dot Line Style" +msgstr "Grafiko stilius:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Text &Color..." +msgid "Line Color" +msgstr "Teksto &spalva..." + +#: horizontalruleentry.cpp:351 +#, fuzzy, kde-format +#| msgid "Style" +msgid "Line Style" +msgstr "Stilius" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Konfigūruoti paveikslėlį" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Įrašyti rezultatą" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Image" +msgid "Images (%1)" +msgstr "Paveikslėlis" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Paveikslėlio nuostatos" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Atverti" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Rodymo dydis" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Plotis" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Aukštis" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, fuzzy, kde-format +#| msgid "&Previous" +msgid "Preview" +msgstr "&Ankstesnis" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Spausdinimo dydis" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Paveikslėlio nuostatos" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Rodyti LaTeX kodą" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Reikšmė" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "" +msgstr "Išsaugoti kintamuosius" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Nuo:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Iki:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "" + +#: main.cpp:74 +#, fuzzy, kde-format +#| msgid "(C) 2009-2012 Alexander Rieder" +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2012 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, fuzzy, kde-format +#| msgid "Alexander Rieder" +msgid "Alexander Semke" +msgstr "Alexander Rieder" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Sąsaja" + +#: main.cpp:86 main.cpp:87 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor icon" +msgstr "Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "" + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "" + +#: main.cpp:130 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1" +msgstr "Klaida atidarant failą %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, fuzzy, kde-format +#| msgid "Syntax Error" +msgid "Cantor Math Error" +msgstr "Sintaksės klaida" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor files" +msgstr "Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Jupyter files" +msgstr "&Atverti pavyzdį" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, fuzzy, kde-format +#| msgid "file" +msgid "All files" +msgstr "failas" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgid "Add New Variable" +msgstr "Pridėti naują kintamąjį" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Įkelti kintamuosius" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Save Variables" +msgstr "Išsaugoti kintamuosius" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Remove Variables" +msgstr "Išsaugoti kintamuosius" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +#| msgid "Load Variables" +msgid "Load file" +msgstr "Įkelti kintamuosius" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Įrašyti rezultatą" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Pašalinti rezultatą" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Nerasta" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Komandos" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Rezultatai" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Klaidos" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Tekstas" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX kodas" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Sintaksės paryškinimas" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Sintaksės paryškinimas" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Eilučių numeriai" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Eilučių numeriai" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Lygtys:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, fuzzy, kde-format +#| msgid "Find:" +msgid "Find…" +msgstr "Ieškoti:" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Copy result" +msgstr "Pašalinti rezultatą" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Rodyti kodą" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show HTML Code" +msgstr "Rodyti kodą" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Įrašyti rezultatą" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "" + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "" + +#: worksheet.cpp:1327 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1." +msgstr "Klaida atidarant failą %1" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Open File" +msgstr "&Atverti pavyzdį" + +#: worksheet.cpp:1350 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the selected file for reading." +msgstr "Klaida atidarant failą %1" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Commands" +msgid "Command" +msgstr "Komandos" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Paveikslėlis" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, fuzzy, kde-format +#| msgid "Points and Lines" +msgid "Horizontal Line" +msgstr "Taškai ir linijos" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Invert Matrix" +msgid "Insert After" +msgstr "Atvirkštinė matrica" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "Spausdinimo dydis" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove Entries" +msgstr "Pašalinti rezultatą" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove Command Entry Results" +msgstr "Pašalinti rezultatą" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Teksto &spalva..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Spalva" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "" + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "Š&riftas" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Šrifto &dydis" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove all results" +msgstr "Pašalinti rezultatą" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +#| msgid "Ready" +msgid "Red" +msgstr "Pasiruošęs" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "" + +#~ msgid "Clear Variables" +#~ msgstr "Išvalyti kintamuosius" + +#, fuzzy +#~| msgid "Configure Image" +#~ msgid "Choose Image" +#~ msgstr "Konfigūruoti paveikslėlį" + +#~ msgid "LaTeX Entry" +#~ msgstr "LaTeX įrašas" + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "Nepavyksta atverti %1 – nežinomas mimetipas" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|LaTeX dokumentas" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#, fuzzy +#~| msgid "(C) 2009-2012 Alexander Rieder" +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2012 Alexander Rieder" diff --git a/po/lv/cantor.po b/po/lv/cantor.po new file mode 100644 index 0000000..12145e2 --- /dev/null +++ b/po/lv/cantor.po @@ -0,0 +1,5077 @@ +# translation of cantor.po to Latvian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Einars Sprugis , 2010, 2011, 2012. +# Maris Nartiss , 2010. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2012-12-22 19:21+0200\n" +"Last-Translator: Einars Sprugis \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Einārs Sprūģis" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "einars8@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pauzēt" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Sākt" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Apturēt" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Saglabāt rezultātu" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Paplašinātā grafiku veidošana" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Grafiks" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Izteiksme:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Papildu opcijas:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "G&rafiks" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Opcija aktīva" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Aprēķināt" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Diferencēt" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Mainīgais:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Reizes: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integrēt" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Apakšējais limits:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Augšējais limits:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "noteiktais integrālis" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Lineārā algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Izveidot matricu" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Kolonnas:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Rindas:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Aprēķināt Eigena vērtības" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrica:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Aprēķināt Eigena vektorus" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Invertēt matricu" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Grafiks 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Mainīgais" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Nosaukums" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimums:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maksimums:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Grafiks 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1. mainīgais" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2. mainīgais" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Palaist skriptu" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Risināt vienādojumus" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Vienādojumi:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Mainīgie:" + +#: backendchoosedialog.cpp:64 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Select the Backend" +msgstr "Pārstartēt aizmuguri" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"

      %1

      %2

      Skatiet %3, lai iegūtu " +"vairāk informācijas
      " + +#: backendchoosedialog.cpp:125 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"

      %1

      %2

      Skatiet %3, lai iegūtu " +"vairāk informācijas
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Padarīt šo par noklusēto aizmuguri" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Ieslēgt mainīgo pārvaldīšanu" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Integrēt grafikus darblapā" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Julia script file (*.jl)" +msgstr "*.R|R skripta fails" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Kļūda - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Julia process." +msgstr "Neizdevās palaist Sage" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Vispārīgi" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Plot Integration:" +msgstr "Integrēt" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, fuzzy, kde-format +#| msgid "" +#| "If true, plots will be displayed inside the worksheet. If not they appear " +#| "in a separate window." +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Ja patiess, grafiki tiks attēloti darblapas iekšpusē. Ja nē, tie parādīsies " +"atsevišķā logā." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Ieslēgts" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Enable Variable Management" +msgid "Variable Management:" +msgstr "Ieslēgt mainīgo pārvaldīšanu" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Integrate Plots in Worksheet" +msgid "Internal Plot Format:" +msgstr "Integrēt grafikus darblapā" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plots" +msgstr "Grafiks" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "PyPlot" +msgstr "Grafiks" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, fuzzy, kde-format +#| msgid "Scripts to autorun" +msgid "Commands to autorun" +msgstr "Automātiski palaižamie skripti" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documentation" +msgstr "Atveramais dokuments" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "http://docs.kde.org/stable/en/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Skriptu saraksts, kurus automātiski palaist sesijas sākumā" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Kļūda: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to scilab-adv-cli command:" +msgid "Path to luajit command" +msgstr "Ceļš uz scilab-adv-cli komandu:" + +#: backends/lua/luaextensions.cpp:20 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Lua script file (*.lua)" +msgstr "*.R|R skripta fails" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Path to scilab-adv-cli command:" +msgid "Path to luajit:" +msgstr "Ceļš uz scilab-adv-cli komandu:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, fuzzy, kde-format +#| msgid "" +#| "Maxima is a system for the manipulation of symbolic and numerical " +#| "expressions, including differentiation, integration, Taylor series, " +#| "Laplace transforms, ordinary differential equations, systems of linear " +#| "equations, polynomials, and sets, lists, vectors, matrices, and tensors. " +#| "Maxima yields high precision numeric results by using exact fractions, " +#| "arbitrary precision integers, and variable precision floating point " +#| "numbers. Maxima can plot functions and data in two and three dimensions. " +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima ir sistēma simbolisko un skaitlisko izteiksmju manipulācijai, " +"ieskaitot diferencēšanu, integrāciju, Tailora sērijas, Laplasa " +"pārveidojumus, parastos diferenciālvienādojumus, lineāro vienādojumu " +"sistēmas, polinomus, un tīklus, sarakstus, vektorus, matricas un tensorus. " +"Maxima sniegs augstas precizitātes skaitliskos rezultātus, izmantojot " +"precīzus daļskaitļus, patvaļīgas precizitātes veselos skaitļus un mainīgas " +"precizitātes peldošā punkta skaitļus. Maxima spēj zīmēt funkciju un datu " +"grafikus divās un arī trīs dimensijās. " + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Ceļš uz Maxima izpildfailu" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Kļūda: pārāk daudz */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Kļūda: pārāk daudz /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Kļūda: pirms ; tika gaidīts \"" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, fuzzy, kde-format +#| msgid "*.mac|Maxima batch File" +msgid "Maxima batch file (*.mac)" +msgstr "*.mac|Maxima komandfails" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Neizdevās palaist Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima avarēja. Pārstartē..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima īsā laika periodā divreiz avarēja. Tiks pārtraukti mēģinājumi " +"programmu palaist" + +#: backends/octave/octavebackend.cpp:62 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Octave, please check if there is a " +#| "translated version (currently Czech and Japanese) and use the correct url" +#| msgid "http://www.gnu.org/software/octave/doc/interpreter/" +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "http://www.gnu.org/software/octave/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, fuzzy, kde-format +#| msgid "" +#| "GNU Octave is a high-level language, primarily intended for numerical " +#| "computations.
      It provides a convenient command line interface for " +#| "solving linear and nonlinear problems numerically, and for performing " +#| "other numerical experiments using a language that is mostly compatible " +#| "with Matlab." +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave ir augsta līmeņa valoda, pirmkārt paredzēta skaitliskiem " +"aprēķiniem.
      Tā nodrošina ērtu komandrindas saskarni lineāru un " +"nelineāru problēmu skaitliskai risināšanai, kā arī citu skaitlisko " +"eksperimentu veikšanai, lietojot valodu, kas lielā mērā ir savietojama ar " +"Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, fuzzy, kde-format +#| msgid "*.m|Octave script file" +msgid "Octave script file (*.m)" +msgstr "*.m|Octave skripta fails" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Sintakses kļūda" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Python script file (*.py)" +msgstr "*.R|R skripta fails" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Cantor python server." +msgstr "Neizdevās palaist Sage" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "plot.ly" +msgstr "Grafiks" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor — grafika dialoglogs" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funkcijas" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Nosaukums" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Izteiksme" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Pievienot" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Izņemt" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Notīrīt sarakstu" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Mainīgais x" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Stils" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Rindas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Punkti" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Punkti un rindas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Rāmji" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogramma" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Soļi" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Svečturis" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Punkti" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Izgludināšana" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Nav" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monotoniska" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Naturālie kubiskie splaini" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezjē" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezjē (monotoniska)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Funkcijas diapozons" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X diapozons" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, fuzzy, kde-format +#| msgid "Sampling rate" +msgid "Sa&mpling rate" +msgstr "Diskretizācijas frekvence" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, fuzzy, kde-format +#| msgid "Step size" +msgid "Step si&ze" +msgstr "Soļa izmērs" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Opcijas" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Grafika nosaukums" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "X ass etiķete" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Y ass etiķete" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Leģendas novietojums" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Paslēpt leģendu" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Augša pa kreisi" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Augšā pa labi" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Apakšā pa kreisi" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Apakšā pa labi" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Zem" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Ārpusē" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Rādīt tīklojumu" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Rādīt pilnu robežu" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Lietot krāsas" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Rādīt iekļautajā" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logaritmiska x skala" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logaritmiska y skala" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Faila opcijas" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Saglabāt grafiku failā" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Faila tips" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Noteikt no faila nosaukuma" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, fuzzy, kde-format +#| msgid "" +#| "Qalculate! is not your regular software replication of the cheapest " +#| "available calculator. Qalculate! aims to make full use of the superior " +#| "interface, power and flexibility of modern computers. The center of " +#| "attention in Qalculate! is the expression entry. Instead of entering each " +#| "number in a mathematical expression separately, you can directly write " +#| "the whole expression and later modify it. The interpretation of " +#| "expressions is flexible and fault tolerant, and if you nevertheless do " +#| "something wrong, Qalculate! will tell you so. Not fully solvable " +#| "expressions are however not errors. Qalculate! will simplify as far as it " +#| "can and answer with an expression. In addition to numbers and arithmetic " +#| "operators, an expression may contain any combination of variables, units, " +#| "and functions." +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! nav vienkārša programmatūras kopija lētākajiem pieejamiem " +"kalkulatoriem. Qalculate! mērķis ir izmantot moderno datoru izcilo saskarni, " +"jaudu un elastību. Qalculate! uzmanības centrā ir izteiksme. Tā vietā, lai " +"ievadītu matemātiskās izteiksmes katru skaitli atsevišķi, jūs varat tieši " +"ierakstīt visu izteiksmi un vēlāk to modificēt. Izteikmju interpretācija ir " +"elastīga un noturīga pret kļūdām, bet ja tomēr izdarīsit kaut ko nepareizu, " +"Qalculate! jums to pavēstīs. Pilnībā neatrisināmas izteiksmes tomēr nav " +"kļūdas. Qalculate! tās pēc iespējas vienkāršos un atbildi sniegs izteiksmes " +"veidā. Papildus skaitļiem un aritmētiskajām darbībām, izteiksme jebkādās " +"kombinācijās var saturēt mainīgos, vienības un funkcijas." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Vai un kā vienības tiks automātiski pārveidotas. Ja patiess, pārveidot uz " +"piemērotākajām SI vienībām (mazāko vienību skaitu)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Noklusētā leņķa vienība trigonometriskajām funkcijām." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Parsēto un novērtēto skaitļu bāze." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Vai novērtēšanas rezultāts tiks vienkāršots vai sadalīts reizinātājos." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Vai racionāli skaitļi tiks attēloti kā skaitļi ar komatu, daļas veidā vai " +"kaut kas starp abiem minētajiem." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Ciparu virknes bezgalīgu turpināšanos skaitlī parādīt ar trim punktiem nevis " +"noapaļošanu (piem., 2/3 attēlot kā 0.666666... nevis 0.666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Lietot visus decimālos SI prefiksus. Ja aplams, prefiksi, kuri tūkstoša " +"daudzkārtņi (centi, deci, deca, hecto), automātiski netiks izmantoti." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Ja patiess, dalīšanas vietā tiks izmantoti negatīvi kāpinātāji (piem., 5/x^2 " +"kļūs par 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Skaitļu attēlošana." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Ja patiess, grafiki tiks attēloti darblapas iekšpusē. Ja nē, tie parādīsies " +"atsevišķā logā." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Vai grafikos izmantot krāsas." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Vai grafikā zīmēt tīklojumu." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Vai ap grafiku zīmēt robežas." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Līniju platums, pikseļos." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Grafiku zīmēšanā izmantotais interpolācijas soļu skaits." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Grafikos lietotais izgludināšanas režīms." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Grafiku stils." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Leģendas novietojums grafikos." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate ziņo, ka drukāšana neizdevās. Vai gnuplot ir instalēts?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "trūkst %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 jābūt skaitlim." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 jābūt veselam skaitlim." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 jābūt loģiskajam mainīgajam (boolean)." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "nederīga opcija priekš %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" +"atrastas vairākas izteikmes vienā grafika veidošanas komandā (%1 un %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "KĻŪDA" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "BRĪDINĀJUMS" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" +"Ar norādīto nosaukumu neeksistē neviena funkcija, mainīgais vai vienība." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funkcija: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Grafiku veidošanas saskarne" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Izveido vienas vai vairāku funkciju grafikus iekļautā vai atsevišķā logā." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "izteiksme" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "opcija" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "vērtība" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "vesels skaitlis" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "loģiskais mainīgais" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "skaitlis" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "noklusējumi: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Funkcijas nosaukums" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Nosaukuma etiķete" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "x ass etiķete" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "y ass etiķete" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Attēls, kurā saglabāt grafiku. Ja tukšs, grafiku parāda logā uz ekrāna. Ja " +"inline=true, attēls tiek parādīts neatkarīgi no šīs opcijas." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Tips attēlam, kurā saglabāt. Viens no — auto, png, ps, eps, latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "Iestatiet uz 'true' krāsainam grafikam, 'false' — melnbaltam." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Minimālā x ass vērtība." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Maksimālā x ass vērtība." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Vai x asij izmantot logaritmisku skalu." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Vai y asij izmantot logaritmisku skalu." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Logaritma bāze x asij." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Logaritma bāze y asij." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Vai grafikā rādīt tīklojumu." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "Vai ap grafiku no visām pusēm jāapņem robežām (ne tikai asis)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Līniju platums." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Vieta, kurā novietot grafika leģendu. Viena no — none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Grafika izgludināšana. Viens no — none, unique, csplines, bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Grafika stils. Viens no — lines, points, points_lines, boxes, histogram, " +"steps, candlesticks, dots" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Lietot skalu otrajai x asij." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Lietot skalu otrajai y asij." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Vai grafiku zīmēt iekļautā nevis jaunā logā." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Attālums starp diviem interpolācijas punktiem. Skatiet arī soļus." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Interpolācijas punktu skaits. Skatiet arī soli." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Mainīgā x nosaukums. Šim ir jābūt nezināmam mainīgajam" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Saglabāt mainīgos failā" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Saglabāt visus pašreiz definētos mainīgos failā. Tos var pārlādēt ar %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "fails" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "fails: fails, kurā saglabāt" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Ielādēt mainīgos no faila" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Ielādēt mainīgos no faila, ko iepriekš izveidoja %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "fails: ielādējamais fails" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Skaitļa bāze:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Daļas formāts:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Decimāls" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Precīzs" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Daļveida" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Kombinēts" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Skaitļu attēlošana:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Parastā" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Zinātniskā" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Precizitāte" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Norādīt bezgalīgas sērijas:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Lietot visus SI prefiksus:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Lietot negatīvas eksponentes:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Novērtēt" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Pārveidot uz labākajām SI vienībām:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radiāni" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Grādi" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradiāni" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Strukturēšanas režīms:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Vienkāršot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Sadalīt pirmreizinātājos" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Leņķa vienība:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Grafiku veidošana" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Grafikus attēlot iekļauti:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Rādīt pilnas robežas:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Līniju platums:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, fuzzy, kde-format +#| msgid "Sampling rate" +msgid "Sampling rate:" +msgstr "Diskretizācijas frekvence" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Izgludināšanas režīms:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Naturālie kubiskie splaini" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Soļi" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Leģendas novietojums:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Krāsaini grafiki:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Rādīt tīklojumu:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Grafika stils:" + +#: backends/qthelpconfig.cpp:45 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Komandas ieraksts" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Append Text Entry" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Pievienot teksta ierakstu" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Path to scilab-adv-cli command:" +msgid "Add local documentation" +msgstr "Ceļš uz scilab-adv-cli komandu:" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Document to open" +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Atveramais dokuments" + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Path to scilab-adv-cli command:" +msgid "Download additional documentations" +msgstr "Ceļš uz scilab-adv-cli komandu:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Nosaukums" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, fuzzy, kde-format +#| msgid "Add" +msgctxt "@action:button" +msgid "Add" +msgstr "Pievienot" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Pārstartēt aizmuguri" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name:" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Nosaukums:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, fuzzy, kde-format +#| msgid "" +#| "R is a language and environment for statistical computing and graphics, " +#| "similar to the S language and environment.
      It provides a wide " +#| "variety of statistical (linear and nonlinear modelling, classical " +#| "statistical tests, time-series analysis, classification, clustering, ...) " +#| "and graphical techniques, and is highly extensible. The S language is " +#| "often the vehicle of choice for research in statistical methodology, and " +#| "R provides an Open Source route to participation in that activity." +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R ir valoda un vide statistiskajiem aprēķiniem un grafikai, kas ir līdzīga " +"valodai un videi S.
      Tā nodrošina ar lielu dažādību statistisko (lineārā " +"un nelineārā modelēšana, klasiskie statistiskie testi, laika-sēriju analīze, " +"klasifikācija, kopošana, ...) un grafisko tehniku, un ir paplašināma. Valoda " +"S bieži tiek izmantots pētījumiem statistiskajā metodoloģijā, un R piedāvā " +"atvērtā pirmkoda ceļu, lai piedalītos šajās aktivitātēs." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Kļūda atverot failu %1" + +#: backends/R/rextensions.cpp:22 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "R script file (*.R)" +msgstr "*.R|R skripta fails" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Kļūda analizējot komandu" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Dubultklikšķis, lai atvērtu failu izvēles dialoglogu" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R izejas faili (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, fuzzy, kde-format +#| msgid "" +#| "Sage is a free open-source mathematics software system licensed under the " +#| "GPL.
      It combines the power of many existing open-source packages " +#| "into a common Python-based interface." +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage ir brīva, atvērtā pirmkoda matemātikas programmatūras sistēma, kas " +"licencēta zem GPL.
      Tā kombinē daudzu esošo atvērtā pirmkoda pakotņu " +"spēku vienkāršā Python bāzētā saskarnē." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Ceļš uz Sage izpildfailu" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Ieslēgt LaTeX salikumu" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "%1 rezultāts" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Pēdējā izvade bija: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, fuzzy, kde-format +#| msgid "" +#| "*.py|Python script file\n" +#| "*.sage|Sage script file" +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" +"*.py|Python skripta fails\n" +"*.sage|Sage skripta fails" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Sage process avarēja, aprēķinot šo izteiksmi" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Sage process avarēja" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Sage process izgāja, aprēķinot šo izteiksmi" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Sage process izgāja" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Neizdevās palaist Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting:" +msgstr "Ieslēgt LaTeX salikumu" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Scilab, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.scilab.org/support/documentation" +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "http://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, fuzzy, kde-format +#| msgid "" +#| "

      Warning: this backend works only with Scilab version 5.4 or " +#| "later

      Scilab is a free software, cross-platform numerical " +#| "computational package and a high-level, numerically oriented programming " +#| "language.

      Scilab is distributed under CeCILL license (GPL compatible)" +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"

      Brīdinājums: šī aizmugure darbojas tikai ar Scilab versiju 5.4 vai " +"augstāku

      Scilab ir brīvā programmatūra, starpplatformu skaitlisko " +"aprēķinu pakotne un augsta līmeņa, skaitliski orientēta programmēšanas " +"valoda.

      Scilab tiek izplatīta ar CeCILL licenci (savietojama ar GPL)" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to the Sage executable" +msgid "Path to the Scilab executable" +msgstr "Ceļš uz Sage izpildfailu" + +#: backends/scilab/scilabextensions.cpp:23 +#, fuzzy, kde-format +#| msgid "" +#| "*.py|Python script file\n" +#| "*.sage|Sage script file" +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +"*.py|Python skripta fails\n" +"*.sage|Sage skripta fails" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Open file" +msgstr "Atvērt attēla failu" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "Download Example Worksheets" +msgid "Download Examples" +msgstr "Lejupielādēt piemēra darblapas" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Atvērt piemēru" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Aizmugure nav atrasta

      \n" +"
      Jūs varētu mēģināt:\n" +"
      • IzmainÄ«t iestatÄ«jumus konfiugrācijas dialoglogā;
      • " +"
      • Instalēt pakotni sekojoÅ¡ajai programmai:
      • %2
      " +msgstr[1] "" +"

      Aizmugure nav atrasta

      \n" +"
      Jūs varētu mēģināt:\n" +"
      • IzmainÄ«t iestatÄ«jumus konfiugrācijas dialoglogā;
      • " +"
      • Instalēt pakotnes vienai no sekojošām programmām:
      • %2
      " +msgstr[2] "" +"

      Aizmugure nav atrasta

      \n" +"
      Jūs varētu mēģināt:\n" +"
      • IzmainÄ«t iestatÄ«jumus konfiugrācijas dialoglogā;
      • " +"
      • Instalēt pakotnes vienai no sekojošām programmām:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Kļūda" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Aizmugure %1 nav instalēta" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sesija %1" + +#: cantor.cpp:386 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to find the Cantor Part with error %1" +msgstr "Neizdevās atrast Cantor daļu." + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Aprēķina..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Gatavs" + +#: cantor.cpp:480 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Changed" +msgstr "X diapozons" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Close Cantor" +msgstr "Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save Project" +msgstr "Saglabāt rezultātu" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "Plotting" +msgid "Formatting" +msgstr "Grafiku veidošana" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Aizmugure, kas tiek izmantota pēc noklusējuma" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Izmantot salikumu pēc noklusējuma" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Izmantot sintakses izcelšanu pēc noklusējuma" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Ieslēgt pabeigšanas pēc noklusējuma" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Ieslēgt izteiksmju numurēšanu pēc noklusējuma" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Animēt izmaiņas darblapā pēc noklusējuma" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Automātiski pārrēķina ierakstus zem pašreizējā" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Saglabāt kā vienkāršu tekstu" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Eksportēt uz LaTex" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Novērtēt darblapu" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Lietot salikumu, izmantojot LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Sintakses izcelšana" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Pabeigšana" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Rindu numuri" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Pause Animation" +msgid "Animations" +msgstr "Nopauzēt animāciju" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Pārstartēt aizmuguri" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Novērtēt ierakstu" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Ievietot komandas ierakstu" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Ievietot teksta ierakstu" + +#: cantor_part.cpp:278 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Insert Markdown Entry" +msgstr "Ievietot komandas ierakstu" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Ievietot LaTeX ierakstu" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Ievietot lapas atdalītāju" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Ievietot attēlu" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Expand All Results" +msgstr "Rezultāti" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove All Results" +msgstr "Izņemt rezultātu" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Izņemt pašreizējo ierakstu" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Rādīt skriptu redaktoru" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Rādīt pabeigšanu" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, fuzzy, kde-format +#| msgid "(C) 2009-2012 Alexander Rieder" +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2012 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, fuzzy, kde-format +#| msgid "*.cws|Cantor Worksheet" +msgid "Cantor Worksheet (*.cws)" +msgstr "*.cws|Cantor darblapa" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save as" +msgstr "Saglabāt rezultātu" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Restart %1?" +msgstr "Pārstartēt aizmuguri" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Pārtraukums" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Sesijas kļūda: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Inicializācija pabeigta" + +#: cantor_part.cpp:690 +#, fuzzy, kde-format +#| msgid "Initializing Session" +msgid "Initializing..." +msgstr "Inicializē sesiju" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" +"Vai vēlaties augšupielādēt pašreizējo darblapu publiskā tīmekļa serverī?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Jautājums - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" +"Darblapa nav saglabāta. Pirms augšupielādes jums vajadzētu to saglabāt." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Brīdinājums - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Aizmugure neatbalsta skriptus." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "R&ediģēt" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "S&kats" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Darblapa" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "&Iestatījumi" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Fails" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "Jau&ns" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Paneļi" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Iestatījumi" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "Default" +msgstr "Noklusējumi" + +#: commandentry.cpp:151 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Text &Color..." +msgid "Text Color" +msgstr "Teksta &krāsa..." + +#: commandentry.cpp:176 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "&Font" +msgid "Font" +msgstr "&Fonts" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, fuzzy, kde-format +#| msgctxt "@action boldify selected text" +#| msgid "&Bold" +msgid "Bold" +msgstr "&Trekns" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, fuzzy, kde-format +#| msgctxt "@action italicize selected text" +#| msgid "&Italic" +msgid "Italic" +msgstr "&Slīpraksts" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Show Results" +msgstr "Rezultāti" + +#: commandentry.cpp:338 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Hide Results" +msgstr "Rezultāti" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Help" +msgstr "Parādīt %1 palīdzību" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Pārtraukts" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Meklēšanas josla" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Meklēt:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Nākamais" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Iepriekšējais" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Aizvietot:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Aizvietot" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Aizvietot &visus" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Meklēt:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Reģistrjutīgs" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Font &Size" +msgid "Font Size:" +msgstr "Fonta i&zmērs" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Section" +msgstr "funkcija" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Subsection" +msgstr "funkcija" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Solid Line Style" +msgstr "Pabeigšanas stils:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Dot Line Style" +msgstr "Pabeigšanas stils:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgid "Use Colors" +msgid "Line Color" +msgstr "Lietot krāsas" + +#: horizontalruleentry.cpp:351 +#, fuzzy, kde-format +#| msgid "Style" +msgid "Line Style" +msgstr "Stils" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Konfigurēt attēlu" + +#: imageentry.cpp:256 +#, fuzzy, kde-format +#| msgid "Double click to open file selection dialog" +msgid "Double click here to configure image settings" +msgstr "Dubultklikšķis, lai atvērtu failu izvēles dialoglogu" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Neizdevās ielādēt attēlu %1" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Saglabāt rezultātu" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Image" +msgid "Images (%1)" +msgstr "Attēls" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Attēla iestatījumi" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Atvērt" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Attēlojamais izmērs" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Platums" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Augstums" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, fuzzy, kde-format +#| msgid "&Previous" +msgid "Preview" +msgstr "&Iepriekšējais" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Drukāšanas izmērs" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Lietot attēlojamo izmēru" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Attēla iestatījumi" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(automātiski)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "piks." + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Atvērt attēla failu" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Parādīt LaTeX kodu" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Ceļš uz latex izpildfailu" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Ceļš uz dvips izpildfailu" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Vērtība" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "X variable" +msgid "" +msgstr "Mainīgais x" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "No:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Līdz:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Galvenais nosaukums" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Abscisu skala" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Ordinātu skala" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Grafika nosaukums:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDE priekšpuse matemātiskajām lietotnēm" + +#: main.cpp:74 +#, fuzzy, kde-format +#| msgid "(C) 2009-2012 Alexander Rieder" +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2012 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, fuzzy, kde-format +#| msgid "Scilab backend" +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Scilab aizmugure" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, fuzzy, kde-format +#| msgid "Alexander Rieder" +msgid "Alexander Semke" +msgstr "Alexander Rieder" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra aizmugure" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave aizmugure" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Interfeiss" + +#: main.cpp:86 main.cpp:87 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor icon" +msgstr "Cantor" + +#: main.cpp:92 +#, fuzzy, kde-format +#| msgid "Use this backend" +msgid "Use backend " +msgstr "Lietot Å¡o aizmuguri" + +#: main.cpp:95 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documents to open." +msgstr "Atveramais dokuments" + +#: main.cpp:130 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1" +msgstr "Kļūda atverot failu %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, fuzzy, kde-format +#| msgid "Syntax Error" +msgid "Cantor Math Error" +msgstr "Sintakses kļūda" + +#: markdownentry.cpp:796 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Neizdevās atrast Cantor daļu." + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Lapas atdalÄ«tājs ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, fuzzy, kde-format +#| msgid "&Match case" +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "&ReÄ£istrjutÄ«gs" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor files" +msgstr "Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Jupyter files" +msgstr "Atvērt attēla failu" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, fuzzy, kde-format +#| msgid "file" +msgid "All files" +msgstr "fails" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Nosaukums:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "VērtÄ«ba:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgid "Add New Variable" +msgstr "Pievienot jaunu mainÄ«go" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Ielādēt mainÄ«gos" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Save Variables" +msgstr "Glabāt mainÄ«gos" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Remove Variables" +msgstr "Glabāt mainÄ«gos" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, fuzzy, kde-format +#| msgid "SearchBar" +msgid "Search/Filter" +msgstr "Meklēšanas josla" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Vai tiešām vēlaties izņemt visus mainÄ«gos?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +#| msgid "Loading failed." +msgid "Load file" +msgstr "Ielādēšana neizdevās." + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Saglabāt rezultātu" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Izņemt rezultātu" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"KDE teksta redaktora sastāvdaļa netika atrasta,\n" +"lÅ«dzu, pārbaudiet jÅ«su KDE instalāciju." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Skriptu redaktors" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Skriptu redaktors - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Nav atrasts" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Sasniegts sākums" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Sasniegtas beigas" + +#: searchbar.cpp:238 +#, fuzzy, kde-format +#| msgid "Replaced %1 instances" +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Aizvietotas %1 instances" +msgstr[1] "Aizvietotas %1 instances" +msgstr[2] "Aizvietotas %1 instances" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Komandas" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Rezultāti" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Kļūdas" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Teksts" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX kods" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "Sākt" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Noklusētā aizmugure:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "&Darblapa" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "Ieslēgt LaTeX salikumu" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting" +msgstr "Ieslēgt LaTeX salikumu" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Izmantot sintakses izcelÅ¡anu" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Sintakses izcelÅ¡ana" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "Ieslēgt pabeigÅ¡anu" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Rindu numuri" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Rindu numuri" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "Integrēt grafikus darblapā" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Vienādojumi:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "Pārrēķināt ierakstus automātiski" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown:" +msgstr "Ievietot komandas ierakstu" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "Ieslēgt LaTeX salikumu" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, fuzzy, kde-format +#| msgid "Find:" +msgid "Find…" +msgstr "Meklēt:" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert to Text Entry" +msgstr "Ievietot teksta ierakstu" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Copy result" +msgstr "Izņemt rezultātu" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "ParādÄ«t renderēto" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "ParādÄ«t kodu" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show HTML Code" +msgstr "ParādÄ«t kodu" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Html" +msgstr "ParādÄ«t %1 palÄ«dzÄ«bu" + +#: textresultitem.cpp:90 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show HTML" +msgstr "ParādÄ«t %1 palÄ«dzÄ«bu" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" +"Neizdevās izanalizēt Eps failu. Jums varētu bÅ«t vajadzÄ«gas papildu pakotnes" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Saglabāt rezultātu" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Neizdevās rakstÄ«t failā %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, fuzzy, kde-format +#| msgid "Cannot write file %1." +msgid "Cannot write file." +msgstr "Neizdevās rakstÄ«t failā %1." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Kļūda saglabājot failu %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Kļūda ielādējot latex.xsl stila lapu" + +#: worksheet.cpp:1327 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1." +msgstr "Kļūda atverot failu %1" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Open File" +msgstr "Atvērt attēla failu" + +#: worksheet.cpp:1350 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the selected file for reading." +msgstr "Kļūda atverot failu %1" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Pastāv dažas problēmas ar %1 aizmuguri,\n" +"lÅ«dzu, pārbaudiet jÅ«su konfigurāciju vai instalējiet vajadzÄ«gās pakotnes.\n" +"JÅ«s varēsiet apskatÄ«t tikai Å¡o darblapu." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert To" +msgstr "Ievietot teksta ierakstu" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Commands" +msgid "Command" +msgstr "Komandas" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown" +msgstr "Ievietot komandas ierakstu" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Attēls" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Lapas atdalÄ«tājs" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, fuzzy, kde-format +#| msgid "Points and Lines" +msgid "Horizontal Line" +msgstr "Punkti un rindas" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +#| msgid "Drag Entry" +msgid "Hierarchy Entry" +msgstr "Pārnest ierakstu" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Insert After" +msgstr "Ievietot teksta ierakstu" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Ievietot pirms" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Ievietot" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "Drukāšanas izmērs" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Move Entries Down" +msgstr "Ievietot teksta ierakstu" + +#: worksheet.cpp:1933 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate Entries" +msgstr "Novērtēt ierakstu" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Entries" +msgstr "Izņemt ierakstu" + +#: worksheet.cpp:1947 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Collapse Command Entry Results" +msgstr "Ievietot komandas ierakstu" + +#: worksheet.cpp:1948 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Expand Command Entry Results" +msgstr "Pievienot komandas ierakstu" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Remove Command Entry Results" +msgstr "Komandas ieraksts" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Add Command Entry To Execution" +msgstr "Pievienot komandas ierakstu" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Teksta &krāsa..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Krāsa" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Teksta &izcelÅ¡ana..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Fonts" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Fonta i&zmērs" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Trekns" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&SlÄ«praksts" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&PasvÄ«trots" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "Pā&rsvÄ«rtots" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "IzlÄ«dzināt gar &kreiso" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Pa kreisi" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "IzlÄ«dzināt ¢rā" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Centrā" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "IzlÄ«dzināt gar &labo" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Pa labi" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Izretināt" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "IzlÄ«dzināt" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove all results" +msgstr "Izņemt rezultātu" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +#| msgid "Ready" +msgid "Red" +msgstr "Gatavs" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Dark Orange" +msgstr "X diapozons" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Orange" +msgstr "X diapozons" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Light Orange" +msgstr "X diapozons" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, fuzzy, kde-format +#| msgid "Do you also want to export the images?" +msgid "Do you really want to remove this entry?" +msgstr "Vai vēlaties eksportēt arÄ« attēlus?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Izņemt ierakstu" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Pārnest ierakstu" + +#~ msgid "Animate Worksheet" +#~ msgstr "Animēt darblapu" + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Kad ieslēgts, Cantor automātiski pārrēķinās katru ierakstu, kas atrodas " +#~ "zem paÅ¡reizējā." + +#~ msgid "Defaults" +#~ msgstr "Noklusējumi" + +#~ msgid "Enable Line Numbers" +#~ msgstr "Ieslēgt rindu numurus" + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Ieslēgt darblapu animācijas" + +#, fuzzy +#~| msgid "Plot" +#~ msgid "Plot.ly" +#~ msgstr "Grafiks" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      KDE veids, kā nodarboties ar matemātiku" + +#, fuzzy +#~| msgid "Document to open" +#~ msgid "Documentation:" +#~ msgstr "Atveramais dokuments" + +#~ msgid "Show %1 Help" +#~ msgstr "Parādīt %1 palīdzību" + +#, fuzzy +#~| msgid "Path to Maxima:" +#~ msgid "Path to Julia:" +#~ msgstr "Ceļš uz Maxima:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Integrēt grafikus darblapā" + +#~ msgid "Clear Variables" +#~ msgstr "Notīrīt mainīgos" + +#~ msgid "Right click here to insert image" +#~ msgstr "Labais klikšķis šeit, lai ievietotu attēlu" + +#, fuzzy +#~| msgid "Configure Image" +#~ msgid "Choose Image" +#~ msgstr "Konfigurēt attēlu" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Apstiprinājums - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Teksta ieraksts" + +#~ msgid "LaTeX Entry" +#~ msgstr "LaTeX ieraksts" + +#, fuzzy +#~| msgid "Text Entry Before" +#~ msgid "Insert Entry Before" +#~ msgstr "Teksta ieraksts pirms šī" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Ievietot teksta ierakstu" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Ceļš uz scilab-adv-cli komandu (brīdinājums: Scilab versijai jābūt " +#~ "augstākai vai vienādai par versiju 5.4)" + +#, fuzzy +#~| msgid "Insert Image" +#~ msgid "Insert Image Attachment" +#~ msgstr "Ievietot attēlu" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Ievietot Latex ierakstu" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Ceļš uz Octave izpildfailu" + +#~ msgid "Path to Maxima:" +#~ msgstr "Ceļš uz Maxima:" + +#, fuzzy +#~| msgid "Failed to start Sage" +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Neizdevās palaist Sage" + +#~ msgid "Path to Sage:" +#~ msgstr "Ceļš uz Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Ceļš uz scilab-adv-cli komandu:" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Ļaut Cantor sekot mainīgo izveidošanai/iznīcināšanai" + +#, fuzzy +#~| msgid "Integrate Plots in Worksheet" +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "Integrēt grafikus darblapā" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Ceļš uz Octave izpildfailu" + +#~ msgid "Path to Octave:" +#~ msgstr "Ceļš uz Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Nenosaukts" + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Izvēlieties izmantojamo aizmuguri:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Aizmugure, ar kuru fails tika ģenerēts, nav instalēta. Tam vajadzīgs %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Publicēt darblapu" + +#~ msgid "Waiting for Image..." +#~ msgstr "Gaida attēlu..." + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "Neizdevās atvērt failu %1: nezināms MIME tips" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|LaTeX dokuments" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantor darblapa" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Serveris Cantor R aizmugurei" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Lietošana: saveVariables fails" + +#~ msgid "Saving failed." +#~ msgstr "Saglabāšana neizdevās." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Lietošana: loadVariables fails" + +#~ msgid "Loading failed." +#~ msgstr "Ielādēšana neizdevās." + +#, fuzzy +#~| msgid "(C) 2009-2012 Alexander Rieder" +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2012 Alexander Rieder" + +#, fuzzy +#~| msgid "Path to scilab-adv-cli command:" +#~ msgid "Path to python command" +#~ msgstr "Ceļš uz scilab-adv-cli komandu:" + +#~ msgid "Cantor Server for R" +#~ msgstr "Cantor serveris priekš R" + +#, fuzzy +#~| msgid "Path to scilab-adv-cli command:" +#~ msgid "Path to python2 command:" +#~ msgstr "Ceļš uz scilab-adv-cli komandu:" + +#~ msgid " Enable Variable Management" +#~ msgstr " Ieslēgt mainīgo pārvaldīšanu" + +#~ msgid "Could not start the server." +#~ msgstr "Neizdevās palaist serveri." + +#~ msgid "Start Animation" +#~ msgstr "Palaist animāciju" + +#~ msgid "Restart Animation" +#~ msgstr "Pārstartēt animāciju" + +#~ msgid "Append Latex Entry" +#~ msgstr "Pieviento Latex ierakstu" + +#~ msgid "Append Image" +#~ msgstr "Pievienot attēlu" + +#~ msgid "Append Page Break" +#~ msgstr "Pievienot lapas atdalītāju" + +#~ msgid "Other" +#~ msgstr "Cits" + +#~ msgid "And %1 more..." +#~ msgstr "Un %1 vairāk..." + +#~ msgid "Main Toolbar" +#~ msgstr "Galvenā rīkjosla" + +#~ msgid "Popup" +#~ msgstr "Izlecošs" + +#~ msgid "The style used for Completion" +#~ msgstr "Pabeigšanai izmantojamais stils" + +#~ msgid "Insert Command Entry Before" +#~ msgstr "Ievietot komandas ierakstu pirms šī" + +#~ msgid "Command Entry Before" +#~ msgstr "Komandas ieraksts pirms šī" + +#~ msgid "GroupBox" +#~ msgstr "Grupas rāmis" + +#~ msgid "Help" +#~ msgstr "Palīdzība" + +#~ msgid "Show Help Panel" +#~ msgstr "Parādīt palīdzības paneli" diff --git a/po/ml/cantor.po b/po/ml/cantor.po new file mode 100644 index 0000000..78520ca --- /dev/null +++ b/po/ml/cantor.po @@ -0,0 +1,4514 @@ +# Malayalam translations for cantor package. +# Copyright (C) 2019 This file is copyright: +# This file is distributed under the same license as the cantor package. +# Automatically generated, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2019-12-12 21:37+0000\n" +"Last-Translator: Vivek KJ Pazhedath \n" +"Language-Team: Swathanthra|സ്വതന്ത്ര Malayalam|മലയാളം Computing|കമ്പ്യൂട്ടിങ്ങ് \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "shijualexonline@gmail.com,snalledam@dataone.in,vivekkj2004@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +msgstr[1] "" + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "" + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "തിരുത്തുക (&E)" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "കാഴ്ച (&V)" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "സജ്ജീകരണങ്ങള്‍ (&S)" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "ഫയല്‍ (&F)" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "സജ്ജീകരണങ്ങള്‍ (&S)" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "&Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "സജ്ജീകരണങ്ങള്‍ (&S)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "" + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "" + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" +msgstr[1] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "" + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "" + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "" + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "" diff --git a/po/mr/cantor.po b/po/mr/cantor.po new file mode 100644 index 0000000..d4bc89e --- /dev/null +++ b/po/mr/cantor.po @@ -0,0 +1,4577 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Chetan Khona , 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2013-03-05 17:03+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"X-Generator: Lokalize 1.5\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "चेतन खोना" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "chetan@kompkin.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "स्तब्ध करा" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "सुरु करा" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "थांबा" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, fuzzy, kde-format +msgid "&Calculate" +msgstr "गणना करा" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, fuzzy, kde-format +msgid "Variable:" +msgstr "परिवर्तनीय" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "खालील मर्यादा :" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "वरील मर्यादा :" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "स्तंभ:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "ओळ:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "परिवर्तनीय" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "नाव" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "किमान :" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "कमाल :" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "स्क्रिप्ट चालवा" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, fuzzy, kde-format +msgid "Variables:" +msgstr "व्हेरिएबल्स" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, fuzzy, kde-format +msgid "General" +msgstr "सामान्य" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, fuzzy, kde-format +msgid "Enabled" +msgstr "कार्यान्वित" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +msgid "Variable Management:" +msgstr "परिवर्तनीय" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documentation" +msgstr "उघडण्याचा दस्तऐवज" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, fuzzy, kde-format +msgid "Error: %1" +msgstr "त्रुटी : %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, fuzzy, kde-format +msgid "Syntax Error" +msgstr "रचना त्रुटी" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "कार्ये" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "शिर्षक" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "जोडा" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "काढून टाका" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "यादी रिकामी करा" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "शैली" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "ओळी" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, fuzzy, kde-format +msgid "Points" +msgstr "गुण" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "स्मूदिंग" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, fuzzy, kde-format +msgid "None" +msgstr "काही नाही" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "पर्याय" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "खाली" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, fuzzy, kde-format +msgid "File type" +msgstr "फाईल प्रकार :" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, fuzzy, kde-format +msgid "missing %1" +msgstr "आढळले नाही" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, fuzzy, kde-format +msgid "ERROR" +msgstr "त्रुटी" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, fuzzy, kde-format +msgid "WARNING" +msgstr "इशारा" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, fuzzy, kde-format +msgid "Function: %1" +msgstr "कार्य" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, fuzzy, kde-format +msgid "option" +msgstr "पर्याय" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "मूल्य" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, fuzzy, kde-format +msgid "boolean" +msgstr "बूलियन" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, fuzzy, kde-format +msgid "number" +msgstr "संख्या" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, fuzzy, kde-format +msgid "default: %1" +msgstr "मूलभूत" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, fuzzy, kde-format +msgid "file" +msgstr "फाईल" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "काटेकोर" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, fuzzy, kde-format +msgid "Degrees" +msgstr "अंश" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, fuzzy, kde-format +msgid "Show grid:" +msgstr "जाळे दर्शवा (&G)" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Variable" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "परिवर्तनीय" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Add local documentation" +msgstr "उघडण्याचा दस्तऐवज" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Document to open" +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "उघडण्याचा दस्तऐवज" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "नाव" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, fuzzy, kde-format +#| msgid "Add" +msgctxt "@action:button" +msgid "Add" +msgstr "जोडा" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "नाव :" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, fuzzy, kde-format +msgid "Error opening file %1" +msgstr "फाईल उघडतेवेळी त्रुटी." + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, fuzzy, kde-format +msgid "Open file" +msgstr "फाईल" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +msgstr[1] "" + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "त्रुटी" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, fuzzy, kde-format +msgid "Session %1" +msgstr "सत्र" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "गणना करत आहे..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, fuzzy, kde-format +msgid "Ready" +msgstr "तयार" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "ओळ क्रमांक" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Functions" +msgid "Animations" +msgstr "कार्ये" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "अडथळा" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, fuzzy, kde-format +msgid "&Edit" +msgstr "संपादन (&E)" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, fuzzy, kde-format +msgid "&View" +msgstr "दृश्य (&V)" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +msgid "Settings" +msgstr "संयोजना (&S)" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, fuzzy, kde-format +msgid "&File" +msgstr "फाईल (&F)" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, fuzzy, kde-format +msgid "&New" +msgstr "नवीन (&N)" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "पटल" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, fuzzy, kde-format +msgid "&Settings" +msgstr "संयोजना (&S)" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +msgid "Default" +msgstr "मूलभूत (&D)" + +#: commandentry.cpp:151 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Text &Color..." +msgid "Text Color" +msgstr "पाठ्य रंग (&C)..." + +#: commandentry.cpp:176 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "&Font" +msgid "Font" +msgstr "फॉन्ट (&F)" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, fuzzy, kde-format +#| msgctxt "@action boldify selected text" +#| msgid "&Bold" +msgid "Bold" +msgstr "ठळक (&B)" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, fuzzy, kde-format +#| msgctxt "@action italicize selected text" +#| msgid "&Italic" +msgid "Italic" +msgstr "तिरपे (&I)" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +msgid "Show Help" +msgstr "मदत दर्शवा" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "शोधा :" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, fuzzy, kde-format +msgid "&Next" +msgstr "पुढील (&N)" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, fuzzy, kde-format +msgid "&Previous" +msgstr "मागील (&P)" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, fuzzy, kde-format +msgid "Replace:" +msgstr "बदला" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "बदला (&R)" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "सर्व बदला (&A)" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, fuzzy, kde-format +msgid "Search in:" +msgstr "यामध्ये शोधा '%1'..." + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "आकार जुळवा (&M)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Font &Size" +msgid "Font Size:" +msgstr "फॉन्ट आकार (&S)" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Section" +msgstr "कार्य" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Subsection" +msgstr "कार्य" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Text &Color..." +msgid "Line Color" +msgstr "पाठ्य रंग (&C)..." + +#: horizontalruleentry.cpp:351 +#, fuzzy, kde-format +#| msgid "Style" +msgid "Line Style" +msgstr "शैली" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Save image result" +msgstr "नोंद काढून टाका" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Image" +msgid "Images (%1)" +msgstr "प्रतिमा" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "प्रतिमा संयोजना" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "उघडा" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, fuzzy, kde-format +msgid "Width" +msgstr "रुंदी" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "उंची" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, fuzzy, kde-format +msgid "Preview" +msgstr "मागील (&P)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, fuzzy, kde-format +msgid "Print Size" +msgstr "छपाई आकार (&N):" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "प्रतिमा संयोजना" + +#: imagesettingsdialog.cpp:40 +#, fuzzy, kde-format +msgid "(auto)" +msgstr "स्वयंचलित" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "मूल्य" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, fuzzy, kde-format +msgid "From:" +msgstr "पासून :" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, fuzzy, kde-format +msgid "To:" +msgstr "पर्यंत :" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "एलैक्स पोल गोन्झालेझ" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "दुवा" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "" + +#: main.cpp:95 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documents to open." +msgstr "उघडण्याचा दस्तऐवज" + +#: main.cpp:130 +#, fuzzy, kde-format +msgid "Couldn't open the file %1" +msgstr "फाईल उघडतेवेळी त्रुटी." + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, fuzzy, kde-format +msgid "Cantor Math Error" +msgstr "रचना त्रुटी" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, fuzzy, kde-format +#| msgid "&Match case" +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "आकार जुळवा (&M)" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +msgid "Jupyter files" +msgstr "फाईल" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, fuzzy, kde-format +msgid "All files" +msgstr "फाईल" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, fuzzy, kde-format +msgid "Name:" +msgstr "नाव :" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, fuzzy, kde-format +msgid "Value:" +msgstr "मूल्य :" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Variable" +msgid "Add New Variable" +msgstr "परिवर्तनीय" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Save Variables" +msgstr "नोंद काढून टाका" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Variables" +msgstr "नोंद काढून टाका" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, fuzzy, kde-format +msgid "Search/Filter" +msgstr "यामध्ये शोधा '%1'..." + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +msgid "Load file" +msgstr "%1 दाखल करता आली नाही" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:44 +#, fuzzy, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"केडीई पाठ्य-संपादक घटक आढळला नाही.\n" +"कृपया तुमचे केडीई प्रतिष्ठापन तपासा." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, fuzzy, kde-format +msgid "Not found" +msgstr "सापडले नाही" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" +msgstr[1] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "आदेश" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "त्रुटी" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, fuzzy, kde-format +msgid "Text" +msgstr "मजकूर" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "सुरु करा" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "ओळ क्रमांक" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "ओळ क्रमांक" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, fuzzy, kde-format +#| msgid "Find:" +msgid "Find…" +msgstr "शोधा :" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, fuzzy, kde-format +msgid "Show Html" +msgstr "मदत दर्शवा" + +#: textresultitem.cpp:90 +#, fuzzy, kde-format +msgid "Show HTML" +msgstr "मदत दर्शवा" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "" + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "" + +#: worksheet.cpp:1327 +#, fuzzy, kde-format +msgid "Couldn't open the file %1." +msgstr "फाईल उघडतेवेळी त्रुटी." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +msgid "Open File" +msgstr "फाईल" + +#: worksheet.cpp:1350 +#, fuzzy, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "फाईल उघडतेवेळी त्रुटी." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Convert To" +msgstr "नोंद काढून टाका" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Commands" +msgid "Command" +msgstr "आदेश" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "प्रतिमा" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +msgid "Insert After" +msgstr "अंतर्भूत करा" + +#: worksheet.cpp:1856 +#, fuzzy, kde-format +msgid "Insert Before" +msgstr "अंतर्भूत करा" + +#: worksheet.cpp:1875 +#, fuzzy, kde-format +msgid "Insert" +msgstr "अंतर्भूत करा" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +msgid "Original Size" +msgstr "छपाई आकार (&N):" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Move Entries Down" +msgstr "नोंद काढून टाका" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Entries" +msgstr "नोंद काढून टाका" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Command Entry Results" +msgstr "नोंद काढून टाका" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "पाठ्य रंग (&C)..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "रंग" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "पाठ्य ठळक करा (&H)..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "फॉन्ट (&F)" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "फॉन्ट आकार (&S)" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "ठळक (&B)" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "तिरपे (&I)" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "अधोरेखन (&U)" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "खोडा (&S)" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "डावीकडे स्थीत करा (&L)" + +#: worksheet.cpp:2136 +#, fuzzy, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Left" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "केंद्राकडे स्थीत करा (&C)" + +#: worksheet.cpp:2146 +#, fuzzy, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "केंद्र" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "उजवीकडे स्थीत करा (&R)" + +#: worksheet.cpp:2156 +#, fuzzy, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Right" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "मूलभूत स्वीकारा(&J)" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "मूलभूत स्वीकारा" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove all results" +msgstr "नोंद काढून टाका" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +msgid "Red" +msgstr "तयार" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "नोंद काढून टाका" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "" + +#, fuzzy +#~ msgid "Defaults" +#~ msgstr "मूलभूत (&D)" + +#, fuzzy +#~| msgid "Document to open" +#~ msgid "Documentation:" +#~ msgstr "उघडण्याचा दस्तऐवज" + +#, fuzzy +#~ msgid "Show %1 Help" +#~ msgstr "मदत दर्शवा" + +#, fuzzy +#~ msgid "Unnamed" +#~ msgstr "निनावी" + +#, fuzzy +#~ msgid "Saving failed." +#~ msgstr "%1 साठवणे अयशस्वी झाले :
      %2" + +#, fuzzy +#~ msgid "Loading failed." +#~ msgstr "%1 दाखल करता आली नाही" diff --git a/po/nb/cantor.po b/po/nb/cantor.po new file mode 100644 index 0000000..cbbc27a --- /dev/null +++ b/po/nb/cantor.po @@ -0,0 +1,4554 @@ +# Translation of cantor to Norwegian Bokmål +# +# Bjørn Steensrud , 2009, 2010, 2011, 2012, 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2014-01-07 14:17+0100\n" +"Last-Translator: Bjørn Steensrud \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Bjørn Steensrud" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "bjornst@skogkatt.homelinux.org" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pause" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Start" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Stopp" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Avansert plotting" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Plott" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Uttrykk:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Flere valg:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Plott" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Aktivt valg" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Beregn" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Differensier" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variabel:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Ganger: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Pakke" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importer pakke" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Pakke:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integrer" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Nedre grense:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Øvre grense:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "bestemt integral" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Lineær algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Opprett matrise" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Kolonner:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Rader:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Beregn egenverdier" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrise:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Beregn egenvektorer" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Inverter matrise" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Plot 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variabel" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Navn" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimum:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maksimum:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Plot 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1. variabel" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2. variabel" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Kjør skript" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Løs likninger" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Likninger:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variabler:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Bruk denne bakgrunnsmotoren som standard" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Slå på håndtering av variabler" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Bygg inn plott i arbeidsarket" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Feil – Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Generelt" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Slått på" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Liste over skripter som skal kjøres automatisk når en økt begynner" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Feil: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Sti til Maxima-programmet" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Feil: For mange */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Feil: For mange /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Feil: forventet \" før :" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Klarte ikke å starte Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima krasjet, starter om …" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "Maxima krasjet to ganger på kort tid. Stopper startforsøk" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Syntaksfeil" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor – plottedialog" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funksjoner" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Tittel" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Uttrykk" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Legg til" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Fjern" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Tøm liste" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "X-variabel" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Stil" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Linjer" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Punkter" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Punkter og linjer" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Bokser" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogram" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Steg" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Lysestaker" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Prikker" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Utjevning" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Ingen" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monoton" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Naturlige kubiske rier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (monoton)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Funksjonsområde" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X-område" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Valg" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Tittel på plott" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Merkelapp på x-akse" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Merkelapp på y-akse" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Posisjon for beskrivelse" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Skjul beskrivelse" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Øverst til venstre" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Øverst til høyre" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Nederst til venstre" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Nederst til høyre" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Nedenfor" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Utenfor" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Vis rutenett" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Vis hel ramme" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Bruk farger" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Vis inni" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logaritmisk x-skala" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logaritmisk y-skala" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Filvalg" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Lagre plottet til en fil" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Filtype" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Finn ut fra filnavn" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Om og hvordan enheter skal gjøres om automatisk. Hvis det er sant, gjør om " +"til mest passende SI-enheter (minste antall enheter)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Standard vinkelenhet for trigonometriske funksjoner." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Grunntall for tall som tolkes og regnes ut." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Om resultatet av utregningen skal forenkles eller faktoriseres." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Om rasjonale tall skal vises med desimaler, som brøk. eller en mellomting." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Vis at de gjentatte sifrene i et tall fortsetter for alltid med tre prikker, " +"i stedet for å runde av (eks. 2/3 vises som 0.666666… i stedet for 0.666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Bruk alle desimale SI-prefikser. Hvis dette er slått av blir prefikser som " +"ikke er multipler av tusen ikke brukt automatisk (centi, desi, deka, hekto)." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Hvis dette er sant blir det brukt negative eksponenter i stedet for divisjon " +"(eks. 5/x^2 blir 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Numerisk visning" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Hvis dette er sant blir plott vist inne i arbeidsarket, ellers vises det i " +"separate vinduer." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Om farger skal brukes i plott." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Om rutenett skal plottes." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Om heltrukne kanter skal tegnes rundt plottet." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Linjebredde, i piksler." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Antall interpoleringssteg som skal brukes i plotting." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Utjevningsmodus brukt i plott." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Stil for plott." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Posisjon for beskrivelse i plott." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" +"Qalculate melder at det ikke klarer å skrive ut. Er gnuplot installert?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "mangler %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 må være et tall." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 må være et heltall." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 må være boolsk." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "ugyldig valg for %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "fant flere uttrykk i én plottekommando (%1 og %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "FEIL" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "ADVARSEL" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" +"Det finnes ingen funksjon, variabel eller enhet med det oppgitte navnet." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funksjon: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Plottegrensesnitt" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Plotter en eller flere funksjoner enten innebygget eller i et separat vindu." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "uttrykk" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "valg" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "verdi" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "heltall" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "boolsk" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "tall" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "standard: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Navnet på funksjonen" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Titteletikett" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "Merkelapp på x-akse" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Merkelapp på y-akse" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Bilde som plottet skal lagres til. Hvis det er tomt vises plottet i et vindu " +"på skjermen. Hvis inline=true vises bildet uansett dette valget." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "Bildetype som skal lagres. En av auto, png, ps, eps, latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "Sett til true for farget plott, false for monokrom." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Minste verdi på x-aksen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Største verdi på x-aksen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Om logaritmisk skala skal brukes for x-aksen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Om logaritmisk skala skal brukes for y-aksen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Logaritmisk base for x-aksen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Logaritmisk base for y-aksen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Om et rutenett skal vises i plottet." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Om det skal tegnes kanter på alle sider rundt plottet (ikke bare akser)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Linjebredde." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Hvor forklaringen skal plasseres på plottet. En av ingen. øverst til " +"venstre, øverst til høyre, nederst til venstre, nederst til høyre, under, " +"utenfor" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "Plott-utjevning. En av ingen, unique, csplines, bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Plottestil. En av linjer, punkter, punkter_linjer, bokser, histogram, steg, " +"lysestaker, prikker" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Bruk skala på andre x-akse." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Bruk skala på andre y-akse." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Om plottet skal tegnes innebygget, i stedet for i et nytt vindu." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Avstanden mellom to interpoleringspunkter. Se også steg." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Antall interpoleringspunkter. Se også steg." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Navnet på x-variablen. Dette må være en ukjent variabel" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Lagre variabler til en fil" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Lagre alle variabler som nå er definert til en fil. De kan lastes inn igjen " +"med %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "fil" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "fil: fil det skal lagres til" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Last inn variabler fra en fil" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Last inn variabler fra en fil som er opprettet tidligere av %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "fil: fila som skal lastes inn" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Grunntall:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Brøkformat:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Desimal" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Nøyaktig" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Som brøk" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Kombinert" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Tallvisning:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Ren" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Vitenskapelig" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Presisjon" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Vis uendelig følge" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Bruk alle SI-prefikser:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Bruk negative eksponenter:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Beregn" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Gjør om til beste SI-eheter:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radianer" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Grader" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradianer" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Struktureringsmodus:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Forenkle" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Faktoriser" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Vinkelenhet:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Plotting" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Vis plotter innebygget:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Vis hele rammer:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Linjebredde:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Samplingsrate:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Utjevningsmåte:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Naturlige kubiske rier" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Steg" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Posisjon for beskrivelse:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Plott med farge:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Vis rutenett:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Plott-stil:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Navn" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Feil ved åpning av fil %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Feil ved tolking av kommando" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Dobbelttrykk for å åpne filvelgerdialogen" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R-kildefiler (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Sti til Sage-programmet" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Resultat av %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Siste utdata var: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Sage-prosessen krasjet under beregning av dette uttrykket " + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Sage-prosessen krasjet" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Sage-prosessen avsluttet under beregning av dette uttrykket " + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Sage-prosessen avsluttet" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Klarte ikke å starte Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Åpne fil" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "Å&pne eksempel" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Fant ingen bakgrunnsmotor

      \n" +"
      Du kan forsøke:\n" +"
      • Ã¥ endre innstillingene i oppsettsdialogen;
      • Ã¥ " +"installere pakkene for følgende program:
      • %2
      " +msgstr[1] "" +"

      Fant ingen bakgrunnsmotor

      \n" +"
      Du kan forsøke:\n" +"
      • Ã¥ endre innstillingene i oppsettsdialogen;
      • Ã¥ " +"installere pakkene for ett av følgende programmer:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Feil" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Bakgrunnsmotoren %1 er ikke installert" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Økt %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Beregner …" + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Klar" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Lagre prosjekt" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Standard bakgrunnsmotor" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Utfør typografi som standard" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Gjør syntaksfremheving som standard" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Slå på fullføring som standard" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Slå på nummerering av uttrykk som standard" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Animer som standard endringer i arbeidsarket" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Evaluer automatisk på nytt oppføringene nedenfor det gjeldende" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Lagre ren tekst" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Eksporter til LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Beregn arbeidsark" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Typografi med LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Syntaksfremheving" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Fullføring" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Linjenummer" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Start bakgrunnsmotor på nytt" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Beregn oppføring" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Sett inn kommando-oppføring" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Sett inn tekst-oppføring" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Sett inn LaTeX-oppføring" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Sett inn sideskift" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Sett inn bilde" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Fjern gjeldende element" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Vis skriptredigering" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Vis fullføring" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Lagre som" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Lagre" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Avbryt" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Øktfeil: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Klargjøring fullført" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Klargjør …" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Vil du laste opp gjeldende arbeidsarkl til en offentlig nett-tjener?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Spørsmål – Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Arbeidsarket er ikke lagret. Du bør lagre det før opplasting." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Advarsel – Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Denne bakgrunnsmotoren støtter ikke skripter." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "R&ediger" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Vis" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Arbeidsark" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Fil" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Ny" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Ruter" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Innstillinger" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Avbrutt" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Søkelinje" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "…" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Finn:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Neste" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Forrige" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Erstatt:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Erstatt" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Erstatt &alle" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Søk i:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Ta hensyn til store/små bokstaver" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Sett opp bilde" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Kan ikke laste inn bilde %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Bildeinnstillinger" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Åpne" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Vist størrelse" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Bredde" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Høyde" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Utskriftsstørrelse" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Bruk vist størrelse" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(auto)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr " %" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Åpne bildefil" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Vis LaTeX-kode" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Sti til latex-programmet" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Sti til dvips-programmet" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Verdi" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Fra:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Til:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Hovedtittel" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Abscisseskala" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Ordinatskala" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Tittel på plott:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDE grensesnitt mot matematisk programvare" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra bakgrunnsmotor" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave bakgrunnsmotor" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Grensesnitt" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "" + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "" + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Sideskift ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Navn:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Verdi:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Last inn variabler" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Er du sikker på at du vil fjerne alle variabler?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Lagre resultat" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Fjern resultat" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Fant ingen skriveprogramskomponent i KDE.\n" +"Sjekk KDE-installasjonen." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Skriptredigering" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Skriptredigering – %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Ikke funnet" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Kom til begynnelsen" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Kom til slutten" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Erstattet %1 forekomst" +msgstr[1] "Erstattet %1 forekomster" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Kommandoer" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Resultater" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Feil" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Tekst" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX-kode" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Standard bakgrunnsmotor:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Vis opptegnet" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Vis kode" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Kan ikke tegne opp eps-fil. Du trenger kanskje flere pakker" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Kan ikke skrive til fila %1.." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Feil ved lagring av fil %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Feil under lasting av latex.xsl-stilark" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Det er noen problemer med motoren %1,\n" +"sjekk oppsettet eller installer de pakkene som trengs.\n" +"Du kan bare se på dette arbeidsarket." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Bilde" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Sideskift" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Sett inn" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Tekst&farge …" + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Farge" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "&Framhev tekst …" + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "Skri&ft" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "&Skriftstørrelse" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Halvfet" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Kursiv" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Understrek" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Stryk ut" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "&Venstrejuster" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Venstre" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "&Midtstill" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Midtstilt" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Høy&rejuster" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Høyre" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Innrett" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Innrett" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Fjern oppføring" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Dra oppføring" diff --git a/po/nds/cantor.po b/po/nds/cantor.po new file mode 100644 index 0000000..1d7c522 --- /dev/null +++ b/po/nds/cantor.po @@ -0,0 +1,5122 @@ +# translation of mathematik.po to Low Saxon +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Manfred Wiese , 2009, 2010, 2011, 2014. +# Sönke Dibbern , 2009, 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: mathematik\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2014-05-13 11:57+0200\n" +"Last-Translator: Sönke Dibbern \n" +"Language-Team: Low Saxon \n" +"Language: nds\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Manfred Wiese, Sönke Dibbern" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "m.j.wiese@web.de, s_dibbern@web.de" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Paus" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Start" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Anhollen" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Resultaat sekern" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Verwiedert Bagenschrieven" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Diagramm" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Utdruck:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Anner Optschonen:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Diagramm" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Optschoon aktiev" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Utreken" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Differenzeren" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variabel:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Wedderhalen: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Paket" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Paket importeren" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Paket:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integreren" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Neddergrenz:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Bövergrenz:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "Fastleggt Integraal" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Lineaar Algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Matrix opstellen" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Striepen:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Regen:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Egenweerten utreken" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrix:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Egenvektoren utreken" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Matrix ümdreihen" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "2D-Diagramm" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variabel" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Naam" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimum:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maximum:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "3D-Diagramm" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1. Variabel" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2. Variabel" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Skript utföhren" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Glieken lösen" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Glieken:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variabeln:" + +#: backendchoosedialog.cpp:64 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Select the Backend" +msgstr "Hülpprogramm nieg starten" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"

      %1

      %2

      Op %3 laat sik mehr " +"Informatschonen finnen.
      " + +#: backendchoosedialog.cpp:125 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"

      %1

      %2

      Op %3 laat sik mehr " +"Informatschonen finnen.
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Dit as Standard-Hülpprogramm bruken" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, fuzzy, kde-format +#| msgctxt "the url to the documentation Python 2" +#| msgid "http://docs.python.org/2/" +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "http://docs.python.org/2/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Variabelnpleeg anmaken" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Diagrammen na Arbeitblatt inbinnen" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, fuzzy, kde-format +#| msgid "*.lua|Lua script file" +msgid "Julia script file (*.jl)" +msgstr "*.lua|Lua-Skriptdatei" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Fehler - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Julia process." +msgstr "Sage lett sik nich starten." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Allmeen" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Plot Integration:" +msgstr "Integreren" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, fuzzy, kde-format +#| msgid "" +#| "If true, plots will be displayed inside the worksheet. If not they appear " +#| "in a separate window." +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Wenn anmaakt, warrt Diagrammen binnen dat Arbeitblatt wiest, anners binnen " +"en egen Finster." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Anmaakt" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Enable Variable Management" +msgid "Variable Management:" +msgstr "Variabelnpleeg anmaken" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Integrate Plots in Worksheet" +msgid "Internal Plot Format:" +msgstr "Diagrammen in Arbeitblatt inbinnen" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plots" +msgstr "Diagramm" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "PyPlot" +msgstr "Diagramm" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, fuzzy, kde-format +#| msgid "Scripts to autorun" +msgid "Commands to autorun" +msgstr "Skripten, de automaatsch utföhrt warrt" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documentation" +msgstr "Dokment, dat Du opmaken wullt" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "http://docs.kde.org/stable/de/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "List mit Skripten, de bi Törnstart automaatsch utföhrt warrt" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Fehler: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, fuzzy, kde-format +#| msgctxt "Lua official documentation" +#| msgid "http://www.lua.org/docs.html" +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "http://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, fuzzy, kde-format +#| msgid "" +#| "

      Lua is a fast and lightweight scripting language, with a simple " +#| "procedural syntax. There are several libraries in Lua aimed at math and " +#| "science.

      This backend supports luajit 2.

      " +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"

      „Lua“ is en gau un licht Skriptspraak mit en eenfach prozeduraal Syntax. " +"Dat gifft en Reeg Lua-Bibliotheken för Mathematik un Wetenschap.

      Dit " +"Hülpprogramm ünnerstütt luajit 2.

      " + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Padd na den Befehl „luajit“" + +#: backends/lua/luaextensions.cpp:20 +#, fuzzy, kde-format +#| msgid "*.lua|Lua script file" +msgid "Lua script file (*.lua)" +msgstr "*.lua|Lua-Skriptdatei" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Path to luajit command:" +msgid "Path to luajit:" +msgstr "Padd na Befehl „luajit“:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, fuzzy, kde-format +#| msgid "" +#| "Maxima is a system for the manipulation of symbolic and numerical " +#| "expressions, including differentiation, integration, Taylor series, " +#| "Laplace transforms, ordinary differential equations, systems of linear " +#| "equations, polynomials, and sets, lists, vectors, matrices, and tensors. " +#| "Maxima yields high precision numeric results by using exact fractions, " +#| "arbitrary precision integers, and variable precision floating point " +#| "numbers. Maxima can plot functions and data in two and three dimensions. " +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"»Maxima« is en Systeem för't Bewerken vun symboolsch un mathemaatsch " +"Utdrück. Ünnerstütt warrt Differentschaal- un Integraalreken, Taylor-Regen, " +"Laplace-Ümwanneln, normaal Differentschaalglieken, Systemen vun lineaar " +"Glieken, Polynomen, Setten, Listen, Vektoren, Matrizen un Tensoren. Maxima " +"levert numeersch Resultaten vun hoge Nauigkeit, wiel dat naue Bröken, free " +"köört Heeltallen un variabel Fleetkommatallen mit hoge Nauigkeit bruukt. Mit " +"Maxima laat sik Funkschonen un in Daten as Diagrammen in twee- oder ok dree " +"Evenen dorstellen. " + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Padd na't Programm »Maxima«" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Fehler: To vele „*/“" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Fehler: To vele „/*“" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Fehler: »\"« vör »;« verwacht" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, fuzzy, kde-format +#| msgid "*.mac|Maxima batch File" +msgid "Maxima batch file (*.mac)" +msgstr "*.mac|Maxima-Stapeldatei" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Maxima lett sik nich starten." + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima is afstört un warrt nieg start..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima is tweemaal kort achterenanner afstört. Startversöök warrt anhollen." + +#: backends/octave/octavebackend.cpp:62 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Octave, please check if there is a " +#| "translated version (currently Czech and Japanese) and use the correct url" +#| msgid "http://www.gnu.org/software/octave/doc/interpreter/" +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "http://www.gnu.org/software/octave/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, fuzzy, kde-format +#| msgid "" +#| "GNU Octave is a high-level language, primarily intended for numerical " +#| "computations.
      It provides a convenient command line interface for " +#| "solving linear and nonlinear problems numerically, and for performing " +#| "other numerical experiments using a language that is mostly compatible " +#| "with Matlab." +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"„GNU Octave“ is en höger Programmspraak för numeersch Bereken.
      Dat " +"stellt en kommood Konsool för't Lösen vun lineaar un nich-lineaar numeersch " +"Problemen un anner numeersch Experimenten praat un bruukt dor en tomehrst " +"„Matlab“-kompatibel Spraak för." + +#: backends/octave/octaveextensions.cpp:34 +#, fuzzy, kde-format +#| msgid "*.m|Octave script file" +msgid "Octave script file (*.m)" +msgstr "*.m|Octave-Skriptdatei" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Syntaxfehler" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, fuzzy, kde-format +#| msgctxt "the url to the documentation Python 2" +#| msgid "http://docs.python.org/2/" +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "http://docs.python.org/2/" + +#: backends/python/pythonbackend.cpp:72 +#, fuzzy, kde-format +#| msgid "" +#| "

      Python is a remarkably powerful dynamic programming language that is " +#| "used in a wide variety of application domains. There are several Python " +#| "packages to scientific programming.

      This backend supports Python 2." +#| "

      " +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"

      Python is en dünaamsch Programmeerspraak, de dat ankieken Weert is, un " +"warrt in en Barg verscheden Programmerrebeden bruukt. Dat gifft en Reeg " +"Python-Paketen för't wetenschaplich Programmschrieven.

      Dit " +"Hülpprogramm ünnerstütt Python 2.

      " + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, fuzzy, kde-format +#| msgid "*.py|Python script file" +msgid "Python script file (*.py)" +msgstr "*.py|Python-Skriptdatei" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Cantor python server." +msgstr "Sage lett sik nich starten." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "plot.ly" +msgstr "Diagramm" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Plotdialoog" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funkschonen" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Titel" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Utdruck" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Tofögen" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Wegmaken" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "List leddig maken" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "X-Variabel" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Stil" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Lienen" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Pünkt" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Pünkt un Lienen" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Kastens" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogramm" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Schreed" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Talliglichter" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Pünkt" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Weekmaken" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Keen" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monotoon" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Natürlich kubsch Splines" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bézier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bézier (monotoon)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Funkschoonrebeet" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X-Rebeet" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, fuzzy, kde-format +#| msgid "Sampling rate" +msgid "Sa&mpling rate" +msgstr "Aftast-Wedderhalen" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, fuzzy, kde-format +#| msgid "Step size" +msgid "Step si&ze" +msgstr "Schrittgrött" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Optschonen" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Diagrammtitel" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "X-Ass-Beschriften" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Y-Ass-Beschriften" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Verklorensteed" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Verkloren versteken" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Baven links" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Baven rechts" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Nerrn links" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Nerrn rechts" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Nerrn" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Buten" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Gadder wiesen" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Heel Rand wiesen" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Klören bruken" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Binnenreegs wiesen" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logaritmisch X-Ass" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logaritmisch Y-Ass" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Dateioptschonen" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Diagramm as Datei sekern" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Dateityp" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Ut Dateinaam raden" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, fuzzy, kde-format +#| msgid "" +#| "Qalculate! is not your regular software replication of the cheapest " +#| "available calculator. Qalculate! aims to make full use of the superior " +#| "interface, power and flexibility of modern computers. The center of " +#| "attention in Qalculate! is the expression entry. Instead of entering each " +#| "number in a mathematical expression separately, you can directly write " +#| "the whole expression and later modify it. The interpretation of " +#| "expressions is flexible and fault tolerant, and if you nevertheless do " +#| "something wrong, Qalculate! will tell you so. Not fully solvable " +#| "expressions are however not errors. Qalculate! will simplify as far as it " +#| "can and answer with an expression. In addition to numbers and arithmetic " +#| "operators, an expression may contain any combination of variables, units, " +#| "and functions." +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate is keen Software-Nabuu vun den billigstmöglichen Taschenreekner. " +"Qalculate will de betere Koppelsteed, dat Könen un de Flexibiliteet vun " +"modeern Reekners heel un deel bruken. Binnen Qalculate is dat Wichtigste de " +"Utdruckingaav. Ansteed dat Du elk Tall binnen en mathemaatsch Utdruck enkelt " +"ingiffst, kannst Du den helen Utdruck ingeven un em later bewerken. Dat " +"Utreken vun Utdrück is flexibel un kann mit Fehlers ümgahn. Deist Du liekers " +"wat Snaakschet, vertellt Qalculate Di dat. Man nich heel oplöösbor Utdrück " +"warrt nich as Fehlers ankeken. Qalculate vereenfacht dat, so wiet as dat " +"geiht, un gifft en Utdruck torüch. Blang Tallen un arithmeetsch Opratoren " +"köönt Utdrück all Kombinatschonen vun Variabeln, Eenheiten un Funkschonen " +"bargen." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Gifft an, wat un wodennig Eenheiten automaatsch ümreekt warrt. Wenn anmaakt, " +"warrt de Eenheit na de op't Best passen SI-Eenheit (de mit de wenigsten " +"Eenheiten) ümwannelt." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Standard-Winkeleenheit för trigonometersch Funkschonen" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Basis för inleest un utreekt Tallen." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Gifft an, wat dat Utreekresultaat vereenfacht oder fakteriseert warrt." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Gifft an, wat ratschonaal Tallen as Dezimaaltallen, Bröök oder wat dor " +"twischen wiest warrt." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Mit dree Pünkt wiesen, dat en Tall ehr Nakommasteden keen Enn hebbt, un ehr " +"nich runnen (a.B. 2/3 as „0.666666...“ ansteed vun „0.666667“ wiesen)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"All SI-Prefixen bruken. Wenn nich anmaakt warrt Prefixen, de nich Veelfache " +"vun 1000 sünd (a.B. zenti, dezi, deka, hekto), nich automaatsch bruukt." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Wenn anmaakt, warrt negatiev Exponenten ansteed vun Divischonen bruukt (a.B. " +"warrt ut 5/x^2 denn 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Tallendorstellen" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Wenn anmaakt, warrt Diagrammen binnen dat Arbeitblatt wiest, anners binnen " +"en egen Finster." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Gifft an, wat binnen Diagrammen Klören bruukt warrt" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Gifft an, wat en Gadder utgeven warrt" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Gifft an, wat all Ränner rund dat Diagramm utgeven warrt" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Breed vun Lienen, in Pixels" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Tall vun Estemeerschreed bi't Utgeven" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Weekrekenbedrief för Diagrammen" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Stil för de Utgaven" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Verklorensteed binnen Diagrammen" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate gifft an, dat kann nich drucken. Is „gnuplot“ installeert?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "%1 fehlt" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 mutt en Tall wesen." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 mutt en Heeltall wesen." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 mutt boolsch wesen." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "Leeg Optschoon för %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "Mehr Utdrück binnen een Utgaavbefehl funnen (%1 un %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "Fehler" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "Wohrschoen" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Dat gifft keen Funkschoon, Variabel oder Eenheit mit den angeven Naam." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funkschoon: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Diagramm-Koppelsteed" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Gifft en oder mehr Funkschonen binnenreegs oder binnen nieg Finstern ut." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "Utdruck" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "Optschoon" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "Weert" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "Heeltall" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "Boolsch" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "Tall" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "Standard: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "De Funkschoon ehr Naam" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Titelnaam" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "X-Ass-Beschriften" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Y-Ass-Beschriften" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Bild, as dat dat Diagramm sekert warrt. Wenn leddig, warrt dat Diagramm " +"binnen en Finster op den Schirm wiest. Wenn „inline=true“ angeven is, warrt " +"dat Bild wiest, liek wat hier fastleggt is." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"De Bildtyp, de bi't Sekern bruukt warrt. Een vun de Weerten „auto“, „png“, " +"„ps“, „eps“, „latex“, „svg“ un „fig“." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" +"Op „true“ setten, wenn Du klöört Diagrammen hebben wullt, op „false“ för " +"swattwitt Diagrammen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Lüttst X-Ass-Weert" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Hööchst X-Ass-Weert" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Gifft an, wat en logarithmisch X-Ass bruukt warrt" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Gifft an, wat en logarithmisch Y-Ass bruukt warrt" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Logarithmisch Basis för de X-Ass" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Logarithmisch Basis för de Y-Ass" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Gifft an, wat en Gadder binnen dat Diagramm utgeven warrt" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Gifft an, wat dat Ränner heel rund dat Diagramm geven schall (nich bloots " +"Assen)" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Breed vun Lienen" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Gifft an, woneem de Diagramm-Verkloren wesen schall. Een vun de Weerten " +"„none“, „top_left“, „top_right“, „bottom_left“, „bottom_right“, „below“ un " +"„outside“." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Diagramm-Weekreken. Een vun de Weerten „none“, „unique“, „csplines“, " +"„bezier“ un „sbezier“." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Diagramm-Stil. Een vun de Weerten „lines“, „points“, „points_lines“, " +"„boxes“, „histogram“, „steps“, „candlesticks“ un „dots“." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Skala för tweet X-Ass bruken" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Skala för tweet Y-Ass bruken" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" +"Gifft an, wat dat Diagramm binnenreegs un nich binnen en nieg Finster " +"utgeven warrt" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Afstand twischen twee Estemeerschreed. Kiek ok bi Schreed." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Tall vun Estemeerpünkt. Kiek ok bi Schritt." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "De Naam vun de X-Variabel. Dat mutt en nich begäng Variabel wesen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Variabeln binnen en Datei sekern" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"All opstunns fastleggt Variabeln as en Datei sekern. Se laat sik mit „%1“ " +"nieg laden." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "Datei" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "Datei: de Datei, na de Du sekern wullt" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Variabeln ut en Datei laden" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Variabeln ut en Datei laden, de vördem mit %1 opstellt wöör." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "Datei: de Datei, de Du laden wullt" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Tallen-Basis:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Brookformaat:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Dezimaal" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Akraat" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "As Brook" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Tosamensett" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Tallendorstellen:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Reen" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Wetenschaplich" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Nauigkeit" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Wieser för unennlich Regen:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "All SI-Prefixen bruken:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Negatiev Exponenten bruken:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Utweerten" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Na best SI-Eenheiten wanneln:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radian" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Graad" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Nieggraad" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Struktureerbedrief:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Vereenfachen" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Fakteriseren" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Winkeleenheit:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Diagrammutgaav" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Diagrammen binnenreegs wiesen:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "All Ränner wiesen:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Lienenbreed:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Aftast-Wedderhalen:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Weekrekenbedrief:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Natürlich kubsch Splines" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Schreed" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Verklorensteed:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Klöört Diagrammen:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Gadder wiesen:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Tekenstil:" + +#: backends/qthelpconfig.cpp:45 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Befehl" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Append Text Entry" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Text anhangen" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Path to luajit command:" +msgid "Add local documentation" +msgstr "Padd na Befehl „luajit“:" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Document to open" +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Dokment, dat Du opmaken wullt" + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Path to luajit command:" +msgid "Download additional documentations" +msgstr "Padd na Befehl „luajit“:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Naam" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, fuzzy, kde-format +#| msgid "Add" +msgctxt "@action:button" +msgid "Add" +msgstr "Tofögen" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Hülpprogramm nieg starten" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name:" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Naam:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, fuzzy, kde-format +#| msgid "" +#| "R is a language and environment for statistical computing and graphics, " +#| "similar to the S language and environment.
      It provides a wide " +#| "variety of statistical (linear and nonlinear modelling, classical " +#| "statistical tests, time-series analysis, classification, clustering, ...) " +#| "and graphical techniques, and is highly extensible. The S language is " +#| "often the vehicle of choice for research in statistical methodology, and " +#| "R provides an Open Source route to participation in that activity." +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"»R« is en Spraak un Ümgeven för Statistikutreken un Diagrammen, liek as de " +"Spraak un Ümgeven »S«.
      Dat stellt en Barg vun Statistik- (lineaar un " +"nich-lineaar mathemaatsch Modellen, klass'sch Statistikpröven, Opdecken vun " +"Tietregen, Toornen un Hopen, usw.) un Grafiktechniken praat, un lett sik " +"bannig verwiedern. De Spraak »S« warrt faken för't Utklamüstern binnen " +"statist'sche Methodologien bruukt, un »R« stellt dör en bornapen Metood för " +"praat." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Datei »%1« lett sik nich opmaken." + +#: backends/R/rextensions.cpp:22 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "R script file (*.R)" +msgstr "*.R|R-Skriptdatei" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Befehl-Inleesfehler" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Dateiköördialoog mit Dubbelklick opmaken" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R-Borndateien (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, fuzzy, kde-format +#| msgid "" +#| "Sage is a free open-source mathematics software system licensed under the " +#| "GPL.
      It combines the power of many existing open-source packages " +#| "into a common Python-based interface." +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"»Sage« is en free bornapen Rekenprogrammsysteem, dat ünner de GPL-Verlööfnis " +"steiht.
      Dat vereent de Knööv vun en Reeg al vörhannen Bornpaketen ünner " +"een op Python opbuut Böversiet." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Padd na't Programm »Sage«" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "LaTex-Schriftsatz anmaken" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Resultaat vun %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"De lest Utgaav weer: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, fuzzy, kde-format +#| msgid "" +#| "*.py|Python script file\n" +#| "*.sage|Sage script file" +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" +"*.py|Python-Skriptdatei\n" +"*.sage|Sage-Skriptdatei" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "De Perzess »Sage« is bi't Utreken vun dissen Utdruck afstört." + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "De Perzess »Sage« is afstört." + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "De Perzess »Sage« wöör bi't Utreken vun dissen Utdruck beendt." + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "De Perzess »Sage« wöör beendt." + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Sage lett sik nich starten." + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting:" +msgstr "LaTex-Schriftsatz anmaken" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Scilab, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.scilab.org/support/documentation" +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "http://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, fuzzy, kde-format +#| msgid "" +#| "

      Warning: this backend works only with Scilab version 5.5 or " +#| "later

      Scilab is a free software, cross-platform numerical " +#| "computational package and a high-level, numerically oriented programming " +#| "language.

      Scilab is distributed under CeCILL license (GPL compatible)" +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"

      Wohrscho: dit Hülpprogramm funkscheneert bloots mit Scilab in de " +"Verschoon 5.5 oder later.

      Scilab is en numeersch Rekenpaket för " +"verscheden Bedriefsystemen un free'e Software. Bito stellt dat en numeersch " +"orienteert Programmeer-Hoochspraak praat.

      Scilab warrt ünner dat CeCILL-" +"Verlööfnis (kumpativel to GPL) verdeelt." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to the Sage executable" +msgid "Path to the Scilab executable" +msgstr "Padd na't Programm »Sage«" + +#: backends/scilab/scilabextensions.cpp:23 +#, fuzzy, kde-format +#| msgid "" +#| "*.sce|Scilab script file\n" +#| "*.sci|Scilab function file" +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +"*.sce|Scilab-Skriptdatei\n" +"*.sci|Scilab-Funkschoondatei" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Open file" +msgstr "Bilddatei opmaken" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "Download Example Worksheets" +msgid "Download Examples" +msgstr "Bispill-Arbeitblääd daalladen" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "Bispill &opmaken" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Keen Hülpprogramm funnen.

      \n" +"
      Wat du doon kannst:\n" +"
      • Änner de Instellen in'n Instellendialoog.
      • " +"
      • Installeer Paketen för dit Programm:
      • %2
      " +msgstr[1] "" +"

      Keen Hülpprogramm funnen.

      \n" +"
      Wat du doon kannst:\n" +"
      • Änner de Instellen in'n Instellendialoog.
      • " +"
      • Installeer Paketen för een vun disse Programmen:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Fehler" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Hülpprogramm »%1« is nich installeert." + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Törn %1" + +#: cantor.cpp:386 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to find the Cantor Part with error %1" +msgstr "De Cantor-Komponent lett sik nich finnen." + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "An't Utreken..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Afslaten" + +#: cantor.cpp:480 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Changed" +msgstr "X-Rebeet" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Close Cantor" +msgstr "Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save Project" +msgstr "Resultaat sekern" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "Plotting" +msgid "Formatting" +msgstr "Diagrammutgaav" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Dat standardwies bruukt Hülpprogramm" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Standardwies Schriftsetten bruken" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Standardwies Syntaxmarkeren bruken" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Standardwies Kompletteren bruken" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Standardwies Utdrucknummereren bruken" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Ännern binnen dat Arbeitblatt standardwies animeren" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Indrääg ünner den aktuellen automaatsch nieg utreken" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Eenfachtext sekern" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "As LaTeX exporteren" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Arbeitblatt utreken" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "LaTeX-Schriftsetten bruken" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Syntaxmarkeren" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Kompletteren" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Reegnummern" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Pause Animation" +msgid "Animations" +msgstr "Animeren ophollen" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Hülpprogramm nieg starten" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Indrag utreken" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Befehl infögen" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Text infögen" + +#: cantor_part.cpp:278 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Insert Markdown Entry" +msgstr "Befehl infögen" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "LaTeX-Indrag infögen" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Sietümbrook infögen" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Bild infögen" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Expand All Results" +msgstr "Resultaten" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove All Results" +msgstr "Resultaat wegmaken" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Aktuell Indrag wegmaken" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Skripteditor wiesen" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Kompletteren wiesen" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "Cantor-Komponent" + +#: cantor_part.cpp:406 +#, fuzzy, kde-format +#| msgid "(C) 2009-2013 Alexander Rieder" +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "© 2009-2013: Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, fuzzy, kde-format +#| msgid "*.cws|Cantor Worksheet" +msgid "Cantor Worksheet (*.cws)" +msgstr "*.cws|Cantor-Arbeitblatt" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, fuzzy, kde-format +#| msgid "Save" +msgid "Save as" +msgstr "Sekern" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Sekern" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Restart %1?" +msgstr "Hülpprogramm nieg starten" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Ünnerbreken" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Törnfehler: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Torechtmaken afslaten" + +#: cantor_part.cpp:690 +#, fuzzy, kde-format +#| msgid "Initializing Session" +msgid "Initializing..." +msgstr "Törn warrt torechtmaakt" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Wullt Du dit Arbeitblatt na en apen Nettserver hoochladen?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Fraag - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" +"Dat Arbeitblatt wöör nich sekert. Wullt Du dat ehr't Hoochladen sekern?" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Wohrschoen - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Dit Hülpprogramm ünnerstütt keen Skripten." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Bewerken" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Ansicht" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Arbeitblatt" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "&Instellen" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Datei" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Nieg" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Paneels" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Instellen" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "Default" +msgstr "Vörinstellen" + +#: commandentry.cpp:151 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Text &Color..." +msgid "Text Color" +msgstr "Text&klöör..." + +#: commandentry.cpp:176 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "&Font" +msgid "Font" +msgstr "&Schriftoort" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, fuzzy, kde-format +#| msgctxt "@action boldify selected text" +#| msgid "&Bold" +msgid "Bold" +msgstr "&Fett" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, fuzzy, kde-format +#| msgctxt "@action italicize selected text" +#| msgid "&Italic" +msgid "Italic" +msgstr "&Kursiev" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Show Results" +msgstr "Resultaten" + +#: commandentry.cpp:338 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Hide Results" +msgstr "Resultaten" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Help" +msgstr "%1-Hülp wiesen" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Ünnerbraken" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Söökbalken" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Söken:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Nakamen" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Verleden" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Utwesseln:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Utwesseln" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "&All utwesseln" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Söken in:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "Op &Groot- un Lüttschrieven kieken" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Font &Size" +msgid "Font Size:" +msgstr "Schrift&grött" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Section" +msgstr "Funkschoon" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Subsection" +msgstr "Funkschoon" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Solid Line Style" +msgstr "Kompletterenstil:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Dot Line Style" +msgstr "Kompletterenstil:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgid "Use Colors" +msgid "Line Color" +msgstr "Klören bruken" + +#: horizontalruleentry.cpp:351 +#, fuzzy, kde-format +#| msgid "Style" +msgid "Line Style" +msgstr "Stil" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Bild instellen" + +#: imageentry.cpp:256 +#, fuzzy, kde-format +#| msgid "Double click to open file selection dialog" +msgid "Double click here to configure image settings" +msgstr "Dateiköördialoog mit Dubbelklick opmaken" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Bild „%1“ lett sik nich laden." + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Resultaat sekern" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Image" +msgid "Images (%1)" +msgstr "Bild" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Bildinstellen" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Opmaken" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Wiesgrött" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Breed" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Hööchd" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, fuzzy, kde-format +#| msgid "&Previous" +msgid "Preview" +msgstr "&Verleden" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Druckgrött" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Wiesgrött bruken" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Bildinstellen" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(automaatsch)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Bilddatei opmaken" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "LaTeX-Kode wiesen" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Padd na't utföhrbor Programm »LaTeX«" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Padd na't Programm »dvips«" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Weert" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "X variable" +msgid "" +msgstr "X-Variabel" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Vun:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Bet:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Hööfttitel" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "X-Ass-Skala" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Y-Ass-Skala" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Diagrammtitel:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDE-Böversiet för Mathematikprogrammen" + +#: main.cpp:74 +#, fuzzy, kde-format +#| msgid "(C) 2009-2013 Alexander Rieder" +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "© 2009-2013: Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, fuzzy, kde-format +#| msgid "Scilab and Python backends" +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Scilab- un Python-Hülpprogrammen" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, fuzzy, kde-format +#| msgid "Alexander Rieder" +msgid "Alexander Semke" +msgstr "Alexander Rieder" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Hülpprogramm för KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave-Hülpprogramm" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Koppelsteed" + +#: main.cpp:86 main.cpp:87 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor icon" +msgstr "Cantor" + +#: main.cpp:92 +#, fuzzy, kde-format +#| msgid "Use this backend" +msgid "Use backend " +msgstr "Dit Hülpprogramm bruken" + +#: main.cpp:95 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documents to open." +msgstr "Dokment, dat Du opmaken wullt" + +#: main.cpp:130 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1" +msgstr "Datei »%1« lett sik nich opmaken." + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, fuzzy, kde-format +#| msgid "Syntax Error" +msgid "Cantor Math Error" +msgstr "Syntaxfehler" + +#: markdownentry.cpp:796 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "De Cantor-Komponent lett sik nich finnen." + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Sietümbrook ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, fuzzy, kde-format +#| msgid "&Match case" +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Op &Groot- un Lüttschrieven kieken" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor files" +msgstr "Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Jupyter files" +msgstr "Bilddatei opmaken" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, fuzzy, kde-format +#| msgid "file" +msgid "All files" +msgstr "Datei" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Naam:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Weert:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgid "Add New Variable" +msgstr "Nieg Variabel tofögen" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Variabeln laden" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Save Variables" +msgstr "Variabeln sekern" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Remove Variables" +msgstr "Variabeln sekern" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, fuzzy, kde-format +#| msgid "SearchBar" +msgid "Search/Filter" +msgstr "Söökbalken" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Wullt Du redig all Variabeln wegmaken?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +#| msgid "Loading failed." +msgid "Load file" +msgstr "Laden fehlslaan" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Resultaat sekern" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Resultaat wegmaken" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Dor lett sik keen KDE-Texteditorkomponent finnen.\n" +"Prööv bitte Dien KDE-Installatschoon." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Skripteditor" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Skripteditor - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Nich funnen" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Bi den Anfang ankamen" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Bi't Enn ankamen" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "%1 Vörkamen utwesselt" +msgstr[1] "%1 Vörkamen utwesselt" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Befehlen" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Resultaten" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Fehlers" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Text" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX-Kode" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "Start" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Standard-Hülpprogramm:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "&Arbeitblatt" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "LaTex-Schriftsatz anmaken" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting" +msgstr "LaTex-Schriftsatz anmaken" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Syntaxmarkeren anmaken" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Syntaxmarkeren" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "Kompletteren anmaken" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Reegnummern" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Reegnummern" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "Diagrammen na Arbeitblatt inbinnen" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Glieken:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "Indrääg automaatsch nieg utreken" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown:" +msgstr "Befehl infögen" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "LaTex-Schriftsatz anmaken" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, fuzzy, kde-format +#| msgid "Find:" +msgid "Find…" +msgstr "Söken:" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert to Text Entry" +msgstr "Text infögen" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Copy result" +msgstr "Resultaat wegmaken" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Ümreekt wiesen" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Kode wiesen" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show HTML Code" +msgstr "Kode wiesen" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Html" +msgstr "%1-Hülp wiesen" + +#: textresultitem.cpp:90 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show HTML" +msgstr "%1-Hülp wiesen" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" +"EPS-Datei lett sik nich ümreekt dorstellen. Villicht deit noch mehr Paketen " +"noot." + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Resultaat sekern" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Datei „%1“ lett sik nich schrieven." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, fuzzy, kde-format +#| msgid "Cannot write file %1." +msgid "Cannot write file." +msgstr "Datei „%1“ lett sik nich schrieven." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Fehler bi't Sekern vun Datei »%1«." + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Fehler bi't Laden vun de Stilvörlaag „latex.xsl“" + +#: worksheet.cpp:1327 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1." +msgstr "Datei »%1« lett sik nich opmaken." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +#| msgid "Open image file" +msgid "Open File" +msgstr "Bilddatei opmaken" + +#: worksheet.cpp:1350 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the selected file for reading." +msgstr "Datei »%1« lett sik nich opmaken." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Dat gifft Problemen mit dat Hülpprogramm „%1“.\n" +"Bitte prööv Dien Installatschoon oder installeer de nödigen Paketen.\n" +"Du kannst Di dit Arbeitblatt bloots ankieken." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert To" +msgstr "Text infögen" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Commands" +msgid "Command" +msgstr "Befehlen" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown" +msgstr "Befehl infögen" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Bild" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Sietümbrook" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, fuzzy, kde-format +#| msgid "Points and Lines" +msgid "Horizontal Line" +msgstr "Pünkt un Lienen" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +#| msgid "Drag Entry" +msgid "Hierarchy Entry" +msgstr "Indrag trecken" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Insert After" +msgstr "Text infögen" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Vöran infögen" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Infögen" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "Druckgrött" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Move Entries Down" +msgstr "Text infögen" + +#: worksheet.cpp:1933 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate Entries" +msgstr "Indrag utreken" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Entries" +msgstr "Indrag wegmaken" + +#: worksheet.cpp:1947 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Collapse Command Entry Results" +msgstr "Befehl infögen" + +#: worksheet.cpp:1948 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Expand Command Entry Results" +msgstr "Befehl anhangen" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Remove Command Entry Results" +msgstr "Befehl" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Add Command Entry To Execution" +msgstr "Befehl anhangen" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Text&klöör..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Klöör" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Text &rutheven..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Schriftoort" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Schrift&grött" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Fett" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Kursiev" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "Ü&nnerstreken" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Dörstreken" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "&Links utricht" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Linkerhand" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "&Merrn utricht" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "In de Merrn" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "&Rechts utricht" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Rechterhand" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Blocksatz" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Block" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove all results" +msgstr "Resultaat wegmaken" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +#| msgid "Ready" +msgid "Red" +msgstr "Afslaten" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Dark Orange" +msgstr "X-Rebeet" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Orange" +msgstr "X-Rebeet" + +#: worksheetentry.cpp:74 +#, fuzzy, kde-format +#| msgid "X range" +msgid "Light Orange" +msgstr "X-Rebeet" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, fuzzy, kde-format +#| msgid "Do you also want to export the images?" +msgid "Do you really want to remove this entry?" +msgstr "Wullt Du de Biller ok exporteren?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Indrag wegmaken" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Indrag trecken" + +#~ msgid "Animate Worksheet" +#~ msgstr "Arbeitblatt animeren" + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "Wenn anmaakt, reekt Cantor elk Indrag ünner den aktuellen nieg ut." + +#~ msgid "Defaults" +#~ msgstr "Vörinstellen" + +#~ msgid "Enable Line Numbers" +#~ msgstr "Reegnummern anmaken" + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Arbeitblattanimeren anmaken" + +#, fuzzy +#~| msgid "Plot" +#~ msgid "Plot.ly" +#~ msgstr "Diagramm" + +#, fuzzy +#~| msgid "Package:" +#~ msgid "Graphic Package: " +#~ msgstr "Paket:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      Reken mit KDE" + +#, fuzzy +#~| msgid "Document to open" +#~ msgid "Documentation:" +#~ msgstr "Dokment, dat Du opmaken wullt" + +#~ msgid "Show %1 Help" +#~ msgstr "%1-Hülp wiesen" + +#, fuzzy +#~| msgid "Path to Maxima:" +#~ msgid "Path to Julia:" +#~ msgstr "Padd na Maxima:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Diagrammen in Arbeitblatt inbinnen" + +#~ msgid "Clear Variables" +#~ msgstr "Variabeln leddig maken" + +#~ msgid "Right click here to insert image" +#~ msgstr "Klick rechts, wenn Du dat Bild infögen wullt" + +#, fuzzy +#~| msgid "Configure Image" +#~ msgid "Choose Image" +#~ msgstr "Bild instellen" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Beglöven - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Text" + +#~ msgid "LaTeX Entry" +#~ msgstr "Latex-Indrag" + +#, fuzzy +#~| msgid "Text Entry Before" +#~ msgid "Insert Entry Before" +#~ msgstr "Text vör" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Text infögen" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Padd na den Befehl „scilab-adv-cli“ (Wohrschoen: De Scilab-Verschoon mutt " +#~ "5.4 oder höger wesen)." + +#, fuzzy +#~| msgid "Insert Image" +#~ msgid "Insert Image Attachment" +#~ msgstr "Bild infögen" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Latex-Indrag infögen" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Padd na de utföhrbore Datei »Octave«" + +#~ msgid "Path to Maxima:" +#~ msgstr "Padd na Maxima:" + +#, fuzzy +#~| msgid "Failed to start Sage" +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Sage lett sik nich starten." + +#~ msgid "Path to Sage:" +#~ msgstr "Padd na Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Padd na Befehl „scilab-adv-cli“:" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Cantor dat Opstellen/Wegdoon vun Variabeln verfolgen laten" + +#, fuzzy +#~| msgid "Integrate Plots in Worksheet" +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "Diagrammen in Arbeitblatt inbinnen" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Padd na de utföhrbore Datei »Octave«" + +#~ msgid "Path to Octave:" +#~ msgstr "Padd na Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Ahn Naam" + +#, fuzzy +#~| msgctxt "the url to the documentation Python 2" +#~| msgid "http://docs.python.org/2/" +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "http://docs.python.org/2/" + +#, fuzzy +#~| msgid "" +#~| "

      Python is a remarkably powerful dynamic programming language that is " +#~| "used in a wide variety of application domains. There are several Python " +#~| "packages to scientific programming.

      This backend supports Python 2." +#~| "

      " +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "

      Python is en dünaamsch Programmeerspraak, de dat ankieken Weert is, un " +#~ "warrt in en Barg verscheden Programmerrebeden bruukt. Dat gifft en Reeg " +#~ "Python-Paketen för't wetenschaplich Programmschrieven.

      Dit " +#~ "Hülpprogramm ünnerstütt Python 2.

      " + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Bruukt Hülpprogramm utsöken:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Dat Hülpprogramm, mit dat disse Datei opstellt wöör, is nich installeert. " +#~ "- %1 deit noot." + +#~ msgid "Publish Worksheet" +#~ msgstr "Arbeitblatt apen maken" + +#~ msgid "Waiting for Image..." +#~ msgstr "Töven op Bild..." + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "Datei »%1« lett sik nich opmaken. - MIME-Typ nich begäng." + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|LaTeX-Dokment" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantor-Arbeitblatt" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Server för dat Cantor-Hülpprogramm »R«" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "© 2008: Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Bruuk: safeVariables Datei" + +#~ msgid "Saving failed." +#~ msgstr "Sekern fehlslaan" + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Bruuk: loadVariables Datei" + +#~ msgid "Loading failed." +#~ msgstr "Laden fehlslaan" + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "© 2009-2013: Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "Padd na Python-Befehl" + +#~ msgid "Cantor Server for R" +#~ msgstr "Cantor-Server för »R«" + +#~ msgid "Path to python2 command:" +#~ msgstr "Padd na Python2-Befehl:" + +#~ msgid "Could not start the server." +#~ msgstr "De Server lett sik nich starten." + +#~ msgid "Start Animation" +#~ msgstr "Animeren starten" + +#~ msgid "Restart Animation" +#~ msgstr "Animeren nieg starten" + +#~ msgid "Append Latex Entry" +#~ msgstr "Latex-Indrag anhangen" + +#~ msgid "Append Image" +#~ msgstr "Bild anhangen" + +#~ msgid "Append Page Break" +#~ msgstr "Sietümbrook anhangen" + +#~ msgid "Other" +#~ msgstr "Anner" + +#~ msgid "And %1 more..." +#~ msgstr "Un noch %1..." + +#~ msgid "Main Toolbar" +#~ msgstr "Hööft-Warktüüchbalken" + +#~ msgid "Popup" +#~ msgstr "Opduker" + +#~ msgid "The style used for Completion" +#~ msgstr "De bruukt Stil för Kompletteren" + +#~ msgid "Insert Command Entry Before" +#~ msgstr "Befehl infögen vör" + +#~ msgid "Command Entry Before" +#~ msgstr "Befehl vör" + +#~ msgid "GroupBox" +#~ msgstr "KoppelKasten" + +#~ msgid "Help" +#~ msgstr "Hülp" + +#~ msgid "Show Help Panel" +#~ msgstr "Hülppaneel wiesen" + +#~ msgid "Error uploading File %1" +#~ msgstr "Fehler bi't Hoochladen vun Datei »%1«." + +#~ msgid "MathematiKPart" +#~ msgstr "MathematiK-Komponent" + +#~ msgid "MathematiK" +#~ msgstr "MathematiK" diff --git a/po/nl/cantor.po b/po/nl/cantor.po new file mode 100644 index 0000000..0761e34 --- /dev/null +++ b/po/nl/cantor.po @@ -0,0 +1,5378 @@ +# translation of cantor.po to Nederlands +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2009, 2010, 2015, 2016, 2017, 2021, 2022. +# Jaap Woldringh , 2009, 2010, 2011. +# Kristof Bal , 2009. +# Jaap Woldringh , 2011, 2012. +# Jaap Woldringh , 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-08-07 15:31+0200\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 22.04.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Jaap Woldringh - t/m 2022,Freek de Kruijf - t/m 2022" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr ",freekdekruijf@kde.nl" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pauze" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Start" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Stop" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Animatieresultaat opslaan" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Animaties (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Gevorderd plotten" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Plot" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Expressie:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Verdere opties:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Plot" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Optie actief" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Berekenen" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Differentiëren" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variabele:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Keer: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Pakket" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Pakket importeren" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Pakket:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integreren" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Ondergrens:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Bovengrens:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "bepaalde integraal" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Lineaire algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Matrix aanmaken" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Kolommen:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Rijen:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Eigenwaarden berekenen" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrix:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Eigenvectoren berekenen" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Matrix inverteren" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Plot 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variabele:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Naam" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimum:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maximum:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Plot 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1e variabele:" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2e variabele:" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Script uitvoeren" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Vergelijkingen oplossen" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Vergelijkingen:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variabelen:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Backend selecteren" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Aanbevolen versie: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Zie %2 voor meer informatie." + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Aan sommige vereisten is niet voldaan: %1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Dit backend standaard maken" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"

      Julia is een zeer krachtige dynamische programmeertaal van hoog " +"niveau voor technische berekeningen. De syntax is bekend voor wie ervaring " +"heeft met andere technische omgevingen. De compiler is geavanceerd, kent een " +"verdeelde parallelle verwerking, en is numeriek nauwkeurig, en heeft een " +"uitvoerige wiskundige bibliotheek.

      " + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"Het pad naar Julia, opgegeven in de instellingen van het programma, moet " +"direct verwijzen naar het uitvoerbare bestand. Symlinks zijn niet " +"toegestaan. Geef a.u.b. het juiste pad op in de instellingen van het " +"programma, en probeer het nog eens." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Cantor kan de versie van Julia voor %1 niet vaststellen. Geef a.u.b. het " +"correcte pad op naar het uitvoerbare bestand van Julia (géén symlink), en " +"probeer het opnieuw." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"U gebruikt Cantor met Julia v%1.%2.%3. Deze versie van Cantor is " +"gecompileerd voor Julia v%4.%5.%6. Verwijs a.u.b. naar deze versie van " +"Julia, of compileer Cantor opnieuw voor de versie %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Pad naar Julia REPL" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Variabelenbeheer activeren" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Plots opnemen in het werkblad" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Grafisch pakket voor de Plot-assistent" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Spijtig genoeg ondersteunt Gadfly geen 3d-plotten" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Julia script-bestand (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Fout - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"In Julia kan niet worden ingelogd door intern probleem in julia door " +"ontbrekend bestand - \"%1\"" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "In Julia kan niet worden ingelogd door onbekend intern probleem" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Het Julia-proces is gestopt." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Starten van Julia-proces is mislukt." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "Communicatie met Julia-proces is mislukt om onbekende redenen." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Alleen voor Julia GR (https://gr-framework.org/) is er thans ondersteuning " +"voor visualisatieprogramma's. Dit pakket moet eerst worden geïnstalleerd, " +"indien dat nog niet is gebeurd. Dit doet u met Pkg.install(\"GR\") in Cantor " +"of in Julia REPL. Let erop dat dit lang kan duren, en dat u dit beter kunt " +"doen in Julia REPL, omdat u dan de voortgang van de installatie van het " +"pakket kunt volgen." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Algemeen" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Uitvoerbaar:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Plotintegratie:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Indien aangezet, worden plots in het werkblad weergegeven. En anders in een " +"afzonderlijk venster." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Ingeschakeld" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Variabelenbeheer :" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Volgen van het aanmaken en verwijderen van variabelen, en tonen van de " +"bestaande variabelen in het paneel voor variabelen." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Intern plotformaat:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "Inwendige indeling van plots, indien inbedden van plots is aangezet." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Grafisch pakket voor gebruik in de Plot-assistent" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Grafisch pakket voor Plot-assistent" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Plots" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Autorun" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Opdrachten voor autorun" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Documentatie" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Lijst van zelfstartende scripts aan het begin van de sessie" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Fout: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"De autorun-opdrachten, bij het starten van een nieuw werkblad. Ze zijn " +"nuttig bij het inlezen van de nodige modules, het wijzigen van de omgeving, " +"enz." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Luais een snelle, kleine scripttaal, met een eenvoudige procedurele " +"syntaxis. Er zijn een aantal wis- en natuurkundige bibliotheken beschikbaar." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Pad naar opdracht in luajit:" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Lua scriptbestand (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Pad naar luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" +"

      Helpsysteem van Maxima

      Functie apropos

      Zoekt naar " +"namen in Maxima die een naam hebben ergens in deze; naam moet een " +"tekenreeks of symbool zijn. Dus, apropos(exp) geeft een lijst met " +"alle vlaggen en functies die exp als onderdeel in hun naam hebben, zoals " +"expand, exp en exponentialize. Dus als u zich alleen " +"een gedeelte van de naam van een commando of variabele in Maxima herinnert, " +"dan kunt u dit commando gebruiken om de rest van de naam te vinden. Evenzo " +"kunt apropos(tr_) typen om een lijst met veel van de parameters te " +"vinden gerelateerd aan de vertaler, waarvan de meesten beginnen met tr_.

      apropos(\"\") geeft een lijst met alle namen van Maxima." +"

      apropos geeft de lege lijst [], als geen naam wordt gevonden." +"

      Functie describe

      describe(string) is " +"equivalent met describe(string, exact).

      describe(string, exact) vindt een item met titel gelijk aan (geen onderscheid in hoofd- en kleine " +"letters) aan tekenreeks, als er zo'n item is.

      describe(string, " +"inexact) vindt alle gedocumenteerde items die tekenreeks in hun titel " +"hebben. Als er meer dan één zo'n item is, zal Maxima aan de gebruiker vragen " +"om een item of items te selecteren en te tonen.

      ? foo (met een " +"spatie tussen ? en foo) is gelijk aan describe(\"foo\", " +"exact), en ?? foo is gelijk aan describe(\"foo\", inexact)." +"

      describe(, inexact) geeft een lijst met alle onderwerpen " +"gedocumenteerd in het on-line handboek.

      describe zet quotes " +"rond argumenten. describe geeft true als enige documentatie is " +"gevonden, anders false.

      Functie exampleexample(topic) toont enige voorbeelden van topic, die een " +"symbool of een tekenreeks is. Om voorbeelden van operators zoals if, " +"do of lambda te krijgen moet het argument een tekenreeks zijn, " +"bijv. example(\"do\"). example is niet hoofd-kleine " +"lettergevoelig. De meeste onderwerpen zijn functienamen." +"

      example() geeft de lijst van alle herkende onderwerpen." +"

      De naam van het bestand met de voorbeelden is gegeven door de " +"globale optievariabele manual_demo, die standaard wordt \"manual." +"demo\".

      example zet zijn argument tussen quotes. " +"example geeft done terug tenzij geen voorbeelden worden " +"gevonden of er geen argument is, in welk geval example de lijst geeft " +"van alle herkende onderwerpen." + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima is een systeem voor het werken met symbolische en numerieke " +"expressies, met inbegrip van differentiëren, integreren, Taylorreeksen, " +"Laplacetransformaties, gewone differentiaalvergelijkingen, stelsels van " +"lineaire vergelijkingen, veeltermen (polynomen), en verzamelingen, lijsten, " +"vectoren, matrices en tensoren. Met Maxima verkrijgt men numerieke " +"antwoorden met een hoge precisie, gebruik makend van exacte breuken, gehele " +"getallen met een willekeurig hoge precisie, en van decimale breuken met een " +"variabele nauwkeurigheid. Met Maxima kan men plots maken van functies en " +"gegevens, in twee en drie dimensies. " + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Path naar het uitvoerbaar bestand voor Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Fout: te veel */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Fout: Te veel /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Fout: \" verwacht voor :" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Wachten op plotresultaat" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Maxima batchbestand (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Starten van Maxima mislukt" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima liep vast, wordt herstart..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima liep twee keer kort na elkaar vast. Verdere startpogingen worden " +"gestaakt" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave is een hogere programmeertaal, speciaal geschikt voor " +"numerieke berekeningen.
      Het bevat een gemakkelijk te gebruiken " +"interface in het tekstscherm, voor het numeriek oplossen van lineaire en " +"niet-lineaire berekeningen, en voor het uitvoeren van andere numerieke " +"experimenten op een manier die het meest lijkt op die van Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Octave scriptbestand (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Syntaxisfout" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Plotintegratietest is mislukt." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "Het integreren (samenvoegen?) van plots wordt uitgezet." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"Het integreren van plots werkt niet omdat Cantor heeft ontdekt dat met " +"Octave geen plots kunnen worden gemaakt wegens gebrek aan backends: dit " +"blijkt uit de afwezigheid van uitvoer van de beschikbare grafische functie " +"toolkits(). Het lijkt erop dat u nog enkele OS-pakketten moet installeren, " +"zoals gnuplot, fltk of qt." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python is een erg krachtige dynamische programmeertaal die voor heel " +"wat toepassingsgebieden wordt gebruikt. Er bestaan diverse Pythonpakketten " +"voor wetenschappelijke programma's." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# Spijtig genoeg ondersteunt Bokeh geen 3d-plotten" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Python scriptbestand (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "De Cantor Python server is gestopt." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Starten van de Cantor Python server is mislukt." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"Communicatie met de Cantor Python server is mislukt om onbekende redenen." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Voor het gebruiken van geïntegreerde graphics met het pakket Matplotlib, " +"moet eerst het Pythonpakket \"matplotlib\" worden geïnstalleerd. " + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Voor het gebruiken van geïntegreerde graphics met Plot.ly, moet het " +"Pythonpakket \"plotly\" en het speciale uitvoerbare bestand \"orca\", dat " +"met Plot.ly compatibel is, worden geïnstalleerd. Zie het artikel \"Static " +"Image Export\" in de documentatie van Plot.ly, voor details." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Plot Dialoog" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Functies" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Titel" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Expressie" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Toevoegen" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Verwijderen" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Lijst wissen" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "X-variabele" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Stijl" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Lijnen" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Punten" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Punt-streep" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Vakjes" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogram" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Stappen" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Candlesticks" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Stippen" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Gladmaken" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Geen" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monotoon" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Natural Cubic Splines" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (monotoon)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Functiebereik" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X-bereik" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "&Bemonsteringssnelheid" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "&Stapgrootte" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Opties" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Plotnaam" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "tekst x-as" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "tekst y-as" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Plaats legenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Legenda verbergen" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Linksboven" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Rechtsboven" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Linksonder" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Rechtsonder" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Onderaan" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Er buiten" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Rooster tonen" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Randen tonen" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Kleuren" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "In zelfde venster weergeven" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logaritmische schaal x-as" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logaritmische schaal y-as" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Bestandopties" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Plot in bestand opslaan" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Bestandtype" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Uit bestandnaam afleiden" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! is niet echt een gewone softwareversie van de goedkoopste " +"rekenmachine. Het doel van Qalculate! is volledig gebruik te maken van de " +"uitstekende interface, rekenkracht en toepasbaarheid van moderne computers. " +"Hierbij staat in Qalculate! het invoeren van expressies centraal. In plaats " +"van dat elk getal in een wiskundige expressie (uitdrukking) apart wordt " +"ingevoerd, kunt u de expressie direct in zijn geheel invoeren, en die later " +"aanpassen. Het interpreteren van de expressies is flexibel en fouten worden " +"niet direct afgestraft. Als u niettemin toch iets verkeerds doet, laat " +"Qalculate! u dit weten. Niet helemaal oplosbare expressies echter worden " +"niet als fout beoordeeld. Qalculate zal expressies zo veel mogelijk " +"vereenvoudigen. Naast getallen en wiskundige bewerkingen kan in een " +"expressie elke combinatie van variabelen, eenheden en functies voorkomen." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"of, en hoe, eenheden automatisch moeten worden omgerekend. Indien True, " +"omrekenen naar de meest geschikte SI-eenheden (het kleinste aantal eenheden)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Standaard hoekeenheid voor goniometrische functies." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Grondtal voor ingelezen en berekende getallen." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" +"of het berekende antwoord moet worden vereenvoudigd of in factoren ontbonden." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"of rationale getallen als decimale getallen moeten worden weergegeven, als " +"breuken, of ergens daar tussen in." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Toon met drie stippen dat de decimalen van een getal zich blijven herhalen, " +"in plaats van afronden (bv. 2/3 wordt weegegeven als 0.666666... in plaats " +"van 0.666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Met decimale SI-voorvoegsels. Indien False, worden niet automatisch alleen " +"voorvoegsels gebruikt die een veelvoud zijn van duizend (zoals kilo, milli, " +"mega, micro)." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Indien True, worden in plaats van deling, negatieve exponenten gebruikt " +"(bijv. 5/x^2 wordt 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Numerieke weergave." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Indien True worden plots in het werkblad weergegeven. En anders in een " +"afzonderlijk venster." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Of in plots kleuren worden gebruikt." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Of er een rooster moet worden geplot." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Of er een rand rondom de plot moet worden getekend." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Lijndiktes, in pixels." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Aantal interpolatiestappen bij plotten." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Modus voor gladmaken van plots." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Plotstijl:" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Positie legenda in plots." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" +"Qalculate meldt dat het niet kan afdrukken. Is gnuplot wel geïnstalleerd?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "%1 ontbreekt" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 moet een getal zijn." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 moet een geheel getal zijn." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 moet een booleaanse waarde zijn." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "ongeldige optie voor %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "meerdere expressies aangetroffen in één plotopdracht (%1 en %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "FOUT" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "WAARSCHUWING" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Er bestaat geen functie, variabele of eenheid met deze naam." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Functie: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Plot-interface" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "Plot een of meer functies hierin, of in een apart venster." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "expressie" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "optie" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "waarde" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "geheel getal" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "booleaanse waarde" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "getal" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "standaard: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Naam van de functie" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Titel" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "tekst x-as" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "tekst y-as" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"afbeeldingsbestand voor opslaan plot. Indien leeg, wordt plot in een venster " +"op het scherm getoond. Indien inline=true wordt de afbeelding sowieso " +"getoond." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "Afbeeldingstype voor opslaan: auto, png, ps, eps, latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "True (waar) voor kleurenplot, False (onwaar) voor zwartwit." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Kleinste waarde x-as." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Grootste waarde x-as." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Logaritmische schaal voor x-as?" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Logaritmische schaal voor y-as?" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Logaritmische basis voor x-as?" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Logaritmische basis voor y-as?" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "rooster tonen in plot?" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "Randen tonen rondom plot (niet alleen assen)?" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Lijndiktes." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Plaats van de plotlegenda: geen, linksboven, rechtsboven, linksonder, " +"rechtsonder, eronder, of erbuiten" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "Plot glad maken: niet, uniek, csplines, bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Plotstijl: streepjes, punten, punt_streep, hokjes, histogram, stappen, " +"candlesticks, stippen" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Schaal voor tweede x-as." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Schaal voor tweede y-as." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Plot in het venster tekenen, of in een nieuw venster?" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Afstand tussen twee interpolatiepunten. Zie ook stappen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Aantal interpolatiepunten. Zie ook stappen." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "De naam van de x-variabele. Dit moet een onbekende variabele zijn" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Variabelen in een bestand opslaan" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Sla alle huidig gedefinieerde variabelen op in een bestand. Zij kunnen weer " +"worden ingelezen met %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "bestand" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "bestand: bestand waarin moet worden opgeslagen" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Variabelen inlezen uit een bestand" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Lees variabelen in uit een bestand dat eerder met %1 werd aangemaakt." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "bestand: in te lezen bestand" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Grondtal:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Breuktype:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Decimaal" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Exact" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Breuk" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Samengesteld" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Numerieke weergave:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Zuiver" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Wetenschappelijk" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Nauwkeurigheid" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "oneindige rij aangeven:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Met SI-voorvoegsels:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Met negatieve exponenten:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Berekenen" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Naar beste SI-eenheden omrekenen:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radialen" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Graden" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Grads" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Modus:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Vereenvoudigen" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Ontbinden in factoren" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Hoekeenheid:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Plotten" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Plots in zelfde venster weergeven:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Randen rondom weergeven:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Lijndiktes:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Bemonsteringssnelheid:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Modus gladmaken:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Natural cubic Splines" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Stappen" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Positie legenda:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Plotten in kleur:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Raster tonen:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Plotstijl:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Invoer wijzigen" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Nieuwe invoer toevoegen" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Naam mag niet leeg zijn" + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Lokale documentatie toevoegen" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Nieuwe documentatie ophalen" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Verdere documentatie downloaden" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Qt gecomprimeerd helpbestand is ongeldig" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Documentatie is al geïmporteerd" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Wijzigen" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Wissen" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Dit met GHNS deïnstalleren a.u.b." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Installeer verdere documentatiebestanden" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Naam" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Pad" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Toevoegen" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Pictogram:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Een pictogram selecteren" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Naam:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Voer een naam in" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Selecteer een naam..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Pad:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Selecteer een Qt helpbestand..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "selecteer een Qt helpbestand..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" +"

      Helpsysteem van R: help() en ?:


      De functie " +"help() en de ? help-operator in R leveren toegang tot de " +"documentatiepagina's voor R-functies, gegevenssets en andere objecten, zowel " +"voor pakketten in de standaard R-distributie en voor pakketten die zijn " +"bijgedragen.

      Voor toegang tot de documentatie voor de standaard " +"functie lm (lineair model), voer bijvoorbeeld het commando " +"help(lm) in of help(\"lm\") of ?lm of ?\"lm" +"\" (d.w.z., de aanhalingstekens zijn optioneel).

      Voor toegang tot " +"help voor een functie in een pakket dat nu niet geladen is, specificeer ook " +"de naam van het pakket: bijvoorbeeld, om documentatie te krijgen voor de " +"functie rlm() (robuust lineair model) in het pakket MASS, " +"help(rlm, package=\"MASS\").

      Standaard namen in R bestaan uit " +"hoofd- en kleine-letters, cijfers (0-9), underscores (_) en punten (.) en " +"moeten met een letter of een punt beginnen. Om help te krijgen voor een " +"object met een niet-standaard naam (zoals de help-operator ?), moet " +"de naam in quotes staan: bijvoorbeeld, help('?') of ?\"?\"." +"

      U mag ook de functie help() gebruiken voor toegang tot " +"informatie over een pakket in uw bibliotheek — bijvoorbeeld, help(package=" +"\"MASS\") — die een index van beschikbare help-pagina's toont voor het " +"pakket naast enige andere informatie.

      Help-pagina's voor functies " +"bevatten gewoonlijk een sectie met voorbeelden van uitvoerbare programma's " +"die illustreren hoe de functies werken. U kunt deze voorbeelden uitvoeren in " +"de huidige R-sessie via het commando example(): bijv., " +"example(lm)." + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R is een taal en omgeving voor statistische berekeningen en " +"grafieken, soortgelijk aan de taal en omgeving S.
      Hierin is een grote " +"verscheidenheid aanwezig van statistische (lineaire en niet-lineaire " +"modellen, klassieke statistische testen, analyse van tijdreeksen, " +"klassificatie, clustering, ...) en grafische technieken, en R is heel goed " +"uit te breiden. De taal S wordt meestal gekozen voor onderzoek in de " +"statistische methodologie, en R geeft een Open Source-route om hieraan deel " +"te nemen." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Fout bij het openen van bestand %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "R scriptbestand (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Fout bij het lezen van de opdracht" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "Url documentatie van R op de computer" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Open met dubbelklikken de dialoog voor het selecteren van een bestand " + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R bronbestanden (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage is een vrij Open Source wiskundig software-systeem met een GPL-" +"licentie.
      Het combineert de mogelijkheden van vele bestaande Open " +"Source-pakketten in één gemeenschappelijke interface op basis van Python." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Path naar het uitvoerbaar bestand voor Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "LaTeX-letters aanzetten voor backend van Sage" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Antwoord van %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"De laatste uitvoer was: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Python scriptbestand (*.py);;Sage scriptbestand( *.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Sage versie %1.%2 wordt niet ondersteund. Update uw installatie naar de " +"ondersteunde versies, die wel samenwerken mat Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Het bepalen van de versie van Sage is niet gelukt. Kijk even naar uw " +"installatie, en de uitvoer van 'sage -v'." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Het Sage-proces liep vast tijdens het berekenen van deze expressie" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Het Sage-proces liep vast" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "" +"Het Sage-proces werd afgebroken tijdens het berekenen van deze expressie" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Het Sage-proces werd afgebroken" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Starten van Sage is mislukt" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "LaTeX-lettertypen:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"De Latex-uitvoer van Sage is niet altijd correct, dus kunt u beter Latex-" +"letters uitzetten" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab is vrije en cross-platform software voor numerieke " +"berekeningen, en een hogere numeriek georiënteerde programmeertaal. Scilab " +"wordt uitgegeven onder de CeCILL licentie (compatibel met GPL)" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Path naar het uitvoerbaar bestand voor Scilab" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Scilab scriptbestand (*.sce);;Scilab functiebestand (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "Bestand %1 is al geopend." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Bestand openen" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Voorbeelden downloaden" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "Voorbeeld &openen" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Ga naar vorige werkblad" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Ga naar volgende werkblad" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Alle ondersteunde bestanden (*.cws *ipynb);;Cantor Worksheet (*.cws);;" +"Jupyter Notebook (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Geen backend gevonden

      \n" +"
      Probeer:\n" +"
      • De instellingen te wijzigen in de instellingendialoog;
      • " +"
      • Pakketten te installeren voor het volgende programma:
      • %2
      " +"
      " +msgstr[1] "" +"

      Geen backend gevonden

      \n" +"
      Probeer:\n" +"
      • De instellingen te wijzigen in de instellingendialoog;
      • " +"
      • Pakketten te installeren voor een van de volgende programma's:
      • " +"%2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Fout" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Backend %1 is niet geïnstalleerd" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"Backend %1 is geïnstalleerd, maar niet actief. Controleer aub. de " +"installatie en instellingen van Cantor" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sessie %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Kon het Cantor-gedeelte niet vinden, foutmelding %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Berekenen..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Gereed" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Gewijzigd" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" +"Er zijn meerdere niet opgeslagen open werkbladen. Wilt u die afsluiten?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Cantor afsluiten" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Het huidige project is gewijzigd. Wilt u dit opslaan?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Project opslaan" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Formatteren" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Het standaard backend" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Letterzetten als standaard" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Syntaxisaccentuering als standaard" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Voltooien aanzetten als standaard" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Nummering van expressies aanzetten als standaard" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Veranderingen in werkblad standaard animeren" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Het standaard renderen van expressies binnen $$..$$ in tekst en Markdown " +"invoer aanzetten (pdflatex moet zijn geïnstalleerd)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Automatisch de invoeren na de huidige opnieuw berekenen" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Bevestiging vragen voor herstarten van backend" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Rich text formatteren van TextEntry opslaan, bij opslaan van werkblad in " +"Jupyter notebook opmaak." + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Oude stijl gebruiken van plaatsen van invoer in Cantor" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Fout tonen van renderen ingebedde math" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Limiet zichtbare lijnen voor tekst" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Hiërarchisch lettertype voor hoofdstuk" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Hiërarchisch lettertype grootte voor hoofdstuk" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Hiërarchisch schuin lettertype voor hoofdstuk" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Hiërarchisch vet lettertype voor hoofdstuk" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Hiërarchisch schuin lettertype voor subhoofdstuk" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Hiërarchisch grootte lettertype voor subhoofdstuk" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Hiërarchisch schuin lettertype voor subhoofdstuk" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Hiërarchisch vet lettertype voor hoofdstuk" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Hiërarchisch lettertype voor sectie" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Hiërarchisch schuin lettertype voor sectie" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Hiërarchisch vet lettertype voor sectie" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Hiërarchisch lettertype voor subsectie" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Hiërarchisch schuin lettertype voor subsectie" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Hiërarchisch vet lettertype voor sectie" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Hiërarchisch lettertype voor alinea" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Hiërarchisch schuinlettertype voor alinea" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Hiërarchisch vet lettertype voor alinea" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Hiërarchisch lettertype voor subalinea" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Hiërarchisch schuin lettertype voor alinea" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Hiërarchisch vet lettertype voor alinea" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Platte tekst opslaan" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Exporteren naar LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Werkblad doorrekenen" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Zoomen" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Letterzetten met LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Syntaxisaccentuering" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Voltooien" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Regelnummers" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Animaties" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Ingebedde Math" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Backend herstarten" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Invoer berekenen" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Opdrachtinvoer invoegen" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Tekstinvoer invoegen" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "\"Markdown\"invoer invoegen" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Latexinvoer invoegen" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Paginaeinde invoegen" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Afbeelding invoegen" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Alle resultaten inklappen" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Alle resultaten uitvouwen" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Alle resultaten verwijderen" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Huidige invoer verwijderen" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Scriptbewerker tonen" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Voltooien tonen" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Cantor Werkblad (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyter Notebook (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Opslaan als" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Opslaan" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Alle aanwezige berekende antwoorden gaan verloren. Wilt u werkelijk %1 " +"opnieuw starten?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "%1 herstarten?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Onderbreking" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Sessiefout: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Initialisatie klaar" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Initialiseren..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[alleen-lezen]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Wilt u het huidige werkblad naar de publieke server uploaden?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Vraag - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" +"Het werkblad is niet opgeslagen. U moet het opslaan voordat u het uploadt." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Waarschuwing - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Dit backend ondersteunt geen scripts" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Bewerken" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "Beel&d" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Werkblad" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Instellingen" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Bestand" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Nieuw" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Panelen" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Instellingen" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Achtergrondkleur" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Standaard" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Tekstkleur" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Lettertype" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Vet" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Cursief" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Vergroten" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Verkleinen" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Selecteren" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Resetten naar default" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Resultaten tonen" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Resultaten verbergen" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Toon help" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Uiterlijk" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Onderbroken" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Zoekbalk" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Zoeken:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Volgende" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Vorige" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Vervangen:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Vervangen" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "&Alles vervangen" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Zoeken in:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Hoofdlettergevoelig" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Hiërarchische lettertypen" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Lettertype voor hoofdstuk" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Familie lettertypen:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Grootte lettertype:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Lettertype voor subhoofdstuk" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Lettertype voor sectie" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Lettertype voor subsectie" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Lettertype voor alinea" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Lettertype voor subalinea" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Hoofdstuk" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Subhoofdstuk" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Sectie" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Subsectie" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Alinea" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Subalinea" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Niveau hiërarchie instellen" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Aaneengesloten lijnen" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Streepjeslijnen" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Stippellijnen" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Streep-stip lijnen" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Streep-stip-stip lijnen" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Lijndikte" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Dun" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Medium" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Dik" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Lijnkleur" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Lijnstijl" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Afbeelding instellen" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Dubbelklik hier voor het instellen van afbeeldingen" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Kan afbeelding %1 niet inlezen" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Resultaatafbeelding opslaan" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Afbeeldingen (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Instellingen voor afbeelding" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Openen" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Grootte weergave" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Breedte" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Hoogte" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Voorbeeld" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Grootte afdruk" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Grootte weergave gebruiken" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Afbeeldingsinstellingen" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(auto)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Afbeeldingsbestand openen" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "LaTeX-code tonen" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Geen pad opgegeven voor uitvoerbaar bestand %1. Geef a.u.b. het juiste pad " +"op in de instellingen van het programma, en probeer het nog eens." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"Het opgegeven bestand '%1' voor het uitvoerbare bestand '%2' bestaat niet. " +"Geef a.u.b. het juiste pad op in de instellingen van het programma en " +"probeer het nog eens." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"Het opgegeven bestand '%1' verwijst niet naar een uitvoerbaar bestand. Geef " +"a.u.b. het juiste pad op in de instellingen van het programma en probeer het " +"nog eens." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"Programma %1 eindigde het uitvoeren niet na %2 milliseconden gedurende de " +"plotintegratie test." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "Openen van bestand %1 lukte niet tijdens de plotintegratie test." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "Het lezen van het resultaat tijdens de plotintegratietest is mislukt." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Path naar het uitvoerbaar bestand voor LaTeX" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Path naar het uitvoerbaar bestand voor dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Waarde" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 bytes>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Van:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Naar:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Hoofdtitel" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Schaal X-as" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Schaal Y-as" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Plotnaam:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Dit is niet ondersteunde Jupyter content van types ('%1')" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"Proces %1 stopte onverwacht. Alle rekenresultaten zijn verloren gegaan." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"Proces %1 stopte onverwacht, met melding \"%2\". Alle rekenresultaten zijn " +"verloren gegaan." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"U koos ondersteuning voor grafisch pakket %1, maar die kan niet worden " +"geactiveerd wegens ontbrekende vereisten, integratie van dit pakket wordt " +"dus uitgezet. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDE frontend voor wiskundige toepassingen" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Onderhoudt
      Qt5/KF5 port, Scilab en backends voor Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Ontwikkelaar" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Oorspronkelijke auteur
      Onderhoud (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Backend van KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Backend Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Interface" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Pictogram van Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Backend gebruiken" + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Te openen documenten" + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Kon bestand %1 niet openen" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Modus voor Edit starten" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Bijlagen wissen" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Mathfout in Cantor" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Kan de afbeelding \"%1\" niet lezen. Fout \"%2\"" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "---Paginabreekpunt ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Ga naar de inhoud" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Zoeken op sleutelwoorden..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Zoeken in tekst van huidige documentatiepagina" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Zoomniveau weer op 100% instellen" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Afsluiten" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Naar volgende match gaan" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Ga naar vorige match" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Match hoofdlettergevoelig" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "Het bestand is met succes in de map Downloads gedownload." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Download is gelukt" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Bestanden van Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Bestanden van Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Alle ondersteunde bestanden" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Alle bestanden" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Naam:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Waarde:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Nieuwe variabele toevoegen" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Variabelen inlezen:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Variabelen opslaan" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Variabelen wissen" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Zoek/Filter" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Hoofdlettergevoelig" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Zoek gehele woord" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Wilt u werkelijk alle variabelen verwijderen?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Bestand laden" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Resultaat opslaan" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Resultaat wissen" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Er is geen KDE-tekstbewerkingscomponent gevonden.\n" +"Controleer de installatie van KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Scriptbewerker" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Scriptbewerker - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Niet gevonden" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Begin bereikt" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Einde bereikt" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "%1 voorkomen vervangen" +msgstr[1] "%1 voorkomens vervangen" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Opdrachten" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Resultaten" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Fouten" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Tekst" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX-code" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "Beginnen:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" +"Maak een nieuw werkblad voor de geselecteerde backend. Als er niets " +"geselecteerd is, zal de gebruiker gevraagd worden welk systeem bij opstarten " +"te gebruiken." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Standaard backend:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Werkblad:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" +"Gebruik LaTeX-lettertypen voor de rekenresultaten, indien de backend dit " +"mogelijk maakt" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "LaTeX-lettertypen" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Accentuering van syntaxis aanzetten" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Accentuering van syntaxis" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "Syntaxis-voltooiing aanzetten" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Regelnummering tonen" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Regelnummers" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Animatie-effecten opnemen in het werkblad" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" +"Indien ingeschakeld zullen tekst-items uitgelijnd zijn aan de rand van het " +"werkblad en niet bij de prompt-rand" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "Tekst-items niet laten inspringen" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Opgemaakte tekst-formaat gebruiken voor tekst-items, bij opslaan in Jupyter " +"notebook opmaak." + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "Berekening:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"Indien ingeschakeld zal de gebruiker gevraagd worden voor bevestiging om de " +"backend te herstarten" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" +"Indien ingelogd zullen alle items onder de huidige automatisch worden " +"berekend" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "Items automatisch opnieuw berekenen" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Aantal rijen in in het resultaat (0 geen limiet):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Maximum aantal zichtbare rijen in het resultaat van een ingevoerde opdracht. " +"0 betekent geen limiet." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" +"LaTeX-lettertypen aanzetten voor wiskundige formules in items met Markdown" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "Wiskundige formules via Latex" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "Melden wanneer renderen voor wiskundige formules mislukt" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Zoeken..." + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Raw Cel-doeken" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Aangepast doel toevoegen" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Naar tekstinvoer omzetten" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Naar Raw cel omzetten" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Doel MIME type:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Resultaat kopiëren" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Weergegeven tonen" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Programmaregels tonen" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "HTML-code tonen" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Plain alternatief tonen" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Html tonen" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "HTML tonen" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Kan Eps-bestand niet weergeven. Mogelijk ontbreken er pakketten." + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Tekstresultaat opslaan" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "Tekstbestanden (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Kan bestand %1 niet schrijven." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Kan bestand niet schrijven." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Fout bij schrijven bestand %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"In de modus alleen-lezen kan Cantor niet garanderen dat exporteren geldig is " +"voor %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Fout bij het inlezen van de latex.xsl-stylesheet" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Kon bestand %1 niet openen." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Bestand openen" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Kon geselecteerd bestand niet openen voor lezen." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" +"Het geselecteerde bestand is geen geldig projectbestand van Cantor of " +"Jupyter." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Het geselecteerde bestand is geen geldig projectbestand van Cantor." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Dit werkblad werd aangemaakt met het Python2, dat niet meer wordt " +"ondersteund. Nu wordt Python3 gebruikt." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python2 wordt niet meer ondersteund" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"Backend %1 niet gevonden. Bewerken en uitvoeren van invoer is niet mogelijk." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Er zijn wat problemen met het %1-backend.\n" +"Controleer even uw instellingen, of installeer\n" +"de nodige pakketten.\n" +"U kunt alleen dit werkblad zien." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Cantor ondersteunt geen Jupyter notebooks met een versie lager dan 4.5 " +"(gevonden %1.%2)." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Cantor ondersteunt geen Jupyter notebooks met een versie hoger dan 4.5 " +"(gevonden %1.%2)." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Dit notebook werd aangemaakt met het Python2, dat niet meer wordt " +"ondersteund. Nu wordt Python3 gebruikt." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "een object met keys: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "geen object JSON-waarde" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "onjuiste gegevens gevonden (%1) die geen Jupyter cel zijn" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "Het bestand is geen geldig Jupyter notebook" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Ongeldig Jupyter notebook-schema: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Omzetten naar" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Opdracht" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Afbeelding" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Paginaeinde" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Horizontale lijn" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Invoer hiërarchie" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Invoegen na" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Invoegen voor" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Invoegen" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Inzoomen" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Uitzoomen" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Originele grootte" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Invoer omhoog verplaatsen" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Invoer omlaag verplaatsen" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Invoer berekenen" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Invoer wissen" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Resultaten opdrachtinvoer inklappen" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Resultaten opdrachtinvoer uitvouwen" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Resultaten opdrachtinvoer verwijderen" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Verhinderen uitvoeren opdrachtinvoer" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Opdrachtinvoer ook uitvoeren" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Tekst&kleur..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Kleur" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Tekst&accentuering..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Lettertype" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Grootte &lettertype" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Vet" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Cursief" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Onderstrepen" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Doorhalen" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "&Links uitlijnen" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Links" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "&Midden uitlijnen" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Midden" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "&Rechts uitlijnen" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Rechts" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Uitlijnen" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Uitlijnen" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"Met deze actie worden alle resultaten verwijderd, zonder dat dit ongedaan " +"kan worden gemaakt. Weet u het zeker?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Alle resultaten verwijderen" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Wit" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Zwart" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Donkerrood" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Rood" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Lichtrood" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Donkergroen" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Groen" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Lichtgroen" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Donkerblauw" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Blauw" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Lichtblauw" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Donkergeel" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Geel" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Lichtgeel" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Donkercyaan" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Cyaan" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Lichtcyaan" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Donkermagenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Lichtmagenta" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Donkeroranje" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Oranje" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Lichtoranje" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Donkergrijs" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Grijs" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Lichtgrijs" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Omhoog" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Omlaag" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Wilt u dit item verwijderen?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Invoer wissen" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Invoer slepen" + +#~ msgid "Animate Worksheet" +#~ msgstr "Werkblad animeren" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "Indien een backend is ingesteld, bij het opstarten een werkblad aanmaken " +#~ "in plaats van het tonen van een dialoog voor het kiezen van een backend." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Indien aangezet zal Cantor automatisch iedere invoer na de huidige " +#~ "berekenen" + +#~ msgid "Defaults" +#~ msgstr "Standaarden" + +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "Dit is de startwaarde voor de sessie-optie \"Typeset using LaTeX\", " +#~ "waardoor mogelijke backend-uitvoer met LaTeX wordt weergegeven, indien " +#~ "die optie is aangezet." + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "" +#~ "Opmaken in Latex aanzetten (werkt alleen als latex is geïnstalleerd)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "Dis de beginwaarde voor de sessie-optie \"Syntaxismarkering\", voor het " +#~ "gebruiken van syntaxismarkering in opdrachten." + +#~ msgid "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." +#~ msgstr "" +#~ "Dit is de startwaarde voor de sessie-optie \"Aanvullen\", waardoor " +#~ "ingevoerde code automatisch wordt aangevuld." + +#~ msgid "" +#~ "This is initial value for the session \"Line numbers\" option, which " +#~ "response for presence of command entries execution numbers." +#~ msgstr "" +#~ "Dit is de startwaarde voor de sessie-optie \"Regelnummers\", waardoor " +#~ "opdrachtregels van de code worden genummerd." + +#~ msgid "Enable Line Numbers" +#~ msgstr "Regelnummers aanzetten" + +#~ msgid "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." +#~ msgstr "" +#~ "Dit is de startwaarde voor de sessie-optie \"Werkbladanimatie\", voor het " +#~ "animeren van het werkblad." + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Werkblad animeren" + +#~ msgid "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." +#~ msgstr "" +#~ "Dit is de startwaarde voor de sessie-optie \"Wiskunde inbedden\", " +#~ "waardoor wiskundige uitdrukkingen worden weergegeven in tekst en mardown-" +#~ "invoer." + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "" +#~ "Ingebedde Math aanzetten (werkt alleen als pdflatex is geïnstalleerd)" + +#~ msgid "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." +#~ msgstr "" +#~ "Indien uitgezet, komt er geen waarschuwing voor herstarten als op de " +#~ "startknop wordt gedrukt." + +#~ msgid "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." +#~ msgstr "" +#~ "Indien aangezet komt er bij elke wiskunde weergavefout een " +#~ "informatievenster met een foutbeschrijving." + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "Bericht tonen bij renderfout van ingebedde math" + +#~ msgid "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." +#~ msgstr "" +#~ "Indien aangezet, wordt de oude invoerstijl van Cantor (alle invoer recht " +#~ "onder elkaar) gebruikt." + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Oude stijl gebruiken van inspringen van invoer in Cantor" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Indien aangezet, slaat Cantor tekst op in rich format bij opslaan naar " +#~ "het Jupyter notebook format." + +#~ msgid "" +#~ "Graphical package, for which will be enable support for embedding plots" +#~ msgstr "Grafisch pakket, waarmee ingebedde plots mogelijk worden gemaakt" + +#~ msgid "" +#~ "Graphic package, which code will be used for plotting via \"Plot\" Cantor " +#~ "menu." +#~ msgstr "" +#~ "Grafisch pakket dat wordt gebruikt voor plotten via het \"Plot\"-menu van " +#~ "Cantor." + +#~ msgid "Matplotlib (with seaborn, ggplot support too)" +#~ msgstr "Matplotlib (ook met ondersteuning van seaborn, ggplot)" + +#~ msgid "Plot.ly" +#~ msgstr "Plot.ly" + +#~ msgid "All supported" +#~ msgstr "Alle ondersteund" + +#~ msgid "" +#~ "Graphic package, used for plotting. When integrated plots option is " +#~ "enabled, then plots from the package will be integrated to worksheet" +#~ msgstr "" +#~ "Grafisch pakket gebruikt voor plotten. Wanneer het integreren van plots " +#~ "is aangezet, worden plots uit dit pakket toegevoegd aan het werkblad" + +#~ msgid "Graphic Package: " +#~ msgstr "Grafisch pakket:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      De KDE-manier voor Wiskunde" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "Url naar de lokale documentatie van Maxima" + +#~ msgid "" +#~ "If empty, the \"Show help\" action will show the default online " +#~ "documentation. Otherwise, the specified URL will be opened." +#~ msgstr "" +#~ "Indien leeg, toont \"Toon help\" de standaard documentatie. (vert.: dit " +#~ "betekent waarschijnlijk: de op de computer aanwezige documentatie) En " +#~ "anders wordt de opgegeven URL gebruikt. " + +#~ msgid "Documentation:" +#~ msgstr "Documentatie:" + +#~ msgid "Url to the local Python documentation" +#~ msgstr "Url naar delokale documentatie van Python" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "Url naar de lokale documentatie van Octave" + +#~ msgid "Show %1 Help" +#~ msgstr "Toon %1 help" + +#~ msgid "Path to Julia:" +#~ msgstr "Pad naar Julia:" + +#~ msgid "Documentation provided by GHNS" +#~ msgstr "Documentatie geleverd door GHNS" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Plots in werkblad opnemen" + +#~ msgid "" +#~ "Commands to automatically run on start. They can be useful for loading " +#~ "needed modules, changing environment, etc." +#~ msgstr "" +#~ "Opdrachten worden bij de start automatisch uitgevoerd. Zij kunnen nuttig " +#~ "zijn voor het inlezen van de nodige modules, het wijzigen van de " +#~ "omgeving, enz." + +#~ msgid "Exclude from Execution" +#~ msgstr "Van uitvoeren uitsluiten" + +#~ msgid "Add to Execution" +#~ msgstr "Aan uit te voeren toevoegen" + +#~ msgid "Right click here to insert image" +#~ msgstr "Afbeelding invoegen: hier rechtsklikken" + +#~ msgid "Choose Image" +#~ msgstr "Afbeelding kiezen" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "Afbeeldingen (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Clear Variables" +#~ msgstr "Variabelen wissen" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Bevestiging - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Tekstinvoer" + +#~ msgid "LaTeX Entry" +#~ msgstr "LaTeXinvoer" + +#~ msgid "Insert Entry Before" +#~ msgstr "Invoer invoegen vóór" + +#~ msgid "Insert Horizontal Line" +#~ msgstr "Horizontale lijn invoegen" + +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Tussenvoegen invoer hiërarchie" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Pad naar de opdracht in de terminal scilab-adv-cli (Waarschuwing: versie " +#~ "van Scilab moet 5.4 of hoger zijn)" + +#~ msgid "Insert Image Attachment" +#~ msgstr "Afbeelding invoegen" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Latex-invoer invoegen" + +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Pad naar het Python-uitvoerbaar bestand voor Cantor" + +#~ msgid "" +#~ "Path to directory, which contains Cantor plugins (cantorpart and all " +#~ "backends)" +#~ msgstr "" +#~ "Pad naar de map met alle plugins voor Cantor (cantorpart en alle backends)" + +#~ msgid "Paths (advance settings)" +#~ msgstr "Paden (gevorderde instellingen)" + +#~ msgid "Path to Cantor plugin directory:" +#~ msgstr "Pad naar de map met Cantor-plugins:" + +#~ msgid "" +#~ "Path to directory, which contains Cantor backend plugins. This is " +#~ "important setting - with wrong path Cantor can't create any worksheets." +#~ msgstr "" +#~ "Pad naar de map met backend-plugins voor Cantor. Dit is een belangrijke " +#~ "instelling - is die fout, dan kan Cantor geen werkbladen maken." + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "Inline plots tussenformaat:" + +#~ msgid "Preferred package for the \"Plot\" menu: " +#~ msgstr "Gewenst pakket voor het \"Plot\"-menu:" + +#~ msgid "Path to Maxima:" +#~ msgstr "Pad naar Maxima:" + +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Pad naar de Pythonserver van Cantor:" + +#~ msgid "Path to Sage:" +#~ msgstr "Path naar Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Pad naar opdracht scilab-adv-cli:" + +#~ msgid "" +#~ "On this moment, integrated graphic can handle only one of Julia packages " +#~ "- GR graphic package. And for using this feature you need to install the " +#~ "package first. For this, run Pkg.install(\"GR\") in Cantor or in julia " +#~ "REPL. Also, it is important to note, that this is a long operation and " +#~ "better use julia REPL, because Cantor doesn't show intermediate text " +#~ "unlike the julia." +#~ msgstr "" +#~ "Op dit moment kan voor het integreren van plots alleen een van de Julia-" +#~ "pakketten worden gebruikt - GR grafisch pakket. Hiervoor moet u eerst dit " +#~ "pakket installeren. Hiertoe moet u in Cantor Pkg.install(\"GR\") " +#~ "uitvoeren, of in julia REPL. Merk op dat dit lang kan duren, en dat u " +#~ "beter julia REPL kunt uitvoeren, omdat Cantor, anders dan julia, geen " +#~ "enkele tekstuitvoer geeft tijdens deze bewerking." + +#~ msgid "" +#~ "If default backend is setted, then on startup instead of the backend " +#~ "chooser dialog will be created worksheet of the default backend" +#~ msgstr "" +#~ "Indien de standaard backend is ingesteld, wordt bij het starten het " +#~ "standaard werkblad aangemaakt van de standaard backend." + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Laat Cantor het aanmaken/vernietigen van variabelen volgen" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "Plots in werkblad opnemen (nieuwe sessie starten indien gewijzigd)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Pad naar het uitvoerbaar bestand voor Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Pad naar Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Naamloos" + +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "https://docs.python.org/2/" + +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "Python is een erg krachtige dynamische programmeertaal die voor " +#~ "heel wat toepassingsgebieden wordt gebruikt. Er bestaan diverse " +#~ "Pythonpakketten voor wetenschappelijke programma's. Deze backend " +#~ "ondersteunt Python 3." + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "You should set path to Julia executable" +#~ msgstr "U moet het pad instellen naar het uitvoerbare bestand van Julia" + +#~ msgid "" +#~ "Path to Julia should point directly to julia executable, symlink not " +#~ "allowed" +#~ msgstr "" +#~ "Pad naar Julia moet direct wijzen naar het uitvoerbare binaire bestand " +#~ "van Julia, symlink is niet toegestaan" + +#~ msgid "" +#~ "Lua backend needs installed Lua programming language. The backend often " +#~ "automatically finds needed Lua binary file, but not in this case. Please, " +#~ "go to Cantor settings and set path to Lua executable." +#~ msgstr "" +#~ "De backend van Lua heeft een reeds geïnstalleerde programmeertaal nodig " +#~ "van Lua. Deze backend vindt gewoonlijk het nodige binaire bestand van " +#~ "Lua, maar dat is nu niet het geval. Ga a.u.b. naar de instellingen van " +#~ "Cantor, en geef het pad op naar het uitvoerbare bestand van Lua." + +#~ msgid "" +#~ "In Lua backend settings a path to Lua binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Lua? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "In de instellingen van de backend van Lua is het pad %1 opgegeven naar " +#~ "het binaire bestand van Lua, maar dit bestand is niet uitvoerbaar. Bent u " +#~ "zeker van dit pad naar Lua? Indien dit niet zo is, wijzig dit dan in de " +#~ "instellingen van Cantor." + +#~ msgid "" +#~ "Maxima backend needs installed Maxima - a computer algebra system. The " +#~ "backend often automatically finds needed binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Maxima executable" +#~ msgstr "" +#~ "Voor de backend van Maxima is een geïnstalleerde Maxima nodig - een " +#~ "computeralgebrasysteem. De backend vindt vaak zelf het nodige binaire " +#~ "bestand, maar dat is nu niet het geval. Geef a.u.b. in de instellingen " +#~ "van Cantor het pad op naar het uitvoerbare bestand van Maxima" + +#~ msgid "" +#~ "In Maxima backend settings a path to maxima binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Maxima? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "In de instellingen van de backend van Maxima is het pad %1 opgegeven naar " +#~ "het binaire bestand van Maxima, maar dit bestand is niet uitvoerbaar. " +#~ "Bent u zeker van dit pad naar Maxima? Indien dit niet zo is, wijzig dit " +#~ "dan in de instellingen van Cantor." + +#~ msgid "" +#~ "Octave backend needs installed Octave programming language. The backend " +#~ "often automatically finds needed Octave binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Octave binary file " +#~ "with command line interface (CLI)" +#~ msgstr "" +#~ "De backend van Octave heeft een reeds geïnstalleerde programmeertaal " +#~ "nodig van Octave. Deze backend vindt gewoonlijk het nodige binaire " +#~ "bestand van Octave, maar dat is nu niet het geval. Ga a.u.b. naar de " +#~ "instellingen van Cantor, en geef het pad op naar het uitvoerbare bestand " +#~ "van Octave, in de terminal (opdrachtregel in tekstscherm)" + +#~ msgid "" +#~ "In Octave backend settings a path to Octave binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Octave? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "In de instellingen van de backend van Octave is het pad %1 opgegeven naar " +#~ "het binaire bestand van Octave, maar dit bestand is niet uitvoerbaar. " +#~ "Bent u zeker van dit pad naar Octave? Indien dit niet zo is, wijzig dit " +#~ "dan in de instellingen van Cantor." + +#~ msgid "" +#~ "R backend uses special binary file - cantor_rserver (installed with R " +#~ "backend), which must be executable." +#~ msgstr "" +#~ "De backend voor R gebruikt een speciaal binair bestand - cantor server " +#~ "(geïnstalleerd samen met deze backend), die uitvoerbaar moet zijn." + +#~ msgid "" +#~ "Sage backend needs installed Sage programming language. The backend often " +#~ "automatically finds needed Sage binary file, but not in this case. " +#~ "Please, go to Cantor settings and set path to Sage executable" +#~ msgstr "" +#~ "De backend van Sage heeft een reeds geïnstalleerde programmeertaal nodig " +#~ "van Sage. Deze backend vindt gewoonlijk het nodige binaire bestand van " +#~ "Sage, maar dat is nu niet het geval. Ga a.u.b. naar de instellingen van " +#~ "Cantor, en geef het pad op naar het uitvoerbare bestand van Sage." + +#~ msgid "" +#~ "In Sage backend settings a path to Sage binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Sage? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "In de instellingen van de backend van Sage is het pad %1 opgegeven naar " +#~ "het binaire bestand van Lua, maar dit bestand is niet uitvoerbaar. Bent u " +#~ "zeker van dit pad naar Sage? Indien dit niet zo is, wijzig dit dan in de " +#~ "instellingen van Cantor." + +#~ msgid "" +#~ "Scilab backend needs installed Scilab programming language. The backend " +#~ "often automatically finds needed Scilab binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Scilab executable" +#~ msgstr "" +#~ "De backend van Scilab heeft een reeds geïnstalleerde programmeertaal " +#~ "nodig van Scilab. Deze backend vindt gewoonlijk het nodige binaire " +#~ "bestand van Scilab, maar dat is nu niet het geval. Ga a.u.b. naar de " +#~ "instellingen van Cantor, en geef het pad op naar het uitvoerbare bestand " +#~ "van Scilab" + +#~ msgid "" +#~ "In Scilab backend settings a path to Scilab binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Scilab? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "In de instellingen van de backend van Scilab is het pad %1 opgegeven naar " +#~ "het binaire bestand van Scilab, maar dit bestand is niet uitvoerbaar. " +#~ "Bent u zeker van dit pad naar Scilab? Indien dit niet zo is, wijzig dit " +#~ "dan in de instellingen van Cantor." + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Kies de te gebruiken backend:" + +#~ msgid "" +#~ "The file is old Jupyter notebook (found version %1.%2), which isn't " +#~ "supported by Cantor" +#~ msgstr "" +#~ "Het bestand is een oud notebook van Jupyter (gevonden versie %1.%2), dat " +#~ "niet door Cantor wordt ondersteund" + +#~ msgid "" +#~ "Julia backend uses special binary file - %1 (installed with Julia " +#~ "backend), which must be executable" +#~ msgstr "" +#~ "De backend voor Julia gebruikt een speciaal binair bestand - %1 " +#~ "(geïnstalleerd samen met deze backend), die uitvoerbaar moet zijn" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Het backend waarmee dit bestand werd aangemaakt is niet geïnstalleerd. " +#~ "Nodig is %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Werkblad publiceren" + +#~ msgid "Waiting for Image..." +#~ msgstr "Wacht op afbeelding..." + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "kan bestand %1 niet openen: onbekend mimetype" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|LaTeX-document" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantor-werkblad" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Server voor de Cantor R Backend" + +#~ msgid "R Server" +#~ msgstr "R Server" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Gebruik: bestand saveVariables" + +#~ msgid "Saving failed." +#~ msgstr "Opslaan mislukt." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Gebruik: bestand loadVariables" + +#~ msgid "Loading failed." +#~ msgstr "Inlezen mislukt." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2013 Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "Pad naar python-opdracht:" + +#~ msgid "Cantor Server for R" +#~ msgstr "Cantor-server voor R" + +#~ msgid "Path to python2 command:" +#~ msgstr "Pad naar python2-opdracht:" + +#~ msgid " Enable Variable Management" +#~ msgstr "Varaiabelenbeheer activeren" + +#~ msgid "Could not start the server." +#~ msgstr "Kon de server niet starten." + +#~ msgid "Start Animation" +#~ msgstr "Animatie starten" + +#~ msgid "Restart Animation" +#~ msgstr "Animatie herstarten" + +#~ msgid "Append Latex Entry" +#~ msgstr "Latex-invoer toevoegen" + +#~ msgid "Append Image" +#~ msgstr "Afbeelding toevoegen" + +#~ msgid "Append Page Break" +#~ msgstr "Pagina-einde toevoegen" + +#~ msgid "Other" +#~ msgstr "Overig" + +#~ msgid "And %1 more..." +#~ msgstr "En nog %1 ..." + +#~ msgid "Main Toolbar" +#~ msgstr "Hoofdwerkbalk" + +#~ msgid "Popup" +#~ msgstr "Popup" + +#~ msgid "The style used for Completion" +#~ msgstr "De voor het voltooien gebruikte stijl" + +#~ msgid "" +#~ "Scilab version of the master branch of the Scilab's repository is " +#~ "compatible" +#~ msgstr "" +#~ "Versie van Scilab uit de master branch van Scilab's repository is " +#~ "compatibel" + +#~ msgid "Insert Command Entry Before" +#~ msgstr "Opdrachtinvoer invoegen voor" + +#~ msgid "Command Entry Before" +#~ msgstr "Opdrachtinvoer vóór" + +#~ msgid "GroupBox" +#~ msgstr "GroupBox" + +#~ msgid "This test requires a functioning %1 backend" +#~ msgstr "Voor deze test is een werkende %1-backend nodig" + +#~ msgid "Form" +#~ msgstr "Formulier" + +#~ msgid "Help" +#~ msgstr "Help" + +#~ msgid "Show Help Panel" +#~ msgstr "Helppaneel tonen" + +#~ msgid "Error uploading File %1" +#~ msgstr "Fout bij het uploaden van bestand %1" diff --git a/po/nl/docs/cantor/index.docbook b/po/nl/docs/cantor/index.docbook new file mode 100644 index 0000000..2111ff3 --- /dev/null +++ b/po/nl/docs/cantor/index.docbook @@ -0,0 +1,1559 @@ + +ATEX"> + + +]> + + + +Handbook van &cantor; + + + Alexander Rieder alexanderrieder@gmail.com +&Jaap.Woldringh; + + + +2009 +Alexander Rieder + +&FDLNotice; + +2020-12-16 +Applicaties 20.12 + + +De toepassing &cantor; heeft als doel een goed werkblad aan te bieden voor andere wiskundige Free Software-pakketten. + + + +KDE +kdeedu +wiskunde +wiskunde +Cantor +Julia +Lua +Maxima +Octave +Python +Qalculate +R +Sage +Scilab + + + + + +Inleiding + +Met de toepassing &cantor; kunt u uw favoriete wiskundige programma's gebruiken in een mooie werkblad-omgeving die in &kde; is geïntegreerd. Er zijn dialogen die u helpen bij veel voorkomende taken, en het maakt het u mogelijk uw werkblad met anderen te delen. + + + +Het gebruik van &cantor; + +Schermafdruk: +Hier is een schermafdruk van &cantor; + + + + + + Schermafdruk + + + + + + + +Eigenschappen van &cantor; + + Intuïtief werkblad voor het berekenen van expressies. + Geplotte grafieken worden in het werkblad getoond. + Eenvoudige pluginstructuur waardoor verschillende backends kunnen worden toegevoegd. + Integratie voor GHNS (Vers van de pers), waardoor u voorbeeldwerkbladen kunt downloaden (of uploaden). + Weergeven van wiskundige formules met &latex;. + Backendafhankelijke syntaxis-accentuering + Pluginafhankelijke hulpdialogen die u bij veel voorkomende taken helpen, zoals het integreren van een functie, of het invoeren van een matrix. + + + + +De backends van &cantor; +&cantor; laat u uit diverse backends kiezen, die u ermee wilt gebruiken. De keus is afhankelijk van wat u wilt doen. +Momenteel zijn de volgende backends beschikbaar: + + Sage: + + Sage is een vrij open-source wiskundig softwaresysteem, met een GPL-licentie. Het combineert de mogelijkheden van veel bestaande open-sourcepakketten, binnen een algemene interface op basis van Python. Zie https://sagemath.org voor verdere informatie. + + + + Maxima: + + Maxima is een systeem voor het hanteren van symbolische en numerieke expressies, waaronder differentiëren, integreren, Taylorreeksen, Laplace transformaties, gewone differentiaalvergelijkingen, systemen van lineaire vergelijkingen, veeltermen, verzamelingen, lijsten, vectoren, matrices, en tensoren. Maxima geeft numerieke antwoorden met een grote nauwkeurigheid, door het gebruik van exacte breuken, gehele getallen van een willekeurig grote nauwkeurigheid, en decimale getallen met een variabele nauwkeurigheid. Maxima kan functies en gegevens plotten in twee en drie dimensies. See http://maxima.sourceforge.net voor meer informatie. + + + + R: + + R is een taal en omgeving voor statistische berekeningen en grafieken, te vergelijken met die van S. Het levert een grote verscheidenheid aan statistische (lineaire en niet- lineaire modellen, klassieke statistische tests, analyse van tijdreeksen, klassificeren, clusteranalyse, ...) en grafische technieken, en kan heel goed worden uitgebreid. De S-taal wordt vaak gebruikt voor onderzoek in statistische methoden, en R is de open-source mogelijkheid hiervoor. Zie https://www.r-project.org voor meer informatie. + + + + Julia: + + Julia is een zeer krachtige dynamische programmeertaal van hoog niveau voor technische berekeningen. De syntax is bekend voor wie ervaring heeft met andere technische omgevingen. De compiler is geavanceerd, kent een verdeelde parallelle verwerking, en is numeriek nauwkeurig, Er is een uitvoerige wiskundige bibliotheek aanwezig. Meer informatie vindt u op Julia documentation. + + + + &kalgebra;: + + &kalgebra; is een grafische rekenmachine, op basis van MathML, die wordt meegeleverd in het Education project van &kde;. Zie Julia documentation voor meer informatie. + + + + Qalculate!: + + Qalculate! is niet echt een gewone softwareversie van de goedkoopste rekenmachine. Het doel van Qalculate! is volledig gebruik te maken van de uitstekende interface, rekenkracht en toepasbaarheid van moderne computers. Hierbij staat in Qalculate! het invoeren van expressies centraal. In plaats van dat elk getal in een wiskundige expressie (uitdrukking) apart wordt ingevoerd, kunt u de expressie direct in zijn geheel invoeren, en die later aanpassen. Het interpreteren van de expressies is flexibel en fouten worden niet direct afgestraft. Als u niettemin toch iets verkeerds doet, laat Qalculate! u dit weten. Niet helemaal oplosbare expressies echter worden niet als fout beoordeeld. Qalculate zal expressies zo veel mogelijk vereenvoudigen. Naast getallen en wiskundige bewerkingen kan in een expressie elke combinatie van variabelen, eenheden en functies voorkomen. Zie ook https://qalculate.github.io/ voor meer informatie. + + + + Python2 and Python3: + + Python is een opvallend krachtige dynamische programmeertaal die op veel gebieden wordt toegepast. Er zijn diverse pakketten voor beschikbaar voor wetenschappelijk programmeren. + Python wordt uitgegeven onder de licentie van de Python Software Foundation (GPL compatibel). Zie de officiële website voor verdere informatie. + + Door deze backend bevat het hoofdmenu van &cantor; een extra ingang, namelijk Pakket. In dit menu kunt u alleen PakketPakket importeren kiezen. U kunt hiermee Pythonpakketten in het werkblad importeren. + + + + + Scilab: + + Scilab is vrije en cross-platform software voor numerieke berekeningen, en een hogere numeriek georiënteerde programmeertaal. + Scilab wordt uitgegeven onder de CeCILL licentie (overeenkomend met GPL). Zie http://www.scilab.org/ voor meer informatie. + + Om van deze backend gebruik te kunnen maken, moet de geïnstalleerde versie van Scilab 5.5 of hoger zijn. + + + + + Octave: + + &GNU; Octave is een hogere programmeertaal, speciaal geschikt voor numerieke berekeningen. Het bevat een gemakkelijk te gebruiken interface voor de opdrachtregel, voor het numeriek oplossen van lineaire en niet-lineaire berekeningen, en voor het uitvoeren van andere numerieke experimenten op een manier die het meest lijkt op die van MATLAB. Zie MATLAB. Zie https://www.gnu.org/software/octave/ voor meer informatie. + + + + Lua: + + Lua is een snelle kleine scripttaal, met een eenvoudige procedurele syntaxis. Er zijn verschillende wis- en natuurkundige bibliotheken voor Lua beschikbaar. + Zie https://www.lua.org/ voor meer informatie. + Deze backend ondersteunt luajit 2. + + + + + + + +De werkruimte van &cantor; + + + Schermafbeelding van de werkruimte van &cantor; + + + + + + Schermafbeelding van de werkruimte van &cantor; + + + + +De werkblad-interface van &cantor; heeft drie gedeelten: + Een tabbladbalk, waarin u tussen de open werkbladen kunt schakelen. + Een help paneel, met hierin hulp voor een bepaalde opdracht na invoeren van de ??- opdracht, beschrijf-(opdracht) of voorbeeld-(opdracht) (Maxima backend). + Een paneel Variabelenbeheer waarin u de lijst van alle beschikbare variabelen in het huidige werkblad kunt zien. De panelen Help en Variabelenbeheer worden als tabbladen in een zijvak van een &cantor;-venster getoond. Variabelenbeheer kan alleen gebruikt worden voor de backends van Maxima (indien ingeschakeld op pagina Instellingen&cantor; instellen... Maxima), &kalgebra;, Octave, Python2, Python3, Qalculate, en Scilab. + Het werkblad zelf. + + + +Het werkblad +Het werkblad is het basisgebied waarin u in &cantor; werkt. U kunt hierin expressies invoeren, de backend berekeningen laten doen, en de antwoorden bekijken. De opdrachten die u kunt geven hangen af van de gebruikte backend, dus moet u daarvan de syntaxis kennen (de knop Help tonen voert u daar rechtstreeks naar toe). Indien u de (naam van de) opdracht kent, maar er meer over wilt weten, kunt u "? opdracht" intoetsen, waarna u rechts van het werkblad informatie hierover krijgt. Als u een aantal voorbeelden wilt zien van werkbladen, kunt u die ophalen met Voorbeeldwerkbladen ophalen in het menu Bestand, en zo werkbladen ophalen van andere gebruikers. +Om elk opdrachtitem van het werkblad te besturen kunt u de besturingsknoppen in het rechter gedeelte van het werkblad gebruiken door met de muiscursor over het itemveld te bewegen. Er zijn drie basis acties voor elk item: Evalueer item om het resultaat van berekeningen voor het item bij te werken, Item verslepen om het item te verplaatsen naar de andere plaats van het huidige werkblad en Item verwijderen om het item uit het huidige werkblad te verwijderen. +Instellingen voor lettertypes en uitlijning van items in het werkblad kunnen worden gewijzigd met een werkbalk boven het werkblad. + + Instellingen + In het menu Instellingen kunt u enkele instellingen van het uiterlijk van het huidige werkblad wijzigen. + + + Zetwerk maken met LaTeX + + Met deze instelling wordt de weergave van expressies gewijzigd. Indien actief, wordt die door &latex; in een visueel aantrekkelijke vorm gegoten. Bijvoorbeeld, 3*x^2*sqrt(2)*x+2/3 wordt + + + + 3*x^2*sqrt(2)*x+2/3 + + + + + + Syntaxisaccentuering + + Door syntaxisaccentuering wordt de leesbaarheid van (programma)code verbeterd, door de sleutelwoorden (keywords) en bij elkaar passende haakjes in verschillende kleuren weer te geven. + + + + Tab-voltooiing + + Wanneer deze actief is, toont &cantor; de mogelijke voltooiingen van de opdracht die u aan het intypen bent, wanneer u op de tab-toets drukt. Wanneer er maar één mogelijkheid overblijft, wordt de rest van de opdracht voor u aangevuld. + + + + Regelnummers + + Met deze instelling regelt u het geven van nummers aan de verschillende expressies. Hierdoor kunt u vorige antwoorden weer terughalen - in Maxima, bijvoorbeeld, doet u dit met de opdracht %O1. + + + + Werkblad animeren + + Deze instelling bestuurt of de verschillende animaties zullen worden gebruikt om wijzigingen op een werkblad te accentueren. + + + + Wiskunde ingebed + + Hiermee regelt u of wiskundige uitdrukkingen tussen $$..$$ in Tekst en &Markdown;- invoer standaard wordt aangezet (heeft pdflatex nodig). + + + + + + + +De hulpdialogen +Er zijn verschillende dialogen beschikbaar in &cantor; om het uitvoeren van wat basisbewerkingen te vereenvoudigen. +Deze dialogen zijn beschikbaar in het hoofdmenu. Elke backend kent zijn eigen hulpdialogen. + +De dialoog aanmaken matrix + + Schermafbeelding dialoog in &cantor; voor aanmaken matrix + + + + + + Schermafbeelding dialoog in &cantor; voor aanmaken matrix + + + +In deze dialoog kunnen matrices worden ingevoerd. Dimensies en elementen van een matrix kunnen worden opgegeven. +Tijdens de invoer kan snel tussen de cellen worden genavigeerd met behulp van de -toets. + + +Dialoog voor matrixbewerkingen + + Schermafbeelding dialoog in &cantor; voor invoeren matrix + + + + + + Schermafbeelding dialoog in &cantor; voor invoeren matrix + + + +In deze dialoog kan de naam worden ingevoerd van de matrix waarvan de eigenvectoren, eigenwaarden of inverse matrix moeten worden berekend. De standaard waarde (%) wordt gebruikt voor verwijzing naar de vorige berekening of invoer. + + +Differentiatie dialoog + + Schermafbeelding differentiatie dialoog van &cantor; + + + + + + Schermafbeelding differentiatie dialoog van &cantor; + + + +In deze dialoog kan de te differentiëren functie worden ingevoerd, de naam van de variabele en de orde van de afgeleide. + + +Integratie dialoog + + Schermafbeelding integratie dialoog van &cantor; + + + + + + Schermafbeelding integratie dialoog van &cantor; + + + +In deze dialoog kan de te integreren functie worden ingevoerd, de naam van de variabele en de de integratiegrenzen voor een bepaalde integraal. + + +Dialoog voor oplossen vergelijkingen + + Schermafbeelding van &cantor; voor oplossen vergelijkingen + + + + + + Schermafbeelding van &cantor; voor oplossen vergelijkingen + + + +In deze dialoog kunnen de op te lossen vergelijkingen worden ingevoerd (elke vergelijking op een aparte regel), en de te berekenen variabelen (door komma's gescheiden). + + +Dialoog importeren pakketten + + Schermafbeelding van &cantor; dialoog importeren pakketten + + + + + + Schermafbeelding van &cantor; dialoog importeren pakketten + + + +In deze dialoog kan de naam van het te importeren pakket worden ingevoerd (⪚ numpy voor Python). + + +Plot dialoog + + Schermafbeelding van &cantor; voor plot dialoog (tabblad Functies) + + + + + + Schermafbeelding van &cantor; voor plot dialoog (tabblad Functies) + + + +De opties in deze dialoog worden over twee tabbladen verdeeld. In het tabblad Functies kunnen de te plotten functies worden ingevoerd. +Een nieuwe functie wordt ingevoerd door op de knop Toevoegen te klikken. Dubbelklik op de cel Naam, en voer de naam in, dubbelklik op de cel Expressie en voer de expressie in van de functie. + + Schermafbeelding van &cantor; voor plot dialoog (tabblad Opties) + + + + + + Schermafbeelding van &cantor; voor plot dialoog (tabblad Opties) + + + +In het tabblad Opties kunnen de opties worden ingevoerd voor plotten en legenda. U kunt bijna elke plotoptie zo aanpassen dat er een mooie plot ontstaat. + + +Dialoog 2D plot + + Schermafbeelding van &cantor; voor dialoog 2D plot + + + + + + Schermafbeelding van &cantor; voor dialoog 2D plot + + + +In deze dialoog kan de expressie van de functie worden ingevoerd, de variabele, en de grenzen van de variabele. + + +3D plot dialoog + + Schermafbeelding van &cantor; voor dialoog 3D plot + + + + + + Schermafbeelding van &cantor; voor dialoog 3D plot + + + +In deze dialoog kan de expressie van de functie worden ingevoerd, de variabele, en de grenzen van de variabele. + + + + + +Overzicht van de opdrachten + + +Het hoofdvenster van &cantor; + +&cantor; heeft de gemeenschappelijke menu-items van &kde;, voor meer informatie lees het hoofdstuk Menu basishoofdstuk van &kde; . + +Hieronder is de lijst van aanvullende of speciale menu-onderdelen in &cantor;. Let u er wel op dat sommige menu's alleen zichtbaar zijn voor backends die daarvan gebruik maken. + + +Het menu Bestand + + + + &Ctrl;N Bestand Nieuw +Maakt een nieuw werkblad aan met de standaard backend. + + +Bestand Nieuw Backend +Maakt een nieuw werkblad aan met de gekozen backend. + + + &Ctrl;O Bestand Openen... +Een nieuw werkblad openen met de bestandsdialoog. + + +Bestand Recent openen + Kies een werkblad in een lijst van recent gebruikte bestanden. + + +Bestand Voorbeeldwerkbladen downloaden +Opent de dialoog voor het downloaden van voorbeelden die door andere gebruikers van &cantor; ter beschikking zijn gesteld, met Interessante zaken ophalen. + + +Bestand Voorbeeld openen +Opent de dialoog voor het inlezen van een voorbeeld. De voorbeelden moeten eerst worden gedownload met Bestand Voorbeeldwerkbladen downloaden beforehand. + + +Bestand Opslaan als platte tekst... +Hiermee kunt het huidige werkblad als platte tekst opslaan. + + +Bestand Naar LaTeX exporteren +Hiermee kunt het huidige werkblad als een &latex;-document opslaan. + + +Bestand Werkblad publiceren +Opent de dialoog voor het publiceren van uw huidige werkblad, zodat het beschikbaar wordt voor andere gebruikers van &cantor;, met Interessante zaken ophalen. + + +Bestand Script uitvoeren +Hiermee kunt u de scripts inlezen en uitvoeren voor de huidige backend. + + + + + + + +Het menu Beeld + + + +BeeldPanelen +Hiermee kunt u de zichtbaarheid schakelen van enkele tabbladen in het zijvak. U kunt kiezen uit: + + Bestanden + Omschakelen van het tonen van het tabblad Bestanden in het zijvak. + + + + Help + Omschakelen van het tonen van het tabblad Help in het zijvak. + + + + Beheer variabelen + Omschakelen van het tonen van het tabblad Beheerder van variabelen in het zijvak. + + + + + &Ctrl;+ Beeld Inzoomen +Op het huidige werkblad 10% inzoomen. + + + &Ctrl;- Beeld Uitzoomen +Op het huidige werkblad 10% uitzoomen. + + +Beeld Scriptbewerker tonen +Opent het venster voor het bewerken van scripts voor de huidige backend. + + + + + + +Het menu Werkblad + + + + &Ctrl;E Werkblad Werkblad berekenen +Activeert het doorrekenen van het gehele werkblad. + + + &Shift;&Enter; Werkblad Invoer berekenen +Start het berekenen van de huiduge invoer. + + + &Ctrl;&Enter; Werkblad Opdracht invoegen +Voegt een nieuwe opdracht toe onder de huidige positie van de muisaanwijzer. + + +Werkblad Tekstinvoer invoegen +Voegt een nieuwe tekstinvoer toe onder de huidige positie van de muisaanwijzer. + + +Werkblad Markdown-invoer invoegen +Voegt &Markdown;-invoer in onder de huidige positie van de muisaanwijzer.. + + +Werkblad LaTeX-invoer invoegen +Voegt Latex-invoer in onder de huidige positie van de muisaanwijzer.. + + +Werkblad Afbeelding invoegen +Voegt een afbeelding in onder de huidige positie van de muisaanwijzer. + + +Worksheet Insert Pagina-einde +Voegt een pagina-einde in onder de huidige positie van de muisaanwijzer. + + +Werkblad Alle antwoorden inklappen +Alle antwoorden inklappen van ingevoerde opdracht. + + +Werkblad Alle antwoorden uitklappen +Alle antwoorden uitklappen van ingevoerde opdracht. + + +Werkblad Alle antwoorden verwijderen +Alle antwoorden verwijderen van ingevoerde opdracht. + + + &Shift;∇ Werkblad Huidige invoer verwijderen +Wist de huidige invoer in het werkblad. + + + + + + +Het menu Lineaire algebra + + + +Lineaire algebra Matrix aanmaken +Opent de dialoog matrix aanmaken. + + +Lineaire algebra Eigenwaarden berekenen +Opent de dialoog invoeren naam matrix voor de berekening van de eigenwaarden en dimensies van de meervoudigheden van de eigenwaarden, in de juiste volgorde. + + +Lineaire algebra Eigenvectoren berekenen +Opent de dialoog invoeren naam matrix voor de berekening van de eigenwaarden en dimensies van de meervoudigheden van de eigenwaarden, en eigenvectoren in de juiste volgorde. + + +Linaire algebra Inverse matrix +Opent de dialoog invoeren naam matrix voor de berekening van de inverse van de matrix. + + + + + + +Het menu Bereken + + + +Bereken Differentëren +Opent de dialoog differentiatie parameters. + + +Bereken Integratie +Opent de dialoog integratie parameters. + + +Bereken Vergelijkingen oplossen +Opent de dialoog invoeren parameters voor het oplossen van lineaire en niet-lineaire vergelijkingen. + + + + + + +Het menu Pakketten + + + +Pakketten Pakket importeren +Opent de dialoog pakket importeren. + + + + + + +Het menu Plot + + + +Plot Plot +Opent the dialoog plotparameters . + + +Plot Plot 2D +Opent de dialoog plotparameters. + + +Plot Plot 3D +Opent de dialoog plotparameters. + + + + + + +De menu's Instellingen en Help +&cantor; heeft de gewone menu's van &kde;- voor Instellingen en Help. Voor meer informatie lees de secties over het Instellingenmenu en het Helpmenu in de basis van &kde;. + + + + + + + +Vragen en antwoorden + + + + Het menu Weergeven met LaTeX is niet beschikbaar + Niet elke backend ondersteunt elke optie. De huidige versie ondersteunt &latex;-uitvoer voor de backends Maxima, Qualculate! en Sage. + + + Ik heb Sage/Maxima geïnstalleerd, of andere ondersteunde CAS, maar zie de bijbehorende backend niet. (CAS: Computer Algebra Systeem) + + Een mogelijke verklaring is dat &cantor; de juiste locatie niet kan detecteren. Ga naar de dialoog Instellingen &cantor; instellen... en wijzig het Pad naar de juiste backend-pagina van de toepassing. + + + + Wat een rare naam is dit - wat heeft die nu met wiskunde te maken? + &cantor; is genoemd naar de Duitse wiskundige Georg Cantor, de bedenker van de verzamelingentheorie. + + + + + + +Dankbetuiging en licentie + +&cantor; +Programma copyright 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +Documentatie Copyright © 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +&meld.fouten;&vertaling.freek;&vertaling.jaap; &underFDL; &underGPL; + +&documentation.index; + + + diff --git a/po/nn/cantor.po b/po/nn/cantor.po new file mode 100644 index 0000000..a50519c --- /dev/null +++ b/po/nn/cantor.po @@ -0,0 +1,4532 @@ +# Translation of cantor to Norwegian Nynorsk +# +# Eirik U. Birkeland , 2010. +# Karl Ove Hufthammer , 2012, 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2016-01-31 14:32+0100\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Eirik U. Birkeland,Karl Ove Hufthammer" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "eirbir@gmail.com,karl@huftis.org" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pause" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Start" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Stopp" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Avansert plotting" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Plott" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Uttrykk:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Fleire val:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Plott" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Aktivt valt" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Rekn ut" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Deriver" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variabel:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "×" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Gongar: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Pakke" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importer pakke" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Pakke:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integrer" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Nedre grense:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Øvre grense:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "bestemt integral" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Lineær algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Lag matrise" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Kolonnar:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Rader:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Rekn ut eigenverdiar" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrise:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Rekn ut eigenvektorar" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Interer matrise" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Plott i 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variabel" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Namn" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minst:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Høgst:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Plott i 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1. variabel" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2. variabel" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Køyr skript" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Løys likningar" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Likningar:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variablar:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Gjer denne til standardmotor" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Bruk variabelhandsaming" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Integrer plott i arbeidsarket" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Feil – Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Generelt" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "På" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Liste over skript som skal køyrast automatisk ved øktstart" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Feil: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Adresse til LuaJIT-programfila" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Lua-skriptfil (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Adresse til Maxima-programfila" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Feil: For mange */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Feil: For mange /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Feil: venta \" før ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Maxima-batchfil (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Klarte ikkje starta Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima krasja. Startar på nytt …" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "Maxima har krasja to gongar på kort tid. Stoppar omstartinga." + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Octave-skriptfil (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Syntaksfeil" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Python-skriptfil (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor – plottevindauge" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funksjonar" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Tittel" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Uttrykk" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Legg til" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Fjern" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Tøm liste" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "X-variabel" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Stil" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Linjer" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Punkt" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Punkt og linjer" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Boksar" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogram" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Steg" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Lysestakar" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Prikkar" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Glatting" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Ingen" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monoton" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Naturlege kubiske spline-kurver" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier-kurver (monotone)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Funksjonsområde" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X-område" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "S&lingsrate" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "S&tegstorleik" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Val" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Tittel på plott" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Merkelapp på x-akse" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Merkelapp på y-akse" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Plassering til figurforklaring" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Gøym figurforklaring" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Oppe til venstre" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Oppe til høgre" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Nedre til venstre" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Nede til høgre" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Nedanfor" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Utanfor" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Vis rutenett" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Vis heil ramme" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Bruk fargar" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Vis inni" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logaritmisk x-skala" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logaritmisk y-skala" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Filval" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Lagra plott til fil" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Filtype" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Finn ut frå filnamn" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Om og korleis einingar skal gjerast om automatisk. Viss det er kryssa av " +"her, vert dei gjorde om til dei mest passande SI-einingane (færrast " +"einingar)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Standard vinkeleining for trigonometriske funksjonar." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Grunntal for tal som vert tolka og vert rekna ut." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Om resultatet av utrekninga skal forenklast eller faktoriserast." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Om rasjonale tal skal visast med desimalar, som brøk eller ein mellomting." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Bruk tre prikkar for å merkera at dei gjentekne siffera i eit tal held fram " +"for alltid, i staden for å runda av (for eksempel vert 2/3 vert vist som " +"0,666666… i staden for 0.666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Bruk alle desimale SI-prefiks. Viss det ikkje er kryssa av her, vert prefiks " +"som ikkje er multiplum av tusen (centi, desi, deka, hekto) ikkje brukte " +"automatisk." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "FEIL" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "uttrykk" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "boolsk" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "tal" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Vel kva data som skal visast i hjelpebobler." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "fil" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Som brøk" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Kombinert" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Talvising:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Rein" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Vitskapleg" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radianar" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Gradar" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradianar" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Forenkla" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Faktoriser" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Vinkeleining:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Feil ved opning av fila %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Feil ved tolking av kommando" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Adresse til Sage-programfila" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Resultatet av %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Det førre resultatet var: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Sage-prosessen krasja medan uttrykket vart evaluert" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Sage-prosessen krasja" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Sage-prosessen vart avslutta medan uttrykket vart evaluert" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Sage-prosessen vart avslutta" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Klarte ikkje starta Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Opna fil" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Opna eksempel" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +msgstr[1] "" + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Feil" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Motoren %1 er ikkje installert" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Økt %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Reknar ut …" + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Klar" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Lagra prosjekt" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Motoren som vert brukt som standard" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Bruk skriftformatering som standard" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Bruk syntaksmerking som standard" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Bruk nummerering av uttrykk som standard" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Evaluer arbeidsarket" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Bruk LaTeX-skriftformatering" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Syntaksmerking" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Fullføring med «Tab»" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Linjenummer" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Start motoren om att" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Evaluer oppføring" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Vis skriptredigering" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "Cantor-del" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Lagra som" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Lagra" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Avbryt" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Øktfeil: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Klar" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Førebur …" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Vil du lasta opp det gjeldande arbeidsarket til ein open vevtenar?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Spørsmål – Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Arbeidsarket er ikkje lagra. Du bør lagra det før du lastar opp." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Åtvaring – Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Denne motoren støttar ikkje skript." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Rediger" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Vis" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Arbeidsark" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Fil" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Innstillingar" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Avbroten" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Finn:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Neste" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Byt ut" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Byt ut &alle" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Skil mellom store og små bokstavar" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Biletinnstillingar" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Opna" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Utskriftsstorleik" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr " pikslar" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Adresse til LaTeX-programfila" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Adresse til dvips-programfila" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDE-grensesnitt for matematiske program" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Grensesnitt" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "" + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "" + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Lagra resultat" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Fann ingen tekstredigeringskomponent for KDE.\n" +"Sjå til at KDE er rett installert." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" +msgstr[1] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Kommandoar" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Resultat" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Feil" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Tekst" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Vis oppteikna" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Vis kode" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Klarar ikkje teikna opp eps-fila. Du treng kanskje fleire pakkar." + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Klarar ikkje skriva til fila %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Feil ved lagring av fila %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Det er problem med %1-motoren, sjå til at\n" +"programmet er rett sett opp eller installer dei nødvendige pakkane.\n" +"Du kan ikkje redigera arbeidsarket." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Sideskift" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Tekst&farge …" + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "&Framhevingsfarge …" + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Skrift" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Skrift&storleik" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Halvfeit" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Kursiv" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Understreking" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Overstreking" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "&Venstrejuster" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Venstre" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "&Midtstill" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Midtstill" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "&Høgrejuster" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Høgre" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Blokkjuster" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Blokk" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "" diff --git a/po/pa/cantor.po b/po/pa/cantor.po new file mode 100644 index 0000000..9f1258e --- /dev/null +++ b/po/pa/cantor.po @@ -0,0 +1,4790 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# A S Alam , 2010, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2019-02-10 09:37-0800\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi \n" +"Language: pa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "alam.yellow@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "ਪੌਜ਼" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "ਸ਼ੁਰੂ" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "ਰੋਕੋ" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, fuzzy, kde-format +#| msgid "&Plot" +msgid "Plot" +msgstr "ਵਾਹੋ(&P)" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "ਸਮੀਕਰਨ:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "ਵਾਹੋ(&P)" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "ਗਣਨਾ(&C)" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "ਵੇਰੀਬਲ:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "ਵਾਰ: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "ਲੀਨੀਅਰ ਐਲਜਬਰਾ(&L)" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "ਕਾਲਮ" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "ਕਤਾਰਾਂ:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "ਮੈਟਰਿਕਸ:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "2D ਵਾਹੋ" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "ਵੇਰੀਬਲ" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "ਨਾਂ" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "ਘੱਟੋ-ਘੱਟ:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "ਵੱਧੋ-ਵੱਧ:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "3D ਵਾਹੋ" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1ਲਾਂ ਵੇਰੀਬਲ" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2ਜਾ ਵੇਰੀਬਲ" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "ਸਕ੍ਰਿਪਟ ਚਲਾਓ" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "ਸਮੀਕਰਨਾਂ ਹੱਲ ਕਰੋ" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "ਸਮੀਕਰਨਾਂ:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "ਵੇਰੀਬਲ:" + +#: backendchoosedialog.cpp:64 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Select the Backend" +msgstr "ਬੈਕਐਂਡ ਮੁੜ-ਚਾਲੂ" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"

      %1

      %2

      ਹੋਰ ਜਾਣਾਕਰੀ ਲਈ %3 ਵੇਖੋ" + +#: backendchoosedialog.cpp:125 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"

      %1

      %2

      ਹੋਰ ਜਾਣਾਕਰੀ ਲਈ %3 ਵੇਖੋ" + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "ਇਸ ਨੂੰ ਡਿਫਾਲਟ ਬੈਕਐਂਡ ਬਣਾਓ" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Julia script file (*.jl)" +msgstr "*.R|R ਸਕ੍ਰਿਪਟ ਫਾਇਲ" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "ਗਲਤੀ - ਕੇਨਟੋਰ" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "ਆਮ" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Variable:" +msgid "Variable Management:" +msgstr "ਵੇਰੀਬਲ:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "&Plot" +msgid "Plots" +msgstr "ਵਾਹੋ(&P)" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "&Plot" +msgid "PyPlot" +msgstr "ਵਾਹੋ(&P)" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, fuzzy, kde-format +#| msgid "Show Script Editor" +msgid "Commands to autorun" +msgstr "ਸਕ੍ਰਿਪਟ ਐਡੀਟਰ ਵੇਖੋ" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documentation" +msgstr "ਖੋਲ੍ਹਣ ਲਈ ਡੌਕੂਮੈਂਟ" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "http://docs.kde.org/stable/en/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "ਗਲਤੀ: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "" + +#: backends/lua/luaextensions.cpp:20 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Lua script file (*.lua)" +msgstr "*.R|R ਸਕ੍ਰਿਪਟ ਫਾਇਲ" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" + +#: backends/octave/octaveextensions.cpp:34 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Octave script file (*.m)" +msgstr "*.R|R ਸਕ੍ਰਿਪਟ ਫਾਇਲ" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "ਸੰਟੈਕਸਟ ਗਲਤੀ" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "ਕੇਨਟੋਰ" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Python script file (*.py)" +msgstr "*.R|R ਸਕ੍ਰਿਪਟ ਫਾਇਲ" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, fuzzy, kde-format +#| msgid "Could not start the server." +msgid "Failed to start Cantor python server." +msgstr "ਸਰਵਰ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "&Plot" +msgid "plot.ly" +msgstr "ਵਾਹੋ(&P)" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Functions" +msgstr "ਸਮੀਕਰਨਾਂ:" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "ਟਾਈਟਲ" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "ਸਮੀਕਰਨ" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "ਜੋੜੋ" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "ਹਟਾਓ" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, fuzzy, kde-format +#| msgid "Variables:" +msgid "Clear List" +msgstr "ਵੇਰੀਬਲ:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, fuzzy, kde-format +#| msgid "Variable" +msgid "X variable" +msgstr "ਵੇਰੀਬਲ" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "ਸਟਾਈਲ" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "ਲਾਈਨਾਂ" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "ਬਿੰਦੂ" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "ਬਿੰਦੂ ਅਤੇ ਲਾਈਨਾਂ" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "ਡੱਬੇ" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "ਆਇਤ ਗਰਾਫ" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "ਬੇਜ਼ੀਅਰ" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "ਚੋਣਾਂ" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "ਹੇਠਾਂ" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "ਰੰਗ ਵਰਤੋਂ" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, fuzzy, kde-format +#| msgid "Expression:" +msgid "expression" +msgstr "ਸਮੀਕਰਨ:" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, fuzzy, kde-format +#| msgid "Variable:" +msgid "value" +msgstr "ਵੇਰੀਬਲ:" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "number" +msgstr "ਲਾਈਨ ਨੰਬਰ" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, fuzzy, kde-format +#| msgid "Defaults:" +msgid "default: %1" +msgstr "ਡਿਫਾਲਟ:" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, fuzzy, kde-format +#| msgid "2nd Variable" +msgid "Load variables from a file" +msgstr "2ਜਾ ਵੇਰੀਬਲ" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, fuzzy, kde-format +#| msgid "Expression:" +msgid "Precision" +msgstr "ਸਮੀਕਰਨ:" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, fuzzy, kde-format +#| msgid "&Plot" +msgid "Plotting" +msgstr "ਵਾਹੋ(&P)" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show grid:" +msgstr "ਕੋਡ ਵੇਖੋ" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "2nd Variable" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "2ਜਾ ਵੇਰੀਬਲ" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Add local documentation" +msgstr "ਖੋਲ੍ਹਣ ਲਈ ਡੌਕੂਮੈਂਟ" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Document to open" +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "ਖੋਲ੍ਹਣ ਲਈ ਡੌਕੂਮੈਂਟ" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, fuzzy, kde-format +#| msgid "Name" +msgctxt "@title:column" +msgid "Name" +msgstr "ਨਾਂ" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, fuzzy, kde-format +#| msgid "Add" +msgctxt "@action:button" +msgid "Add" +msgstr "ਜੋੜੋ" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "ਬੈਕਐਂਡ ਮੁੜ-ਚਾਲੂ" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "ਨਾਂ" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "%1 ਫਾਇਲ ਖੋਲ੍ਹਣ ਦੌਰਾਨ ਗਲਤੀ" + +#: backends/R/rextensions.cpp:22 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "R script file (*.R)" +msgstr "*.R|R ਸਕ੍ਰਿਪਟ ਫਾਇਲ" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "%1 ਦਾ ਨਤੀਜਾ" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" + +#: backends/sage/sageextensions.cpp:32 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "*.R|R ਸਕ੍ਰਿਪਟ ਫਾਇਲ" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Could not start the server." +msgid "Path to the Scilab executable" +msgstr "ਸਰਵਰ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: backends/scilab/scilabextensions.cpp:23 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "*.R|R ਸਕ੍ਰਿਪਟ ਫਾਇਲ" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "ਫਾਇਲ ਖੋਲ੍ਹੋ" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "Download Example Worksheets" +msgid "Download Examples" +msgstr "ਉਦਾਹਰਨ ਵਰਕਸ਼ੀਟ ਡਾਊਨਲੋਡ ਕਰੋ" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "ਉਦਾਹਰਨ ਖੋਲ੍ਹੋ(&O)" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +msgstr[1] "" + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "ਗਲਤੀ" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "ਬੈਕਐਂਡ %1 ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "ਸ਼ੈਸ਼ਨ %1" + +#: cantor.cpp:386 +#, fuzzy, kde-format +#| msgid "Could not start the server." +msgid "Failed to find the Cantor Part with error %1" +msgstr "ਸਰਵਰ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "ਗਿਣਤੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "ਤਿਆਰ" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Close Cantor" +msgstr "ਕੇਨਟੋਰ" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "ਪਰੋਜੈਕਟ ਸੰਭਾਲੋ" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "&Plot" +msgid "Formatting" +msgstr "ਵਾਹੋ(&P)" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "ਬੈਕਐਂਡ, ਜੋ ਡਿਫਾਲਟ ਵਰਤਿਆ ਜਾਵੇਗਾ" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "ਪੂਰਨਾ" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "ਲਾਈਨ ਨੰਬਰ" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Pause Animation" +msgid "Animations" +msgstr "ਐਨੀਮੇਸ਼ਨ ਵਿਰਾਮ" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "ਬੈਕਐਂਡ ਮੁੜ-ਚਾਲੂ" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "" + +#: cantor_part.cpp:278 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Insert Markdown Entry" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: cantor_part.cpp:285 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Insert LaTeX Entry" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Expand All Results" +msgstr "ਨਤੀਜਾ" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Remove All Results" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "ਸਕ੍ਰਿਪਟ ਐਡੀਟਰ ਵੇਖੋ" + +#: cantor_part.cpp:337 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show Completion" +msgstr "ਕੋਡ ਵੇਖੋ" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "" + +#: cantor_part.cpp:406 +#, fuzzy, kde-format +#| msgid "(C) 2009 Alexander Rieder" +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, fuzzy, kde-format +#| msgid "*.cws|Cantor Worksheet" +msgid "Cantor Worksheet (*.cws)" +msgstr "*.cws|ਕੇਨਟੋਰ ਵਰਕਸ਼ੀਟ" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, fuzzy, kde-format +#| msgid "Save" +msgid "Save as" +msgstr "ਸੰਭਾਲੋ" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "ਸੰਭਾਲੋ" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Restart %1?" +msgstr "ਬੈਕਐਂਡ ਮੁੜ-ਚਾਲੂ" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "ਸ਼ੈਸ਼ਨ ਗਲਤੀ: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "ਸਵਾਲ - ਕੇਨਟੋਰ" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "ਚੇਤਾਵਨੀ - ਕੇਨਟੋਰ" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "ਵੇਖੋ(&V)" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "ਵਰਕਸ਼ੀਟ(&W)" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "ਸੈਟਿੰਗ(&S)" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "ਫਾਇਲ(&F)" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, fuzzy, kde-format +#| msgid "New" +msgid "&New" +msgstr "ਨਵਾਂ" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "ਸੈਟਿੰਗ(&S)" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +#| msgid "Defaults:" +msgid "Default" +msgstr "ਡਿਫਾਲਟ:" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Show Results" +msgstr "ਨਤੀਜਾ" + +#: commandentry.cpp:338 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Hide Results" +msgstr "ਨਤੀਜਾ" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Help" +msgstr "%1 ਮਦਦ ਵੇਖੋ" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "ਦਖ਼ਲ ਦਿੱਤਾ" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Section" +msgstr "ਸਮੀਕਰਨਾਂ:" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Subsection" +msgstr "ਸਮੀਕਰਨਾਂ:" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgid "Use Colors" +msgid "Line Color" +msgstr "ਰੰਗ ਵਰਤੋਂ" + +#: horizontalruleentry.cpp:351 +#, fuzzy, kde-format +#| msgid "Style" +msgid "Line Style" +msgstr "ਸਟਾਈਲ" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, fuzzy, kde-format +#| msgid "Cannot write file %1." +msgid "Cannot load image %1" +msgstr "ਫਾਇਲ %1 ਲਿਖੀ ਨਹੀਂ ਜਾ ਸਕਦੀ।" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Images (%1)" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Image Settings" +msgstr "ਸੈਟਿੰਗ(&S)" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "ਖੋਲ੍ਹੋ" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "&Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "ਸੈਟਿੰਗ(&S)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, fuzzy, kde-format +#| msgid "x" +msgid "px" +msgstr "x" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "" + +#: latexentry.cpp:61 textentry.cpp:111 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show LaTeX code" +msgstr "ਕੋਡ ਵੇਖੋ" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "" + +#: lib/defaultvariablemodel.cpp:70 +#, fuzzy, kde-format +#| msgid "Variable:" +msgctxt "@title:column" +msgid "Value" +msgstr "ਵੇਰੀਬਲ:" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "Variable" +msgid "" +msgstr "ਵੇਰੀਬਲ" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "ਗਣਿਤ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ KDE ਫਰੰਟਐਂਡ" + +#: main.cpp:74 +#, fuzzy, kde-format +#| msgid "(C) 2009 Alexander Rieder" +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "" + +#: main.cpp:78 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "ਬੈਕਐਂਡ ਮੁੜ-ਚਾਲੂ" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, fuzzy, kde-format +#| msgid "Alexander Rieder" +msgid "Alexander Semke" +msgstr "Alexander Rieder" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "" + +#: main.cpp:83 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Octave backend" +msgstr "ਬੈਕਐਂਡ ਮੁੜ-ਚਾਲੂ" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "" + +#: main.cpp:84 +#, fuzzy, kde-format +#| msgid "Interrupted" +msgid "Interface" +msgstr "ਦਖ਼ਲ ਦਿੱਤਾ" + +#: main.cpp:86 main.cpp:87 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor icon" +msgstr "ਕੇਨਟੋਰ" + +#: main.cpp:92 +#, fuzzy, kde-format +#| msgid "Use this backend" +msgid "Use backend " +msgstr "ਇਹ ਬੈਕਐਂਡ ਵਰਤੋਂ" + +#: main.cpp:95 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documents to open." +msgstr "ਖੋਲ੍ਹਣ ਲਈ ਡੌਕੂਮੈਂਟ" + +#: main.cpp:130 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1" +msgstr "%1 ਫਾਇਲ ਖੋਲ੍ਹਣ ਦੌਰਾਨ ਗਲਤੀ" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, fuzzy, kde-format +#| msgid "Syntax Error" +msgid "Cantor Math Error" +msgstr "ਸੰਟੈਕਸਟ ਗਲਤੀ" + +#: markdownentry.cpp:796 +#, fuzzy, kde-format +#| msgid "Could not start the server." +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "ਸਰਵਰ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor files" +msgstr "ਕੇਨਟੋਰ" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "Open file" +msgid "Jupyter files" +msgstr "ਫਾਇਲ ਖੋਲ੍ਹੋ" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, fuzzy, kde-format +#| msgid "Name" +msgid "Name:" +msgstr "ਨਾਂ" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, fuzzy, kde-format +#| msgid "Variable:" +msgid "Value:" +msgstr "ਵੇਰੀਬਲ:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "2nd Variable" +msgid "Add New Variable" +msgstr "2ਜਾ ਵੇਰੀਬਲ" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, fuzzy, kde-format +#| msgid "2nd Variable" +msgid "Load Variables" +msgstr "2ਜਾ ਵੇਰੀਬਲ" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "1st Variable" +msgid "Save Variables" +msgstr "1ਲਾਂ ਵੇਰੀਬਲ" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "1st Variable" +msgid "Remove Variables" +msgstr "1ਲਾਂ ਵੇਰੀਬਲ" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +#| msgid "2nd Variable" +msgid "Load file" +msgstr "2ਜਾ ਵੇਰੀਬਲ" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: resultitem.cpp:60 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Remove result" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:139 +#, fuzzy, kde-format +#| msgid "Show Script Editor" +msgid "Script Editor" +msgstr "ਸਕ੍ਰਿਪਟ ਐਡੀਟਰ ਵੇਖੋ" + +#: scripteditor/scripteditorwidget.cpp:142 +#, fuzzy, kde-format +#| msgid "Show Script Editor" +msgid "Script Editor - %1" +msgstr "ਸਕ੍ਰਿਪਟ ਐਡੀਟਰ ਵੇਖੋ" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" +msgstr[1] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Results" +msgstr "ਨਤੀਜਾ" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +#| msgid "Error" +msgid "Errors" +msgstr "ਗਲਤੀ" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "ਸ਼ੁਰੂ" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, fuzzy, kde-format +#| msgid "Default Backend" +msgid "Default Backend:" +msgstr "ਡਿਫਾਲਟ ਬੈਕਐਂਡ" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "ਵਰਕਸ਼ੀਟ(&W)" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "ਲਾਈਨ ਨੰਬਰ" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "ਲਾਈਨ ਨੰਬਰ" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "ਸਮੀਕਰਨਾਂ:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Markdown:" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Convert to Text Entry" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Copy result" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "ਰੈਂਡਰ ਕੀਤੇ ਵੇਖੋ" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "ਕੋਡ ਵੇਖੋ" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show HTML Code" +msgstr "ਕੋਡ ਵੇਖੋ" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Html" +msgstr "%1 ਮਦਦ ਵੇਖੋ" + +#: textresultitem.cpp:90 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show HTML" +msgstr "%1 ਮਦਦ ਵੇਖੋ" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "ਫਾਇਲ %1 ਲਿਖੀ ਨਹੀਂ ਜਾ ਸਕਦੀ।" + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, fuzzy, kde-format +#| msgid "Cannot write file %1." +msgid "Cannot write file." +msgstr "ਫਾਇਲ %1 ਲਿਖੀ ਨਹੀਂ ਜਾ ਸਕਦੀ।" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "ਫਾਇਲ %1 ਸੰਭਾਲਣ ਦੌਰਾਨ ਗਲਤੀ" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "" + +#: worksheet.cpp:1327 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1." +msgstr "%1 ਫਾਇਲ ਖੋਲ੍ਹਣ ਦੌਰਾਨ ਗਲਤੀ" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +#| msgid "Open file" +msgid "Open File" +msgstr "ਫਾਇਲ ਖੋਲ੍ਹੋ" + +#: worksheet.cpp:1350 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the selected file for reading." +msgstr "%1 ਫਾਇਲ ਖੋਲ੍ਹਣ ਦੌਰਾਨ ਗਲਤੀ" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Convert To" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Markdown" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Image" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, fuzzy, kde-format +#| msgid "Points and Lines" +msgid "Horizontal Line" +msgstr "ਬਿੰਦੂ ਅਤੇ ਲਾਈਨਾਂ" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Hierarchy Entry" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Insert After" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: worksheet.cpp:1856 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Insert Before" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Move Entries Down" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Remove Entries" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Remove Command Entry Results" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Show Script Editor" +msgid "Add Command Entry To Execution" +msgstr "ਸਕ੍ਰਿਪਟ ਐਡੀਟਰ ਵੇਖੋ" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "" + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "" + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "" + +#: worksheet.cpp:2111 +#, fuzzy, kde-format +#| msgid "Inline" +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "ਇਨ-ਲਾਈਨ" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Remove all results" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +#| msgid "Ready" +msgid "Red" +msgstr "ਤਿਆਰ" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Remove Entry" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#: worksheetentry.cpp:850 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Drag Entry" +msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#, fuzzy +#~| msgid "&Worksheet" +#~ msgid "Animate Worksheet" +#~ msgstr "ਵਰਕਸ਼ੀਟ(&W)" + +#, fuzzy +#~| msgid "Defaults:" +#~ msgid "Defaults" +#~ msgstr "ਡਿਫਾਲਟ:" + +#, fuzzy +#~| msgid "Start Animation" +#~ msgid "Enable Worksheet Animations" +#~ msgstr "ਐਨੀਮੇਸ਼ਨ ਸ਼ੁਰੂ" + +#, fuzzy +#~| msgid "&Plot" +#~ msgid "Plot.ly" +#~ msgstr "ਵਾਹੋ(&P)" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      ਕੇਨਟੋਰ

      ਗਣਿਤ ਸਿੱਖਣ ਦਾ KDE ਢੰਗ" + +#, fuzzy +#~| msgid "Document to open" +#~ msgid "Documentation:" +#~ msgstr "ਖੋਲ੍ਹਣ ਲਈ ਡੌਕੂਮੈਂਟ" + +#~ msgid "Show %1 Help" +#~ msgstr "%1 ਮਦਦ ਵੇਖੋ" + +#, fuzzy +#~| msgid "Variables:" +#~ msgid "Clear Variables" +#~ msgstr "ਵੇਰੀਬਲ:" + +#, fuzzy +#~| msgid "Question - Cantor" +#~ msgid "Confirmation - Cantor" +#~ msgstr "ਸਵਾਲ - ਕੇਨਟੋਰ" + +#, fuzzy +#~| msgid "Save result" +#~ msgid "LaTeX Entry" +#~ msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#, fuzzy +#~| msgid "Save result" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#, fuzzy +#~| msgid "Save result" +#~ msgid "Insert Latex Entry" +#~ msgstr "ਨਤੀਜਾ ਸੰਭਾਲੋ" + +#, fuzzy +#~| msgid "Could not start the server." +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "ਸਰਵਰ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#~ msgid "Unnamed" +#~ msgstr "ਬਿਨ-ਨਾਂ" + +#, fuzzy +#~| msgctxt "" +#~| "the url to the documentation of R, please check if there is a translated " +#~| "version and use the correct url" +#~| msgid "http://wiki.r-project.org/rwiki/doku.php?id=rdoc:rdoc" +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://wiki.r-project.org/rwiki/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "ਵਰਤਣ ਲਈ ਬੈਕਐਂਡ ਚੁਣੋ:" + +#~ msgid "Publish Worksheet" +#~ msgstr "ਵਰਕਸ਼ੀਟ ਪਬਲਿਸ਼ ਕਰੋ" + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|ਕੇਨਟੋਰ ਵਰਕਸ਼ੀਟ" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#, fuzzy +#~| msgid "2nd Variable" +#~ msgid "Usage: loadVariables file" +#~ msgstr "2ਜਾ ਵੇਰੀਬਲ" + +#, fuzzy +#~| msgid "2nd Variable" +#~ msgid "Loading failed." +#~ msgstr "2ਜਾ ਵੇਰੀਬਲ" + +#, fuzzy +#~| msgid "(C) 2009 Alexander Rieder" +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#~ msgid "Restart Animation" +#~ msgstr "ਐਨੀਮੇਸ਼ਨ ਮੁੜ-ਚਾਲੂ ਕਰੋ" + +#~ msgid "Other" +#~ msgstr "ਹੋਰ" + +#~ msgid "And %1 more..." +#~ msgstr "ਅਤੇ %1 ਹੋਰ..." + +#~ msgid "Main Toolbar" +#~ msgstr "ਮੁੱਖ ਟੂਲਬਾਰ" + +#~ msgid "Popup" +#~ msgstr "ਪੋਪਅੱਪ" + +#~ msgid "Help" +#~ msgstr "ਮੱਦਦ" + +#~ msgid "Show Help Panel" +#~ msgstr "ਮੱਦਦ ਪੈਨਲ ਵੇਖੋ" diff --git a/po/pl/cantor.po b/po/pl/cantor.po new file mode 100644 index 0000000..6b97415 --- /dev/null +++ b/po/pl/cantor.po @@ -0,0 +1,5305 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Maciej Wikło , 2009. +# Artur Chłond , 2010. +# Marta Rybczyńska , 2011. +# Łukasz Wojniłowicz , 2011, 2012, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-11-26 10:30+0100\n" +"Last-Translator: Łukasz Wojniłowicz \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 22.08.2\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Maciej Wikło, Łukasz Wojniłowicz" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "maciej.wiklo@wp.pl, lukasz.wojnilowicz@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Wstrzymaj" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Uruchom" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Zatrzymaj" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Zapisz wynik animacji" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Animacje (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Rozbudowane rysowanie wykresów" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Rysuj wykres" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Wyrażenie:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Dodatkowe opcje:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Wykres" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Aktywna opcja" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "Obli&cz" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Różniczkuj" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Zmienna:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Czasy: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "Pakiet" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Zaimportuj pakiet" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Pakiet:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Całkuj" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Dolna granica:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Górna granica:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "całka określona" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "Algebra &liniowa" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Utwórz macierz" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Kolumny:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Wiersze:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Oblicz wartości macierzy" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Macierz:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Oblicz wektory macierzy" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Odwróć macierz" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Wykres 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Zmienna" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Nazwa" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimum:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maksimum:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Wykres 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1-sza zmienna" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2-ga zmienna" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Wykonaj skrypt" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Rozwiąż równania" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Równania:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Zmienne:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Wybór silnika" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Zalecana wersja: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Po szczegółów zajrzyj na %2." + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Nie wszystkie wymagania zostały spełnione: " +"%1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Zapamiętaj ten silnik jako domyślny" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia jest wysokopoziomowym, wysokowydajnym językiem programowania " +"dla obliczeń technicznych ze składnią podobną do innych języków. Dostarcza " +"zaawansowany kompilator, rozproszone równoległe wykonywanie, dokładność " +"numeryczną i szeroką bibliotekę funkcji matematycznych." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"Ścieżka do Juli podana w ustawieniach aplikacji musi wskazywać bezpośrednio " +"na plik wykonywalny. Dowiązania symboliczne nie są dopuszczalne. Należy " +"podać poprawną ścieżkę w ustawieniach aplikacji i spróbować ponownie." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Cantor nie mógł ustalić wersji Julii dla %1. Podaj poprawną ścieżkę do pliku " +"wykonywalnego Julii (dowiązania symboliczne są niedozwolone) i spróbuj " +"ponownie." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Próbujesz użyć Cantora z Julią v%1.%2.%3. Ta wersja Cantora została " +"zbudowana z obsługą Julii v%4.%5.%6. Wskaż taką właśnie wersję Julii lub " +"zbuduj Cantora ponownie przy użyciu wersji %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Ścieżka do pliku natywnego REPL Julii" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Włącz zarządzanie zmiennymi" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Zintegruj wykresy do arkusza pracy" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Pakiet graficzny dla pomocnika wykresów" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Wybacz, lecz Gadfly nie obsługuje rysowania wykresów 3d" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Plik skryptu Julia (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Błąd - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"Nie można otworzyć sesji Julii ze względu na jej wewnętrzny błąd z " +"brakującym plikiem - \"%1\"" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" +"Nie można otworzyć sesji Julii ze względu na jej nieznany wewnętrzny błąd" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Proces Julia został zatrzymany." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Nie udało się uruchomić procesu Julii." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "Nie udało się porozumieć z procesem Julii z nieznanych powodów." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Obecnie dla Julii dostępny jest tylko szkielet GR (https://gr-framework." +"org/), do celów obrazowania aplikacji. Ten pakiet trzeba wgrać najpierw. Aby " +"to zrobić wykonaj Pkg.install(\"GR\") w Cantorze lub w REPL Julii. Wiedz, że " +"działanie to może zająć trochę czasu i lepiej wykonać je przy użyciu REPL " +"Julli, który jest w stanie pokazywać postęp wgrywania pakietu." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Ogólne" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Plik wykonywalny:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Integracja wykresów:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Jeżeli włączone, to wykresy będą pokazywane wewnątrz arkuszy pracy. W " +"pozostałych przypadkach będą pokazywane w osobnym oknie." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Włączone" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Zarządzanie zmiennymi:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Monitoruj tworzenie i usuwanie zmiennych i pokazuj je na pasku zmiennych." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Wewnętrzny format wykresów:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" +"Wykresy w wewnętrznym formacie, jeśli osadzanie wykresów jest włączone." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Pakiet graficzny do użytku w pomocniku wykresów" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Pakiet dla pomocnika wykresów" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Wykresy" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Samouruchamiane" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Polecenia do wykonania po uruchomieniu" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Dokumentacja" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Lista skryptów wczytywanych na początku sesji" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Błąd: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Są to polecenie początkowe, uruchamiane na początku każdego nowego arkusza " +"pracy. Są użyteczne do wczytywania nowych modułów, zmiany środowiska, itp." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua jest szybkim i lekkim językiem skryptowym, z prostą proceduralną " +"składnią. Istnieje kilka bibliotek w Lua nakierowanych na matematykę i naukę." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Ścieżka do polecenia luajit" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Plik skryptu Lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Ścieżka do luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" +"

      System pomocy Maksimy

      Funkcja apropos

      szuka nazw " +"Maksimy, które zawierają w sobie daną nazwę w dowolnym miejscu; nazwa " +"musi być ciągiem znaków lub symbolem. Stąd, apropos(exp) zwraca listę " +"wszystkich flag i funkcji, które mają słowo exp jako część swojej nazwy, " +"takie jak np. expand, exp oraz exponentialize. Tak " +"więc, jeśli zapamiętasz tylko część nazwy polecenia lub zmiennej Maksimy, to " +"możesz użyć tego polecenia do znalezienia pozostałej części nazwy. Podobnie " +"możesz napisać apropos(tr_) aby poszukać listy wielu przełączników " +"związanych z tłumaczeniem, z których większość zaczyna się od tr_." +"

      apropos(\"\") zwraca listę wszystkich nazw Maksimy." +"

      apropos zwraca pustą listę [], jeśli nazwa nie została " +"znaleziona.

      Funkcja describe

      describe(ciąg_znaków) jest równoważna describe(ciąg_znaków, dokładnie)." +"

      describe(ciąg_znaków, dokładnie) znajduje rzecz o tytule " +"równym (bez rozróżniania wielkości liter) ciąg_znaków, jeśli taka istnieje." +"

      describe(ciąg_znaków, niedokładnie) znajduje wszystkie " +"udokumentowane rzeczy, które zawierają ciąg_znaków w swoim tytule. Jeśli " +"istnieje więcej niż jedna taka rzecz, to Maksima zapyta użytkownika o " +"wybranie jednej lub wielu rzeczy do wyświetlenia.

      ? foo (z " +"odstępem pomiędzy ? oraz foo) jest równoważne describe(\"foo" +"\", dokładnie) oraz ?? foo jest równoważne describe(\"foo\", " +"niedokładnie).

      describe(, niedokładnie) daje listę " +"wszystkich tematów udokumentowanych w podręczniku z sieci." +"

      describe umieszcza swój argument w cudzysłowach. describe zwraca true jeśli dana dokumentacja nie została znaleziona, w " +"innym przypadku false.

      Funkcja exampleexample(temat) wyświetla przykłady na dany temat, co jest " +"symbolem lub ciągiem znaków. Aby uzyskać przykłady dla operatorów takich jak " +"if, do lub lambda argument musi być ciągiem znaków, np. " +"example(\"do\"). example nie zważa na wielkość liter. " +"Większość tematów jest nazwami funkcji.

      example() zwraca listę " +"wszystkich rozpoznanych tematów.

      Nazwa pliku zawierającego przykłady " +"jest określona zmienną globalną manual_demo, która domyślnie jest " +"równa \"manual.demo\".

      example umieszcza swój argument " +"w cudzysłowach. example zwraca done chyba, że nie znaleziono " +"żadnych przykładów lub nie ma żadnego argumentu, więc w tym przypadku " +"example zwraca listę wszystkich rozpoznanych tematów." + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima jest systemem do manipulacji wyrażeniami symbolicznymi i " +"numerycznymi, włącznie z różniczkowaniem, całkowaniem, seriami Taylora, " +"transformatami Laplace-a, podstawowymi równaniami różniczkowymi, systemami " +"równań liniowych, wielomianami, listami, wektorami, matrycami itp. Maxima " +"zapewnia precyzyjne numeryczne wyniki przy użyciu dokładnych ułamków, liczb " +"całkowitych i zmiennych. Maxima potrafi również sporządzać wykresy funkcji i " +"danych w dwóch oraz trzech wymiarach. " + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Ścieżka do pliku wykonywalnego Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Błąd: Zbyt wiele */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Błąd: Zbyt wiele /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Błąd: oczekiwano \" przed ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Oczekiwanie na narysowanie wykresu" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Plik wsadowy Maximy (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Uruchomienie Maximy nie powiodło się" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Wystąpiła awaria Maximy. ponownie uruchamianie..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Wystąpiła dwukrotna awaria Maximy w krótkim czasie. Zatrzymywanie " +"uruchamiania" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave jest wysokopoziomowym językiem, przeznaczonym głównie do " +"obliczeń numerycznych.
      Zapewnia wygodny interfejs wiersza poleceń dla " +"numerycznego rozwiązywania liniowych i nieliniowych problemów i do " +"wykonywania innych numerycznych eksperymentów przy wykorzystaniu języka, " +"który jest w dużej części zgodny z Matlabem." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Plik skryptu Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Błąd składni" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Nie udała się próba integracji wykresów." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "Integracja wykresów zostanie wyłączona." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"Integracja wykresów nie działa, bo Cantor odkrył, że Octave nie może tworzyć " +"wykresów, bo nie ma on do tego graficznych silników; zostało to " +"wywnioskowane na podstawie pustego wyniku z funkcji " +"available_graphics_toolkits(). Chyba musisz dograć dodatkowe pakiety w " +"systemie, takie jak gnuplot, fltk lub qt, aby móc rysować wykresy." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python jest nadzwyczaj sprawnym językiem dynamicznego programowania, " +"który jest używany do różnych zastosowań. Istnieje kilka pakietów Pythona do " +"naukowego programowania." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# Wybacz, lecz Bokeh nie obsługuje rysowania wykresów 3d" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Plik skryptu Python (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Serwer Pythona dla Cantora przestał działać." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Nie udało się uruchomić serwera pythona dla Cantora." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"Nie udało się połączyć z serwerem pythona dla Cantora z nieznanych powodów." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Aby używać zintegrowanej grafiki z pakietu Matplotlib, musisz mieć wgrany " +"pakiet Pythona o nazwie \"matplotlib\"." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Aby używać zintegrowanej grafiki z Plot.ly musisz mieć wgrany pakiet python " +"\"plotly\", a także odpowiedni plik wykonywalny \"orca\" zgodny z tym " +"pakietem. Zajrzyj na stronę \"Eksportu statycznych obrazów\" w dokumentacji " +"Plot.ly po szczegóły." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - okno dialogowe wykresu" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funkcje" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Tytuł" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Wyrażenie" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Dodaj" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Usuń" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Wyczyść listę" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Zmienna X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Wygląd" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Linie" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Punkty" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Punkty i linie" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Kwadraty" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogram" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Stopnie" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Świeczniki" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Kropki" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Wygładzanie" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Brak" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monotonicznie" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Naturalne krzywe sklejane sześcienne" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (monotoniczna)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Zakres funkcji" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Zakres X" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr " " + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "&Próbkowanie" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Ro&zmiar kroku" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Opcje" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Tytuł wykresu" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Etykieta osi X" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Etykieta osi y" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Pozycja legendy" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Ukryj legendę" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Lewy górny narożnik" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Prawy górny narożnik" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Lewy dolny narożnik" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Prawy dolny narożnik" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Poniżej" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Na zewnątrz" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Wyświetl siatkę" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Wyświetl pełne obramowanie" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Użyj kolorów" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Wyświetl wplecione" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logarytmiczna skala x" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logarytmiczna skala y" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Opcje pliku" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Zapisz wykres do pliku" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Typ pliku" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Wykryj z nazwy pliku" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! nie jest zwykłą repliką oprogramowania najtańszego z " +"możliwych kalkulatorów. Qalculate! mierzy, aby w pełni wykorzystać " +"najlepszego interfejsu, mocy i elastyczności nowoczesnych komputerów. " +"Środkiem uwagi w Qalculate! jest wpisywanie wyrażeń. Zamiast osobnego " +"wpisywania każdej liczby w wyrażeniu matematycznym, możesz bezpośrednio " +"zapisać całe wyrażenie i później je modyfikować. Interpretacja wyrażeń jest " +"elastyczna i toleruje pomyłki, a gdy mimo to popełnisz błąd, to Qalculate! " +"ci o tym powie. Nie w pełni rozwiązywalne wyrażenie nie są jednakże błędami. " +"Qalculate! uprości tak dalece jak tylko może i da odpowiedź w postaci " +"wyrażenia. W dodatku do liczbowych i arytmetycznych operatorów, wyrażenie " +"może zawierać dowolną kombinację zmiennych, jednostek i funkcji." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Jeżeli i jak będą automatycznie przekształcane jednostki. Jeżeli prawda, to " +"przekształć do najlepiej odpowiednich jednostek SI (najmniejsza liczba " +"jednostek)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Domyślna jednostka kąta dla funkcji trygonometrycznych." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Podstawa przetworzonych i przeliczonych liczb." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Czy wynik przeliczenia zostanie uproszczony lub sfaktoryzowany." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Czy racjonalne liczby będą wyświetlane jako dziesiętne, jako ułamek, czy coś " +"pomiędzy." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Pokaż, że seria cyfr lub liczb ciągnie się w nieskończoność przy użyciu " +"trzech kropek, zamiast zaokrąglania ich (np. 2/3 wyświetla się jako " +"0.666666... zamiast 0.666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Użyj wszystkich dziesiętnych przedrostków SI. Jeżeli false, przedrostki, " +"które nie są wielokrotnością tysiąca (centi, deci, deca, hecto) nie zostaną " +"użyte automatycznie." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Jeżeli true, to zamiast podzielenia zostaną użyte ujemne wykładnik (np. 5/" +"x^2 staje się 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Wyświetlacz numeryczny." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Jeżeli true, to wykresy zostaną wyświetlone wewnątrz arkusza pracy. Jeżeli " +"nie, to ukażą się w osobnym oknie." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Określa czy mają zostać użyte kolory na wykresach." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Określa czy ma być narysowana siatka." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Określa czy wokół wykresów mają być rysowane pełne obramowania." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Szerokość linii, w pikselach." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Liczba kroków interpolacji używanych na wykresach." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Tryb wygładzania na wykresach." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Wygląd wykresów." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Pozycja legendy na wykresach." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate zgłasza, że nie może wyświetlać. Czy zainstalowano gnuplot?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "brakuje %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 musi być liczbą." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 musi być liczbą całkowitą." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 musi być zmienną typu boolean." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "nieprawidłowa opcja dla %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "znaleziono wiele wyrażeń w jednym poleceniu rysowania (%1 i %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "BŁĄD" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "OSTRZEŻENIE" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Brak funkcji, zmiennej lub jednostki o podanej nazwie." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funkcja: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Rysowanie interfejsu" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "Rysuje jedną lub więcej funkcji po kolei lub w osobnym oknie." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "wyrażenie" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "opcja" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "wartość" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "l. całkowita" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "boolean" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "liczba" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "domyślne: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Nazwa funkcji" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Etykieta tytułu" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "etykieta osi x" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "etykieta osi y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Obraz do zapisania wykresu. Jeżeli puste, to pokaże wykres w oknie na " +"ekranie. Jeżeli inline=true to obraz zostaje pokazany mimo to." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "Typ obrazu do zapisu. Jeden z auto, png, ps, eps, latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "Ustaw na true dla kolorowych wykresów, false dla monochromatycznych." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Minimalna wartość osi x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Maksymalna wartość osi x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Jeżeli ma być użyta skala logarytmiczna dla osi x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Jeżeli ma być użyta skala logarytmiczna dla osi y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Podstawa logarytmu dla osi x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Podstawa logarytmu dla osi y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Jeżeli ma być pokazana siatka na wykresie." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Jeżeli wykres ma być otoczony przez obramowania ze wszystkich stron (nie " +"tylko osie)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Szerokość linii." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Gdzie ma być umieszczona legenda wykresu. Jeden z nigdzie, górny_lewy, " +"górny_prawy, dolny_lewy, dolny_prawy, pod, na_zewnątrz" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "Wygładzanie rysunku. Jedno z brak, unique, csplines, bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Wygląd wykresu. Jedno z linie, punkty, punkty_linie, kwadraty, histogram, " +"stopnie, świeczniki, kropki" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Użyj skali na drugiej osi x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Użyj skali na drugiej osi y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Jeżeli plot ma być narysowany wpleciony zamiast w nowym oknie." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" +"Odległość pomiędzy dwoma punktami interpolacyjnymi. Zobacz również steps." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Liczba punktów interpolacji. Zobacz również step." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Nazwa zmiennej x. Musi to być nieznana zmienna." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Zapisz zmienne do pliku" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Zapisz wszystkie obecnie zdefiniowane zmienne do pliku. Mogą one być " +"wczytane ponownie przy użyciu %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "plik" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "plik: plik, do którego zapisać" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Wczytaj zmienne z pliku" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Wczytaj zmienne z pliku, który został wcześniej utworzony przez %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "plik: plik do wczytania" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Podstawa systemu liczbowego:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Format ułamków:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Dziesiętny" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Dokładny" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Ułamkowy" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Mieszany" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Wyświetlacz numeryczny:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Prosty" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Naukowy" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Precyzyjny" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Wskaż nieskończone serie:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Użyj wszystkich przedrostków SI:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Użyj ujemnych wykładników:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Przeliczanie" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Przekształć do najlepszych jednostek SI:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radiany" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Stopnie" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradiany" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Tryb struktury:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Uprość" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Faktoryzuj" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Jednostka kątowa:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Rysowanie" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Wyświetl wykresy wplecione:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Pokaż pełne obramowania:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Szerokość linii:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Próbkowanie:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Tryb wygładzania:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Naturalne krzywe sklejane sześcienne" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Kroki" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Położenie legendy:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Kolorowe wykresy:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Pokaż siatkę:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Wygląd wykresu:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Zmień wpis" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Dodaj nowy wpis" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Nazwa nie może być pusta." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Dodaj lokalną dokumentację" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Pobierz nową dokumentację" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Pobierz dodatkową dokumentację:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Nieprawidłowy skompresowany plik pomocy Qt." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Zaimportowano już dokumentację" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Zmień" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Usuń" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Usuń, używając GHNS" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Wgraj dodatkowe pliki dokumentacji" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Nazwa" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Ścieżka" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Dodaj" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Ikona:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Wybierz ikonę" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Nazwa:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Wpisz nazwę" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Wybierz nazwę..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Ścieżka:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Wybierz plik Pomocy Qt..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Wybierz plik Pomocy Qt..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" +"

      System pomocy R': help() oraz ?:


      Funkcja " +"help() oraz operator pomocy ? w R dają dostęp do stron " +"dokumentacji dla funkcji R, zestawów danych i innych obiektów, zarówno dla " +"pakietów ze standardowej dystrybucji R jak i od niezależnych współtwórców." +"

      To access documentation for the standard lm funkcja (modelu " +"linowego), na przykład, wpisz polecenie help(lm) or " +"help(\"lm\"), lub ?lm or ?\"lm\" (tj., cudzysłowy są " +"dobrowolne).

      Aby uzyskać pomoc do funkcji w pakiecie, który nie jest " +"obecnie wczytany, wpisz, poza nazwą pakietu: Na przykład, aby uzyskać " +"dokumentację dla rlm() funkcja (modelu linowego robust) w pakiecie " +"MASS, help(rlm, package=\"MASS\").

      Nazwy standardowe w R " +"składają się z liter wielkich, małych, cyfr (0-9), podkreślników (_) oraz " +"kropek (.), a także muszą zaczynać się literą lub kropką. Aby uzyskać pomoc " +"dla niestandardowej nazwy (takiej jak operator pomocy ?), nazwę " +"należy umieścić w cudzysłowach: na przykład, help('?') lub ?\"?\".

      Możesz także użyć funkcji help(), aby uzyskać szczegóły o " +"pakiecie w twojej bibliotece — na przykład, help(package=\"MASS\") — " +"która wyświetla spis dostępnych stron pomocy dla pakietu wraz z kilkoma " +"innymi szczegółami.

      Strony pomocy dla funkcji zazwyczaj zawierają " +"działy z przykładami do uruchomienia, przedstawiającymi jak działają " +"funkcje. Możesz uruchomić te przykłady w bieżącej sesji R poprzez polecenie " +"example(): e.g., example(lm)." + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R jest językiem i środowiskiem do obliczeń i grafik statystycznych, " +"podobnym do języka i środowiska S.
      Zapewnia szeroki wybór technik " +"statystycznych (liniowe i nieliniowe modelowanie, klasyczne testy " +"statystyczne, analizy czasowe, klasyfikacje, ...) i graficznych, dodatkowo " +"jest wysoko rozszerzalny. Język S jest często używany do badań w metodologii " +"statystycznej i dostarcza drogę Open Source do udziału w tego typu " +"działalności." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Błąd podczas otwierania pliku %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "Plik skryptu R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Błąd podczas przetwarzania polecenia" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "Adres URL do lokalnej dokumentacji R" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Naciśnij dwukrotnie, aby otworzyć okno dialogowe wyboru pliku" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R pliki źródłowe (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage jest otwarto-źródłowym matematycznym systemem oprogramowania na " +"licencji GPL.
      Łączy moc wielu istniejących pakietów otwarto-źródłowych " +"we wspólnym interfejsie opartym na Pythonie." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Ścieżka do pliku wykonywalnego Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Włącz zestaw znaków LaTeX dla silnika Sage" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Wynik %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Ostatni wynik: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Plik skryptu Pythona (*.py);;Plik skryptu Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Wersja Sage %1.%2 jest nieobsługiwana. Uaktualnij swoją wersję do wersji " +"obsługiwanej, aby mogła ona działać z Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Nie udało się ustalić wersji Sage. Sprawdź swoją instalację i wynik " +"polecenia 'sage -v'." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Proces Sage uległ awarii podczas przeliczania wyrażenia" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Proces Sage uległ awarii" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Proces Sage zakończył działanie podczas przeliczania wyrażenia" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Proces Sage zakończył działanie" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Uruchamianie Sage nie powiodło się" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "Zestaw znaków LaTeX:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"Wyjście tekstowe Sage LaTeX nie zawsze jest poprawne, więc zestaw znaków " +"latex można wyłączyć dla lepszego odczucia" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab jest darmowym oprogramowaniem, wieloplatformowym pakietem do " +"obliczania numerycznego i wysoko poziomowym, numerycznie zorientowanym " +"językiem programistycznym. Scilab jest rozpowszechniany na licencji CeCILL " +"(zgodna z GPL)" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Ścieżka pliku wykonywalnego Scilab" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Plik skryptu Scilab (*.sce);;Plik funkcji Scilab (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "Plik %1 jest już otwarty." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Otwórz plik" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Pobierz przykłady" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Otwórz przykład" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Przejdź do poprzedniego arkusza pracy" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Przejdź do następnego arkusza pracy" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Wszystkie obsługiwane pliki (*.cws *ipynb);;Arkusze pracy Cantora (*.cws);;" +"Zeszyty Jupytera (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Nie znaleziono mechanizmu

      \n" +"
      Możesz spróbować:\n" +"
      • Zmiany ustawień w oknie ustawień;
      • Zainstalowania " +"pakietów następującego programu:
      • %2
      " +msgstr[1] "" +"

      Nie znaleziono wtyczki

      \n" +"
      Możesz spróbować:\n" +"
      • Zmiany ustawień w oknie konfiguracji;
      • " +"
      • Zainstalowania jednego z następujących programów:
      • %2
      " +msgstr[2] "" +"

      Nie znaleziono wtyczki

      \n" +"
      Możesz spróbować:\n" +"
      • Zmiany ustawień w oknie konfiguracji;
      • " +"
      • Zainstalowania jednego z następujących programów:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Błąd" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Silnik %1 nie jest wgrany" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"Wgrano silnik %1, lecz nie został on włączony. Sprawdź swoją instalację oraz " +"ustawienia Cantora" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sesja %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Nie można znaleźć modułu Cantor, kod błędu %1." + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Obliczanie..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Gotowy" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Zmieniony" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" +"Otwartych jest wiele niezapisanych arkuszy pracy. Czy chcesz je zamknąć?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Zamknij Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Bieżący projekt uległ zmianie. Czy chcesz go zapisać?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Zapisz projekt" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Formatowanie" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Silnik wykorzystywany domyślnie" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Włącz domyślnie ustawienie pisania" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Domyślnie podświetlaj składnię" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Domyślnie włącz uzupełnianie" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Włącz domyślnie numerowanie wyrażeń" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Domyślnie animuj zmiany w arkuszu pracy" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Domyślnie włącz wyświetlanie równań matematycznych pomiędzy $$..$$ w tekście " +"i kodzie Markdown (wymaga wgranego pdflatex)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Samoczynnie przeliczaj wiersze poniżej bieżącego" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Pytaj o potwierdzenie przy ponownym uruchamianiu silnika" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Zapisz formatowany tekst wpisu tekstowego, gdy arkusz pracy jest w formacie " +"notatnika Jupyter" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Użyj starego sposobu wyrównywania wpisów Cantora" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Pokaż błąd wyświetlania osadzonej matematyki" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Graniczna liczba widocznych wierszy dla wyjścia tekstowego" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Hierarchia czcionek dla rozdziałów" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Hierarchia rozmiaru czcionek dla rozdziałów" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Hierarchia pochylenia czcionek dla rozdziałów" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Hierarchia wytłuszczenia czcionek dla rozdziałów" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Hierarchia czcionek dla podrozdziałów" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Hierarchia rozmiarów czcionek dla podrozdziałów" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Hierarchia pochylenia czcionek dla podrozdziałów" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Hierarchia wytłuszczenia czcionek dla podrozdziałów" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Hierarchia czcionek dla sekcji" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Hierarchia pochylenia czcionek dla sekcji" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Hierarchia wytłuszczenia czcionek dla sekcji" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Hierarchia czcionek dla podsekcji" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Hierarchia pochylenia czcionek dla podsekcji" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Hierarchia wytłuszczenia czcionek dla podsekcji" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Hierarchia czcionek dla akapitu" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Hierarchia pochylenia czcionek dla akapitu" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Hierarchia wytłuszczenia czcionek dla akapitu" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Hierarchia czcionek dla podakapitów" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Hierarchia pochylenia czcionek dla podrozdziałów" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Hierarchia wytłuczonych czcionek dla podakapitów" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Zapisz jako zwykły tekst" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Zapisz jako LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Przelicz arkusz pracy" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Powiększenie" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Pisanie przy użyciu LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Podświetlanie składni" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Uzupełnianie" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Numery wierszy" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Animacje" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Osadzona matematyka" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Ponownie uruchom silnik" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Przelicz wiersz" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Wstaw wiersz polecenia" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Wstaw wiersz tekstu" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Wstaw wiersz markdown" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Wstaw wiersz LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Wstaw podział strony" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Wstaw obraz" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Zwiń wszystkie wyniki" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Rozwiń wszystkie wyniki" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Usuń wszystkie wynik" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Usuń bieżący wiersz" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Pokaż edytor skryptów" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Pokaż uzupełnianie" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "ModułCantor" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Arkusz pracy Cantor (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Notatnik Jupyter (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Zapisz jako" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Zapisz" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Wszystkie dostępne wyniki obliczeń zostaną utracone. Czy na pewno chcesz " +"uruchomić ponownie %1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Uruchomić %1 ponownie?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Przerwij" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Błąd sesji: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Inicjalizacja zakończona" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Inicjalizacja..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[tylko-do-odczytu]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Czy chcesz wysłać bieżący arkusz pracy na serwer publiczny?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Pytanie - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Arkusz pracy nie został zapisany. Zapisz go przed wysłaniem." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Ostrzeżenie - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Ta wtyczka nie obsługuje skryptów." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Edycja" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Widok" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Arkusz pracy" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Ustawienia" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Plik" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Nowy" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Okna" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "U&stawienia" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Kolor tła" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Domyślne" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Kolor tekstu" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Czcionka" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Pogrubienie" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Kursywa" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Zwiększ rozmiar" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Zmniejsz rozmiar" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Wybierz" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Wyzeruj do domyślnych" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Pokaż wyniki" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Ukryj wyniki" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Pokaż pomoc" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Wygląd" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Przerwane" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Pasek znajdywania" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Znajdź:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Następny" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Poprzedni" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Zastąp:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Zastąp" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Z&astąp wszystkie" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Znajdź w:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "Rozróżni&aj wielkość liter" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Czcionki hierarchii" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Czcionka rozdziału" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Rodzina czcionek:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Rozmiar czcionki:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Czcionka podrozdziału" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Czcionka sekcji" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Czcionka podsekcji" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Czcionka akapitu" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Czcionka podakapitu" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Rozdział" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Podrozdział" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Sekcja" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Podrozdział" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Akapit" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Podakapit" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Ustaw poziom hierarchii" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Linia jednolita" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Linia kreskowana" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Linia kropkowana" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Linia kreska kropka" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Linia kreska kropka kropka" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Szerokość linii" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Cienka" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Średni" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Gruba" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Kolor linii" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Rodzaj linii" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Ustawienia obrazu" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Aby nadać ustawienia obrazom, naciśnij tutaj dwukrotnie" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Nie można wczytać obrazu %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Zapisz wynik obrazowo" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Obrazy (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Ustawienia obrazu" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Otwórz" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Rozmiar wyświetlacza" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Szerokość" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Wysokość" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Podgląd" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Rozmiar wydruku" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Użyj rozmiaru wyświetlacza" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Ustawienia obrazu" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(auto)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "piks." + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Otwórz plik obrazu" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Pokaż kod LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Nie podano ścieżki do pliku wykonywalnego %1. Podaj poprawną ścieżkę w " +"ustawieniach aplikacji i spróbuj ponownie." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"Podany plik '%1' dla pliku wykonywalnego %2 nie istnieje. Podaj poprawną " +"ścieżkę w ustawieniach aplikacji i spróbuj ponownie." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"Podany plik '%1' nie jest plikiem wykonywalnym. Podaj poprawną ścieżkę w " +"ustawieniach aplikacji i spróbuj ponownie." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"Program %1 nie zakończył swojego wykonywania po %2 milisekundach w trakcie " +"próby integracji wykresów." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "Nie udało się otworzyć pliku %1 podczas próby integracji wykresów." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "Nie udało się przetworzyć wyników podczas próby integracji wykresów." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Ścieżka do pliku wykonywalnego latex" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Ścieżka do pliku wykonywalnego dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Wartość" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 bajtów>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Od:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Do:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Główny tytuł" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Skala odciętej" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Skala porządkowej" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Tytuł wykresu:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "To jest nieobsługiwana treść Jupytera ('%1')" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"%1 proces zakończył nieoczekiwanie. Wszystkie obliczenia zostały utracone." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"%1 proces zakończył nieoczekiwanie z wiadomością \"%2\". Wszystkie " +"obliczenia zostały utracone." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Wybrałeś obsługę pakietu graficznego %1, lecz nie można jej włączyć ze " +"względu na brakujące pakiety zależne, więc integracja tego pakietu została " +"wyłączona. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Nakładka graficzna programów matematycznych dla KDE" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Opiekun
      przeniesienie na Qt5/KF5, silniki Scilab oraz Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Programista" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Autor pierwszej wersji
      opiekun (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Silnik KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Silnik Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Interfejs" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Ikona Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Użyj silnika " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Dokument do otwarcia." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Nie można otworzyć pliku %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Wejdź do trybu edycji" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Wyczyść załączniki" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Błąd matematyczny Cantor" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Nie można odczytać obrazu \"%1\". Błąd \"%2\"" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Podział strony ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Przejdź do treści" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Szukaj poprzez słowa kluczowe..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Znajdź w tekście otwartej strony dokumentacji" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Wyzeruj poziom powiększenia do 100%" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Zamknij" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Przejdź do następnego pasującego wyrażenia" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Przejdź do poprzedniego pasującego wyrażenia" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Rozróżniaj wielkość liter" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "Pomyślnie pobrano plik do katalogu pobranych." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Pomyślnie pobrano" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Pliki Cantora" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Pliki Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Wszystkie obsługiwane pliki" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Wszystkie pliki" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Nazwa:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Wartość:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Dodaj nową zmienną" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Wczytaj zmienne" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Zapisz zmienne" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Usuń zmienne" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Szukaj/Odfiltruj" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Rozróżniaj wielkość liter" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Szukaj całych słów" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Czy na pewno usunąć wszystkie zmienne?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Wczytaj plik" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Zapisz wynik" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Usuń wynik" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Nie znaleziono składnika edytora tekstowego dla KDE;\n" +"proszę sprawdzić swoją instalację KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Edytor skryptów" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Edytor skryptów - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Nie znaleziono" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Osiągnięto początek" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Osiągnięto koniec" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Zastąpiono %1 wystąpienie" +msgstr[1] "Zastąpiono %1 wystąpienia" +msgstr[2] "Zastąpiono %1 wystąpień" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Polecenia" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Wyniki" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Błędy" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Tekst" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Kod LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "Uruchom:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" +"Utwórz nowy arkusz pracy dla wybranego systemu. Jeśli nie wybrano żadnego " +"systemu, to użytkownik zostanie zapytany o niego po uruchomieniu programu." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Domyślny silnik:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Arkusz pracy:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" +"Włącz zapis LaTeX dla wyników obliczeń, jeśli jest obsługiwany przez system " +"silnika" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "Zestaw znaków LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Włącz podświetlanie składni" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Podświetlanie składni" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "Włącz uzupełnianie składni" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Pokaż numery wierszy" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Numery wierszy" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Włącz efekty animacji w arkuszu pracy" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" +"Po włączeniu, wpisy tekstowe, które będą wyrównywane do krawędzi arkusza " +"pracy, a nie do obramowania zapytania" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "Nie wcinaj wpisów tekstowych" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Stosuj format sformatowanego tekstu dla wpisów tekstowych przy zapisywaniu " +"do formatu notatnika Jupyter" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "Obliczenie:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"Po włączeniu, użytkownik będzie pytany o potwierdzenie przed ponownym " +"uruchomieniem silnika" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" +"Po włączeniu, wszystkie wpisy poniżej bieżącego będą przeliczać się same" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "Sam przelicz wpisy ponownie" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Liczba wierszy w wynik (0 oznacza nieograniczenie):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Największa liczba widocznych wierszy w wyniku pola wpisywania poleceń. Wpisz " +"0, aby nie było ograniczenia." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" +"Włącz zestaw znaków LaTeX dla wyrażeń matematycznych we wpisach Markdown" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "Wyrażenia matematyczne poprzez LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "Powiadom o błędach w wyświetlaniu wyrażeń matematycznych" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Znajdź..." + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Nieprzetworzone cele komórek" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Dodaj własny cel" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Przekształć na tekst" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Przekształć na nieprzetworzoną komórkę" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Docelowy typ MIME:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Skopiuj wynik" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Pokaż przetworzony" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Pokaż kod" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Pokaż kod HTML" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Pokaż zwykłą alternatywę" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Pokaż HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Pokaż HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Nie można przetworzyć pliku Eps. Mogą być potrzebne dodatkowe pakiety" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Zapisz wynik tekstowo" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "Pliki tekstowe (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Nie można zapisać pliku %1.." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Nie można zapisać do pliku." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Błąd podczas zapisu pliku %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"W trybie tylko-do-odczytu Cantor nie może zagwarantować, że eksport będzie " +"poprawny dla %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Błąd wczytywania arkusza wyglądu latex.xsl" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Nie można otworzyć pliku %1." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Otwórz plik" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Nie można otworzyć wybranego pliku do odczytu." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "Wybrany plik nie jest prawidłowym plikiem projektu Cantor lub Jupyter." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Wybrany plik nie jest prawidłowym plikiem projektu Cantor." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Ten arkusz pracy został stworzony przy użyciu Python2, który nie jest już " +"obsługiwany. Zostanie użyty Python3." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python2 nie jest już obsługiwany" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"Nie znaleziono silnika %1. Edytowanie i wykonywanie wpisów nie jest możliwe." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Zaistniały problemy z silnikiem %1,\n" +"proszę sprawdzić swoje ustawienia lub dograć potrzebne pakiety.\n" +"Można będzie jedynie obejrzeć ten arkusz pracy." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Notatniki Jupyter o wersji niższej niż 4.5 (wykryto %1.%2) nie są " +"obsługiwane." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Notatniki Jupyter o wersji wyższej niż 4.5 (wykryto %1.%2) nie są " +"obsługiwane." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Ten zeszyt został stworzony przy użyciu Python2, który nie jest już " +"obsługiwany. Zostanie użyty Python3." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "obiekt z kluczami: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "wartość nie-obiektu JSON" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "znaleziono niepoprawne dane (%1), które nie są komórką Jupyter" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "Plik nie jest prawidłowym plikiem notatnika Jupyter." + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Nieprawidłowy schemat notatnika Jupyter: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Przekształć do" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Polecenie" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Obraz" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Podział strony" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Linia ciągła" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Wpis hierarchii" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Wstaw za" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Wstaw przed" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Wstaw" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Powiększ" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Pomniejsz" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Rozmiar pierwotny" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Przesuń wpisy w górę" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Przesuń wpisy w dół" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Przelicz wpisy" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Usuń wpisy" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Zwiń wyniki poleceń" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Rozwiń wyniki poleceń" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Usuń wyniki polecenia" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Wyklucz pole poleceń z wykonywania" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Dodaj polecenie do wykonywania" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "&Kolor tekstu..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Kolor" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "&Podświetlenie tekstu..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Czcionka" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Roz&miar czcionki" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "Pogru&bienie" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Kursywa" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Podkreślenie" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Przekreślenie" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Wyrównaj do &lewej" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Lewo" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Wyrównaj do ś&rodka" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Środek" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Wyrównaj do &prawej" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Prawo" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "Wy&justuj" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Justowanie" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"To działanie usunie wszystkie wyniki, bez możliwości wycofania. Czy na pewno?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Usuń wszystkie wyniki" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Biały" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Czarny" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Ciemnoczerwony" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Czerwony" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Jasnoczerwony " + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Ciemnozielony" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Zielony" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Jasnozielony" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Ciemnoniebieski" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Niebieski" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Jasnoniebieski" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Ciemnożółty" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Żółty" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Jasnożółty" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Ciemny niebieskozielony" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Niebieskozielony" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Jasny niebieskozielony" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Ciemnopurpurowy" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Purpurowy" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Jasnopurpurowy" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Ciemnopomarańczowy" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Pomarańczowy" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Jasnopomarańczowy" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Ciemnoszary" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Szary" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Jasnoszary" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Przesuń w górę" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Przesuń w dół" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Czy na pewno usunąć ten wpis?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Usuń wiersz" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Przeciągnij wiersz" + +#~ msgid "Animate Worksheet" +#~ msgstr "Animuj arkusz pracy" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "Po uruchomieniu, gdy wybrany został domyślny silnik, utwórz dla niego " +#~ "arkusz pracy, zamiast pokazywać okno dialogowe wyboru silnika." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Kiedy włączone, Cantor będzie automatycznie przeliczać każdy wiersz " +#~ "poniżej bieżącego." + +#~ msgid "Defaults" +#~ msgstr "Domyślne" + +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "Jest to wstępna wartość w sesji dla ustawienia \"Zestawu znaków " +#~ "używającego LaTeX\", który jest odpowiedzialny za wyświetlanie pewnego " +#~ "tekstu wyjściowego z silnika jako latex. Na przykład, wyjście tekstowe z " +#~ "Maximy będzie wyświetlane poprzez latex, jeśli to ustawienie jest " +#~ "zaznaczone." + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "Włącz ustawienie pisania LaTeX (działa tylko z wgranym latex)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "Jest to wstępna wartość w sesji dla ustawienia \"Podświetlania składni\", " +#~ "które jest odpowiedzialne za podświetlanie składni wewnątrz poleceń." + +#~ msgid "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." +#~ msgstr "" +#~ "Jest to wstępna wartość w sesji dla ustawienia \"Uzupełniania\", które " +#~ "jest odpowiedzialne za samoczynne uzupełnianie kodu." + +#~ msgid "" +#~ "This is initial value for the session \"Line numbers\" option, which " +#~ "response for presence of command entries execution numbers." +#~ msgstr "" +#~ "Jest to wstępna wartość w sesji dla ustawienia \"Numerów wierszy\", które " +#~ "jest odpowiedzialne za obecność numerów wykonywania poleceń." + +#~ msgid "Enable Line Numbers" +#~ msgstr "Włącz numery wierszy" + +#~ msgid "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." +#~ msgstr "" +#~ "Jest to wstępna wartość w sesji dla ustawienia \"Animowania arkusza pracy" +#~ "\", które jest odpowiedzialne za animacje arkusza pracy." + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Włącz animacje arkusza pracy" + +#~ msgid "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." +#~ msgstr "" +#~ "Jest to wstępna wartość w sesji dla ustawienia \"Osadzonej matematyki\", " +#~ "które jest odpowiedzialne za wyświetlanie wyrażeń matematycznych w " +#~ "tekście i wpisach markdown." + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "Włącz osadzoną matematykę (działa tylko z wgranym pdflatex)" + +#~ msgid "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." +#~ msgstr "" +#~ "Jeśli włączone, to ostrzeżenie o ponownym uruchomieniu nie zostanie " +#~ "wyświetlona po naciśnięciu przycisku ponownego uruchomienia." + +#~ msgid "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." +#~ msgstr "" +#~ "Jeśli włączone, to w przypadku błędu w wyświetlaniu matematyki, pojawi " +#~ "się okno z opisem błędu." + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "Pokaż wiadomość o błędzie wyświetlania osadzonej matematyki" + +#~ msgid "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." +#~ msgstr "" +#~ "jeśli włączone, to będzie obowiązywał stary sposób wcinania wpisów " +#~ "Cantora (wszystkie wpisy wyrównane do lewej)." + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Użyj starego sposobu wcinania wpisów Cantora" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Jeśli włączone, to Cantor zachowa formatowanie wpisów tekstowych w " +#~ "formacie zeszytu Jupytera." + +#~ msgid "" +#~ "Graphical package, for which will be enable support for embedding plots" +#~ msgstr "Pakiet graficzny, dla którego włączyć obsługę osadzonych wykresów" + +#~ msgid "" +#~ "Graphic package, which code will be used for plotting via \"Plot\" Cantor " +#~ "menu." +#~ msgstr "" +#~ "Pakiet graficzny, który będzie używany do rysowania wykresów po wybraniu " +#~ "\"Wykres\" w menu Cantora." + +#~ msgid "Matplotlib (with seaborn, ggplot support too)" +#~ msgstr "Matplotlib (z obsługą zarówno seaborn, jak i ggplot)" + +#~ msgid "Plot.ly" +#~ msgstr "Plot.ly" + +#~ msgid "All supported" +#~ msgstr "Wszystkie obsługiwane" + +#~ msgid "" +#~ "Graphic package, used for plotting. When integrated plots option is " +#~ "enabled, then plots from the package will be integrated to worksheet" +#~ msgstr "" +#~ "Pakiet graficzny, używany do rysowania. Gdy włączone jest ustawienie " +#~ "zintegrowanych wykresów, to wykresy z pakietu zostaną zintegrowane z " +#~ "arkuszami pracy." + +#~ msgid "Graphic Package: " +#~ msgstr "Pakiet graficzny: " + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      Sposób na matematykę w KDE" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "Adres URL do lokalnej dokumentacji Maxima" + +#~ msgid "" +#~ "If empty, the \"Show help\" action will show the default online " +#~ "documentation. Otherwise, the specified URL will be opened." +#~ msgstr "" +#~ "Jeśli puste, to działanie \"Pokaż pomoc\" pokaże domyślną dokumentację z " +#~ "sieci. W pozostałych przypadkach, zostanie otworzony podany adres URL." + +#~ msgid "Documentation:" +#~ msgstr "Dokumentacja:" + +#~ msgid "Url to the local Python documentation" +#~ msgstr "Adres URL do lokalnej dokumentacji Python" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "Adres URL do lokalnej dokumentacji Octave" + +#~ msgid "Show %1 Help" +#~ msgstr "Pokaż pomoc %1" + +#~ msgid "Path to Julia:" +#~ msgstr "Ścieżka do Julii:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Zintegruj wykresy w arkuszu pracy" + +#~ msgid "" +#~ "Commands to automatically run on start. They can be useful for loading " +#~ "needed modules, changing environment, etc." +#~ msgstr "" +#~ "Polecenie wykonywane samoczynnie po uruchomieniu. Mogą być użyteczne do " +#~ "wczytywania nowych modułów, zmiany środowiska, itp." + +#~ msgid "Clear Variables" +#~ msgstr "Wyczyść zmienne" + +#~ msgid "Exclude from Execution" +#~ msgstr "Wyklucz z wykonywania" + +#~ msgid "Add to Execution" +#~ msgstr "Dodaj do wykonywania" + +#~ msgid "Right click here to insert image" +#~ msgstr "Naciśnij tu prawym, aby wstawić obraz" + +#~ msgid "Choose Image" +#~ msgstr "Wybierz obraz" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "Obrazy (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Potwierdzenie - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Wiersz tekstu" + +#~ msgid "LaTeX Entry" +#~ msgstr "Wiersz LaTeX" + +#~ msgid "Insert Entry Before" +#~ msgstr "Wstaw wiersz przed" + +#~ msgid "Insert Horizontal Line" +#~ msgstr "Wstaw poziomą linię" + +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Wstaw wpis hierarchii" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Ścieżka do polecenia scilab-adv-cli (Ostrzeżenie: Wersja Scilab musi być " +#~ "lepsza lub równa wersji 5.4)" + +#~ msgid "Insert Image Attachment" +#~ msgstr "Wstaw obraz" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Wstaw wiersz Latex" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Ścieżka pliku wykonywalnego Octave" + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "Format pośredni wykresów w treści:" + +#~ msgid "Path to Maxima:" +#~ msgstr "Ścieżka do Maxima:" + +#, fuzzy +#~| msgid "Failed to start Cantor python server." +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Nie udało się uruchomić serwera pythona dla Cantora." + +#~ msgid "Path to Sage:" +#~ msgstr "Ścieżka do Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Ścieżka do polecenia scilab-adv-cli:" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Pozwól Cantorowi podążać za tworzeniem/destrukcją zmiennych" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "" +#~ "Zintegruj wykresy w arkuszu roboczym (rozpocznij nową sesję, gdy " +#~ "zmieniono)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Ścieżka pliku wykonywalnego Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Ścieżka do Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Nienazwany" + +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "https://docs.python.org/2/" + +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "Python jest nadzwyczaj sprawnym językiem dynamicznego " +#~ "programowania, który jest używany do różnych zastosowań. Istnieje kilka " +#~ "pakietów Pythona do naukowego programowania. Ten silnik obsługuje Python " +#~ "3." + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "You should set path to Julia executable" +#~ msgstr "Należy ustawić ścieżkę do pliku wykonywalnego Julia" + +#~ msgid "" +#~ "Path to Julia should point directly to julia executable, symlink not " +#~ "allowed" +#~ msgstr "" +#~ "Ścieżka do Julia powinna bezpośrednio wskazywać na plik wykonywalny " +#~ "julia, dowiązanie symboliczne jest niedozwolone" + +#~ msgid "" +#~ "Lua backend needs installed Lua programming language. The backend often " +#~ "automatically finds needed Lua binary file, but not in this case. Please, " +#~ "go to Cantor settings and set path to Lua executable." +#~ msgstr "" +#~ "Silnik Lua wymaga wgranego języka programowania Lua. Silnik często sam " +#~ "znajduje potrzebny plik dwójkowy Lua, lecz nie w tym przypadku. Przejdź " +#~ "do ustawień Cantora i ustaw ścieżkę do pliku wykonywalnego Lua." + +#~ msgid "" +#~ "In Lua backend settings a path to Lua binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Lua? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "W ustawieniach silnika Lua, ścieżka do pliku dwójkowego Lua jest " +#~ "ustawiona jako %1, lecz plik ten nie jest wykonywalny. Czy na pewno jest " +#~ "to poprawna ścieżka do Lua? Należy zmienić tę ścieżkę w ustawieniach " +#~ "Cantor, gdy tak nie jest." + +#~ msgid "" +#~ "Maxima backend needs installed Maxima - a computer algebra system. The " +#~ "backend often automatically finds needed binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Maxima executable" +#~ msgstr "" +#~ "Silnik Maxima wymaga wgranego Maxima - komputerowy system do algebry. " +#~ "Silnik często sam znajduje potrzebny plik dwójkowy, lecz nie w tym " +#~ "przypadku. Przejdź do ustawień Cantora i ustaw ścieżkę do pliku " +#~ "wykonywalnego Maxima." + +#~ msgid "" +#~ "In Maxima backend settings a path to maxima binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Maxima? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "W ustawieniach silnika Maxima, ścieżka do pliku dwójkowego Maxima jest " +#~ "ustawiona jako %1, lecz plik ten nie jest wykonywalny. Czy na pewno jest " +#~ "to poprawna ścieżka do Maxima? Należy zmienić tę ścieżkę w ustawieniach " +#~ "Cantor, gdy tak nie jest." + +#~ msgid "" +#~ "Octave backend needs installed Octave programming language. The backend " +#~ "often automatically finds needed Octave binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Octave binary file " +#~ "with command line interface (CLI)" +#~ msgstr "" +#~ "Silnik Octave wymaga wgranego języka programowania Octave. Silnik często " +#~ "sam znajduje potrzebny plik dwójkowy Octave, lecz nie w tym przypadku. " +#~ "Przejdź do ustawień Cantora i ustaw ścieżkę do pliku wykonywalnego Octave " +#~ "z obsługą wiersza poleceń (CLI)" + +#~ msgid "" +#~ "In Octave backend settings a path to Octave binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Octave? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "W ustawieniach silnika Octave, ścieżka do pliku dwójkowego Octave jest " +#~ "ustawiona jako %1, lecz plik ten nie jest wykonywalny. Czy na pewno jest " +#~ "to poprawna ścieżka do Octave? Należy zmienić tę ścieżkę w ustawieniach " +#~ "Cantor, gdy tak nie jest." + +#~ msgid "" +#~ "R backend uses special binary file - cantor_rserver (installed with R " +#~ "backend), which must be executable." +#~ msgstr "" +#~ "Silnik R używa pliku dwójkowego - cantor_rserver (wgranego z silnikiem " +#~ "R), który musi być wykonywalny." + +#~ msgid "" +#~ "Sage backend needs installed Sage programming language. The backend often " +#~ "automatically finds needed Sage binary file, but not in this case. " +#~ "Please, go to Cantor settings and set path to Sage executable" +#~ msgstr "" +#~ "Silnik Sage wymaga wgranego języka programowania Sage. Silnik często sam " +#~ "znajduje potrzebny plik dwójkowy Sage, lecz nie w tym przypadku. Przejdź " +#~ "do ustawień Cantora i ustaw ścieżkę do pliku wykonywalnego Sage" + +#~ msgid "" +#~ "In Sage backend settings a path to Sage binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Sage? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "W ustawieniach silnika Sage, ścieżka do pliku dwójkowego Sage jest " +#~ "ustawiona jako %1, lecz plik ten nie jest wykonywalny. Czy na pewno jest " +#~ "to poprawna ścieżka do Sage? Należy zmienić tę ścieżkę w ustawieniach " +#~ "Cantor, gdy tak nie jest." + +#~ msgid "" +#~ "Scilab backend needs installed Scilab programming language. The backend " +#~ "often automatically finds needed Scilab binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Scilab executable" +#~ msgstr "" +#~ "Silnik Scilab wymaga wgranego języka programowania Scilab. Silnik często " +#~ "sam znajduje potrzebny plik dwójkowy Scilab, lecz nie w tym przypadku. " +#~ "Przejdź do ustawień Cantora i ustaw ścieżkę do pliku wykonywalnego Scilab" + +#~ msgid "" +#~ "In Scilab backend settings a path to Scilab binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Scilab? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "W ustawieniach silnika Scilab, ścieżka do pliku dwójkowego Scilab jest " +#~ "ustawiona jako %1, lecz plik ten nie jest wykonywalny. Czy na pewno jest " +#~ "to poprawna ścieżka do Scilab? Należy zmienić tę ścieżkę w ustawieniach " +#~ "Cantor, gdy tak nie jest." + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Wybierz wykorzystywany silnik:" + +#~ msgid "" +#~ "The file is old Jupyter notebook (found version %1.%2), which isn't " +#~ "supported by Cantor" +#~ msgstr "" +#~ "Plik jest starym notatnikiem Jupyter (znaleziono wersję %1.%2), który nie " +#~ "jest obsługiwany przez Cantor" + +#~ msgid "" +#~ "Julia backend uses special binary file - %1 (installed with Julia " +#~ "backend), which must be executable" +#~ msgstr "" +#~ "Silnik Julia używa pliku dwójkowego - %1 (wgranego z silnikiem Julia), " +#~ "który musi być wykonywalny" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Silnik, z którym został wygenerowany plik nie jest zainstalowany. " +#~ "Potrzebuje %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Publikuj arkusz roboczy" + +#~ msgid "Waiting for Image..." +#~ msgstr "Oczekiwanie na obraz..." + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "nie można otworzyć pliku %1: nieznany format pliku" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|Dokument LaTeX" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Arkusz roboczy Cantor" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Serwer Cantor obsługi R" + +#~ msgid "R Server" +#~ msgstr "Serwer R" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Użycie: saveVariables plik" + +#~ msgid "Saving failed." +#~ msgstr "Nieudany zapis." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Użycie: loadVariables plik" + +#~ msgid "Loading failed." +#~ msgstr "Nieudane wczytywanie." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2013 Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "Ścieżka do polecenia python" + +#~ msgid "Cantor Server for R" +#~ msgstr "Serwer Cantor dla R" + +#~ msgid "Path to python2 command:" +#~ msgstr "Ścieżka do polecenia python2" + +#~ msgid " Enable Variable Management" +#~ msgstr " Włącz zarządzanie zmiennymi" + +#~ msgid "Could not start the server." +#~ msgstr "Nie można uruchomić serwera." + +#~ msgid "Start Animation" +#~ msgstr "Rozpocznij animację" + +#~ msgid "Restart Animation" +#~ msgstr "Ponownie uruchom animację" + +#~ msgid "Append Latex Entry" +#~ msgstr "Dołącz wpis Latex" + +#~ msgid "Append Image" +#~ msgstr "Dołącz obraz" + +#~ msgid "Append Page Break" +#~ msgstr "Dołącz podział strony" + +#~ msgid "Other" +#~ msgstr "Inne" + +#~ msgid "And %1 more..." +#~ msgstr "Dodaj %1 więcej..." + +#~ msgid "Main Toolbar" +#~ msgstr "Główny pasek narzędzi" + +#~ msgid "Popup" +#~ msgstr "Wyskakujące okienko" + +#~ msgid "The style used for Completion" +#~ msgstr "Styl używany do uzupełniania" + +#~| msgid "Insert Entry" +#~ msgid "Insert Command Entry Before" +#~ msgstr "Wstaw wpis polecenia przed" + +#~ msgid "Command Entry Before" +#~ msgstr "Wpis polecenia przed" + +#~ msgid "Help" +#~ msgstr "Pomoc" + +#~ msgid "Show Help Panel" +#~ msgstr "Pokaż panel pomocy" + +#~ msgid "Error uploading File %1" +#~ msgstr "Błąd podczas wysyłania pliku %1" diff --git a/po/pt/cantor.po b/po/pt/cantor.po new file mode 100644 index 0000000..4c78691 --- /dev/null +++ b/po/pt/cantor.po @@ -0,0 +1,4817 @@ +msgid "" +msgstr "" +"Project-Id-Version: mathematik\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-08-08 01:26+0100\n" +"Last-Translator: José Nuno Coelho Pires \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-POFile-SpellExtra: MathematiK Rieder MathematiKPart Alexander Maxima\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-POFile-SpellExtra: Mathematik Eigen mac py mws dvips source open\n" +"X-POFile-SpellExtra: tensores CantorPart EPS cws Reavaliar Gonzalez\n" +"X-POFile-SpellExtra: KAlgebra Pol Aleix tex xsl Matlab Octave Miha\n" +"X-POFile-SpellExtra: Čančula GroupBox px CeCILL deci bottomright sbezier\n" +"X-POFile-SpellExtra: loadVariables Bezier topright candlesticks centi deca\n" +"X-POFile-SpellExtra: adv ps pointslines gnuplot bezier outside\n" +"X-POFile-SpellExtra: saveVariables master hecto dots csplines bottomleft\n" +"X-POFile-SpellExtra: PS histogram boxes Scilab unique true cli\n" +"X-POFile-SpellExtra: Fraccionária topleft none Qalculate lines eps below\n" +"X-POFile-SpellExtra: points steps inline scilab Spline Küttler latex\n" +"X-POFile-SpellExtra: Monotónico monotónico sce sci luajit KF Julia jl\n" +"X-POFile-IgnoreConsistency: file\n" +"X-POFile-SpellExtra: REPL Markdown cantorrserver CLI maxima julia pdflatex\n" +"X-POFile-IgnoreConsistency: Name\n" +"X-POFile-SpellExtra: Jupyter TextEntry jpg JSON ipynb Junyper Semke\n" +"X-POFile-SpellExtra: Sirgienko Nikita cantorpart Plot seaborn ggplot\n" +"X-POFile-SpellExtra: matplotlib Matplotlib plotly ly plot bokeh pylab GR\n" +"X-POFile-SpellExtra: Bokeh install PyPlot Gadfly SO Pkg\n" +"X-POFile-SpellExtra: availablegraphicstoolkits fltk GHNS apropos exp\n" +"X-POFile-SpellExtra: expand exponentialize tr describe exact inexact false\n" +"X-POFile-SpellExtra: example if manualdemo done help lm rlm MASS gif txt\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "José Nuno Pires" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "zepires@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pausa" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Iniciar" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Parar" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Gravar o resultado da animação" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Animações (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Gráficos Avançados" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Gráfico" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Expressão:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Opções adicionais:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Gráfico" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Opção activa" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Calcular" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Derivar" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variável:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Vezes: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Pacote" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importar o Pacote" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Pacote:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integrar" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Limite inferior:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Limite superior:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "integral definido" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "Álgebra &Linear" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Criar uma Matriz" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Colunas:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Linhas:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Calcular os Valores de Eigen" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matriz:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Calcular os Vectores de Eigen" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Inverter a Matriz" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Gráfico 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variável" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Nome" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Mínimo:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Máximo:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Gráfico 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1ª Variável" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2ª Variável" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Executar o Programa" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Resolver as equações" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Equações:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variáveis:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Seleccionar a Infra-Estrutura" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Versão recomendada: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Veja %2 para obter mais " +"informações.
      " + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Alguns dos requisitos não estão cumpridos: " +"%1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Usar esta infra-estrutura por omissão" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"O Julia é uma linguagem de programação dinâmica de alto nível, com " +"alta performance, para a computação técnica, com uma sintaxe familiar aos " +"utilizadores de outros ambientes de computação técnica. Oferece um " +"compilador sofisticado, a execução distribuída em paralelo, precisão " +"numérica e uma biblioteca extensa de funções matemáticas." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"A localização do Julia indicada na configuração da aplicação deverá apontar " +"directamente para o executável. Não são permitidas ligações simbólicas. " +"Indique por favor a localização correcta na configuração da aplicação e " +"tente de novo." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"O Cantor não conseguiu obter a versão do Julia para o %1. Por favor, defina " +"a localização correcta do executável Julia (não são permitidas ligações " +"simbólicas) e tente de novo." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Está a tentar usar o Cantor com o Julia v%1.%2.%3. Esta versão do Cantor foi " +"compilada com o suporte para o Julia v%4.%5.%6. Por favor, aponte para esta " +"versão do Julia ou volte a compilar o Cantor com a versão %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Localização do REPL nativo do Julia" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Activar a Gestão das Variáveis" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Integrar os Gráficos na Folha de Cálculo" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Pacote gráfico do Assistente de \"Gráficos\"" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Infelizmente, o Gadfly não suporta gráficos em 3D" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Ficheiro de programa do Julia (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Erro - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"Não é possível autenticar-se na sessão do Julia devido a um problema interno " +"com o Julia por falta de um ficheiro interno - \"%1\"" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" +"Não é possível autenticar-se na sessão do Julia devido a um problema interno" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "O processo do Julia deixou de funcionar." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Não foi possível iniciar o processo do Julia." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "A comunicação com o processo do Julia falhou por razões desconhecidas." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Para o Julia só o GR (https://gr-framework.org/), uma plataforma para as " +"aplicações de visualização, é que é suportada de momento. Este pacote tem de " +"ser instalado primeiro, caso não o tenha já feito. Para tal, execute 'Pkg." +"install(\"GR\")' no Cantor ou no REPL do Julia. Lembre-se que esta operação " +"pode levar algum tempo e é melhor executá-la no REPL do Julia, por ser capaz " +"de apresentar a evolução actual da instalação do pacote." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Geral" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Executável:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Integração de Gráficos:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Se for verdadeiro, os gráficos serão apresentados dentro da folha de " +"trabalho. Caso contrário, irão aparecer numa janela separada." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Activa" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Gestão das Variáveis:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Monitoriza a criação e destruição de variáveis e mostra as variáveis " +"existentes no painel de variáveis." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Formato Interno do Gráfico:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" +"O formato interno dos gráficos, caso a incorporação dos mesmos esteja activa." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Pacote gráfico do Assistente de Gráficos" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Pacote do Assistente de Gráficos" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Gráficos" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Execução Automática" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Comandos a auto-executar" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Documentação" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Lista dos programas a executar no início da sessão" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Erro: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Estes comandos automáticos serão executados no início de uma folha de " +"trabalho. Eles podem ser úteis para carregar os módulos necessários, mudar o " +"ambiente, etc." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"O Lua é uma linguagem de programação rápida e leve, com uma sintaxe " +"procedimental simples. Existem diversas bibliotecas no Lua destinadas à " +"matemática e à ciência." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Localização do comando 'luajit'" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Ficheiro de programa em Lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Localização do 'luajit':" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" +"

      Sistema de Ajuda do Maxima

      Função apropos

      Pesquisa " +"por nomes do Maxima que tenham um nome que aparece dentro deles; o nome deverá ser um texto ou um símbolo. Como tal, o apropos(exp) " +"devolve uma lista de todas as opções e funções que têm 'exp' como parte do " +"seu nome, como por exemplo expand, exp e exponentialize. Por isso, se só se recordar de parte do nome de um comando ou variável " +"do Maxima, poderá usar este comando para descobrir o resto do nome. De forma " +"semelhante, poderá escrever apropos(tr_) para descobrir uma lista de " +"muitas das opções relacionadas com o tradutor, começando a maioria por " +"tr_.

      apropos(\"\") devolve uma lista com todos os nomes " +"do Maxima.

      O apropos devolve a lista vazia [], caso não seja " +"encontrado nenhum nome.

      Função describedescribe(texto) é equivalente a 'describe(texto, exact)'.

      P " +"describe(texto, exact) descobre um item com o título igual (sem " +"distinção de maiúsculas) ao 'texto', caso exista um desses itens.

      O " +"describe(texto, inexact) descobre todos os itens documentados que " +"contêm o 'texto' nos seus títulos. Se existir mais que um item destes, o " +"Maxima pede ao utilizador para seleccionar um item ou itens a apresentar." +"

      O ? xpto (com um espaço entre o ? e o xpto) é " +"equivalente a describe(\"xpto\", exact), e o ?? xpto é " +"equivalente ao describe(\"xpto\", inexact).

      O describe(, " +"inexact) devolve uma lista de todos os tópicos documentados no manual " +"'online'.

      O describe coloca o seu argumento entre aspas. O " +"describe devolve true se for detectada alguma documentação, " +"caso contrário devolve false.

      A função exampleexample(tópico) mostra alguns exemplos do tópico, que pode " +"ser um símbolo ou um texto. Para obter exemplos de operadores como o if, o do ou o lambda, o argumento deverá ser um texto, p.ex. " +"example(\"do\"). O example não faz distinção de maiúsculas/" +"minúsculas. A maioria dos tópicos são nomes de funções.

      O " +"example() devolve a lista de todos os tópicos reconhecidos.

      O " +"nome do ficheiro que contém os exemplos é devolvido pela variável global de " +"opções manual_demo, que é por omissão \"manual.demo\"." +"

      O example coloca o seu argumento entre aspas. O example devolve done a menos que não sejam encontrados exemplos ou não " +"exista nenhum argumento, onde nesse caso o example devolve a lista de " +"todos os tópicos reconhecidos." + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"O Maxima é um sistema para a manipulação de expressões simbólicas e " +"numéricas, incluindo a derivação, a integração, as séries de Taylor, as " +"transformadas de Laplace, as equações diferenciais ordinárias, os sistemas " +"de equações lineares, os polinómios e os conjuntos, listas, vectores, " +"matrizes e tensores. O Maxima oferece resultados numéricos de alta precisão, " +"usando fracções exactas, inteiros de precisão arbitrária e números de " +"vírgula flutuante de precisão variável. O Maxima pode desenhar gráficos das " +"funções e de dados em duas e três dimensões." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Localização do executável Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Erro: Demasiados */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Erro: Demasiados /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Erro: era esperado um '\"' antes do ';'" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "À espera do resultado do gráfico" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Ficheiro de comandos do Maxima (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Não foi possível iniciar o Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "O Maxima estoirou. A reiniciá-lo..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"O Maxima estoirou duas vezes num curto período de tempo. A interromper a " +"tentativa de reinício" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"O Octave da GNU é uma linguagem de alto-nível, desenhada " +"especialmente para cálculos numéricos.
      Oferece uma interface de linha de " +"comandos conveniente para resolver problemas numéricos lineares e não-" +"lineares e também para efectuar outras experiências numéricas, usando uma " +"linguagem que é bastante compatível com o Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Ficheiro de programa em Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Erro de Sintaxe" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "O teste de integração do gráfico foi mal-sucedido." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "Será desactivada a integração dos gráficos." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"A integração dos gráficos não funciona porque o Cantor descobriu que o " +"Octave não consegue criar gráficos, devido à inexistência de infra-" +"estruturas para ele: esta conclusão foi feita com base no resultado vazio da " +"função available_graphics_toolkits(). Parece que terá de instalar alguns " +"pacotes adicionais do SO, como o 'gnuplot', 'fltk' ou 'qt' para ter a " +"possibilidade de criar gráficos." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"O Python é uma linguagem de programação extremamente poderosa que é " +"usada numa grande variedade de domínios de aplicações. Existem diversos " +"pacotes do Python para a programação científica." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# Infelizmente, o Bokeh não suporta gráficos em 3D" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Ficheiro de programa em Python (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "O servidor de Python do Cantor deixou de funcionar." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Não foi possível iniciar o servidor de Python do Cantor." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"A comunicação com o servidor de Python do Cantor falhou por razões " +"desconhecidas." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Para usar os gráficos integrados com o pacote Matplotlib, tem de instalar o " +"pacote de Python \"matplotlib\" em primeiro lugar." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Para usar os gráficos integrados com o Plot.ly, terá de instalar o pacote de " +"Python \"plotly\" e o executável \"orca\" compatível com o Plot.ly. Veja o " +"artigo de \"Exportação de Imagens Estáticas\" na documentação do Plot.ly " +"para saber mais detalhes." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Janela do Gráfico" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funções" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Título" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Expressão" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Adicionar" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Remover" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Limpar a Lista" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Variável X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Estilo" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Linhas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Pontos" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Pontos e Linhas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Caixas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histograma" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Passos" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Velas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Pontos" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Suavização" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Nenhum" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monotónico" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Curvas 'Spline' Cúbicas" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (monotónico)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Intervalo da Função" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Intervalo em X" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Taxa de a&mostragem" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "&Tamanho do passo" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Opções" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Título do gráfico" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Legenda do eixo dos X" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Legenda do eixo dos Y" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Posição da legenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Esconder a legenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Topo-esquerda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Topo-direita" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Fundo-esquerda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Fundo-direita" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Por Baixo" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Fora" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Mostrar a Grelha" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Mostrar o contorno inteiro" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Usar as Cores" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Mostrar incorporado" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Escala logarítmica em X" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Escala logarítmica em Y" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Opções do Ficheiro" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Gravar o gráfico num ficheiro" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Tipo de ficheiro" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Detectar pelo nome do ficheiro" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"O Qalculate! não é uma réplica em 'software' da sua calculadora " +"barata normal. O Qalculate! tenta tirar partido completo da interface " +"superior, das potencialidades e da flexibilidade dos computadores modernos. " +"O foco de atenção no Qalculate! é a introdução da expressão. Em vez de " +"introduzir cada número numa expressão matemática separada, poderá introduzir " +"directamente a expressão inteira e depois modificá-la. A interpretação das " +"expressões é flexível e tolerante a erros e, caso faça algo de errado à " +"mesma, o Qalculate! dizer-lhe-á qualquer coisa. Nem todas as expressões " +"solúveis são de facto erros. O Qalculate! irá simplificar ao máximo e " +"responder com uma expressão. Para além dos números e operações aritméticas, " +"uma expressão poderá conter uma combinação arbitrária de variáveis, unidades " +"e funções." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Se e como são convertidas automaticamente as unidades. Se for verdadeiro, " +"converte para as unidades SI mais adequadas (a quantidade mínima de " +"unidades)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Unidade angular predefinida para as funções trigonométricas." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "A base dos números processados e avaliados." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" +"Se o resultado da avaliação deverá ser simplificado ou decomposto em " +"factores." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Se os números racionais serão apresentados como decimais, como uma fracção " +"ou como algo misto." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Mostrar que a série de algarismos de um número continua para sempre com " +"reticências, em vez de arredondar (p.ex., 2/3 aparece como 0,666666... em " +"vez de 0,666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Usar todos os prefixos decimais SI. Se for falso, os prefixos que não sejam " +"um múltiplo dos milhares (centi, deci, deca, hecto) não serão usados " +"automaticamente." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Se for verdadeiro, os expoentes negativos serão usados em vez da divisão (p." +"ex., 5/x^2 fica 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Apresentação numérica." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Se for verdadeiro, os gráficos serão apresentados dentro da folha de " +"trabalho. Caso contrário, irão aparecer numa janela separada." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Se deverão ser usadas cores nos gráficos." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Se deverá desenhar uma grelha." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Se deverá desenhar um contorno completo à volta do gráfico." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "A espessura das linhas em pixels." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "O número de passos da interpolação a usar no gráfico." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "O modo de suavização dos gráficos." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "O estilo dos gráficos." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "A posição da legenda dos gráficos." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" +"O Qalculate diz que não consegue imprimir. Será que o 'gnuplot' está " +"instalado?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "falta o %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "O %1 deverá ser um número." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "O %1 deverá ser um número inteiro." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "O %1 deverá ser um valor booleano." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "Opção inválida para o %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "foram encontradas várias expressões num comando do gráfico (%1 e %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "ERRO" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "ATENÇÃO" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Não existe nenhuma função, variável ou unidade com o nome indicado." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Função: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Interface do gráfico" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Desenha o gráfico de uma ou mais funções de forma incorporada ou numa janela " +"separada." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "expressão" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "opção" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "valor" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "inteiro" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "booleano" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "número" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "por omissão: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "O nome da função" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Legenda do título" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "Legenda do eixo dos X" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Legenda do eixo dos Y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"A imagem onde gravar o gráfico. Se vazia, mostra o gráfico numa janela do " +"ecrã. Se 'inline=true', a imagem é apresentada independentemente desta opção." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"O tipo de imagem com que gravar. Poderá ser um dos seguintes valores: auto, " +"png, ps, eps, latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" +"Configure como 'true' (verdadeiro) para um gráfico a cores; caso contrário, " +"será monocromático." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "O valor mínimo do eixo dos X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "O valor máximo do eixo dos X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Se deve ser usada uma escala logarítmica para o eixo dos X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Se deve ser usada uma escala logarítmica para o eixo dos Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "A base logarítmica do eixo dos X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "A base logarítmica do eixo dos Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Se deve ser mostrada uma grelha no gráfico." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Se o gráfico deverá ser rodeado para um contorno em todos os lados (não só " +"no eixo)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "A espessura das linhas." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Onde é que deverá ser colocada a legenda do gráfico. Deverá ser um dos " +"seguintes valores: none, top_left, top_right, bottom_left, bottom_right, " +"below, outside" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"A suavização do gráfico. Poderá ser um dos seguintes valores: none, unique, " +"csplines, bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"O estilo do gráfico. Poderá ser um dos seguintes valores: lines, points, " +"points_lines, boxes, histogram, steps, candlesticks, dots" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Usar uma escala no segundo eixo dos X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Usar uma escala no segundo eixo dos Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" +"Se o gráfico deverá ser desenhado incorporado, em vez de numa janela nova." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "A distância entre dois pontos da interpolação. Veja também os passos." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "O número de pontos da interpolação. Veja também o passo." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "O nome da variável X. Deverá ser uma variável desconhecida" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Gravar as variáveis num ficheiro" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Grava todas as variáveis definidas de momento num ficheiro. Poderão ser " +"actualizadas com o %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "ficheiro" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "ficheiro: o ficheiro onde gravar" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Carregar as variáveis de um ficheiro" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" +"Carregar as variáveis de um ficheiro que foi criado anteriormente por %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "ficheiro: o ficheiro a carregar" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Base numérica:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Formato das fracções:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Decimal" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Exacta" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Fraccionária" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Mista" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Apresentação numérica:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Pura" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Notação Científica" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Precisão" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Indicar as séries infinitas:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Usar todos os prefixos SI:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Usar os expoentes negativos:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Avaliar" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Converter para as melhores unidades SI:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radianos" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Graus" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Grados" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Modo da Estrutura:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Simplificar" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Factorizar" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Unidade dos ângulos:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Desenho do Gráfico" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Desenhar os gráficos incorporados:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Mostrar os contornos completos:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Espessura das linhas:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Taxa de amostragem:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Modo de Suavização:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Curvas Naturais Cúbicas" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Passos" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Posição da Legenda:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Gráficos a Cores:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Mostrar a grelha:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Estilo do Gráfico:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Modificar o Item" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Adicionar um Novo Item" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "O nome não pode estar em branco." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Adicionar a documentação local" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Obter Nova Documentação" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Obter a documentação adicional" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "O ficheiro de ajuda comprimido do Qt não é válido." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Documentação já importada" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Modificar" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Apagar" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Por favor, desinstale isto com o GHNS." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Instalar os Ficheiros de Documentação Adicional" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Nome" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Localização" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Adicionar" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Ícone:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Seleccionar um ícone" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Nome:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Introduzir um nome" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Seleccionar um nome..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Localização:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Seleccionar um ficheiro de Ajuda do Qt..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Seleccionar um ficheiro de Ajuda do Qt..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" +"

      Sistema de Ajuda do R: o help() e o ?:


      A função " +"help() e operador de ajuda ? no R dão acesso às páginas de " +"documentação das funções, conjuntos de dados e outros objectos do R, tanto " +"para os pacotes na distribuição-padrão do R como para os pacotes de outros " +"colaboradores.

      Para aceder à documentação da função lm (modelo " +"linear), por exemplo, introduza o comando help(lm) ou " +"help(\"lm\"), ou ainda ?lm ou ?\"lm\" (i.e., as aspas " +"são opcionais).

      Para aceder à ajuda de uma dada função num pacote que " +"não esteja carregado de momento, indique adicionalmente o nome do pacote: " +"Por exemplo, para obter a documentação da função rlm() (modelo linear " +"robusto) no pacote MASS, use help(rlm, package=\"MASS\").

      Os " +"nomes-padrão no R consistem em letras maiúsculas e minúsculas, numerais " +"(0-9), sublinhados (_) e pontos (.), e devem começar por uma letra ou por um " +"ponto. Para obter ajuda sobre um objecto com um nome fora do padrão (como o " +"operador de ajuda ?), o nome deverá estar entre aspas: por exemplo, " +"help('?') ou ?\"?\".

      Também poderá usar a função " +"help() para aceder a informações sobre um pacote na sua biblioteca — " +"por exemplo, help(package=\"MASS\") — que mostra um índice das " +"páginas de ajuda disponíveis para o pacote, em conjunto com algumas outras " +"informações.

      As páginas de ajuda das funções normalmente incluem uma " +"secção com exemplos executáveis que ilustram como funcionam as funções. " +"Poderá executar estes exemplos na sessão actual do R, através do comando " +"example(): p.ex., example(lm)." + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"O R é uma linguagem e um ambiente para a computação e gráficos " +"estatísticos, de forma semelhante à da linguagem e ambiente S.
      Oferece " +"uma grande variedade de técnicas gráficas e estatísticas (modelação linear e " +"não-linear, testes estatísticos clássicos, análises de séries temporais, " +"classificação, agrupamentos, ...), sendo também altamente extensível. A " +"linguagem S é normalmente o veículo de escolha para a investigação de " +"metodologias estatísticas, sendo que o R oferece uma rota 'open-source' para " +"participar nessa actividade." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Erro ao abrir o ficheiro %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "Ficheiro de programa em R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Erro ao Processar o Comando" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "URL para a documentação local do R" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Faça duplo-click para abrir a janela de selecção de ficheiros" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|Ficheiros de código em R (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"O Sage é um sistema de 'software' matemático livre e 'open-source', " +"licenciado segundo a GPL.
      Combina o poder de muitos pacotes 'open-" +"source' existentes com uma interface comum e baseada em Python." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Localização do executável Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Activar a Formatação em LaTeX para a infra-estrutura do Sage" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Resultado do %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"O último resultado foi:\n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Programa em Python (*.py);;|Programa em Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"A versão do Sage %1.%2 não é suportada. Por favor, actualize a sua " +"instalação para uma das versões suportadas, para que funcione com o Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Não foi possível determinar a versão do Sage. Por favor, verifique a sua " +"instalação e o resultado do 'sage -v'." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "O processo Sage estoirou ao avaliar esta expressão" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "O processo Sage estoirou" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "O processo Sage saiu ao avaliar esta expressão" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "O processo Sage saiu" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Não foi possível iniciar o Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "Formatação em LaTeX:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"O resultado em LaTeX do Sage nem sempre é correcto, pelo que a formatação em " +"LaTeX pode ser desactivada para uma melhor experiência" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"O Scilab é uma aplicação gratuita e multi-plataforma de computação " +"numérica e uma linguagem de programação numérica de alto nível.

      O Scilab " +"é distribuído segundo a licença CeCILL (compatível com a GPL)." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Localização do executável Scilab" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +";;Ficheiro de programa em Scilab (*.sce);;Ficheiro de funções em Scilab (*." +"sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "O ficheiro %1 já está aberto." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Abrir um ficheiro" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Transferir os Exemplos" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "Abrir &o Exemplo" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Ir para a área de trabalho anterior" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Ir para a área de trabalho seguinte" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Todos os ficheiros suportados (*.cws *ipynb);;Área de Trabalho do Cantor (*." +"cws);;Bloco de Notas do Jupyter (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Não foi Encontrada Nenhuma Infra-Estrutura

      \n" +"
      Poderia tentar:\n" +"
      • Mudar as opções na janela de configuração;
      • " +"
      • Instalar os pacotes para o seguinte programa:
      • %2
      " +msgstr[1] "" +"

      Não foi Encontrada Nenhuma Infra-Estrutura

      \n" +"
      Poderia tentar:\n" +"
      • Mudar as opções na janela de configuração;
      • " +"
      • Instalar os pacotes para um dos seguintes programas:
      • %2
      " +"
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Erro" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "A infra-estrutura %1 não está instalada" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"A infra-estrutura %1 está instalada, mas desactivada. Verifique por favor a " +"instalação e a configuração do Cantor" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sessão %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Não foi possível obter a componente do Cantor com o erro %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "A calcular..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Pronto" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Modificado" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "Estão abertas diversas área de trabalho por gravar. Deseja fechá-las?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Fechar o Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "O projecto actual foi modificado. Deseja gravá-lo?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Gravar o Projecto" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Formatação" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "A infra-estrutura que é usada por omissão" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Fazer o Processamento de Texto por Omissão" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Fazer o Realce de Sintaxe por Omissão" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Activar a Completação por omissão" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Activar a Numeração das Expressões por Omissão" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Animar as alterações na folha de cálculo por omissão" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Activa o desenho das expressões matemáticas dentro de $$..$$ nos itens de " +"Texto e Markdown por omissão (precisa de ter instalado o 'pdflatex')" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Reavaliar automaticamente os itens abaixo do actual" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Pedir a confirmação ao reiniciar a infra-estrutura" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Grava a formatação do texto formatado do TextEntry, quando gravar a folha de " +"trabalho no formato do Jupyter" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Usar o estilo antigo de colocação dos itens do Cantor" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Mostrar os erros de desenho de expressões matemáticas incorporadas" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Limite de linhas visíveis para o resultado de texto" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Tipo de letra hierárquico do capítulo" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Tamanho de letra hierárquico do capítulo" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Texto hierárquico do capítulo em itálico" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Texto hierárquico do capítulo em negrito" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Tipo de letra hierárquico do sub-capítulo" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Tamanho de letra hierárquico do sub-capítulo" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Texto hierárquico do sub-capítulo em itálico" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Texto hierárquico do sub-capítulo em negrito" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Tipo de letra hierárquico da secção" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Texto hierárquico da secção em itálico" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Texto hierárquico da secção em negrito" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Tipo de letra hierárquico da sub-secção" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Texto hierárquico da sub-secção em itálico" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Texto hierárquico da sub-secção em negrito" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Tipo de letra hierárquico do parágrafo" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Tamanho de letra hierárquico do parágrafo" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Texto hierárquico do parágrafo em negrito" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Tipo de letra hierárquico do sub-parágrafo" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Texto hierárquico do sub-parágrafo em itálico" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Texto hierárquico do sub-parágrafo em negrito" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Gravar em Texto Simples" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Exportar para LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Avaliar a Folha de Cálculo" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Ampliação" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Formatar com o LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Realce de Sintaxe" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Completação" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Números de Linha" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Animações" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Matemática Incorporada" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Reiniciar a Infra-Estrutura" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Avaliar o Item" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Inserir um Item de Comando" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Inserir um Item de Texto" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Inserir um Item de Markdown" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Inserir um Item de LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Inserir uma Quebra de Página" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Inserir uma Imagem" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Fechar Todos os Resultados" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Expandir Todos os Resultados" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Remover Todos os Resultados" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Remover o item actual" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Mostrar o Editor de Programas" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Mostrar a Completação" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Folha de Cálculo do Cantor (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Bloco de Notas do Jupyter (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Gravar como" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Gravar" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Todos os resultados dos cálculos disponíveis perder-se-ão. Deseja mesmo " +"reiniciar o %1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Reiniciar o %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Interromper" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Erro da Sessão: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "A inicialização terminou" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "A inicializar..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[apenas para leitura]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Deseja enviar a folha de trabalho actual para o servidor Web público?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Pergunta - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "A folha de cálculo não está gravada. Devê-lo-á fazer antes do envio." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Aviso - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Esta infra-estrutura não suporta os programas." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Editar" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Ver" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Folha de Trabalho" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Configuração" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Ficheiro" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Novo" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Painéis" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Configuração" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Cor de Fundo" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Predefinição" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Cor do Texto" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Tipo de Letra" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Negrito" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Itálico" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Aumentar o Tamanho" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Diminuir o Tamanho" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Seleccionar" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Repor a Predefinição" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Mostrar os Resultados" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Esconder os Resultados" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Mostrar a Ajuda" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Aparência" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Interrompido" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Barra de Pesquisa" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Procurar:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "Segui&nte" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "An&terior" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Substituir:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "Substitui&r" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Substituir &Tudo" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Procurar em:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Corresponder à capitalização" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Tipos de Letra Hierárquicos" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Tipo de Letra do Capítulo" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Tipo de Letra:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Tamanho da Letra:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Tipo de Letra do Sub-Capítulo" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Tipo de Letra da Secção" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Tipo de Letra da Sub-Secção" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Tipo de Letra do Parágrafo" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Tipo de Letra do Sub-Parágrafo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Capítulo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Sub-Capítulo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Secção" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Sub-Secção" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Parágrafo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Sub-Parágrafo" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Definir o Nível da Hierarquia" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Estilo de Linha Contínua" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Estilo de Linha Tracejada" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Estilo de Linha Pontilhada" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Estilo de Linha Traço-Ponto" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Estilo de Linha Traço-Ponto-Ponto" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Espessura da Linha" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Fino" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Média" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Grossa" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Cor da Linha" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Estilo da Linha" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Configurar a Imagem" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Faça duplo-click para configurar as definições da imagem" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Não é possível carregar a imagem %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Gravar o resultado da imagem" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Imagens (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Configuração da Imagem" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Abrir" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Tamanho da Área" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Largura" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Altura" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Antevisão" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Tamanho da Impressão" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Usar o Tamanho da Área" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Configuração da Imagem" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(auto)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Abrir o ficheiro da imagem" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Mostrar o código em LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Não foi indicada nenhuma localização para o executável %1. Por favor, " +"indique a localização correcta na configuração da aplicação e tente de novo." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"O ficheiro indicado '%1' para o executável %2 não existe. Por favor, indique " +"a localização correcta na configuração da aplicação e tente de novo." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"O ficheiro indicado '%1' não aponta para nenhum executável. Por favor, " +"indique a localização correcta na configuração da aplicação e tente de novo." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"O programa %1 não terminou a execução ao fim de %2 milisegundos durante o " +"teste de integração do gráfico." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" +"Não foi possível aceder ao ficheiro %1 durante o teste de integração do " +"gráfico." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" +"Não foi possível processar o resultado durante o teste de integração do " +"gráfico." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Localização do executável 'latex'" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Localização do executável 'dvips'" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Valor" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 bytes>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "De:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Até:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Título principal" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Escala das abcissas" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Escala das ordenadas" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Título do gráfico:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Este é um conteúdo do Jupyter não suportado dos tipos ('%1')" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"O processo %1 morreu de forma inesperada. Todos os resultados dos cálculos " +"perderam-se." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"O processo %1 morreu de forma inesperada com a mensagem \"%2\". Todos os " +"resultados dos cálculos perderam-se." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Você escolheu o suporte para o pacote gráfico %1, mas o suporte não pode ser " +"activado devido a requisitos em falta; como tal, a integração para este " +"pacote será desactivada. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Interface para KDE de aplicações matemáticas" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" +"Manutenção
      Migração para o Qt5/KF5, infra-estruturas do Scilab e Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "desenvolvimento" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Autoria original
      Manutenção (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Infra-estrutura do KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Infra-estrutura do Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Interface" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Ícone do Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Usar a infra-estrutura " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Os documentos a abrir." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Não foi possível aceder ao ficheiro %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Entrar no Modo de Edição" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Limpar os Anexos" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Erro Matemático do Cantor" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Não foi possível ler a imagem \"%1\". Erro \"%2\"" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Quebra de Página ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Ir para o conteúdo" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Procurar nas palavras-chave..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Procura no texto da página de documentação actual" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Repor o nível de ampliação em 100%" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Fechar" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Ir para a ocorrência seguinte" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Ir para a ocorrência anterior" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Distinguir capitalização" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "O ficheiro foi transferido com sucesso para as Transferências." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Transferência com Sucesso" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Ficheiros do Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Ficheiros do Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Todos os ficheiros suportados" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Todos os ficheiros" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Nome:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Valor:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Adicionar uma Nova Variável" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Carregar as Variáveis" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Gravar as Variáveis" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Remover as Variáveis" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Procurar/Filtrar" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Distinguir Capitalização" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Corresponder à Palavra Completa" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Tem a certeza que deseja remover todas as variáveis?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Carregar um ficheiro" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Gravar o resultado" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Remover o resultado" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Não foi possível encontrar um componente de edição de texto para o KDE;\n" +"verifique por favor a sua instalação do KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Editor de Programas" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Editor de Programas - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Não encontrado" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Atingiu-se o início" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Atingiu-se o fim" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Foi substituída %1 instância" +msgstr[1] "Foram substituídas %1 instâncias" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Comandos" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Resultados" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Erros" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Texto" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Código em LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "Arranque:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" +"Cria uma nova folha de trabalho para o sistema de infra-estrutura " +"seleccionado. Se não estiver seleccionado nenhum, é pedido ao utilizador " +"para escolher o sistema a usar no arranque." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Infra-Estrutura por Omissão:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Folha de trabalho:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" +"Activa a formatação em LaTeX para os resultados dos cálculos, se for " +"suportada pela infra-estrutura usada" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "Formatação em LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Activar o realce de sintaxe" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Realce de sintaxe" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "Activar a completação da sintaxe" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Mostrar os números de linha" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Números de linha" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Activar os efeitos de animação na folha de trabalho" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" +"Se estiver activa, os elementos de texto são alinhados ao contorno da folha " +"de trabalho e não ao contorno da linha de comandos" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "Não indentar os elementos de texto" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Usar a formatação do elementos de texto quando gravar no formato do Jupyter" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "Avaliação:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"Se estiver activa, será pedida ao utilizador a confirmação ao reiniciar a " +"infra-estrutura" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" +"Se estiver activa, todos os elementos abaixo do actual serão avaliados " +"automaticamente" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "Reavaliar automaticamente os elementos" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Número de linhas no resultado (0 para sem limite):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"O número máximo de linhas visíveis no resultado de um item de comando. Use o " +"valor 0 para trabalhar sem limitações." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" +"Activar a formatação em LaTeX para as expressões matemáticas nos itens em " +"Markdown" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "Expressões matemáticas com o LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "Notificar sobre erros de desenho das expressões matemáticas" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Procurar…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Destinos das Células em Bruto" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Adicionar um destino personalizado" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Converter para um Item de Texto" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Converter para uma Célula em Bruto" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Tipo MIME do destino:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Copiar o resultado" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Mostrar a Representação" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Mostrar o Código" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Mostrar o Código HTML" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Mostrar a Alternativa Simples" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Mostrar o HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Mostrar o HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" +"Não é possível representar o ficheiro EPS. Poderá necessitar de pacotes " +"adicionais" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Gravar o resultado do texto" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "Ficheiros de Texto (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Não é possível gravar o ficheiro %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Não é possível gravar o ficheiro." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Ocorreu um erro ao gravar o ficheiro %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"No modo apenas para leitura, o Cantor não conseguiu garantir que a " +"exportação fosse válida para o %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Ocorreu um erro ao carregar a folha 'latex.xsl'" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Não foi possível aceder ao ficheiro %1." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Abrir um Ficheiro" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Não foi possível aceder ao ficheiro seleccionado para leitura." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" +"O ficheiro seleccionado não é um ficheiro de projecto do Cantor ou Jupyter " +"válido." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" +"O ficheiro seleccionado não é um ficheiro de projecto do Cantor válido." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Esta folha de trabalho foi criada com o Python2, o qual já não é mais " +"suportado. Será usado o Python3." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python2 não mais suportado" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"Não foi encontrada a infra-estrutura %1. A edição e execução dos elementos " +"não é possível." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Existem alguns problemas com a infra-estrutura %1;\n" +"verifique por favor a sua configuração ou instale os pacotes necessários.\n" +"Só poderá ver esta folha de trabalho." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"O Cantor não suporta a importação de blocos de notas do Junyper com uma " +"versão inferior à 4.5 (foi detectada a %1.%2)." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"O Cantor não suporta a importação de blocos de notas do Junyper com uma " +"versão superior à 4.5 (foi detectada a %1.%2)." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Este bloco de notas foi criado com o Python2, que não é mais suportado. Será " +"usado o Python3." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "um objecto com as chaves: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "valor não-objecto em JSON" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" +"foram detectados dados incorrectos (%1) que não correspondem a uma célula do " +"Jupyter" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "O ficheiro não é um bloco de notas do Jupyter válido" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Esquema inválido de bloco de notas do Jupyter: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Converter Para" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Comando" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Imagem" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Quebra de Página" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Linha Horizontal" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Item da Hierarquia" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Inserir Depois" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Inserir Antes" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Inserir" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Ampliar" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Reduzir" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Tamanho Original" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Subir os Itens" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Descer os Itens" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Avaliar os Itens" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Remover os Itens" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Fechar os Resultados do Item de Comando" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Expandir os Resultados do Item de Comando" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Remover os Resultados do Item de Comando" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Excluir o Item de Comando da Execução" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Adicionar um Item de Comando à Execução" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "&Cor do Texto..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Cor" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Realce do &Texto..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "Tipo de &Letra" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "&Tamanho da Letra" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Negrito" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Itálico" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "S&ublinhado" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Traçado" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "A&linhar à Esquerda" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Esquerda" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Alinhar ao &Centro" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Centro" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Alinhar à Di&reita" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Direita" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Justificar" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Justificar" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"Esta acção irá remover todos os resultados sem a possibilidade de cancelar. " +"Tem a certeza?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Remover todos os resultados" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Branco" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Preto" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Vermelho-Escuro" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Vermelho" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Vermelho Claro" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Verde Escuro" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Verde" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Verde Claro" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Azul Escuro" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Azul" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Azul Claro" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Amarelo Escuro" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Amarelo" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Amarelo Claro" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Cíano Escuro" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Cíano" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Cíano Claro" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Magenta Escuro" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Magenta Claro" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Laranja Escuro" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Laranja" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Laranja Claro" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Cinzento Escuro" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Cinzento" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Cinzento Claro" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Subir" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Descer" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Tem a certeza que deseja remover este item?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Remover o Item" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Arrastar o Item" diff --git a/po/pt/docs/cantor/index.docbook b/po/pt/docs/cantor/index.docbook new file mode 100644 index 0000000..7e38c08 --- /dev/null +++ b/po/pt/docs/cantor/index.docbook @@ -0,0 +1,1410 @@ + +ATEX"> + + +]> + + + +O Manual do &cantor; + + + Alexander Rieder alexanderrieder@gmail.com +JoséPires
      zepires@gmail.com
      Tradução
      +
      + + +2009 +Alexander Rieder + +&FDLNotice; + +2016-08-25 +Aplicações 16.12 + + +O &cantor; é uma aplicação que pretende fornecer uma área de trabalho agradável para outros pacotes matemáticos de 'Software' Livre. + + + +KDE +kdeedu +matemática +matemática +Cantor +Julia +Lua +Maxima +Octave +Python +Qalculate +R +Sage +Scilab + + +
      + + +Introdução + +O &cantor; é uma aplicação que lhe permite usar as suas aplicações matemáticas favoritas dentro de uma interface de área de trabalho agradável e integrada no &kde;. Oferece janelas de assistência para as tarefas mais comuns e permite-lhe partilhar as suas folhas de cálculo com os outros. + + + +Usar o &cantor; + +Imagem: +Aqui está uma imagem do &cantor; + + + + + + Imagem + + + + + + + +Funcionalidades do &cantor; + + Uma área de trabalho agradável para avaliar expressões. + Área para visualizar os gráficos dos resultados na área de trabalho. + Uma estrutura simples e baseada em 'plugins' para adicionar diferentes infra-estruturas. + Integração do GetHotNewStuff para obter folhas de cálculo de exemplo (ou enviá-las.) + Formatação das fórmulas matemáticas com o &latex;. + Realce de sintaxe ciente da infra-estrutura. + Janelas de assistência baseadas em 'plugins' para as tarefas mais comuns, como a integração de uma função ou a introdução de uma matriz. + + + + +As infra-estruturas do &cantor; +O &cantor; oferece-lhe diversas opções para a infra-estrutura que poderá usar à vontade. A sua escolha deverá depender da tarefa que pretende efectuar. +De momento, estão disponíveis as seguintes infra-estruturas: + + Sage: + + O Sage é um sistema de 'software' matemático livre e 'open-source', licenciado segundo a GPL. Combina o poder de muitos pacotes 'open-source' existentes com uma interface comum e baseada em Python. Veja mais informações em http://sagemath.org. + + + + Maxima: + + O Maxima é um sistema para a manipulação de expressões simbólicas e numéricas, incluindo a derivação, a integração, as séries de Taylor, as transformadas de Laplace, as equações diferenciais ordinárias, os sistemas de equações lineares, os polinómios e os conjuntos, listas, vectores, matrizes e tensores. O Maxima oferece resultados numéricos de alta precisão, usando fracções exactas, inteiros de precisão arbitrária e números de vírgula flutuante de precisão variável. O Maxima pode desenhar gráficos das funções e de dados em duas e três dimensões. Veja o http://maxima.sourceforge.net para obter mais informações. + + + + R: + + O R é uma linguagem e um ambiente para a computação e gráficos estatísticos, de forma semelhante à da linguagem e ambiente S. Oferece uma grande variedade de técnicas gráficas e estatísticas (modelação linear e não-linear, testes estatísticos clássicos, análises de séries temporais, classificação, agrupamentos, ...), sendo também altamente extensível. A linguagem S é normalmente o veículo de escolha para a investigação de metodologias estatísticas, sendo que o R oferece uma rota 'open-source' para participar nessa actividade. Veja mais informações em http://www.r-project.org. + + + + Julia: + + O Julia é uma linguagem de programação dinâmica de alto nível e alta performance para a computação técnica, com uma sintaxe que é familiar para os utilizadores de outros ambientes de computação técnica. Oferece um compilador sofisticado, a execução paralela distribuída, precisão numérica e uma biblioteca abrangente de funções matemáticas. Veja a documentação do Julia para saber mais informações. + + + + &kalgebra;: + + O &kalgebra; é uma calculadora gráfica, baseada em MathML, que vem com o projecto de educação do &kde;. Veja mais informações em http://edu.kde.org/kalgebra/. + + + + Qalculate!: + + O Qalculate! não é uma réplica em 'software' da sua calculadora barata normal. O Qalculate! tenta tirar partido completo da interface superior, das potencialidades e da flexibilidade dos computadores modernos. O foco de atenção no Qalculate! é a introdução da expressão. Em vez de introduzir cada número numa expressão matemática separada, poderá introduzir directamente a expressão inteira e depois modificá-la. A interpretação das expressões é flexível e tolerante a erros e, caso faça algo de errado à mesma, o Qalculate! dizer-lhe-á qualquer coisa. Nem todas as expressões solúveis são de facto erros. O Qalculate! irá simplificar ao máximo e responder com uma expressão. Para além dos números e operações aritméticas, uma expressão poderá conter uma combinação arbitrária de variáveis, unidades e funções. Veja mais informações em http://qalculate.sourceforge.net/. + + + + Python2 e Python3: + + O Python é uma notável linguagem de programação dinâmica e poderosa que é usada numa grande variedade de domínios aplicacionais. Existem diversos pacotes de Python para a programação cientifica. + O Python está distribuído segundo a licença da Python Software Foundation (compatível com a GPL). Veja mais informações na página oficial. + + Esta infra-estrutura adiciona um item adicional ao menu principal do &cantor;, o Pacote. O único item deste menu é o PacoteImportar um Pacote. Este item pode ser usado para importar pacotes de Python para a área de trabalho. + + + + + Scilab: + + O Scilab é um pacote de computação numérica livre e multi-plataforma, assim como uma linguagem de programação numérica. + O Scilab está distribuído segundo a licença CeCILL (compatível com a GPL). Veja mais informações em http://www.scilab.org/. + + É necessário ter instalado o Scilab na versão 5.5 ou superior no seu sistema para que esta infra-estrutura possa ser usada. + + + + + Octave: + + O Octave da &GNU; é uma linguagem de alto-nível, destinada principalmente para cálculos numéricos. Oferece uma interface conveniente por linha de comandos para resolver problemas lineares e não-lineares de forma numérica e para fazer outras experiências matemáticas, usando uma linguagem que é compatível de um modo geral com o MATLAB. Para mais informações, veja em http://www.gnu.org/software/octave/. + + + + Lua: + + O Lua é uma linguagem de programação rápida e eleve, com uma sintaxe procedimental simples. Existem diversas bibliotecas em Lua destinadas à matemática e à ciência. + Veja mais informações em http://www.lua.org/. + Esta infra-estrutura suporta o luajit 2. + + + + + + + +O Espaço de Trabalho do &cantor; + + + Imagem do Espaço de Trabalho do &cantor; + + + + + + Imagem do Espaço de Trabalho do &cantor; + + + + +A interface da folha de cálculo do &cantor; consiste em três partes: + A barra de páginas, onde poderá circular entre as folhas de cálculo abertas. + Um painel de ajuda, onde poderá obter ajuda sobre um determinado comando com a sintaxe "? comando". + Um painel de Gestão de Variáveis, onde poderá ver uma lista com todas as variáveis disponíveis na folha de trabalho actual. O painel de Ajuda e de Gestão de Variáveis serão apresentados como páginas na barra lateral de uma janela do &cantor;. O gestor de variáveis poderá ser usado apenas para as infra-estruturas do Maxima (se estiver activo na página ConfiguraçãoConfigurar o &cantor;... Maxima), o &kalgebra;, o Octave, o Python2, o Python3, o Qalculate e o Scilab. + A folha de cálculo em si. + + + +A Folha de Cálculo +A folha de cálculo é a área básica para trabalhar com o &cantor;. Nela, poderá introduzir as expressões, deixar que a infra-estrutura faça os seus cálculos e olhar para os resultados. Os comandos que as folhas de cálculo aceitam dependem da infra-estrutura escolhida, pelo que deverá aprender a Documentação apropriada (o botão Mostrar a Ajuda leva-o lá directamente). Se souber o comando, mas se necessitar de informações adicionais, poderá escrever "? comando", para que apareça uma ajuda de contexto à direita da área de trabalho. Se quiser ver folhas de exemplo, poderá ir à opção Obter Folhas de Exemplo no menu Ficheiro e obter as folhas que outros utilizadores tiverem publicado. +Para controlar cada elemento de comando na folha de trabalho, poderá usar os botões de controlo que aparecem à direita da folha de trabalho, ao passar o cursor do rato sobre o campo de um elemento. Existem três acções básicas para cada elemento: Avaliar o Elemento, para actualizar o resultado do cálculo do elemento, Arrastar o Elemento para passar o elemento para outro local da folha de trabalho actual e Remover o Elemento para retirar o elemento da folha de trabalho actual. +As definições do tipo de letra e alinhamento das folhas de trabalho poderão ser alterados com a barra de ferramentas por cima da folha de trabalho. + + Configuração + O menu de Configuração permite-lhe alterar algumas opções da aparência da sua folha de cálculo actual. + + + Formatação com o &latex; + + Esta opção muda a forma como os resultados são apresentados a si. Se estiver activada, irá passar o resultado pelo sistema &latex;, de modo a produzir fórmulas apelativas visualmente. Por exemplo, o 3*x^2*sqrt(2)*x+2/3 transforma-se em + + + + 3*x^2*sqrt(2)*x+2/3 + + + + + + Realce de Sintaxe + + O Realce de Sintaxe aumenta a legibilidade do código, realçando as palavras-chave ou os parêntesis correspondentes com cores diferentes. + + + + Completação + + Quando esta opção estiver activa, o &cantor; mostrar-lhe-á completações possíveis para o comando que estiver a escrever de momento, ao usar a tecla Tab. Se só existir uma escolha possível, irá inserir o resto do comando para si. + + + + Números de Linha + + Esta opção controla se as diferentes expressões deverão ter um número à frente, de modo que, se possível, possa por exemplo no Maxima voltar a invocar os resultados mais antigos com o comando %O1. + + + + Avaliar a Folha de Cálculo + + Esta definição controla se as diferentes animações serão usadas para realçar as alterações de uma folha de cálculo. + + + + + + + +As janelas dos assistentes +Existem diversas janelas assistentes implementadas no &cantor; que aliviam o esforço de algumas operações básicas. +Estas janelas poderão ser acedidas com os itens de menu principais. Cada infra-estrutura tem as suas próprias janelas assistentes. + +A janela para Criar uma Matriz + + Imagem da janela de criação de matrizes do &cantor; + + + + + + Imagem da janela de criação de matrizes do &cantor; + + + +Esta janela pode ser usada para introduzir matrizes. Poderá definir as dimensões da matriz, bem como os seus elementos. +É possível navegar rapidamente entre células, durante a introdução, usando para tal a tecla . + + +Janela de operações com matrizes + + Imagem da janela de introdução de matrizes no &cantor; + + + + + + Imagem da janela de introdução de matrizes no &cantor; + + + +Esta janela permite introduzir o nome da matriz para calcular os seus vectores de Eigen, os valores de Eigen ou para inverter a mesma. O valor por omissão (%) é usada para referenciar o resultado anterior do cálculo ou introdução de dados. + + +Janela de derivação + + Imagem da janela de derivação do &cantor; + + + + + + Imagem da janela de derivação do &cantor; + + + +Esta janela permite a introdução da expressão da função a derivar, o nome da variável e a ordem da derivada. + + +Janela de integração + + Imagem da janela de integração do &cantor; + + + + + + Imagem da janela de integração do &cantor; + + + +Esta janela permite a introdução da expressão da função a integrar, o nome da variável e os limites da integração (para o integral em concreto). + + +Janela de resolução de equações + + Imagem da janela de resolução de equações do &cantor; + + + + + + Imagem da janela de resolução de equações do &cantor; + + + +Esta janela permite a introdução das equações a resolver (cada equação numa linha em separado) e das variáveis a determinar (separadas por vírgulas). + + +Janela de importação de pacotes + + Imagem da janela de importação de pacotes do &cantor; + + + + + + Imagem da janela de importação de pacotes do &cantor; + + + +Esta janela permite a introdução do nome do pacote a importar (⪚ numpy no Python). + + +Janela do gráfico + + Imagem da janela de gráficos do &cantor; (página de Funções) + + + + + + Imagem da janela de gráficos do &cantor; (página de Funções) + + + +As opções desta janela são separadas em dois grupos, usando tabulações. A página de Funções permite a introdução das funções a desenhar. +Para introduzir uma nova função, carregue no botão Adicionar. Faça duplo-click sobre a célula do Título e introduza o mesmo; depois faça duplo-click sobre a célula da Expressão e introduza a expressão da função. + + Imagem da janela de gráficos do &cantor; (página de Opções) + + + + + + Imagem da janela de gráficos do &cantor; (página de Opções) + + + +A página de Opções é usada para definir as opções do gráfico e das legendas. Poderá afinar quase todas as opções do gráfico para obter a aparência agradável da sua imagem. + + +Janela do gráfico em 2D + + Imagem da janela de gráficos em 2D do &cantor; + + + + + + Imagem da janela de gráficos em 2D do &cantor; + + + +Esta janela permite a introdução da expressão da função, da sua variável e dos limites para essa variável. + + +Janela do gráfico em 3D + + Imagem da janela de gráficos em 3D do &cantor; + + + + + + Imagem da janela de gráficos em 3D do &cantor; + + + +Esta janela permite a introdução da expressão da função, das suas variáveis e dos limites para essas variáveis. + + + + + +Referência de Comandos + + +A janela principal do &cantor; + +O &cantor; tem os itens de menu comuns do &kde;; para mais informações, leia o capítulo do Menu dos Fundamentos do &kde;. + +Por baixo, encontra-se a lista dos itens adicionais ou especiais do menu do &cantor;. Lembre-se que alguns menus só aparecem nas infra-estruturas que tenham uma implementação correspondente. + + +O Menu Ficheiro + + + + &Ctrl;N Ficheiro Novo +Cria uma nova folha de trabalho com a infra-estrutura predefinida. + + +Ficheiro Novo Infra-Estrutura +Cria uma nova folha de trabalho com a infra-estrutura escolhida. + + +Ficheiro Obter uma Folha de Exemplo +Abre a janela para obter exemplos enviados por outros utilizadores do &cantor; com o GetHotNewStuff. + + +Ficheiro Abrir um Exemplo +Abre a janela para escolher um exemplo a carregar. Os exemplos deverão ser transferidos com a opção Ficheiro Obter uma Folha de Trabalho de Exemplo de antemão. + + +Ficheiro Gravar Como Texto Simples +Permite gravar a folha de trabalho actual como um documento em texto simples. + + +Ficheiro Exportar para LaTeX +Permite gravar a folha de trabalho actual como um documento em &latex;. + + +Ficheiro Publicar a Folha de Trabalho +Abre a janela para publicar a sua folha de trabalho actual e disponibilizá-la para os outros utilizadores do &cantor; através do GetHotNewStuff. + + +Ficheiro Executar o Programa +Permite carregar e executar os programas em lote da infra-estrutura actual. + + + + + + + +O Menu Ver + + + + &Ctrl;+ Ver Ampliar +Amplia a folha de trabalho actual em 10%. + + + &Ctrl;- Ver Reduzir +Reduz a folha de trabalho actual em 10%. + + +Ver Mostrar o Editor de Programas +Abre a janela de edição de programas em lote para a infra-estrutura actual. + + +Ver Painéis Ajuda +Activa ou desactiva a visibilidade da barra de Ajuda na barra lateral. + + +Ver Painéis Gestor de Variáveis +Activa ou desactiva a visibilidade da barra de Gestão de Variáveis na barra lateral. + + + + + + +O Menu Folha de Trabalho + + + +Folha de Trabalho Avaliar a Folha de Trabalho +Despoleta a avaliação da folha de trabalho por inteiro. + + + &Shift;Return Folha de Trabalho Avaliar o Item +Despoleta a avaliação do item actual. + + + &Ctrl;Return Folha de Trabalho Inserir um Item de Comando +Introduz um novo item de comando abaixo da posição actual do cursor. + + +Folha de Trabalho Inserir um Item de Texto +Introduz um novo item de texto abaixo da posição actual do cursor. + + +Folha de Trabalho Inserir um Item de LaTeX +Introduz um novo item de LaTeX abaixo da posição actual do cursor. + + +Folha de Trabalho Inserir uma Quebra de Página +Introduz uma quebra de página abaixo da posição actual do cursor. + + + &Shift;Del Folha de Trabalho Remover o Item Actual +Remove o item actual da folha de trabalho. + + + + + + +O Menu de Álgebra Linear + + + +Álgebra Linear Criar uma Matriz +Abre a janela assistente de criação de matrizes. + + +Álgebra Linear Calcular os Valores de Eigen +Abre a janela assistente de introdução do nome da matriz para calcular os seus valores de Eigen e as dimensões das multiplicidades dos valores de Eigen na ordem correspondente. + + +Álgebra Linear Calcular os Vectores de Eigen +Abre a janela assistente de introdução do nome da matriz para calcular os seus valores de Eigen, as dimensões das multiplicidades dos valores e vectores de Eigen na ordem correspondente. + + +Álgebra Linear Inverter a Matriz +Abre a janela assistente de introdução do nome da matriz para descobrir a matriz inversa. + + + + + + +O Menu Calcular + + + +Calcular Derivar +Abre a janela dos parâmetros de derivação. + + +Calcular Integrar +Abre a janela dos parâmetros de integração. + + +Calcular Resolver equações +Abre a janela de introdução de parâmetros para resolver as equações lineares e não-lineares. + + + + + + +O Menu Pacote + + + +Pacote Importar um Pacote +Abre a janela de importação de pacotes. + + + + + + +O Menu Gráfico + + + +Gráfico Gráfico +Abre a janela de parâmetros do gráfico. + + +Gráfico Gráfico 2D +Abre a janela de parâmetros do gráfico. + + +Gráfico Gráfico 3D +Abre a janela de parâmetros do gráfico. + + + + + + +Os Menus de Configuração e Ajuda +O &cantor; tem os itens de menu Configuração e Ajuda comuns do &kde;; para mais informações, leia as secções dos menus Configuração e Ajuda dos Fundamentos do &kde;. + + + + + + + +Perguntas e Respostas + + + + O Item do Menu Formatação com o LaTeX não está disponível + Nem todas as infra-estruturas suportam todas as opções. A versão actual suporta o resultado em &latex; para as infra-estruturas Maxima, Qalculate! e Sage. + + + Instalei o Sage/Maxima ou outro CAS, mas a infra-estrutura apropriada não aparece. + + Uma explicação possível é que o &cantor; não tenha detectado a localização correctamente. Vá à janela em ConfiguraçãoConfigurar o &kappname;... e mude a Localização da aplicação apropriada na página da infra-estrutura. + + + + Que nome mais estranho - o que é que tem a ver com matemática? + O &cantor; vem do matemático Alemão Georg Cantor, o criador da teoria dos conjuntos. + + + + + + +Créditos e Licença + +&cantor; +Programa com 'copyright' 2009-2011 de Alexander Rieder alexanderrieder@gmail.com + +Documentação com 'copyright' © 2009-2011 de Alexander Rieder alexanderrieder@gmail.com + +Tradução de José Nuno Pires zepires@gmail.com +&underFDL; &underGPL; + +&documentation.index; +
      + + diff --git a/po/pt_BR/cantor.po b/po/pt_BR/cantor.po new file mode 100644 index 0000000..63845ee --- /dev/null +++ b/po/pt_BR/cantor.po @@ -0,0 +1,5048 @@ +# Translation of cantor.po to Brazilian Portuguese +# Copyright (C) 2009-2020 This file is copyright: +# This file is distributed under the same license as the cantor package. +# +# Luiz Fernando Ranghetti , 2009, 2010, 2011, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023. +# André Marcelo Alvarenga , 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2018, 2019, 2020. +# Aracele Torres , 2010, 2011. +# Marcus Gama , 2011. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2023-01-16 23:37-0300\n" +"Last-Translator: Luiz Fernando Ranghetti \n" +"Language-Team: Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 21.12.3\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Luiz Fernando Ranghetti, André Marcelo Alvarenga" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "elchevive@opensuse.org, alvarenga@kde.org" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pausar" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Iniciar" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Parar" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Salvar resultado da animação" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Animações (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Gráficos avançados" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Gráfico" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Expressão:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Opções adicionais:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Gráfico" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Opção ativa" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Calcular" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Derivada" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variável:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Tempos: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Pacote" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importar pacote" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Pacote:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integral" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Limite inferior:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Limite superior:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "integral definida" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "Álgebra &linear" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Criar matriz" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Colunas:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Linhas:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Calcular os valores de Eigen" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matriz:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Calcular os vetores de Eigen" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Inverter matriz" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Gráfico em 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variável" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Nome" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Mínimo:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Máximo:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Gráfico em 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1ª variável" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2ª variável" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Executar script" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Resolver equações" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Equações:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variáveis:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Selecionar a infraestrutura" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Versão recomendada: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Consulte %2 para mais " +"informações.
      " + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Alguns requisitos não foram cumpridos: %1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Usar esta infraestrutura por padrão" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia é uma linguagem de programação dinâmica de alto nível e alta " +"performance, para a computação técnica, com uma sintaxe familiar aos " +"usuários de outros ambientes de computação técnica. Oferece um compilador " +"sofisticado, execução distribuída em paralelo, precisão numérica e uma " +"extensa biblioteca de funções matemáticas." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"O caminho do Julia indicado na configuração do aplicativo deverá apontar " +"diretamente para o executável. Não é permitido usar links simbólicos. " +"Indique o caminho correto na configuração do aplicativo e tente novamente." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"O Cantor não conseguiu determinar a versão do Julia para o %1. Defina o " +"caminho correto do executável Julia (não é permitido usar links simbólicos) " +"e tente novamente." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Você está tentando usar o Cantor com o Julia v%1.%2.%3. Esta versão do " +"Cantor foi compilada com suporte para o Julia v%4.%5.%6. Aponte para esta " +"versão do Julia ou recompile o Cantor com a versão %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Caminho do REPL nativo do Julia" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Habilitar o gerenciamento de variáveis" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Integrar gráficos na planilha" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Pacote gráfico para o assistente de gráfico" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Desculpe, o Gadfly não suporta gráficos 3D" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Arquivo de script Julia (*.jil)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Erro - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"Não foi possível entrar na sessão do Julia devido a um problema interno de " +"arquivo faltante - \"%1\"" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" +"Não foi possível entrar na sessão do Julia devido a um problema interno " +"desconhecido" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "O processo Julia parou de funcionar." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Falha ao iniciar o processo Julia." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" +"A comunicação com o processo do Julia falhou com motivos desconhecidos." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Para Julia, apenas o GR (https://gr-framework.org/), uma plataforma para " +"aplicativos de visualização está suportado no momento. Este pacote deve ser " +"instalado antes, se ainda não foi feito. Para isto, execute Pkg.install(\"GR" +"\") no Cantor ou no Julia REPL. Note que esta operação pode levar algum " +"tempo e é melhor executá-la no Julia REPL que está habilitado a mostrar o " +"progresso atual da instalação do pacote." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Geral" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Executável:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Integração do gráfico:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Se habilitado, os gráficos serão mostrados dentro da planilha. Caso " +"contrário, os gráficos serão mostrados em uma janela separada." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Habilitado" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Gerenciamento de variáveis:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Monitor para a criação e destruição de variáveis e mostrar as variáveis " +"existentes no painel de variáveis." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Formato interno do gráfico:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" +"Formato interno dos gráficos, se a incorporação de gráficos estiver " +"habilitada." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Pacote gráfico a ser usado para o assistente de gráfico" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Pacote para o assistente de gráfico" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Gráficos" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Executar automaticamente" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Comandos para execução automática" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Documentação" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Lista dos scripts a executar automaticamente no início da sessão" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Erro: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Isto executa automaticamente comandos ao iniciar uma nova planilha. Eles " +"podem ser úteis para carregar os módulos necessários, alterar o ambiente, " +"etc." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua é uma linguagem de programação rápida e leve, com uma sintaxe " +"procedimental simples. Existem diversas bibliotecas disponibilizadas por " +"essa linguagem de programação destinadas à matemática e à ciência." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Caminho do comando luajit" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Arquivo de script Lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Caminho do luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/pt_BR/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima é um sistema para a manipulação de expressões simbólicas e " +"numéricas, incluindo a derivação, a integração, as séries de Taylor, as " +"transformadas de Laplace, as equações diferenciais ordinárias, os sistemas " +"de equações lineares, os polinômios e os conjuntos, listas, vetores, " +"matrizes e tensores. O Maxima oferece resultados numéricos de alta precisão, " +"usando frações exatas, inteiros de precisão arbitrária e números de ponto " +"flutuante de precisão variável. O Maxima pode desenhar gráficos das funções " +"e de dados em duas e três dimensões." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Caminho para o executável do Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Erro: Existem muitos */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Erro: Existem muitos /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Erro: Era esperado um \" antes do ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Aguardando pelo resultado do gráfico" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Arquivo de lote do Maxima (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Falha ao iniciar o Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "O Maxima travou. Reiniciando..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"O Maxima travou duas vezes num curto período de tempo. Interrompendo a " +"tentativa de reinício" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave é uma linguagem de alto nível, desenvolvida especialmente " +"para cálculos numéricos.
      Ela oferece uma interface de linha de comando " +"conveniente para resolver problemas numéricos lineares e não-lineares e " +"também para efetuar outras experiências numéricas, usando uma linguagem que " +"é bastante compatível com o Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Arquivo de script Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Erro de sintaxe" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Falha no teste de integração do gráfico" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "A integração dos gráficos será desabilitada." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"A integração de gráficos não funciona porque o Cantor descobriu que o Octave " +"não pode criar gráficos pois não tem infraestrutura gráfica para isto: esta " +"conclusão foi tomada com base na saída vazia da função " +"available_graphics_toolkits(). Parece que você deve instalar alguns pacotes " +"adicionais no SO como gnuplot, fltk ou Qt para ter a possibilidade de criar " +"gráficos." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python é uma linguagem de programação extremamente poderosa que é " +"usada em uma grande variedade de domínios de aplicativos. Existem diversos " +"pacotes do Python para a programação científica." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# Desculpe, o Bokeh não suporta gráficos 3D" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Arquivo de script Python (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "O servidor Python do Cantor parou de funcionar." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Falha ao iniciar o servidor de Python do Cantor." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"A comunicação com o servidor Python do Cantor falhou por razões " +"desconhecidas." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Para usar os gráficos integrados com o pacote Matplotlib, você precisa " +"instalar o pacote Python \"matplotlib\" antes." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Para usar os gráficos integrados com o Plot.ly, você precisa instalar o " +"pacote Python \"plotly\" e o executável \"orca\" especial compatível com o " +"Plot.ly. Veja o artigo \"Static Image Export\" na documentação do Plot.ly " +"para detalhes." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Janela do gráfico" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funções" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Título" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Expressão" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Adicionar" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Remover" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Limpar lista" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Variável X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Estilo" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Linhas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Pontos" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Pontos e linhas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Caixas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histograma" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Passos" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Velas" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Pontos" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Suavização" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Nenhum" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monótona" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Curvas naturais cúbicas" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (monótona)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Intervalo da função" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Intervalo em X" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Taxa de a&mostragem" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "&Tamanho do passo" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Opções" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Título do gráfico" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Legenda do eixo X" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Legenda do eixo Y" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Posição da legenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Ocultar legenda" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Superior esquerdo" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Superior direito" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Inferior esquerdo" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Inferior direito" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Abaixo" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Fora" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Mostrar grade" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Mostrar a borda inteira" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Usar cores" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Mostrar integrado" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Escala logarítmica em X" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Escala logarítmica em Y" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Opções do arquivo" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Salvar o gráfico em um arquivo" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Tipo do arquivo" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Detectar pelo nome do arquivo" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! não é uma réplica em software da sua calculadora barata " +"normal. O Qalculate! tenta tirar partido completo da interface superior, das " +"potencialidades e da flexibilidade dos computadores modernos. O foco de " +"atenção no Qalculate! é a introdução da expressão. Em vez de introduzir cada " +"número em uma expressão matemática separada, você pode introduzir " +"diretamente a expressão inteira e depois modificá-la. A interpretação das " +"expressões é flexível e tolerante a erros e, caso faça algo de errado à " +"mesma, o Qalculate! irá dizer a mesma coisa. Nem todas as expressões " +"solúveis são de fato erros. O Qalculate! irá simplificar ao máximo e " +"responder com uma expressão. Para além dos números e operações aritméticas, " +"uma expressão poderá conter uma combinação arbitrária de variáveis, unidades " +"e funções." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Se e como as unidades são convertidas automaticamente. Se for verdadeiro, " +"converte para as unidades SI mais adequadas (a quantidade mínima de " +"unidades)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Unidade angular padrão para as funções trigonométricas." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "A base dos números processados e avaliados." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" +"Se o resultado da avaliação deverá ser simplificado ou decomposto em fatores." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Se os números racionais serão apresentados como decimais, como uma fração ou " +"misto." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Mostrar que a série de algarismos de um número continua para sempre com " +"reticências, em vez de arredondar (p.ex., 2/3 aparece como 0,666666... em " +"vez de 0,666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Usar todos os prefixos decimais SI. Se for falso, os prefixos que não sejam " +"um múltiplo dos milhares (centi, deci, deca, hecto) não serão usados " +"automaticamente." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Se for verdadeiro, os expoentes negativos serão usados em vez da divisão (p." +"ex., 5/x^2 fica 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Apresentação numérica." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Se for verdadeiro, os gráficos serão apresentados dentro da planilha. Caso " +"contrário, irão aparecer em uma janela separada." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Se devem ser usadas cores nos gráficos." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Se deve desenhar uma grade." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Se deve desenhar uma borda completa em tordo do gráfico." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "A espessura das linhas em pixels." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "O número de passos da interpolação a serem usados no gráfico." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "O modo de suavização dos gráficos." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "O estilo dos gráficos." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "A posição da legenda dos gráficos." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" +"O Qalculate informa que não consegue imprimir. O gnuplot está instalado?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "faltando %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 deve ser um número." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 deve ser um inteiro." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "O %1 deve ser um valor booleano." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "opção inválida para %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" +"foram encontradas várias expressões em um comando do gráfico (%1 e %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "ERRO" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "AVISO" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Não existe nenhuma função, variável ou unidade com o nome indicado." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Função: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Interface do gráfico" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Desenha o gráfico de uma ou mais funções de forma integrada ou em uma janela " +"separada." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "expressão" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "opção" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "valor" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "inteiro" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "booleano" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "número" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "padrão: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "O nome da função" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Legenda do título" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "Legenda do eixo X" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Legenda do eixo Y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"A imagem onde gravar o gráfico. Se vazia, mostra o gráfico em uma janela da " +"tela. Se 'inline=true', a imagem é apresentada independentemente desta opção." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"O tipo de imagem a ser salva. Pode ser: auto, png, ps, eps, latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" +"Configure como 'true' (verdadeiro) para um gráfico em cores ou 'false' para " +"monocromático." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "O valor mínimo do eixo dos X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "O valor máximo do eixo dos X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Se deve ser usada uma escala logarítmica para o eixo X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Se deve ser usada uma escala logarítmica para o eixo Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "A base logarítmica do eixo X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "A base logarítmica do eixo Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Se deve ser mostrada uma grade no gráfico." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Se o gráfico deve ser rodeado por um contorno em todos os lados (não só no " +"eixo)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "A espessura das linhas." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Onde deve ser colocada a legenda do gráfico. Pode ser: none, top_left, " +"top_right, bottom_left, bottom_right, below, outside" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"A suavização do gráfico. Pode ser: none, unique, csplines, bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"O estilo do gráfico. Pode ser: lines, points, points_lines, boxes, " +"histogram, steps, candlesticks, dots" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Usar uma escala no segundo eixo X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Usar uma escala no segundo eixo Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" +"Se o gráfico deve ser desenhado integrado, em vez de em uma janela nova." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "A distância entre dois pontos da interpolação. Veja também os passos." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "O número de pontos da interpolação. Veja também o passo." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "O nome da variável X. Deve ser uma variável desconhecida" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Salvar as variáveis em um arquivo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Salva todas as variáveis atualmente definidas em um arquivo. Podem ser " +"atualizadas com o %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "arquivo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "arquivo: o arquivo onde salvar" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Carregar variáveis de um arquivo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" +"Carregar as variáveis de um arquivo que foi criado anteriormente por %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "arquivo: o arquivo a carregar" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Base numérica:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Formato das frações:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Decimal" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Exato" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Fracionário" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Combinado" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Apresentação numérica:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Puro" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Científico" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Precisão" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Indicar as séries infinitas:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Usar todos os prefixos SI:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Usar expoentes negativos:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Avaliar" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Converter para as melhores unidades SI:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radianos" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Graus" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Grados" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Modo de estruturação:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Simplificar" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Fatorar" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Unidade de ângulo:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Desenho do gráfico" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Desenhar os gráficos integrados:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Mostrar as bordas completas:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Espessura das linhas:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Taxa de amostragem:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Modo de suavização:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Curvas naturais cúbicas" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Passos" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Posição da legenda:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Gráficos em cores:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Mostrar grade:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Estilo do gráfico:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Modificar entrada" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Adicionar nova entrada" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "O nome não pode estar em branco." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Adicionar documentação local" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Baixar nova documentação" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Baixar documentação adicional" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Arquivo de ajuda comprimido do Qt não é válido." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Documentação já importada" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Modificar" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Excluir" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Desinstale isto via GHNS." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Instalar arquivos de documentação adicionais" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Nome" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Caminho" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Adicionar" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Ícone:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Selecionar um ícone" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Nome:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Digite um nome" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Selecionar um nome..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Caminho:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Selecionar um arquivo de ajuda do Qt..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Selecionar um arquivo de ajuda do Qt..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R é uma linguagem e um ambiente para computação e gráficos " +"estatísticos, de forma semelhante à da linguagem e ambiente S.
      Ela " +"oferece uma grande variedade de técnicas gráficas e estatísticas (modelação " +"linear e não-linear, testes estatísticos clássicos, análises de séries " +"temporais, classificação, agrupamentos, ...), e é altamente extensível. A " +"linguagem S é normalmente o veículo de escolha para pesquisa de metodologias " +"estatísticas e a R oferece uma rota de código aberto para participar dessa " +"atividade." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Erro ao abrir o arquivo %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "Arquivo de script R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Erro ao analisar o comando" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "URL para a documentação R local" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Clique duplo para abrir o diálogo de seleção de arquivo" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|Arquivos de código em R (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage é um sistema de programas matemáticos de código aberto e " +"licenciado sob a GPL.
      Ele combina o poder de muitos pacotes de código " +"aberto existentes com uma interface comum baseada em Python." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Caminho para o executável do Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Habilitar o processamento do LaTeX para a infraestrutura Sage" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Resultado de %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"A última saída foi: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Arquivo de script Python (*.py);;Arquivo de script Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Não há suporte para a versão %1.%2 do Sage. Atualize a sua instalação para " +"uma das versões que possuem suporte para que funcione com o Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Falha ao determinar a versão do Sage. Verifique sua instalação e a saída de " +"'sage -v'." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "O processo Sage falhou ao avaliar esta expressão" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "O processo Sage falhou" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "O processo Sage finalizou ao avaliar esta expressão" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "O processo Sage foi finalizado" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Falha ao iniciar o Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "Processamento do LaTeX:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"A saída LaTeX do Sage não é sempre correta, então o processamento do LaTeX " +"pode ser desabilitado para uma melhor experiência" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab é um aplicativo gratuito e multiplataforma de computação " +"numérica e uma linguagem de programação numérica de alto nível. O Scilab é " +"distribuído com a licença CeCILL (compatível com a GPL)." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Caminho para o executável do Scilab" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Arquivo de script Scilab (*.sce);;Arquivo de função Scilab (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "O arquivo %1 já está aberto." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Abrir arquivo" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Baixar exemplos" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Abrir exemplo" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Ir para a planilha anterior" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Ir para a próxima planilha" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Todos os arquivos suportados (*.cws *ipynb);;Planilha do Cantor (*.cws);;" +"Bloco de notas do Jupyter (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Nenhuma infraestrutura encontrada

      \n" +"
      Você pode tentar:\n" +"
      • Alterar as configurações no diálogo de configuração;
      • " +"
      • Instalar os pacotes do seguinte programa:
      • %2
      " +msgstr[1] "" +"

      Nenhuma infraestrutura encontrada

      \n" +"
      Você pode tentar:\n" +"
      • Alterar as configurações no diálogo de configuração;
      • " +"
      • Instalar os pacotes de um dos seguintes programas:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Erro" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "A infraestrutura %1 não está instalada" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"Infraestrutura %1 instalada mas inativa. Verifique a instalação ou as " +"configurações do Cantor" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sessão %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Não foi possível encontrar o componente do Cantor com o erro %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Calculando..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Pronto" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Alterado" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" +"Estão abertas diversas planilhas que ainda não foram salvas. Deseja fechá-" +"las?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Fechar o Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "O projeto atual foi modificado. Deseja salvá-lo?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Salvar projeto" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Formatação" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "A infraestrutura que é usada por padrão" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Fazer o processamento de texto por padrão" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Fazer o realce de sintaxe por padrão" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Habilitar os completamentos por padrão" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Habilitar a numeração de expressões por padrão" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Animar as alterações na planilha por padrão" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Habilitar a renderização das expressões matemáticas dentro de $$..$$ nas " +"entradas de texto e Markdown por padrão (o pdflatex precisa estar instalado)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Reavaliar automaticamente os itens abaixo do atual" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Solicitar confirmação ao reiniciar a infraestrutura" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Salva a formatação do texto formatado do TextEntry, quando salvar a folha de " +"trabalho no formato de bloco de notas do Jupyter" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Usar estilo antigo de posicionamento de entradas do Cantor" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" +"Mostrar os erros de renderização de expressões matemáticas incorporadas" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Limite de linhas visíveis para o resultado de texto" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Fonte hierárquica para capítulo" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Tamanho da fonte hierárquica para capítulo" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Fonte hierárquica itálica para capítulo" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Fonte hierárquica negrito para capítulo" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Fonte hierárquica para subcapítulo" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Tamanho da fonte hierárquica para subcapítulo" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Fonte hierárquica itálica para subcapítulo" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Fonte hierárquica negrito para subcapítulo" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Fonte hierárquica para seção" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Fonte hierárquica itálica para seção" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Fonte hierárquica negrito para seção" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Fonte hierárquica para subseção" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Fonte hierárquica itálica para subseção" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Fonte hierárquica negrito para subseção" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Fonte hierárquica para parágrafo" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Fonte hierárquica itálica para parágrafo" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Fonte hierárquica negrito para parágrafo" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Fonte hierárquica para subparágrafo" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Fonte hierárquica itálica para subparágrafo" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Fonte hierárquica negrito para subparágrafo" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Salvar em texto simples" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Exportar para LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Calcular planilha" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Formatar com o LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Realce de sintaxe" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Completamento" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Número de linhas" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Animações" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Matemática incorporada" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Reiniciar infraestrutura" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Calcular entrada" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Inserir entrada de comando" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Inserir entrada de texto" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Inserir entrada de Markdown" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Inserir entrada de LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Inserir quebra de página" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Inserir imagem" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Recolher todos os resultados" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Expandir todos os resultados" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Remover todos os resultado" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Remover entrada atual" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Mostrar o editor de script" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Exibir completamento" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Planilha do Cantor (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Bloco de notas do Jupyter (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Salvar como" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Salvar" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Todos os resultados de cálculos disponíveis serão perdidos. Deseja realmente " +"reiniciar %1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Reiniciar %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Interromper" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Erro da sessão %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Inicialização concluída" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Inicializando..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[somente leitura]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Deseja enviar a planilha atual para um servidor Web público?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Pergunta - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "A planilha não está salva. Você deve salvá-la antes de enviá-la." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Aviso - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Esta infraestrutura não suporta scripts." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Editar" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "E&xibir" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Planilha" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Configurações" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Arquivo" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Novo" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Painéis" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Configurações" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Cor de fundo" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Padrão" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Cor do texto" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Fonte" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Negrito" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Itálico" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Aumentar tamanho" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Diminuir tamanho" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Selecionar" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Restaurar para o padrão" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Mostrar os resultados" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Ocultar os resultados" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Exibir ajuda" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Aparência" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Interrompido" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Barra de pesquisa" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Localizar:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Próximo" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Anterior" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Substituir:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "Substitui&r" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Substituir &tudo" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Pesquisar em:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "Diferenciar &maiúsculas de minúsculas" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Fontes hierárquicas" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Fonte do capítulo" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Família da fonte:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Tamanho da fonte:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Fonte do subcapítulo" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Fonte da seção" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Fonte da subseção" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Fonte do parágrafo" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Fonte do subparágrafo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Capítulo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Subcapítulo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Seção" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Subseção" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Parágrafo" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Subparágrafo" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Definir nível hierárquico" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Estilo da linha sólida" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Estilo da linha traço" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Estilo da linha ponto" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Estilo da linha traço ponto" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Estilo da linha traço ponto ponto" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Espessura da linha" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Fino" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Médio" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Grosso" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Cor da linha" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Estilo da linha" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Configurar imagem" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Clique duplo aqui para configurar as definições de imagem" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Não foi possível carregar a imagem %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Salvar resultado da imagem" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Imagens (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Configurações da imagem" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Abrir" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Tamanho da área" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Largura" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Altura" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Visualizar" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Tamanho da impressão" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Usar o tamanho da área" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Configurações da imagem" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(automático)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Abrir arquivo de imagem" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Mostrar o código LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Não foi indicada nenhum caminho para o executável %1. Indique o caminho " +"correto na configuração do aplicativo e tente novamente." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"O arquivo indicado '%1' para o executável %2 não existe. Indique o caminho " +"correto na configuração do aplicativo e tente novamente." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"O arquivo indicado '%1' não aponta para nenhum executável. Indique o caminho " +"correto na configuração do aplicativo e tente novamente." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"O programa %1 não concluiu a execução após %2 milissegundos durante o teste " +"de integração do gráfico." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "Falha ao abrir o arquivo %1 durante o teste de integração do gráfico." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" +"Falha ao processar o resultado durante o teste de integração do gráfico." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Caminho para o executável do LaTeX" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Caminho para o executável dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Valor" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 bytes>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "De:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Até:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Título principal" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Escala das abcissas" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Escala das ordenadas" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Título do gráfico:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Este é um conteúdo do Jupyter não suportado dos tipos ('%1')" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"O processo %1 foi encerrado de forma inesperada. Todos os resultados dos " +"cálculos foram perdidos." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"O processo %1 foi encerrado de forma inesperada com a mensagem \"%2\". Todos " +"os resultados dos cálculos foram perdidos." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Você escolheu o suporte para o pacote gráfico %1, mas o suporte não pode ser " +"ativado devido a falta de requerimentos, portanto a integração para estes " +"pacote será desabilitado. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Interface do KDE para aplicativos matemáticos" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Mantenedor
      Migração para Qt5/KF5, infraestruturas Scilab e Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Desenvolvedor" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Autor original
      Mantenedor (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Infraestrutura do KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Infraestrutura do Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Interface" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Ícone do Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Usar esta infraestrutura " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Documentos a abrir." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Não foi possível abrir o arquivo %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Entrar no modo de edição" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Limpar anexos" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Erro matemático do Cantor" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Falha ao ler a imagem \"%1\". Erro \"%2\"" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Quebra de página ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Ir para o conteúdo" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Pesquisar por palavras-chave..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Localizar no texto da página de documentação atual" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Redefinir nível de zoom para 100%" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Fechar" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Ir para a próxima ocorrência" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Ir para a ocorrência anterior" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Diferenciar maiúsculas de minúsculas" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "O arquivo foi salvo com sucesso nos Downloads." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Baixado com sucesso" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Arquivos do Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Arquivos Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Todos os arquivos suportados" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Todos os arquivos" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Nome:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Valor:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Adicionar nova variável" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Carregar variáveis" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Salvar variáveis" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Remover variáveis" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Pesquisar/filtrar" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Diferenciar maiúsculas de minúsculas" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Corresponder a palavra completa" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Tem certeza de que deseja remover todas as variáveis?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Carregar arquivo" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Salvar resultado" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Remover resultado" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Não foi possível encontrar um componente de edição de texto para o KDE.\n" +"Verifique a sua instalação do KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Editor de script" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Editor de script - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Não encontrado" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "O início foi atingido" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "O fim foi atingido" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Foi substituída %1 ocorrência" +msgstr[1] "Foram substituídas %1 ocorrências" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Comandos" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Resultados" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Erros" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Texto" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Código LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "Inicialização:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Infraestrutura padrão:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Planilha:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" +"Habilitar o processamento do LaTeX para o resultado dos cálculos, se " +"suportado pela infraestrutura do sistema" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "Processamento do LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Habilitar realce de sintaxe" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Realce de sintaxe" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "Habilitar o completamento de sintaxe" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Mostrar números de linha" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Números de linha" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Habilitar efeitos de animação na planilha" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "Não recuar entradas de texto" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, fuzzy, kde-format +#| msgid "" +#| "Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +#| "notebook format" +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Salva a formatação do texto formatado do TextEntry, quando salvar a folha de " +"trabalho no formato de bloco de notas do Jupyter" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Equações:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, fuzzy, kde-format +#| msgid "Ask for confirmation when restarting the backend" +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "Solicitar confirmação ao reiniciar a infraestrutura" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "Reavaliar os itens automaticamente" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, fuzzy, kde-format +#| msgid "Maximal number of result visible rows (0 for unlimited):" +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Número máximo de linhas visíveis no resultado (0 para sem limite):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Número máximo de linhas visíveis no resultado de uma entrada de comando. Use " +"0 para trabalhar sem limitações." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +#| msgid "Enable LaTeX typesetting for Sage backend" +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "Habilitar o processamento do LaTeX para a infraestrutura Sage" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "Notificar sobre falhas de renderização para expressões matemáticas" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Localizar..." + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Destinos das células raw" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Adicionar destino personalizado" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Converter para entrada de texto" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Converter para célula raw" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Tipo MIME do destino:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Copiar resultado" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Mostrar renderizado" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Exibir o código" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Mostrar o código HTML" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Mostrar a alternativa simples" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Mostrar HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Mostrar HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" +"Não foi processar o arquivo EPS. Você precisa instalar pacotes adicionais" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Salvar resultado do texto" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "Arquivos de texto (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Não foi possível gravar o arquivo %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Não foi possível gravar o arquivo." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Erro ao salvar o arquivo %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"No modo somente leitura o Cantor não pode garantir que a exportação seja " +"válida para %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Erro no carregamento da folha de estilo latex.xsl" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Não foi possível abrir o arquivo %1." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Abrir arquivo" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Não foi possível abrir o arquivo selecionado para leitura." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" +"O arquivo selecionado não é um arquivo de projeto válido do Cantor ou " +"Jupyter." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "O arquivo selecionado não é um arquivo de projeto do Cantor válido." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Esta planilha foi criada usando Python2 que não é mais suportado. O Python3 " +"será usado." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "O Python2 não é mais suportado" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"A infraestrutura %1 não foi encontrada. Não é possível editar e executar " +"entradas." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Existem alguns problemas com a infraestrutura %1,\n" +"verifique sua configuração ou instale os pacotes necessários.\n" +"Você apenas poderá ver esta planilha." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Não há suporte para blocos de notas do Jupyter com versão inferior à 4.5 " +"(foi detectada a %1.%2)." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Não há suporte para blocos de notas do Jupyter com versão superior à 4.5 " +"(foi detectada a %1.%2)." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Este bloco de notas foi criado usando Python2 que não é mais suportado. O " +"Python3 será usado." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "um objeto com as chaves: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "valor não-objeto em JSON" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" +"foram detectados dados incorretos (%1) que não correspondem a uma célula do " +"Jupyter" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "O arquivo não é um bloco de notas do Jupyter válido" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Esquema inválido de bloco de notas do Jupyter: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Converter para" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Comando" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Imagem" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Quebra de página" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Linha horizontal" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Entrada de hierarquia" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Inserir depois" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Inserir antes" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Inserir" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Ampliar" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Reduzir" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Tamanho original" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Mover as entradas para cima" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Mover as entradas para baixo" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Calcular entradas" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Remover entradas" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Recolher os resultados da entrada de comando" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Expandir os resultados da entrada de comando" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Remover os resultados da entrada de comando" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Excluir a entrada de comando da execução" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Adicionar a entrada de comando na execução" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "&Cor do texto..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Colorido" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Realce do &texto..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Fonte" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "&Tamanho da fonte" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Negrito" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Itálico" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "S&ublinhado" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Tachado" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "A&linhar à esquerda" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Esquerda" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "&Centralizar" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Centro" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Alinhar à di&reita" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Direita" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Justificado" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Justificado" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"Esta ação irá remover todos os resultados sem a possibilidade de " +"cancelamento. Tem certeza?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Remover todos os resultados" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Branco" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Preto" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Vermelho escuro" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Vermelho" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Vermelho claro" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Verde escuro" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Verde" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Verde claro" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Azul escuro" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Azul" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Azul claro" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Amarelo escuro" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Amarelo" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Amarelo claro" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Ciano escuro" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Ciano" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Ciano claro" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Magenta escuro" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Magenta claro" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Laranja escuro" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Laranja" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Laranja claro" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Cinza escuro" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Cinza" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Cinza claro" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Mover para cima" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Mover para baixo" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Deseja realmente remover esta entrada?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Remover entrada" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Arrastar a entrada" + +#~ msgid "Animate Worksheet" +#~ msgstr "Animar planilha" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "Na inicialização, se a infraestrutura padrão estiver definida, criar uma " +#~ "planilha para ela ao invés de mostrar a janela de escolha da " +#~ "infraestrutura." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Se estiver habilitado, o Cantor irá avaliar automaticamente todas as " +#~ "entradas abaixo da atual." + +#~ msgid "Defaults" +#~ msgstr "Padrões" + +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "Este é o valor inicial para a opção de \"Formatar com o LaTeX\" da " +#~ "sessão, que responde por permitir a renderização de alguma saída da " +#~ "infraestrutura como LaTeX, se suportado. Por exemplo, as saídas do Maxima " +#~ "serão renderizados via LaTeX se a opção estiver habilitada." + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "" +#~ "Habilitar a formatação em LaTeX (funciona apenas se o latex estiver " +#~ "instalado)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "Este é o valor inicial para a opção de \"Realce de sintaxe\" da sessão, " +#~ "que responde pelo realce da sintaxe dentro das entradas de comando." + +#~ msgid "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." +#~ msgstr "" +#~ "Este é o valor inicial para a opção de \"Completamento\" da sessão, que " +#~ "responde pelo completamento automático de código." + +#~ msgid "" +#~ "This is initial value for the session \"Line numbers\" option, which " +#~ "response for presence of command entries execution numbers." +#~ msgstr "" +#~ "Este é o valor inicial para a opção de \"Número de linhas\" da sessão, " +#~ "que responde pela presença dos números de execução das entradas de " +#~ "comando." + +#~ msgid "Enable Line Numbers" +#~ msgstr "Habilitar o número de linhas" + +#~ msgid "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." +#~ msgstr "" +#~ "Este é o valor inicial para a opção de \"Animar planilha\" da sessão, que " +#~ "responde pela presença de animação na planilha." + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Habilitar as animações da planilha" + +#~ msgid "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." +#~ msgstr "" +#~ "Este é o valor inicial para a opção de \"Matemática incorporada\" da " +#~ "sessão, que responde por habilitar a renderização de expressões " +#~ "matemáticas nas entradas de texto e Markdown." + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "" +#~ "Habilitar as expressões matemáticas incorporadas (funciona apenas se o " +#~ "pdflatex estiver instalado)" + +#~ msgid "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." +#~ msgstr "" +#~ "Se desabilitado, o aviso sobre o reinício não irá mais aparecer ao " +#~ "pressionar o botão de reinício." + +#~ msgid "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." +#~ msgstr "" +#~ "Se habilitado, em qualquer erro de renderização de matemática aparecerá " +#~ "uma janela de informação com a descrição do erro." + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "" +#~ "Mostrar uma mensagem de erro caso falhe a renderização da expressão " +#~ "matemática incorporada" + +#~ msgid "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." +#~ msgstr "" +#~ "Se habilitado, o estilo antigo de recuo de entradas do Cantor (todas as " +#~ "entradas alinhadas à esquerda) será usado." + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Usar estilo antigo de recuo de entradas do Cantor" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Se habilitado, o Cantor armazenará o texto formatado das entradas de " +#~ "texto ao salvar para o formato de bloco de notas do Jupyter." + +#~ msgid "" +#~ "Graphical package, for which will be enable support for embedding plots" +#~ msgstr "" +#~ "Pacote gráfico, pelo qual será habilitado o suporte a gráficos " +#~ "incorporados" + +#~ msgid "" +#~ "Graphic package, which code will be used for plotting via \"Plot\" Cantor " +#~ "menu." +#~ msgstr "" +#~ "Pacote gráfico, cujo código será usado para fazer os gráficos pelo menu " +#~ "\"Gráfico\" do Cantor." + +#~ msgid "Matplotlib (with seaborn, ggplot support too)" +#~ msgstr "Matplotlib (com suporte a seaborn e ggplot também)" + +#~ msgid "Plot.ly" +#~ msgstr "Plot.ly" + +#~ msgid "All supported" +#~ msgstr "Todos os arquivos suportados" + +#~ msgid "" +#~ "Graphic package, used for plotting. When integrated plots option is " +#~ "enabled, then plots from the package will be integrated to worksheet" +#~ msgstr "" +#~ "Pacote gráfico, usado para fazer os gráficos. Quando a opção de integrar " +#~ "gráficos estiver habilitada, os gráficos do pacote serão integrados na " +#~ "planilha" + +#~ msgid "Graphic Package: " +#~ msgstr "Pacote gráfico:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      O modo KDE de fazer Matemática" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "URL para a documentação Maxima local" + +#~ msgid "" +#~ "If empty, the \"Show help\" action will show the default online " +#~ "documentation. Otherwise, the specified URL will be opened." +#~ msgstr "" +#~ "Se vazio, a ação \"Exibir ajuda\" irá mostrar a documentação padrão " +#~ "online. Caso contrário, a URL especificada será aberta." + +#~ msgid "Documentation:" +#~ msgstr "Documentação:" + +#~ msgid "Url to the local Python documentation" +#~ msgstr "URL para a documentação Python local" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "URL para a documentação Octave local" + +#~ msgid "Show %1 Help" +#~ msgstr "Exibir ajuda do %1" + +#~ msgid "Path to Julia:" +#~ msgstr "Caminho para o Julia:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Integrar gráficos na planilha" + +#~ msgid "" +#~ "Commands to automatically run on start. They can be useful for loading " +#~ "needed modules, changing environment, etc." +#~ msgstr "" +#~ "Comandos para executar automaticamente ao iniciar. Eles podem ser úteis " +#~ "para carregar os módulos necessários, alterar o ambiente, etc" + +#~ msgid "Clear Variables" +#~ msgstr "Limpar variáveis" + +#~ msgid "Exclude from Execution" +#~ msgstr "Excluir da execução" + +#~ msgid "Add to Execution" +#~ msgstr "Adicionar à execução" + +#~ msgid "Right click here to insert image" +#~ msgstr "Clique com o botão direito aqui para inserir imagem" + +#~ msgid "Choose Image" +#~ msgstr "Escolher imagem" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "Imagens (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Confirmação - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Entrada de texto" + +#~ msgid "LaTeX Entry" +#~ msgstr "Entrada de LaTeX" + +#~ msgid "Insert Horizontal Line" +#~ msgstr "Inserir linha horizontal" + +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Inserir entrada de hierarquia" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Caminho do comando scilab-adv-cli (Atenção: a versão do Scilab deve ser a " +#~ "5.4 ou posterior)" + +#~ msgid "Insert Image Attachment" +#~ msgstr "Inserir um anexo de imagem" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Inserir entrada de LaTeX" + +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Caminho para o executável python do servidor do Cantor" + +#~ msgid "" +#~ "Path to directory, which contains Cantor plugins (cantorpart and all " +#~ "backends)" +#~ msgstr "" +#~ "Caminho para a pasta que contém os plugins do Cantor (cantorpart e todas " +#~ "as infraestruturas)" + +#~ msgid "Paths (advance settings)" +#~ msgstr "Caminhos (configurações avançadas)" + +#~ msgid "Path to Cantor plugin directory:" +#~ msgstr "Caminho para a pasta de plugins do Cantor:" + +#~ msgid "" +#~ "Path to directory, which contains Cantor backend plugins. This is " +#~ "important setting - with wrong path Cantor can't create any worksheets." +#~ msgstr "" +#~ "Caminho para a pasta que contém os plugins de infraestrutura do Cantor. " +#~ "Isto é uma configuração importante - com o caminho errado, o Cantor não " +#~ "pode criar nenhuma planilha." + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "Formato intermediário de gráficos incorporados:" + +#~ msgid "Preferred package for the \"Plot\" menu: " +#~ msgstr "Pacote preferido para o menu \"Gráfico\":" + +#~ msgid "Path to Maxima:" +#~ msgstr "Caminho para o Maxima:" + +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Caminho para o servidor Python do Cantor:" + +#~ msgid "Path to Sage:" +#~ msgstr "Caminho para o Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Localização do comando 'scilab-adv-cli':" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Permitir ao Cantor seguir a criação/destruição de variáveis" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "" +#~ "Integrar gráficos na planilha (inicia uma nova sessão quando alterado)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Caminho para o executável do Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Caminho para o Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Sem nome" + +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "https://docs.python.org/2/" + +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "Python é uma linguagem de programação extremamente poderosa que é " +#~ "usada em uma grande variedade de domínios de aplicativos. Existem " +#~ "diversos pacotes do Python para a programação científica. Esta " +#~ "infraestrutura tem suporte ao Python 3." diff --git a/po/pt_BR/docs/cantor/index.docbook b/po/pt_BR/docs/cantor/index.docbook new file mode 100644 index 0000000..b96877f --- /dev/null +++ b/po/pt_BR/docs/cantor/index.docbook @@ -0,0 +1,1044 @@ + + + + ATEX"> + + +]> + + + +Manual do &cantor; + + + Alexander Rieder alexanderrieder@gmail.com +Marcus Gama
      marcus.gama@gmail.com
      Tradução
      +
      + + +2009 +Alexander Rieder + +&FDLNotice; + +09/05/2014 +0.5 (&kde; 4.14) + + +O &cantor; é uma aplicação que pretende fornecer uma área de trabalho agradável para outros pacotes matemáticos de 'Software' Livre. + + + +KDE +kdeedu +Matemática +matemática +Cantor +Sage +Python +Lua +Scilab +R +Maxima + + +
      + + +Introdução + +O &cantor; é uma aplicação que lhe permite usar as suas aplicações matemáticas favoritas dentro de uma interface de área de trabalho agradável e integrada no &kde;. Ele oferece janelas de assistência para as tarefas mais comuns e permite-lhe compartilhar as suas folhas de cálculo com os outros. + + + +Usando o &cantor; + +Captura de tela: +Aqui está uma captura de tela do &cantor; + + + + + + Captura de tela + + + + + + + +Recursos do &cantor; + + Uma área de trabalho agradável para avaliar expressões. + Área para visualizar os gráficos dos resultados na área de trabalho. + Uma estrutura simples e baseada em 'plugins' para adicionar diferentes infraestruturas. + Integração do GetHotNewStuff para obter folhas de cálculo de exemplo (ou enviá-las.) + Formatação das fórmulas matemáticas com o &latex;. + Realce de sintaxe ciente da infraestrutura. + Janelas de assistência baseadas em 'plugins' para as tarefas mais comuns, como a integração de uma função ou a inserção de uma matriz. + + + + +As infraestruturas do &cantor; +O &cantor; oferece diversas opções para a infraestrutura que você poderá usar à vontade. A sua escolha deverá depender da tarefa que pretende efetuar. +Atualmente, estão disponíveis as seguintes infraestruturas: + + Sage: + + O Sage é um sistema de 'software' matemático livre e 'open-source', licenciado sob a GPL. Combina o poder de muitos pacotes 'open-source' existentes com uma interface comum e baseada em Python. Veja mais informações em http://sagemath.org. + + + + Maxima: + + O Maxima é um sistema para a manipulação de expressões simbólicas e numéricas, incluindo a derivação, a integração, as séries de Taylor, as transformadas de Laplace, as equações diferenciais ordinárias, os sistemas de equações lineares, os polinômios e os conjuntos, listas, vetores, matrizes e tensores. O Maxima oferece resultados numéricos de alta precisão, usando frações exatas, inteiros de precisão arbitrária e números de vírgula flutuante de precisão variável. O Maxima pode desenhar gráficos das funções e de dados em duas e três dimensões. Veja o http://maxima.sourceforge.net para obter mais informações. + + + + R: + + O R é uma linguagem e um ambiente para a computação e gráficos estatísticos, de forma semelhante à da linguagem e ambiente S. Oferece uma grande variedade de técnicas gráficas e estatísticas (modelação linear e não-linear, testes estatísticos clássicos, análises de séries temporais, classificação, agrupamentos, ...), sendo também altamente extensível. A linguagem S é normalmente o veículo de escolha para a investigação de metodologias estatísticas, sendo que o R oferece uma rota 'open-source' para participar nessa atividade. Veja mais informações em http://www.r-project.org. + + + + &kalgebra;: + + O &kalgebra; é uma calculadora gráfica, baseada NO MathML, que vem com o Projeto Educacional do &kde;. Consulte mais informações em http://edu.kde.org/kalgebra/. + + + + Qalculate!: + + O Qalculate! não é uma réplica em 'software' da sua calculadora barata normal. O Qalculate! tenta tirar partido da interface superior, das potencialidades e da flexibilidade dos computadores modernos. O foco de atenção no Qalculate! é a introdução da expressão. Em vez de introduzir cada número numa expressão matemática separada, poderá introduzir diretamente a expressão inteira e depois modificá-la. A interpretação das expressões é flexível e tolerante a erros e, caso ainda faça algo de errado, o Qalculate! irá informar o erro. Nem todas as expressões solúveis são de fato erros. O Qalculate! irá simplificar ao máximo e responder com uma expressão. Além dos números e operações aritméticas, uma expressão poderá conter uma combinação arbitrária de variáveis, unidades e funções. Veja mais informações em http://qalculate.sourceforge.net/. + + + + Python2: + + Python é uma linguagem de programação extremamente poderosa que é usada em uma grande variedade de domínios de aplicativos. Existem diversos pacotes do Python para a programação científica. + O Python é distribuído sob a licença Python Software Foundation (compatível com a GPL). Consulte mais informações na página Web. + + Esta infraestrutura acrescenta um item adicional ao menu principal do &cantor;, chamado Pacote. O único item deste menu é o PacoteImportar pacote. Este item pode ser usado para importar pacotes de Python para a área de trabalho. + + + Esta infraestrutura tem suporte apenas ao Python 2. + + + + + Scilab: + + O Scilab é um pacote de computação numérica livre e multiplataforma, assim como uma linguagem de programação numérica. + O Scilab é distribuído sob a licença CeCILL (compatível com a GPL). Consulte mais informações em http://www.scilab.org/. + + Você precisa ter instalado o Scilab na versão 5.5 ou superior no seu sistema para usar esta infraestrutura. + + + + + Octave: + + O &GNU; Octave é uma linguagem de alto-nível, destinada principalmente para cálculos numéricos. Ela oferece uma interface conveniente por linha de comando para resolver problemas lineares e não-lineares de forma numérica e para fazer outras experiências matemáticas, usando uma linguagem que é compatível de um modo geral com o MATLAB. Para mais informações, veja em http://www.gnu.org/software/octave/. + + + + Lua: + + Lua é uma linguagem de programação rápida e leve, com uma sintaxe procedimental simples. Essa linguagem disponibiliza diversas bibliotecas destinadas à matemática e à ciência. + Consulte a página http://www.lua.org/ para obter mais informações. + Esta infraestrutura tem suporte à luajit 2. + + + + + + + +O Espaço de Trabalho do &cantor; + + + Imagem do Espaço de Trabalho do &cantor; + + + + + + Imagem do Espaço de Trabalho do &cantor; + + + + +A interface da folha de cálculo do &cantor; consiste de três partes: + A barra de páginas, onde você poderá circular entre as folhas de cálculo abertas. + Um painel de ajuda, onde você poderá obter ajuda sobre um determinado comando com a sintaxe "? comando". + Um painel de Gerenciamento de Variáveis, onde você poderá ver uma lista com todas as variáveis disponíveis na folha de trabalho atual. Os painéis de Ajuda e de Gerenciamento de Variáveis são apresentados como páginas na barra lateral de uma janela do &cantor;. O gerenciador de variáveis poderá ser usado apenas para as infraestruturas do Maxima (se estiver ativo na página ConfiguraçõesConfigurar o &cantor;... Maxima), &kalgebra;, Octave, Python2, Qalculate e Scilab. + A folha de cálculo em si. + + + +A Folha de Cálculo +A folha de cálculo é a área básica para trabalhar com o &cantor;. Nela, você poderá introduzir as expressões, deixar que a infraestrutura faça os seus cálculos e olhar para os resultados. Os comandos que as folhas de cálculo aceitam dependem da infraestrutura escolhida, sendo que você deverá aprender a sintaxe apropriada (o botão Mostrar a Ajuda o leva diretamente para a documentação). Se souber o comando, mas precisar de informações adicionais, você poderá escrever "? comando", para que apareça uma ajuda de contexto à direita da área de trabalho. Se você quiser ver folhas de exemplo, poderá ir à opção Obter Folhas de Exemplo no menu Arquivo e obter as folhas que outros usuários tiverem publicado. +Para controlar cada elemento de comando na folha de trabalho, você poderá usar os botões de controle que aparecem à direita da folha de trabalho, ao passar o cursor do mouse sobre o campo de um elemento. Existem três ações básicas para cada elemento: Avaliar o elemento, para atualizar o resultado do cálculo do elemento, Arrastar o elemento para passar o elemento para outro local da folha de trabalho atual e Remover o elemento para retirar o elemento da folha de trabalho atual. +As definições do tipo de fonte e alinhamento das folhas de trabalho poderão ser alterados com a barra de ferramentas acima da folha de trabalho. + + Configurações + O menu de Configurações permite-lhe alterar algumas opções da aparência da sua folha de cálculo atual. + + + Formatação com o &latex; + + Esta opção muda a forma como os resultados são apresentados a si. Se estiver ativada, irá passar o resultado pelo sistema &latex;, de modo a produzir fórmulas apelativas visualmente. Por exemplo, o 3*x^2*sqrt(2)*x+2/3 transforma-se em + + + + 3*x^2*sqrt(2)*x+2/3 + + + + + + Realce de Sintaxe + + O realce de sintaxe aumenta a legibilidade do código, realçando as palavras-chave ou os parênteses correspondentes com cores diferentes. + + + + Completação + + Quando esta opção estiver ativa, o &cantor; mostrará completações possíveis para o comando que estiver digitando no momento, ao usar a tecla Tab. Se só existir uma escolha possível, ele irá inserir o resto do comando para você. + + + + Números de Linha + + Esta opção controla se as diferentes expressões deverão ter um número à frente, de modo que, se possível, possa por exemplo no Maxima voltar a invocar os resultados mais antigos com o comando %O1. + + + + Animar a Folha de Cálculo + + Esta definição controla se as diferentes animações serão usadas para realçar as alterações de uma folha de cálculo. + + + + + + + + + +Referência de comandos + + +A janela principal do &cantor; + +O &cantor; tem os itens de menu comuns no &kde;. Para mais informações, leia o item Menu no capítulo Fundamentos do &kde;. + +Itens de menu adicionais ou especiais no &cantor;: + + +Menu Arquivo + + + + &Ctrl;N Arquivo Novo +Cria uma nova folha de trabalho com a infraestrutura padrão. + + +Arquivo Novo Infraestrutura +Cria uma nova folha de trabalho com a infraestrutura escolhida. + + +Arquivo Obter uma folha de exemplo +Abre a janela para obter exemplos enviados por outros usuários do &cantor; com o GetHotNewStuff. + + +Arquivo Abrir um exemplo +Abre a janela para escolher um exemplo a carregar. Os exemplos deverão ser transferidos com a opção Arquivo Obter uma folha de trabalho de exemplo de antemão. + + +Arquivo Salvar texto simples... +Permite salvar a folha de trabalho atual como um documento em texto simples. + + +Arquivo Exportar para LaTeX +Permite salvar a folha de trabalho atual como um documento em &latex;. + + +Arquivo Publicar a folha de trabalho +Abre a janela para publicar a sua folha de trabalho atual e disponibilizá-la para os outros usuários do &cantor; através do GetHotNewStuff. + + +Arquivo Executar o programa +Permite carregar e executar os programas em lote da infraestrutura atual. + + + + + + + +O menu Exibir + + + + &Ctrl;+ Exibir Ampliar +Amplia a folha de trabalho atual em 10%. + + + &Ctrl;- Exibir Reduzir +Reduz a folha de trabalho atual em 10%. + + +Exibir Mostrar o Editor de Programas +Abre a janela de edição de programas em lote para a infraestrutura atual. + + +Exibir Painéis Ajuda +Ativa ou desativa a visibilidade da aba de Ajuda na barra lateral. + + +Exibir Painéis Gerenciador de variáveis +Ativa ou desativa a visibilidade da aba do Gerenciador de variáveis na barra lateral. + + + + + + +O menu Folha de Trabalho + + + +Folha de trabalho Avaliar a folha de trabalho +Dispara a avaliação de toda a folha de trabalho. + + + &Shift;Return Folha de trabalho Avaliar o item +Dispara a avaliação do item atual. + + + &Ctrl;Return Folha de trabalho Inserir um item de comando +Insere um novo item de comando abaixo da posição atual do cursor. + + +Folha de trabalho Inserir um item de texto +Insere um novo item de texto abaixo da posição atual do cursor. + + +Folha de trabalho Inserir uma imagem +Insere o modelo de imagem abaixo da posição atual do cursor. Você terá que clicar com o &RMB; no modelo para configurar os detalhes da imagem. + + +Folha de trabalho Inserir uma quebra de página +Insere uma quebra de página abaixo da posição atual do cursor. + + + &Shift;Del Folha de trabalho Remover o item atual +Remove o item atual da folha de trabalho. + + + + + + +O menu Configurações +Este menu contém os itens de Configuração normais do &kde;, assim como os itens descritos na seção de Configuração. + + + +O menu Ajuda +&help.menu.documentation; + + + + + +Guia de Programação do &cantor; + +O &cantor; é facilmente extensível com 'plugins'. Você poderá criar + + Infraestruturas: + + Uma nova infraestrutura permite-lhe usar a interface do &cantor; com um programa diferente. + + + + Assistentes: + + Os assistentes são janelas que automatizam as tarefas mais comuns (como a inserção de uma matriz ou a execução de um programa.) + + + + +Atualmente, não existe nenhum tutorial de desenvolvimento ou documentação da API; por isso, se precisar criar um plugin, você terá que consultar o código. Todas as definições da interface estão na pasta lib. Para as implementações de exemplo, veja alguns dos plugins que vêm com o &cantor;. + + + + +Perguntas e respostas +&reporting.bugs; &updating.documentation; + + O Item do Menu Formatação com o LaTeX não está disponível + Nem todas as infraestruturas tem suporte a todas as opções. A versão atual tem suporte ao resultado em &latex; para as infraestruturas Maxima, Qalculate! e Sage. + + + Instalei o Sage/Maxima, mas a infraestrutura apropriada não aparece. + + Talvez o &cantor; não tenha detectado a localização corretamente. Vá à janela em ConfiguraçõesConfigurar o &kappname;... e mude a Localização do aplicativo apropriado. + + + + Que nome mais esquisito - o que ele tem a ver com matemática? + &cantor; vem do matemático Alemão Georg Cantor, o criador da teoria dos conjuntos. + + + + + + +Créditos e licença + +&cantor; +Direitos autorais do programa 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +Direitos autorais da documentação © 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +Tradução de Marcus Gama marcus.gama@gmail.com +&underFDL; &underGPL; + + +Instalação + + +Como obter o &cantor; +&install.intro.documentation; + + +Requisitos + +Para poder usar com sucesso o &cantor;, você precisa do &kde; 4. Se quiser suporte para a formatação dos dados, precisa do &latex; e da LibSpectre. Para usar as diferentes infraestruturas, é necessário o pacote matemático apropriado. + + + + + + + + + +Compilação e instalação +&install.compile.documentation; + + +Configuração + +Dependendo do seu sistema, você poderá ter que ajustar as localizações para as diferentes aplicações usadas pelo &cantor;. + + + + + +&documentation.index; +
      + + diff --git a/po/pt_BR/docs/cantor/screenshot.png b/po/pt_BR/docs/cantor/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..29b208fb34487ef85cdf447b0f30e1a6f314f65a GIT binary patch literal 67652 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%0DKQccuM-3A?%HE*7QNQ%N-cM>=HbMbn$=uk25r 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 YW01Z@b$n2m2B1PwlzkynDg}lAKg^GSegFUf literal 0 HcmV?d00001 diff --git a/po/ro/cantor.po b/po/ro/cantor.po new file mode 100644 index 0000000..a341d0e --- /dev/null +++ b/po/ro/cantor.po @@ -0,0 +1,4986 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sergiu Bivol , 2010, 2020, 2021, 2022. +# Robert Roventa , 2010. +# Victor Cărbune , 2010. +# Cristian Oneț , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-08-14 16:51+0100\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Lokalize 21.12.3\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Rovența Robert Ioan" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "rov_93@yahoo.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Salvează rezultatul" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Reprezentare grafică avansată" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Delimitează" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Expresie:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Opțiuni suplimentare:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Delimitează" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Opțiune activă" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Calculează" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Diferențiază" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variabilă:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "De câte ori:" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integrează" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Limita de jos:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Limita de sus:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "Integrală definită" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Algebra liniară" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Creează matrice" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Coloane:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Linii:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Calculează valoriile proprii" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrice:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Calculează vectorii proprii" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Inversează matrice " + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Reprezentare 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variabilă" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Nume" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minim:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maxim:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Reprezentare 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "Prima variabilă" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "A 2-a varibilă" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Rulează script" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Rezolvă ecuații" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Ecuații:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variabile:" + +#: backendchoosedialog.cpp:64 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Select the Backend" +msgstr "Restartează platforma" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"

      %1

      %2

      Vezi %3 pentru mai " +"multe informații
      " + +#: backendchoosedialog.cpp:125 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"

      %1

      %2

      Vezi %3 pentru mai " +"multe informații
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Setează acestă platformă ca platformă implicită" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Integrează delimitări in foaia de lucru" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Julia script file (*.jl)" +msgstr "*.R|R fișier de tip script " + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Eroare - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Julia process." +msgstr "Pornire nereușită a procesului Sage" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "General" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Plot Integration:" +msgstr "Integrează" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Variable:" +msgid "Variable Management:" +msgstr "Variabilă:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Integrate Plots in Worksheet" +msgid "Internal Plot Format:" +msgstr "Integrează delimitări in foaia de lucru" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plots" +msgstr "Delimitează" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "PyPlot" +msgstr "Delimitează" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, fuzzy, kde-format +#| msgid "Scripts to autorun" +msgid "Commands to autorun" +msgstr "Scripturi către autorulare" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documentation" +msgstr "Document de deschis" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "http://docs.kde.org/stable/en/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Listă de scripturi către autorulare la începutul sesiunii" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Eroare: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Path to luajit command" +msgstr "Calea către Maxima:" + +#: backends/lua/luaextensions.cpp:20 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Lua script file (*.lua)" +msgstr "*.R|R fișier de tip script " + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Path to luajit:" +msgstr "Calea către Maxima:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, fuzzy, kde-format +#| msgid "" +#| "Maxima is a system for the manipulation of symbolic and numerical " +#| "expressions, including differentiation, integration, Taylor series, " +#| "Laplace transforms, ordinary differential equations, systems of linear " +#| "equations, polynomials, and sets, lists, vectors, matrices, and tensors. " +#| "Maxima yields high precision numeric results by using exact fractions, " +#| "arbitrary precision integers, and variable precision floating point " +#| "numbers. Maxima can plot functions and data in two and three dimensions. " +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima este un sistem pentru manipularea simblourilor și expresiilor " +"numericeaici fiind incluse și diferențierea, integrarea , seriile Taylor, " +"transformările Laplace, ecuatii diferențiale, sisteme pentru ecuații " +"liniare, polinoame, seturi, liste, vectori, matrici și tensorii. Câmpurile " +"Maxima sunt de mare precizie datorită folosirii fracțiilor exacte, preciziei " +"arbitrare pe numere naturale si variabile de tip real. Maxima poate " +"delimita funcții si date in două sau trei dimensiuni." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Calea către programul Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, fuzzy, kde-format +#| msgid "*.mac|Maxima batch File" +msgid "Maxima batch file (*.mac)" +msgstr "*.mac|Maxima fișier batch " + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Pornirea Maxima nereușită." + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima s-a oprit inexplicabil. Restartare." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima nu s-a putut porni de două ori într-un timp scurt. Se oprește " +"pornirea." + +#: backends/octave/octavebackend.cpp:62 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Octave, please check if there is a " +#| "translated version (currently Czech and Japanese) and use the correct url" +#| msgid "http://www.gnu.org/software/octave/doc/interpreter/" +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "http://www.gnu.org/software/octave/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, fuzzy, kde-format +#| msgid "" +#| "GNU Octave is a high-level language, primarily intended for numerical " +#| "computations.
      It provides a convenient command line interface for " +#| "solving linear and nonlinear problems numerically, and for performing " +#| "other numerical experiments using a language that is mostly compatible " +#| "with Matlab." +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave este un limbaj de performanță înaltă, fiind folosit în mod " +"regulat pentru calculul numeric.
      Oferă o interfață eficientă pentru " +"rezolvarea problemelor liniare și nonliniare numerice și pentru efectuarea " +"altor experimente numerice folosind un limbaj care este în mare parte " +"compatibil cu Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, fuzzy, kde-format +#| msgid "*.m|Octave script file" +msgid "Octave script file (*.m)" +msgstr "*.m|Octave fișier script" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Eroare de sintaxă" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Python script file (*.py)" +msgstr "*.R|R fișier de tip script " + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Cantor python server." +msgstr "Pornire nereușită a procesului Sage" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "plot.ly" +msgstr "Delimitează" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Functions" +msgstr "Ecuații:" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, fuzzy, kde-format +#| msgid "Expression:" +msgid "Expression" +msgstr "Expresie:" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove" +msgstr "Șterge înregistrarea" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, fuzzy, kde-format +#| msgid "Clear Variables" +msgid "Clear List" +msgstr "Sterge variabilele" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, fuzzy, kde-format +#| msgid "Variable" +msgid "X variable" +msgstr "Variabilă" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, fuzzy, kde-format +#| msgid "Option active" +msgid "Options" +msgstr "Opțiune activă" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, fuzzy, kde-format +#| msgid "Plot title:" +msgid "Plot title" +msgstr "Titlul delimitării:" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, fuzzy, kde-format +#| msgid "Expression:" +msgid "expression" +msgstr "Expresie:" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, fuzzy, kde-format +#| msgid "Completion" +msgid "option" +msgstr "Completare" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, fuzzy, kde-format +#| msgctxt "@title:column" +#| msgid "Value" +msgid "value" +msgstr "Valoare" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "integer" +msgstr "Integrează" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "number" +msgstr "Numere de linie" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "default: %1" +msgstr "Implicite:" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, fuzzy, kde-format +#| msgid "Load Variables" +msgid "Load variables from a file" +msgstr "Încarcă variabilele" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, fuzzy, kde-format +#| msgid "Expression:" +msgid "Precision" +msgstr "Expresie:" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate" +msgstr "Evaluează înregistrarea" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plotting" +msgstr "Delimitează" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show grid:" +msgstr "Arată codul" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, fuzzy, kde-format +#| msgid "Plot title:" +msgid "Plot Style:" +msgstr "Titlul delimitării:" + +#: backends/qthelpconfig.cpp:45 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Comandă de intrare" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Append Text Entry" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Adăugă text de intrare" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Add local documentation" +msgstr "Calea către Maxima:" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Document to open" +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Document de deschis" + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Download additional documentations" +msgstr "Calea către Maxima:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Nume" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Restartează platforma" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name:" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Denumire:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, fuzzy, kde-format +#| msgid "" +#| "R is a language and environment for statistical computing and graphics, " +#| "similar to the S language and environment.
      It provides a wide " +#| "variety of statistical (linear and nonlinear modelling, classical " +#| "statistical tests, time-series analysis, classification, clustering, ...) " +#| "and graphical techniques, and is highly extensible. The S language is " +#| "often the vehicle of choice for research in statistical methodology, and " +#| "R provides an Open Source route to participation in that activity." +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R este un limbaj si un mediu pentru calculul statistic și grafică, similar " +"cu limbajul si mediul S.
      Oferă o varietate de statistică( modelare " +"liniară si nonliniară, teste statistice clasice, analize de tip timp-serie, " +"clasificare si adunare,...) și tehnici grafice fiind și foarte " +"extensibilă. Limbajul S este deseori modalitatea de cercetare în " +"metodologia statistică, limbajul R furnizând o modalitate de tip open-" +"source pentru a particpa la această activitate." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Eroare la deschiderea fișierului %1" + +#: backends/R/rextensions.cpp:22 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "R script file (*.R)" +msgstr "*.R|R fișier de tip script " + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Eroare la analizarea comenzii" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, fuzzy, kde-format +#| msgid "" +#| "Sage is a free open-source mathematics software system licensed under the " +#| "GPL.
      It combines the power of many existing open-source packages " +#| "into a common Python-based interface." +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage este un software matematic gratuit de tip sursă deschisă sub licență " +"GPL.
      Înglobează puterea mai multor pachete de tip sursă deschisă intr-" +"o interfață de bază Phyton . " + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Calea către programul Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, fuzzy, kde-format +#| msgid "Enable LaTex Typesetting" +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Activează setările de scriere LaTex" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Rezultatul lui %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Ultima ieșire a fost : \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, fuzzy, kde-format +#| msgid "" +#| "*.py|Python script file\n" +#| "*.sage|Sage script file" +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" +"*.py|Python fișier script\n" +"*.sage|Sage fișier script" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Procesul Sage s-a oprit în timp ce evalua expresia" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Procesul Sage s-a oprit inexplicabil" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Procesul Sage a ieșit în timp ce evalua expresia" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Procesul Sage a ieșit" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Pornire nereușită a procesului Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Enable LaTex Typesetting" +msgid "LaTeX typesetting:" +msgstr "Activează setările de scriere LaTex" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to the Sage executable" +msgid "Path to the Scilab executable" +msgstr "Calea către programul Sage" + +#: backends/scilab/scilabextensions.cpp:23 +#, fuzzy, kde-format +#| msgid "" +#| "*.py|Python script file\n" +#| "*.sage|Sage script file" +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +"*.py|Python fișier script\n" +"*.sage|Sage fișier script" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Open file" +msgstr "&Deschide exemplu" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "Download Example Worksheets" +msgid "Download Examples" +msgstr "Descarcă exemple de foi de lucru " + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Deschide exemplu" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Nicio platformă nu a fost găsită

      \n" +"
      Poți încerca:\n" +"
      • Se încarcă setările în dialogul de configurare;
      • Se " +"instalează pachetele pentru următorul program:
      • %2
      " +msgstr[1] "" +"

      Nicio platformă nu a fost găsită

      \n" +"
      Poți încerca:\n" +"
      • Se încarcă setările în dialogul de configurare;
      • Se " +"instalează pachetele pentru unul dintre programele următoare:
      • %2 " +"
      " +msgstr[2] "" +"

      Nicio platformă nu a fost găsită

      \n" +"
      Poți încerca:\n" +"
      • Se încarcă setările în dialogul de configurare;
      • Se " +"instalează pachetele pentru unul dintre programele următoare:
      • %2 " +"
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Eroare" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Platforma %1 nu este instalată." + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sesiunea %1" + +#: cantor.cpp:386 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to find the Cantor Part with error %1" +msgstr "Nu s-a putut găsi partea Cantor." + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Se calculează..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Gata" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Close Cantor" +msgstr "Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save Project" +msgstr "Salvează rezultatul" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Formatting" +msgstr "Delimitează" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Platforma care este folosită implicit" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, fuzzy, kde-format +msgid "Do Typesetting by default" +msgstr "Setează setările de scris la setări implicite" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, fuzzy, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Subliniază sintaxa dupa setările implicite" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, fuzzy, kde-format +msgid "Enable Completions by default" +msgstr "Activează completarea după setările implicite" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, fuzzy, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Activează numerotarea expresiilor după setările implicite" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, fuzzy, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Evaluează in mod automat intrările de sub cea curentă" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, fuzzy, kde-format +#| msgid "Export to LaTex" +msgid "Export to LaTeX" +msgstr "Trimite către LaTex" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Evaluează foaia de lucru" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, fuzzy, kde-format +msgid "Typeset using LaTeX" +msgstr "Setări de scriere care folosesc LaTex" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Evidențiere sitaxă" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Completare" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Numere de linie" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Pause Animation" +msgid "Animations" +msgstr "Întrerupe animația" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, fuzzy, kde-format +msgid "Restart Backend" +msgstr "Restartează platforma" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Evaluează înregistrarea" + +#: cantor_part.cpp:266 +#, fuzzy, kde-format +msgid "Insert Command Entry" +msgstr "Inserează comandă de intrare" + +#: cantor_part.cpp:272 +#, fuzzy, kde-format +msgid "Insert Text Entry" +msgstr "Introduceți textul" + +#: cantor_part.cpp:278 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Insert Markdown Entry" +msgstr "Inserează comandă de intrare" + +#: cantor_part.cpp:285 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Insert LaTeX Entry" +msgstr "Introduceți textul" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Expand All Results" +msgstr "Rezultat" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove All Results" +msgstr "Șterge rezultatul" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Șterge intrarea actuală" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Arată redactor de scripturi" + +#: cantor_part.cpp:337 +#, fuzzy, kde-format +msgid "Show Completion" +msgstr "Arată finalizarea" + +#: cantor_part.cpp:404 +#, fuzzy, kde-format +msgid "CantorPart" +msgstr "Parte a Cantor" + +#: cantor_part.cpp:406 +#, fuzzy, kde-format +#| msgid "(C) 2009-2010 Alexander Rieder" +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2010 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, fuzzy, kde-format +#| msgid "*.cws|Cantor Worksheet" +msgid "Cantor Worksheet (*.cws)" +msgstr "*.cws|Foaie de lucru Cantor" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Salvează ca" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Salvează" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Restart %1?" +msgstr "Restartează platforma" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Întrerupe" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Eroare sesiune: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Inițializare încheiată" + +#: cantor_part.cpp:690 +#, fuzzy, kde-format +#| msgid "Initializing Session" +msgid "Initializing..." +msgstr "Se inițializează sesiunea" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, fuzzy, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Vrei să urci foaia de lucru la un server web public ?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Întrebare - Cantor" + +#: cantor_part.cpp:873 +#, fuzzy, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" +"Foaia de lucru nu este salvată. Ar trebui sa o salvezi înainte de a o uploada" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Avertizare - Cantor" + +#: cantor_part.cpp:946 +#, fuzzy, kde-format +msgid "This backend does not support scripts." +msgstr "Această platformă nu suportă scripturi." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Vizualizare" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Foaie de lucru" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "&Configurări" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Fișier" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Nou" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Panouri" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Configurări" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Culoare fundal" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Implicit" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Culoare text" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Font" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Aldin" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Cursiv" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Mărește dimensiunea" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Micșorează dimensiunea" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Alege" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Reinițializează la implicit" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Arată rezultatele" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Ascunde rezultatele" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Help" +msgstr "Afișează %1 ajutor" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Întrerupt" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Bară de căutare" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Caută:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Următor" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Precedent" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Înlocuiește:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "Î&nlocuiește" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Înlocuiește t&ot" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Caută în:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "Potrivește ®istrul" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Familie font:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Dimensiune font:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Font secțiune" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Font subsecțiune" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Font paragraf" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Font subparagraf" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Capitol" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Subcapitol" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Secțiune" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Subsecțiune" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Paragraf" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Subparagraf" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Stil linie solidă" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Stil linie întreruptă" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Stil linie punctată" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Grosime linie" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Subțire" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Medie" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Groasă" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Culoare linie" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Stil linie" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Configurează imaginea" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Nu se poate încărca imaginea %1" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Salvează rezultatul" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Images (%1)" +msgstr "Șterge înregistrarea" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Configurări imagine" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Deschide" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Lățime" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Înălțime" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Previzualizare" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Dimensiune tipărire" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Configurări imagine" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(auto)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Deschide fișier cu imagine" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Arată codul LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Calea către programul latex" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Calea către programul dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Valoare" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "Variable" +msgid "" +msgstr "Variabilă" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "De la:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Către:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Titlu principal" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Scara abscisei" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Scara ordonatei" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Titlul delimitării:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Interfață KDE pentru aplicații matematice" + +#: main.cpp:74 +#, fuzzy, kde-format +#| msgid "(C) 2009-2010 Alexander Rieder" +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2010 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "" + +#: main.cpp:78 +#, fuzzy, kde-format +#| msgid "Octave backend" +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Platformă Octave" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, fuzzy, kde-format +#| msgid "Alexander Rieder" +msgid "Alexander Semke" +msgstr "Alexander Rieder" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "K platformă pentru algebră" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Platformă Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "" + +#: main.cpp:84 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Interface" +msgstr "Integrează" + +#: main.cpp:86 main.cpp:87 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor icon" +msgstr "Cantor" + +#: main.cpp:92 +#, fuzzy, kde-format +#| msgid "Use this backend" +msgid "Use backend " +msgstr "Utilizează această platformă" + +#: main.cpp:95 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documents to open." +msgstr "Document de deschis" + +#: main.cpp:130 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1" +msgstr "Eroare la deschiderea fișierului %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, fuzzy, kde-format +#| msgid "Syntax Error" +msgid "Cantor Math Error" +msgstr "Eroare de sintaxă" + +#: markdownentry.cpp:796 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Nu s-a putut găsi partea Cantor." + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, fuzzy, kde-format +#| msgid "&Match case" +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Potrivește ®istrul" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor files" +msgstr "Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Jupyter files" +msgstr "&Deschide exemplu" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Denumire:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Valoare:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgid "Add New Variable" +msgstr "Adaugă o nouă variabilă" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Încarcă variabilele" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Save Variables" +msgstr "Păstrează variabilele" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Remove Variables" +msgstr "Păstrează variabilele" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, fuzzy, kde-format +#| msgid "SearchBar" +msgid "Search/Filter" +msgstr "Bară de căutare" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Sunteți sigur că vreți sa ștergeți toate variabilele?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +#| msgid "Load Variables" +msgid "Load file" +msgstr "Încarcă variabilele" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Salvează rezultatul" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Șterge rezultatul" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Nu a putut fi găsită o componentă KDE pentru editarea textului;\n" +"verificați instalarea KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Redactor de scripturi" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Editor de scripturi -%1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Commands" +msgstr "Comandă de intrare" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Results" +msgstr "Rezultat" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +#| msgid "Error" +msgid "Errors" +msgstr "Eroare" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Platformă implicită:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "&Foaie de lucru" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, fuzzy, kde-format +#| msgid "Enable LaTex Typesetting" +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "Activează setările de scriere LaTex" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, fuzzy, kde-format +#| msgid "Enable LaTex Typesetting" +msgid "LaTeX typesetting" +msgstr "Activează setările de scriere LaTex" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Activează evidențierea sintaxei" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Evidențiere sitaxă" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "Activează Completarea" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Numere de linie" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Numere de linie" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "Integrează delimitări in foaia de lucru" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Ecuații:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "Reevaluează intrările in mod automat" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown:" +msgstr "Inserează comandă de intrare" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +#| msgid "Enable LaTex Typesetting" +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "Activează setările de scriere LaTex" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Găsește…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Adaugă țintă personalizată" + +#: textentry.cpp:76 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert to Text Entry" +msgstr "Introduceți textul" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Copy result" +msgstr "Șterge rezultatul" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Arată interpretările" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Arată codul" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show HTML Code" +msgstr "Arată codul" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Html" +msgstr "Afișează %1 ajutor" + +#: textresultitem.cpp:90 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show HTML" +msgstr "Afișează %1 ajutor" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" +"Nu se poate reda fișierul de tip Eps. S-ar putea să aveți nevoie de resurse " +"adiționale." + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Salvează rezultatul" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Fișierul nu poate fi scris %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, fuzzy, kde-format +#| msgid "Cannot write file %1." +msgid "Cannot write file." +msgstr "Fișierul nu poate fi scris %1." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Eroare la salvarea fișierului %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Eroare la încărcarea foii de stil latex.xsl" + +#: worksheet.cpp:1327 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1." +msgstr "Eroare la deschiderea fișierului %1" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Open File" +msgstr "&Deschide exemplu" + +#: worksheet.cpp:1350 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the selected file for reading." +msgstr "Eroare la deschiderea fișierului %1" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Sunt câteva probleme cu %1 platforma,\n" +"verificați configurația sau instalează pachetele de care ai nevoie.\n" +"S-ar putea să poți vedea doar foaia de lucru." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert To" +msgstr "Introduceți textul" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Command" +msgstr "Comandă de intrare" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown" +msgstr "Inserează comandă de intrare" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Image" +msgstr "Șterge înregistrarea" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Hierarchy Entry" +msgstr "Șterge înregistrarea" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Insert After" +msgstr "Introduceți textul" + +#: worksheet.cpp:1856 +#, fuzzy, kde-format +#| msgid "Insert Text Entry Before" +msgid "Insert Before" +msgstr "Inserează text de intrare înainte de " + +#: worksheet.cpp:1875 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Insert" +msgstr "Inserează înregistrare" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "Dimensiune tipărire" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Move Entries Down" +msgstr "Introduceți textul" + +#: worksheet.cpp:1933 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate Entries" +msgstr "Evaluează înregistrarea" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Entries" +msgstr "Șterge înregistrarea" + +#: worksheet.cpp:1947 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Collapse Command Entry Results" +msgstr "Inserează comandă de intrare" + +#: worksheet.cpp:1948 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Expand Command Entry Results" +msgstr "Adăugă comandă de intrare" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Remove Command Entry Results" +msgstr "Comandă de intrare" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Add Command Entry To Execution" +msgstr "Adăugă comandă de intrare" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "" + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "" + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "" + +#: worksheet.cpp:2111 +#, fuzzy, kde-format +#| msgid "Inline" +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "În linie" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove all results" +msgstr "Șterge rezultatul" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +#| msgid "Ready" +msgid "Red" +msgstr "Gata" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, fuzzy, kde-format +#| msgid "Do you also want to export the images?" +msgid "Do you really want to remove this entry?" +msgstr "Doriți să exportați și imagini?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Șterge înregistrarea" + +#: worksheetentry.cpp:850 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Drag Entry" +msgstr "Șterge înregistrarea" + +#, fuzzy +#~| msgid "Evaluate Worksheet" +#~ msgid "Animate Worksheet" +#~ msgstr "Evaluează foaia de lucru" + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Când e activat, Cantor va evalua in mod automat fiecare intrare de sub " +#~ "cea curentă." + +#~ msgid "Defaults" +#~ msgstr "Implicite:" + +#~ msgid "Enable Line Numbers" +#~ msgstr "Activează numerele in linie" + +#, fuzzy +#~| msgid "Evaluate Worksheet" +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Evaluează foaia de lucru" + +#, fuzzy +#~| msgid "Plot" +#~ msgid "Plot.ly" +#~ msgstr "Delimitează" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      Felul KDE de a face matematică" + +#, fuzzy +#~| msgid "Document to open" +#~ msgid "Documentation:" +#~ msgstr "Document de deschis" + +#, fuzzy +#~ msgid "Show %1 Help" +#~ msgstr "Afișează %1 ajutor" + +#, fuzzy +#~| msgid "Path to Maxima:" +#~ msgid "Path to Julia:" +#~ msgstr "Calea către Maxima:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Integrează delimitări in foaia de lucru" + +#~ msgid "Clear Variables" +#~ msgstr "Sterge variabilele" + +#~ msgid "Exclude from Execution" +#~ msgstr "Exclude de la executare" + +#~ msgid "Add to Execution" +#~ msgstr "Adaugă la executare" + +#~ msgid "Right click here to insert image" +#~ msgstr "Clic drept aici pentru a insera o imagine" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Confirmare - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Text de intrare" + +#, fuzzy +#~| msgid "Text Entry" +#~ msgid "LaTeX Entry" +#~ msgstr "Text de intrare" + +#, fuzzy +#~| msgid "Text Entry Before" +#~ msgid "Insert Entry Before" +#~ msgstr "Text de intrare înainte" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Introduceți textul" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Latex Entry" +#~ msgstr "Introduceți textul" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Calea către programul Octave" + +#~ msgid "Path to Maxima:" +#~ msgstr "Calea către Maxima:" + +#, fuzzy +#~| msgid "Failed to start Sage" +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Pornire nereușită a procesului Sage" + +#~ msgid "Path to Sage:" +#~ msgstr "Calea către Sage:" + +#, fuzzy +#~| msgid "Integrate Plots in Worksheet" +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "Integrează delimitări in foaia de lucru" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Calea către programul Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Calea către Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Fără nume" + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Alegeți platforma de utilizat:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Platforma pe care acest fișier a fost creeat nu este instalată. Este " +#~ "nevoie de %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Publică foaia de lucru" + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "Nu se poate deschide fișierul %1. Tip de fișier necunoscut" + +#, fuzzy +#~| msgid "*.tex|LaTex Document" +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex| Document LaTex " + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Foaie de lucru Cantor" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Server pentru Platforma Cantor R" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#, fuzzy +#~| msgid "Load Variables" +#~ msgid "Usage: loadVariables file" +#~ msgstr "Încarcă variabilele" + +#, fuzzy +#~| msgid "Load Variables" +#~ msgid "Loading failed." +#~ msgstr "Încarcă variabilele" + +#, fuzzy +#~| msgid "(C) 2009-2010 Alexander Rieder" +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2010 Alexander Rieder" + +#~ msgid "Cantor Server for R" +#~ msgstr "Server Cantor pentru R " + +#~ msgid "Could not start the server." +#~ msgstr " Serverul nu a putut fi pornit." + +#~ msgid "Start Animation" +#~ msgstr "Începe animația" + +#~ msgid "Restart Animation" +#~ msgstr "Repornește animația" + +#, fuzzy +#~| msgid "Append Text Entry" +#~ msgid "Append Latex Entry" +#~ msgstr "Adăugă text de intrare" + +#~ msgid "Other" +#~ msgstr "Altele" + +#~ msgid "And %1 more..." +#~ msgstr "Și %1 incă..." + +#~ msgid "Main Toolbar" +#~ msgstr "Bară de unelte principală" + +#~ msgid "Popup" +#~ msgstr "Indiciu" + +#~ msgid "The style used for Completion" +#~ msgstr "Stilul folosit pentru completare" + +#~ msgid "Insert Command Entry Before" +#~ msgstr "Inserează comanda de intrare după" + +#~ msgid "Command Entry Before" +#~ msgstr "Comandă de intrare înainte" + +#~ msgid "GroupBox" +#~ msgstr "Grupul Box" + +#~ msgid "Help" +#~ msgstr "Ajutor" + +#~ msgid "Show Help Panel" +#~ msgstr "Arată panoul de ajutor" diff --git a/po/ru/cantor.po b/po/ru/cantor.po new file mode 100644 index 0000000..b2dc2a9 --- /dev/null +++ b/po/ru/cantor.po @@ -0,0 +1,5250 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Alexander Potashev , 2009, 2010, 2011, 2012, 2014, 2015, 2016, 2017, 2018, 2019. +# Yury G. Kudryashov , 2009, 2012. +# Alexey Subach , 2011. +# Yuri Efremov , 2013. +# Alexander Yavorsky , 2020. +# Olesya Gerasimenko , 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-09-06 11:33+0300\n" +"Last-Translator: Olesya Gerasimenko \n" +"Language-Team: Basealt Translation Team\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 22.04.3\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Александр Поташев,Алексей Субач,Олеся Герасименко" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" +"aspotashev@gmail.com,alexey.subach@gmail.com,translation-team@basealt.ru" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Приостановить" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Запустить" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Остановить" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Сохранить результат анимации" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Анимация (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Построить график..." + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "График" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Выражение:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Дополнительные параметры:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&График" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Использовать эти параметры" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Алгебра" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Найти &производную" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Переменная:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Порядок производной:" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "П&акет" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Импорт пакета..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Пакет:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Найти &интеграл" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Нижний предел:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Верхний предел:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "определённый интеграл" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Линейная алгебра" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Ввести &матрицу" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Столбцов:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Строк:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Найти собственные &значения" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Матрица:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Найти собственные &векторы" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Найти &обратную матрицу" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "График функции" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Переменная" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Название" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Минимум:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Максимум:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Поверхность, задаваемая функцией" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "Первый аргумент функции" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "Второй аргумент функции" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Запустить сценарий" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Решить &уравнения" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Уравнения:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Неизвестные:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Выбор базовой системы" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Рекомендуемая версия: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Подробные сведения: %2.
      " + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Выполнены не все требования: " +"%1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Использовать по умолчанию эту систему компьютерной алгебры" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia — высокоуровневый высокопроизводительный язык программирования " +"с динамической типизацией, созданный для технических вычислений. Синтаксис " +"языка схож с синтаксисом других сред технических вычислений. Этот язык " +"предоставляет сложный компилятор, поддержку распределённых вычислений, " +"численную точность и обширную библиотеку математических функций." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"Путь, который задан в параметрах приложения, должен указывать " +"непосредственно на исполняемый файл Julia. Символические ссылки использовать " +"нельзя. Укажите корректный путь в параметрах приложения и попробуйте снова." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Сantor не удалось определить версию Julia для %1. Укажите корректный путь к " +"исполняемому файлу (символические ссылки использовать нельзя) и попробуйте " +"снова." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Попытка использовать Cantor с Julia v%1.%2.%3. Эта версия Cantor " +"скомпилирована с поддержкой Julia v%4.%5.%6. Укажите путь к этой версии " +"Julia или скомпилируйте Cantor с поддержкой версии %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Путь к программе командной строки Julia" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Включить управление переменными" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Встраивать графики в документ" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Графический пакет для вспомогательного средства построения графиков" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Gadfly не поддерживает построение поверхностей на графике" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Сценарии Julia (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Ошибка — Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"Невозможно войти в сеанс Julia из-за внутренней ошибки julia (не найден " +"внутренний файл — «%1»)" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "Невозможно войти в сеанс Julia из-за неизвестной внутренней ошибки" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Процесс Julia прекратил работу." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Не удалось запустить процесс Julia." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "Не удалось связаться с процессом Julia. Причина ошибки неизвестна." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Для системы Julia в настоящее время поддерживается только среда для " +"приложений визуализации GR (https://gr-framework.org/). Сначала необходимо " +"установить соответствующий пакет (если он ещё не установлен). Чтобы это " +"сделать, выполните команду Pkg.install(\"GR\") в Cantor или в командной " +"строке Julia. Обратите внимание, что на выполнение этой операции потребуется " +"некоторое время, поэтому рекомендуется выполнить команду в командной строке " +"Julia — это позволит отслеживать ход выполнения установки пакета." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Общие" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Исполняемый файл:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Встраивание графиков:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Если параметр включён, графики будут отображаться внутри рабочего " +"пространства. Если нет, они будут появляться во внешнем окне." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Включено" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Управление переменными:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Отслеживать создание и уничтожение переменных и показывать существующие " +"переменные на панели переменных." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Формат встроенных графиков:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "Внутренний формат графиков, если включено их внедрение." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" +"Графический пакет для использования вспомогательным средством построения " +"графиков" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Пакет для вспомогательного средства построения графиков" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Plots" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Автозапуск" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Автоматически запускаемые команды" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Документация" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Список сценариев, которые запускаются в начале сеанса" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Ошибка: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Команды для автоматического выполнения при открытии нового документа. Они " +"могут быть полезны для загрузки необходимых модулей, смены среды и так далее." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua — быстрый и легковесный язык сценариев с простым процедурным " +"синтаксисом. Существует множество математических и научных библиотек для Lua." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Путь к команде luajit" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Сценарии Lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Путь к luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" +"

      Справочная система Maxima

      Функция apropos

      Выполняет " +"поиск названий Maxima, содержащих «name»; name должно быть строкой " +"или символом. Следовательно, apropos(exp) возвращает список всех " +"флагов и функций, название которых содержит «exp» (например, expand, " +"exp и exponentialize). Поэтому, если удаётся вспомнить только " +"часть названия команды или переменной Maxima, возможно использовать эту " +"команду, чтобы найти оставшуюся часть названия. Также возможно ввести " +"apropos(tr_) для получения списка многих связанных с транслятором " +"переключателей, большинство из которых начинается с tr_." +"

      apropos(\"\") возвращает список всех названий Maxima." +"

      apropos возвращает пустой список [], если названий не найдено." +"

      Функция describe

      describe(string) является " +"эквивалентом describe(string, exact).

      describe(string, exact) " +"находит запись с заголовком, который соответствует строке (без учёта " +"регистра), если такая запись имеется.

      describe(string, inexact) находит все документированные записи, которые содержат указанную строку в " +"своих заголовках. Если таких записей несколько, программа Maxima предложит " +"пользователю выбрать одну или несколько записей для отображения.

      ? " +"foo (с пробелом между ? и foo) является эквивалентом " +"describe(\"foo\", exact), а ?? foo — эквивалентом " +"describe(\"foo\", inexact).

      describe(, inexact) " +"предоставляет список всех тем, документированных в интернет-руководстве." +"

      describe заключает в кавычки аргумент. describe " +"возвращает true, если найдена какая-либо документация, в ином случае " +"— false.

      Функция example

      example(topic) " +"отображает примеры с ключевым словом topic, которое является символом " +"или строкой. Чтобы получить примеры для таких операторов, как if, " +"do или lambda, аргумент должен быть строкой, например: " +"example(\"do\"). example не учитывает регистр. Большинство тем " +"являются названиями функций.

      example() возвращает список всех " +"распознанных тем.

      Название файла, содержащего примеры, указывается " +"глобальной переменной параметра manual_demo, которая по умолчанию " +"принимает значение \"manual.demo\".

      example заключает " +"аргумент в кавычки. example возвращает done, когда найдены " +"примеры или имеется аргумент. В ином случае example возвращает список " +"всех распознанных тем." + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima — это система обработки символьных и численных выражений, " +"включая дифференцирование, интегрирование, ряды Тейлора, преобразования " +"Лапласа, обыкновенные дифференциальные уравнения, системы линейных " +"уравнений, многочлены и множества, списки, векторы, матрицы и тензоры. " +"Maxima получает численные результаты высокой точности, используя точные " +"дроби, целые числа произвольной длины и действительные числа переменной " +"точности. Maxima позволяет строить двумерные и трёхмерные графики функций и " +"данных." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Путь к исполняемому файлу Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Ошибка: слишком много */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Ошибка: слишком много /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Ошибка: ожидалась кавычка \" до ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Ожидание результата графика" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Пакетные файлы Maxima (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Не удалось запустить систему Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Система Maxima аварийно завершилась. Перезапуск..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Приложение Maxima завершилось с ошибкой дважды за короткий промежуток " +"времени. Попытки запуска прекращены." + +# http://xgu.ru/wiki/GNU_Octave -- ссылки на информацию об Octave (в том числе на русском языке). +# http://ru.wikibooks.org/wiki/GNU_Octave -- зачатки русского перевода документации. +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave — это высокоуровневый язык программирования, " +"предназначенный в основном для численных расчётов.
      GNU Octave " +"предоставляет удобный интерфейс командной строки для численного решения " +"линейных и нелинейных задач и выполнения других видов численных расчётов с " +"использованием языка, по большей части совместимого с MATLAB." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Сценарии Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Синтаксическая ошибка" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Сбой проверки встраивания графика." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "Встраивание графиков будет отключено." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"Встраивание графиков не работает — программа Cantor обнаружила, что Octave " +"не может создавать графики по причине отсутствия графических систем: этот " +"вывод основывается на пустом выводе функции available_graphics_toolkits(). " +"Рекомендуется установить дополнительные пакеты ОС (например, gnuplot, fltk " +"или qt), чтобы получить возможность создавать графики." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python — исключительно мощный язык программирования, используемый для " +"широкого круга приложений. Существует несколько пакетов для языка Python, " +"предназначенных для научных расчётов." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# Bokeh не поддерживает построение поверхностей на графике" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Сценарии Python (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Python-сервер Cantor прекратил работу." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Не удалось запустить Python-сервер Cantor." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"Не удалось связаться с Python-сервером Cantor. Причина ошибки неизвестна." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Чтобы встраивать изображения с помощью Matplotlib, необходимо сначала " +"установить пакет «matplotlib» на языке Python." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Чтобы встраивать изображения с помощью Plot.ly, необходимо сначала " +"установить пакет «plotly» на языке Python и специальный совместимый с Plot." +"ly исполняемый файл «orca». Подробные сведения доступны в документации Plot." +"ly, в статье «Static Image Export» («Экспорт статических изображений»)." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor — Диалог графика" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Функции" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Заголовок" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Выражение" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Добавить" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Удалить" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Очистить список" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Переменная x" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Стиль" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Линии" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Кресты" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Кресты и линии" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Квадраты" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Гистограмма" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Шаги" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "График «Японские свечи»" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Точки" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Сглаживание" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Нет" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "С сохранением монотонности" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Натуральные кубические сплайны" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Кривая Безье" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Кривая Безье (монотонная)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Диапазон значений функции" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Диапазон по оси x" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "&Частота точек" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Р&азмер шага" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Параметры" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Заголовок графика" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Метка оси X" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Метка оси Y" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Расположение легенды" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Скрыть легенду" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Верхний левый угол" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Верхний правый угол" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Нижний левый угол" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Нижний правый угол" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Снизу" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Снаружи" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Показывать сетку" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Показывать полный край" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Использовать цвета" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Показывать внутри" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Логарифмическая шкала оси x" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Логарифмическая шкала оси y" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Параметры файла" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Сохранить график в файл" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Тип файла" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Определить из имени файла" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! — это не просто программная копия обычного калькулятора. " +"Программа Qalculate! нацелена на использование превосходного интерфейса, " +"мощности и гибкости современных компьютеров в полной мере. Основное внимание " +"в Qalculate! уделяется работе с выражениями. Возможно не вводить каждое " +"число в математическом выражении отдельно, а написать целое выражение и " +"затем изменять его. Преобразование выражений гибкое и устойчивое к ошибкам, " +"так что если что-то всё же будет сделано неправильно, программа Qalculate! " +"сообщит об этом. Выражения, которые нельзя полностью сократить, не приводят " +"к ошибкам. Qalculate! упростит их настолько, насколько это возможно и выдаст " +"ответ в виде выражения. В дополнение к числам и арифметическим операторам, " +"выражение может содержать любые комбинации переменных, единиц измерения и " +"функций." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Как будут автоматически преобразовываться единицы измерения. Если да, " +"значения будут автоматически приводиться к самым подходящим единицам " +"измерения системы СИ." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Единица измерения углов по умолчанию для тригонометрических функций." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Основание системы счисления чисел результата." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Будет ли результат вычисления упрощён или разложен на множители." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Будут ли рациональные числа показаны как десятичная дроби, правильные или " +"неправильные дроби." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Бесконечная дробная часть числа будет продолжена многоточием вместо " +"округления (пример: 2/3 отображается как 0.666666... вместо 0.666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Использовать все десятичные префиксы СИ. Если нет, префиксы, которые не " +"являются степенью тысячи, не будут использоваться автоматически." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Если да, отрицательные степени появятся вместо деления (например, 5/x^2 " +"станет 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Формат записи числа." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Если да, графики будут отображаться внутри рабочего пространства. Если нет, " +"они будут появляться в отдельном окне." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Должны ли разные цвета быть использованы при построении графиков." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Должна ли сетка быть нанесена на график." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Должны ли быть нарисованы вокруг графика полные границы." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Толщина линий, в пикселах." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Количество шагов интерполяции, используемых при построении графиков." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Режим сглаживания графиков." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Стиль графиков." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Расположение легенды на графиках." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Не может быть напечатано. Установлен ли пакет gnuplot?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "пропущен %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 должно быть числом." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 должно быть целым числом." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 должно быть логическим (булевым) значением." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "недопустимый параметр для %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "найдено несколько выражений в одной команде графика (%1 и %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "Ошибка" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "Предупреждение" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" +"Не существует функции, переменной или единицы измерения с заданным именем." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Функция: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Внешний вид графика" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Рисовать график одной или нескольких функций подряд или в отдельных окнах." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "выражение" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "параметр" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "значение" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "целое число" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "логический" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "число" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "по умолчанию: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Имя функции" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Заголовок" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "метка оси x" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "метка оси y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Изображение для сохранения графика. Если пусто, показать график на экране. " +"Если inline=true, изображение покажется независимо от значения этого " +"параметра." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Расширение изображения для сохранения. Возможные значения: auto " +"(автоматически), png, ps, eps, latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" +"Установите в «true» для раскрашивания графика, «false» — для чёрно-белого " +"изображения." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Минимальное значение по оси x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Максимальное значение по оси x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Будет ли логарифмическая шкала использована для оси x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Будет ли логарифмическая шкала использована для оси y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Основание логарифма для шкалы x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Основание логарифма для шкалы y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Будет ли показана сетка на графике." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Будет ли график окружён полями со всех сторон (не только со стороны осей)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Толщина линий." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Где будет расположена легенда графика. Возможные значения: none (нигде), " +"top_left (слева вверху), top_right (справа вверху), bottom_left (снизу " +"слева), bottom_right (снизу справа), below (ниже), outside (снаружи)." + +# BUGME: unique -> monotonic --aspotashev +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Сглаживание графика. Возможные значения: none (без сглаживания), monotonic " +"(с сохранением монотонности), csplines (натуральные кубические сплайны), " +"bezier (кривая Безье), sbezier (монотонная кривая Безье)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Стиль графика. Возможные значения: lines (линии), points (кресты), " +"points_lines (кресты и линии), boxes (квадраты), histogram (гистограмма), " +"steps (шаги), candlesticks («Японские свечи»), dots (точки)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Использовать вторую ось x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Использовать вторую ось y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" +"Будут ли графики нарисованы внутри документа, вместо открытия нового окна." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" +"Расстояние между двумя точками интерполяции. Также обратите внимание на " +"количество шагов интерполяции." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" +"Количество точек интерполяции. Также обратите внимание на количество шагов " +"интерполяции." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Имя переменной x. Должно быть неизвестной переменной." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Сохранить значения переменных в файл" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Сохранить все определённые на данный момент переменные в файл. Они могут " +"быть позже загружены из этого файла командой %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "файл" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "файл: файл для сохранения" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Загрузить переменные из файла" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Загрузить переменные из файла, который был ранее создан командой %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "файл: файл для загрузки" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Система счисления:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Формат дробей:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Десятичный" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Точный" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Дробный" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Правильные дроби" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Формат записи числа:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Полный" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Инженерный" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Точный" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Указывать на бесконечный ряд:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Использовать все префиксы СИ:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Использовать отрицательные степени:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Выполнить" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Преобразовывать к наиболее подходящим единицам СИ:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "радианы" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "градусы" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "грады" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Упрощение формул:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "упрощение" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "разложение на множители" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Единица измерения углов:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Построение графиков" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Показывать графики внутри документа:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Показывать полные границы:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Толщина линий:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Частота точек:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Режим сглаживания:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Натуральные кубические сплайны" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Шаги" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Расположение легенды:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Цветные графики:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Показывать сетку:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Стиль графика:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Изменение записи" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Добавление новой записи" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Имя не может быть пустым." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Добавить локальную документацию" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Получить другую документацию" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Загрузить дополнительную документацию" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Некорректный сжатый файл справки Qt." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Документация уже была импортирована" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Изменить" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Удалить" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Удалите это с помощью средства получения новых данных." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Установка дополнительных файлов документации" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Имя" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Путь" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Добавить" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Значок:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Выберите значок" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Имя:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Укажите имя" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Выберите имя…" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Путь:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Выберите файл справки Qt…" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Выберите файл справки Qt…" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" +"

      Справочная система R: help() и ?:


      Функция " +"help() и оператор справки ? в R предоставляют доступ к " +"страницам документации по функциям, наборам данных и другим объектам R, как " +"для пакетов в стандартном дистрибутиве R, так и для дополнительных пакетов." +"

      Чтобы получить доступ, например, к документации по стандартной " +"функции lm (линейная модель), следует ввести команду help(lm) или help(\"lm\"), или ?lm, или ?\"lm\" (то есть " +"кавычки необязательны).

      Чтобы получить доступ к справке по функции в " +"пакете, который в настоящее время не загружен, дополнительно укажите " +"название этого пакета: например, для получения документации по функции " +"rlm() (надёжная линейная модель) в пакете MASS следует указать " +"help(rlm, package=\"MASS\").

      Стандартные названия в R состоят " +"из букв в верхнем и нижнем регистрах, цифр (0-9), символов подчёркивания (_) " +"и точек (.) и должны начинаться с буквы или точки. Для получения справки по " +"объекту с нестандартным названием (например, по оператору справки ?) " +"это название необходимо заключить в кавычки: help('?') или ?\"?\".

      Функцию help() также возможно использовать для получения " +"доступа к информации о пакете из библиотеки; например, при вводе " +"help(package=\"MASS\") отобразится перечень доступных справочных " +"страниц для пакета, а также ряд других сведений.

      Справочные страницы " +"для функций обычно содержат раздел с исполняемыми примерами, иллюстрирующими " +"работу функций. Эти примеры возможно выполнять в текущем сеансе R с помощью " +"команды example(): например, example(lm)." + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R — это язык программирования и среда для статистических вычислений и " +"графики, похожие на язык программирования и среду разработки S.
      Этот " +"язык предоставляет широкий выбор статистических (линейное и нелинейное " +"моделирование, классические статистические тесты, анализ временных рядов, " +"классификация, кластеризация, ...) и графических инструментов. Кроме того, " +"он легко расширяем. Язык программирования S используется повсеместно для " +"статистических исследований, а язык R — альтернативный вариант с открытым " +"кодом." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Ошибка открытия файла %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "Сценарии R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Ошибка при анализе выражения" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "URL-адрес локальной документации R" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Сделайте двойной щелчок мышью для добавления файлов" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|Сценарии R (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage — это бесплатная математическая программа с открытым исходным " +"кодом, распространяемая на условиях лицензии GPL.
      Она использует мощь " +"многих существующих пакетов с открытым исходным кодом, предоставляя к ним " +"общий интерфейс на языке Python." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Путь к исполняемому файлу Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Показывать результаты системы Sage с помощью LaTeX" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Результат операции %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Последний вывод был: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Сценарии Python (*.py);;Сценарии Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Версия Sage %1.%2 не поддерживается. Обновите установку до поддерживаемой " +"версии, чтобы обеспечить работу в Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Не удалось определить версию Sage. Проверьте установку и вывод «sage -v»." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Процесс Sage аварийно завершился при вычислении этого выражения" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Процесс Sage аварийно завершился" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Процесс Sage завершился при вычислении этого выражения" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Процесс Sage завершился" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Не удалось запустить систему Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "LaTeX:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"Показ результатов системы Sage с помощью LaTeX не всегда работает корректно, " +"поэтому при необходимости эту опцию возможно отключить" + +# BUGME: are docs available in Russian? --aspotashev +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab — это свободное программное обеспечение, кроссплатформенная " +"вычислительная система и высокоуровневый численно-ориентированный язык " +"программирования. Scilab распространяется под лицензией CeCILL (совместима с " +"GPL)." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Путь к исполняемому файлу Scilab" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Сценарии Scilab (*.sce);;Файлы функций Scilab (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "Файл «%1» уже открыт." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Открытие файла" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Загрузить примеры" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "Открыть &пример..." + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Перейти к предыдущему документу" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Перейти к следующему документу" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Все поддерживаемые файлы (*.cws *ipynb);;Документы Cantor (*.cws);;Jupyter " +"Notebook (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Не обнаружено ни одной поддерживаемой системы компьютерной алгебры

      \n" +"
      Возможно:\n" +"
      • Изменить параметры настройки в диалоге конфигурации;
      • " +"
      • Установить пакеты, содержащие одну из следующих программ:
      • %2
      " +msgstr[1] "" +"

      Не обнаружено ни одной базовой системы

      \n" +"
      Вы можете попробовать:\n" +"
      • Изменить настройки в диалоге конфигурации;
      • Установить " +"пакеты, содержащие одну из следующих программ:
      • %2
      " +msgstr[2] "" +"

      Не обнаружено ни одной базовой системы

      \n" +"
      Вы можете попробовать:\n" +"
      • Изменить настройки в диалоге конфигурации;
      • Установить " +"пакеты, содержащие одну из следующих программ:
      • %2
      " +msgstr[3] "" +"

      Не обнаружено ни одной базовой системы

      \n" +"
      Вы можете попробовать:\n" +"
      • Изменить настройки в диалоге конфигурации;
      • Установить " +"пакеты, содержащие следующую программу:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Ошибка" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Базовая система %1 не установлена" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"Базовая система %1 установлена, но не активна. Проверьте установку и " +"параметры Cantor" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Сеанс %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Не удалось найти компонент Cantor, ошибка %1." + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Вычисление..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Готово" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "изменён" + +# BUGME: broken English --aspotashev +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" +"Несколько открытых документов не были сохранены. Выйти из Cantor и закрыть " +"все документы?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Выход из Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Проект был изменён. Сохранить изменения?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Сохранение проекта" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Форматирование" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Базовая система по умолчанию" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "По умолчанию показывать результаты с помощью LaTeX" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Использовать подсветку синтаксиса по умолчанию" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Использовать автодополнение по умолчанию" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "По умолчанию показывать номера строк" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "По умолчанию включать анимацию в документе" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"По умолчанию включить обработку математических выражений внутри $$..$$ во " +"фрагментах текста и записях Markdown (должен быть установлен пакет pdflatex)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Автоматически пересчитывать все выражения ниже текущего" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Запрашивать подтверждение при перезапуске базовой системы" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Сохранять форматирование текста при сохранении документа в формате Jupyter " +"Notebook" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Использовать старый стиль размещения записей Cantor" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Показать ошибку обработки внедрённых математических символов" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Предельное количество отображаемых строк текстового результата" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Шрифт иерархии для главы" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Размер шрифта иерархии для главы" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Шрифт иерархии (курсив) для главы" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Шрифт иерархии (полужирный) для главы" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Шрифт иерархии для подглавы" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Размер шрифта иерархии для подглавы" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Шрифт иерархии (курсив) для подглавы" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Шрифт иерархии (полужирный) для подглавы" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Шрифт иерархии для раздела" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Шрифт иерархии (курсив) для раздела" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Шрифт иерархии (полужирный) для раздела" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Шрифт иерархии для подраздела" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Шрифт иерархии (курсив) для подраздела" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Шрифт иерархии (полужирный) для подраздела" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Шрифт иерархии для параграфа" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Шрифт иерархии (курсив) для параграфа" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Шрифт иерархии (полужирный) для параграфа" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Шрифт иерархии для подпараграфа" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Шрифт иерархии (курсив) для подпараграфа" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Шрифт иерархии (полужирный) для подпараграфа" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Сохранить в виде обычного текста" + +# BUGME: add ellipsis ("...") --aspotashev +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Экспорт в LaTeX..." + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Посчитать все выражения" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Масштаб" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Показывать результаты с помощью LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Подсветка синтаксиса" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Автодополнение" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Показывать номера строк" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +msgid "Animations" +msgstr "Остановить анимацию" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Внедрённые математические символы" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Перезапустить базовую систему" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Посчитать выражение" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Вставить выражение" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Вставить фрагмент текста" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Вставить запись Markdown" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Вставить фрагмент кода LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Вставить разрыв страницы ниже" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Вставить изображение ниже" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Свернуть все результаты" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Развернуть все результаты" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Удалить все результаты" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Удалить текущее выражение" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Редактор сценариев" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Показать варианты автодополнения" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "© Alexander Rieder, 2009-2015" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Документы Cantor (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyter Notebook (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Сохранение в файл" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Сохранить" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Все доступные результаты расчётов будут потеряны. Действительно " +"перезапустить %1? " + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Перезапустить %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "&Прервать" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Ошибка в сеансе: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Инициализация завершена" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Инициализация..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[только чтение]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Опубликовать текущий документ на общедоступном веб-сервере?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Вопрос — Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Документ не сохранён. Перед публикацией его необходимо сохранить." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Предупреждение — Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Эта базовая система не поддерживает сценариев." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Правка" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Вид" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Документ" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Настройка" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Файл" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Создать" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Панели" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "&Настройка" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Цвет фона" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "По умолчанию" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Цвет текста" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Шрифт" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Полужирный" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Курсив" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Увеличить размер" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Уменьшить размер" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Выбрать" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Вернуться к параметрам по умолчанию" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Показать результаты" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Скрыть результаты" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Показать документацию" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Внешний вид" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Вычисление выражения прервано" + +# BUGME: not visible in the UI? --aspotashev +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Строка поиска" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Искать:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Следующее" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Предыдущее" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Заменить на:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Заменить" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Заменить &все" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Искать в:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "С &учётом регистра" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Шрифты иерархии" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Шрифт главы" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Гарнитура шрифта:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Размер шрифта:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Шрифт подглавы" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Шрифт раздела" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Шрифт подраздела" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Шрифт параграфа" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Шрифт подпараграфа" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Глава" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Подглава" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Раздел" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Подраздел" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Параграф" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Подпараграф" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Установить уровень иерархии" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Сплошная линия" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Пунктирная линия" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Точечная линия" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Линия «пунктир-точка»" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Линия «пунктир-точка-точка»" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Толщина линии" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Тонкая" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Средняя" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Толстая" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Цвет линии" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Стиль линии" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Настроить изображение" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" +"Сделайте здесь двойной щелчок мышью для настройки параметров изображения" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Не удалось загрузить изображение %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Сохранить изображение-результат" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Изображения (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Параметры изображения" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Открыть" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Размер на экране" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Ширина" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Высота" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Предварительный просмотр" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Размер на печати" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Использовать размер на экране" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Параметры изображения" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(автоматически)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "пикс." + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Выбор файла изображения" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Показать код LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Не указан путь к исполняемому файлу %1. Укажите корректный путь в параметрах " +"приложения и попробуйте снова." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"Файл «%1», указанный в качестве исполняемого файла %2, не существует. " +"Укажите корректный путь в параметрах приложения и попробуйте снова." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"Путь к файлу «%1» не указывает на исполняемый файл. Укажите корректный путь " +"в параметрах приложения и попробуйте снова." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"Программа %1 не завершила работу через %2 мс при проверке встраивания " +"графика." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "Не удалось открыть файл %1 при проверке встраивания графика." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "Не удалось обработать результат при проверке встраивания графика." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Путь к исполняемому файлу latex" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Путь к исполняемому файлу dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Значение" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 байт>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "<слишком большая переменная>" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "От:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "До:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Заголовок" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Ось абсцисс" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Ось ординат" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Заголовок графика:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Неподдерживаемое содержимое типов Jupyter («%1»)" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "Процесс %1 неожиданно завершился. Все результаты расчётов потеряны." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"Процесс %1 неожиданно завершился с сообщением «%2». Все результаты расчётов " +"потеряны." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Выбрана поддержка графического пакета %1, но её невозможно активировать, так " +"соблюдены не все требования. Встраивание с помощью этого пакета будет " +"отключено. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Оболочка к системам компьютерной алгебры для KDE" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "© Alexander Rieder, 2009-2015
      © Filipe Saraiva, 2016" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Сопровождающий, перенос на Qt5/KF5, поддержка Scilab и Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Разработчик" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Первоначальный автор, прежний сопровождающий (в 2009-2015 годах)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Поддержка KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Поддержка Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Интерфейс" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Значок Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Использовать систему компьютерной алгебры " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Открываемые документы." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Не удалось открыть файл %1." + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Перейти в режим редактирования" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Удалить вложения" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Ошибка обработки математических символов Cantor" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Не удалось выполнить чтение изображения «%1». Ошибка «%2»" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Разрыв страницы ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Перейти к содержанию" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Найти по ключевым словам…" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Поиск в тексте текущей страницы документации" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Вернуть уровень масштабирования к 100%" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Закрыть" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Перейти к следующему вхождению" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Перейти к предыдущему вхождению" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "С учётом регистра" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "Файл успешно сохранён в папку «Загрузки»." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Успешная загрузка" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Файлы Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Файлы Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Все поддерживаемые файлы" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Все файлы" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Имя:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Значение:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Добавить новую переменную" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Загрузить переменные из файла" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Сохранить переменные" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Удалить переменные" + +# BUGME: not visible in the UI? --aspotashev +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Поиск/Фильтр" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "С учётом регистра" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Только полные слова" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Удалить все переменные?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Загрузка файла" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "&Сохранить результат в файл" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Удалить результат" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Компонент редактирования текста не найден в KDE.\n" +"Проверьте установку KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Редактор сценариев" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "%1 — Редактор сценариев" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Не найдено" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Достигнуто начало документа" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Достигнут конец документа" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Заменено %1 вхождение" +msgstr[1] "Заменены %1 вхождения" +msgstr[2] "Заменены %1 вхождений" +msgstr[3] "Заменено %1 вхождение" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Выражения" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Результаты" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Ошибки" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Текст" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Код LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +msgid "Startup:" +msgstr "Запустить" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Система по умолчанию:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +msgid "Worksheet:" +msgstr "&Документ" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, fuzzy, kde-format +#| msgid "Enable LaTeX typesetting for Sage backend" +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "Показывать результаты системы Sage с помощью LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, fuzzy, kde-format +msgid "LaTeX typesetting" +msgstr "LaTeX:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +msgid "Enable syntax highlighting" +msgstr "Включить подсветку синтаксиса" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +msgid "Syntax highlighting" +msgstr "Подсветка синтаксиса" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +msgid "Enable syntax completion" +msgstr "Включить автодополнение" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +msgid "Show line numbers" +msgstr "Показывать номера строк" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +msgid "Line numbers" +msgstr "Показывать номера строк" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Встраивать графики в документ" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, fuzzy, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Сохранять форматирование текста при сохранении документа в формате Jupyter " +"Notebook" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +msgid "Evaluation:" +msgstr "Уравнения:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, fuzzy, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "Запрашивать подтверждение при перезапуске базовой системы" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +msgid "Reevaluate entries automatically" +msgstr "Автоматически пересчитывать выражения" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, fuzzy, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" +"Максимальное количество отображаемых строк результата («0» — без ограничений)" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Максимальное количество отображаемых строк результата выражения. Значение " +"«0» означает отсутствие ограничений." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +msgid "Markdown:" +msgstr "Markdown" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "Показывать результаты системы Sage с помощью LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Найти…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Цели — ячейки Raw" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Добавить пользовательскую цель" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Преобразовать во фрагмент текста" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Преобразовать в ячейку Raw" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Тип MIME цели:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Копировать результат" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Показать выражение" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Показать код LaTeX" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Показать код HTML" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Показать обычный текст" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Показать HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Показать HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" +"Не удалось интерпретировать файл Eps. Возможно, нужны дополнительные пакеты" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Сохранить текстовый результат" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "Текстовые файлы (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Не удалось записать в файл %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Не удалось записать в файл." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Ошибка при сохранении файла %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"В режиме только для чтения программа Cantor не может обеспечить корректность " +"экспорта для %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Не удалось загрузить таблицу стилей LaTeX XSL" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Не удалось открыть файл %1." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Открыть файл" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Не удалось открыть выбранный файл для чтения." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" +"Выбранный файл не является корректным файлом проекта Cantor или Jupyter." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Выбранный файл не является корректным файлом проекта Cantor." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Этот документ был создан с помощью Python 2, который больше не " +"поддерживается. Будет использован Python 3." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python 2 больше не поддерживается" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"Базовая система %1 не найдена. Редактирование и вычисление выражений " +"невозможны." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"В работе базовой системы %1 возникли проблемы,\n" +"данный документ доступен только для просмотра.\n" +"Пожалуйста, проверьте параметры настройки и установите необходимые пакеты." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Файлы Jupyter Notebook версий ниже 4.5 (обнаружена версия %1.%2) не " +"поддерживаются." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Файлы Jupyter Notebook версий выше 4.5 (обнаружена версия %1.%2) не " +"поддерживаются." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Этот файл Jupyter Notebook был создан с помощью Python 2, который больше не " +"поддерживается. Будет использован Python 3." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "объект с ключами: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "не-объектное значение JSON" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "найдены некорректные данные (%1) — они не являются ячейкой Jupyter" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "Недопустимый файл Jupyter Notebook" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Недопустимая схема Jupyter Notebook: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Преобразовать в" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Команда" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Изображение" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Разрыв страницы" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Горизонтальная линия" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Запись иерархии" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Вставить ниже" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Вставить выше" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Вставить" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Увеличить масштаб" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Уменьшить масштаб" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Исходный размер" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Переместить записи выше" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Переместить записи ниже" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Посчитать выражения" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Удалить записи" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Свернуть результаты выражений" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Развернуть результаты выражений" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Удалить результаты выражений" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Исключить выражение из выполнения" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Добавить выражение для выполнения" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "&Цвет текста..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Цвет" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Подсветка текста..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Шрифт" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "&Размер шрифта" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "Полу&жирный" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "К&урсив" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "Под&чёркнутый" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "П&еречёркнутый" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "По &левому краю" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Слева" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Выравнивание по &центру" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "По центру" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "По &правому краю" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Справа" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "Выравнивание по &ширине" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "По ширине" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"Это действие приведёт к удалению всех результатов, и его будет невозможно " +"отменить. Продолжить?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Удалить все результаты" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Белый" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Чёрный" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Тёмно-красный" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Красный" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Розовый" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Тёмно-зелёный" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Зелёный" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Салатовый" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Тёмно-синий" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Синий" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Голубой" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Тёмно-жёлтый" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Жёлтый" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Кремовый" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Тёмно-бирюзовый" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Бирюзовый" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Аквамариновый" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Тёмно-пурпурный" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Пурпурный" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Лавандовый" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Ржавый" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Оранжевый" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Рыжий" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Тёмно-серый" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Серый" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Светло-серый" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Выше" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Ниже" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Удалить эту запись?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Удалить запись" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Перетащить запись" + +#~ msgid "Animate Worksheet" +#~ msgstr "Включить анимацию в документе" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "Если указана система по умолчанию, создавать при запуске документ для " +#~ "неё, а не показывать диалог выбора системы." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "Автоматически пересчитывать все выражения ниже текущего." + +#~ msgid "Defaults" +#~ msgstr "По умолчанию" + +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "Это начальное значение параметра сеанса «Показывать результаты с помощью " +#~ "LaTeX», который отвечает за включение обработки вывода системы с помощью " +#~ "LaTeX, если такая функция поддерживается. Например, вывод Maxima будет " +#~ "обработан с помощью LaTeX, если этот параметр включён." + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "" +#~ "Включить показ результатов с помощью LaTeX (должен быть установлен пакет " +#~ "latex)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "Это начальное значение параметра сеанса «Подсветка синтаксиса», который " +#~ "отвечает за подсветку синтаксиса в выражениях." + +#~ msgid "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." +#~ msgstr "" +#~ "Это начальное значение параметра сеанса «Автодополнение», который " +#~ "отвечает за автодополнение кода." + +#~ msgid "" +#~ "This is initial value for the session \"Line numbers\" option, which " +#~ "response for presence of command entries execution numbers." +#~ msgstr "" +#~ "Это начальное значение параметра сеанса «Показывать номера строк», " +#~ "который отвечает за наличие номеров выполнения выражений." + +#~ msgid "Enable Line Numbers" +#~ msgstr "Показывать номера строк" + +#~ msgid "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." +#~ msgstr "" +#~ "Это начальное значение параметра сеанса «Включить анимацию в документе», " +#~ "который отвечает за наличие анимации в документе." + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Включать анимацию в документах" + +#~ msgid "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." +#~ msgstr "" +#~ "Это начальное значение параметра сеанса «Внедрённые математические " +#~ "символы», который отвечает за включение обработки математических " +#~ "выражений во фрагментах текста и записях Markdown." + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "" +#~ "Включить внедрённые математические символы (должен быть установлен пакет " +#~ "pdflatex)" + +#~ msgid "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." +#~ msgstr "" +#~ "Если этот параметр отключён, при нажатии кнопки перезапуска не будет " +#~ "появляться соответствующее предупреждение." + +#~ msgid "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." +#~ msgstr "" +#~ "если параметр включён, при ошибке обработки математических символов будет " +#~ "появляться информационное окно с описанием ошибки." + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "" +#~ "Показать сообщение об ошибке при сбое обработки внедрённых математических " +#~ "символов" + +#~ msgid "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." +#~ msgstr "" +#~ "если параметр включён, будет использоваться старый стиль отступов записей " +#~ "Cantor (выравнивание всех записей по левому краю)." + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Использовать старый стиль отступов записей Cantor" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Если параметр включён, Cantor будет сохранять форматирование текста при " +#~ "сохранении документа в формате Jupyter Notebook." + +#~ msgid "" +#~ "Graphical package, for which will be enable support for embedding plots" +#~ msgstr "" +#~ "Графический пакет, который обеспечивает поддержку внедрения графиков" + +#~ msgid "" +#~ "Graphic package, which code will be used for plotting via \"Plot\" Cantor " +#~ "menu." +#~ msgstr "" +#~ "Графический пакет, код которого будет использоваться для построения " +#~ "графиков с помощью меню «График» Cantor." + +#~ msgid "Matplotlib (with seaborn, ggplot support too)" +#~ msgstr "Matplotlib (с поддержкой seaborn, ggplot)" + +#~ msgid "Plot.ly" +#~ msgstr "Plot.ly" + +#~ msgid "All supported" +#~ msgstr "Все поддерживаемые" + +#~ msgid "" +#~ "Graphic package, used for plotting. When integrated plots option is " +#~ "enabled, then plots from the package will be integrated to worksheet" +#~ msgstr "" +#~ "Графический пакет, который используется для построения графиков. Если " +#~ "встраивание графиков включено, графики из пакета будут встраиваться в " +#~ "документ." + +#~ msgid "Graphic Package: " +#~ msgstr "Графический пакет: " + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      Математический центр KDE" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "URL-адрес локальной документации Maxima" + +#~ msgid "" +#~ "If empty, the \"Show help\" action will show the default online " +#~ "documentation. Otherwise, the specified URL will be opened." +#~ msgstr "" +#~ "Если поле оставлено пустым, при выборе действия «Показать документацию» " +#~ "будет показана сетевая документация по умолчанию. В ином случае будет " +#~ "выполнен переход по указанному в поле URL-адресу." + +#, fuzzy +#~ msgid "Documentation:" +#~ msgstr "Открываемые документы." + +#~ msgid "Url to the local Python documentation" +#~ msgstr "URL-адрес локальной документации Python" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "URL-адрес локальной документации Octave" + +#~ msgid "Show %1 Help" +#~ msgstr "Открыть документацию по %1" + +#~ msgid "Path to Julia:" +#~ msgstr "Путь к программе Julia:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Встраивать графики в документ" + +#~ msgid "" +#~ "Commands to automatically run on start. They can be useful for loading " +#~ "needed modules, changing environment, etc." +#~ msgstr "" +#~ "Команды для автоматического выполнения при запуске. Они могут быть " +#~ "полезны для загрузки необходимых модулей, смены среды и так далее." + +#~ msgid "Clear Variables" +#~ msgstr "Очистить список переменных" + +#~ msgid "Exclude from Execution" +#~ msgstr "Исключить из выполнения" + +#~ msgid "Add to Execution" +#~ msgstr "Добавить для выполнения" + +#~ msgid "Right click here to insert image" +#~ msgstr "Нажмите правой кнопкой для вставки изображения" + +#~ msgid "Choose Image" +#~ msgstr "Выбор изображения" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "Изображения (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Подтверждение — Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Фрагмент текста" + +#~ msgid "LaTeX Entry" +#~ msgstr "Фрагмент кода LaTeX" + +#~ msgid "Insert Entry Before" +#~ msgstr "Вставить запись выше" + +#~ msgid "Insert Horizontal Line" +#~ msgstr "Вставить горизонтальную линию" + +#, fuzzy +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Вставить фрагмент текста" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Путь к исполняемому файлу scilab-adv-cli. Предупреждение: версия Scilab " +#~ "должна быть 5.4 или новее." + +#~ msgid "Insert Image Attachment" +#~ msgstr "Вставить изображение как вложение" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Вставить фрагмент кода LaTeX ниже" + +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Путь к исполняемому файлу Python-сервера Cantor" + +#~ msgid "" +#~ "Path to directory, which contains Cantor plugins (cantorpart and all " +#~ "backends)" +#~ msgstr "" +#~ "Путь к каталогу, который содержит модули Cantor (cantorpart и все базовые " +#~ "системы)" + +#~ msgid "Paths (advance settings)" +#~ msgstr "Пути (расширенные параметры)" + +#~ msgid "Path to Cantor plugin directory:" +#~ msgstr "Путь к каталогу модулей Cantor:" + +#~ msgid "" +#~ "Path to directory, which contains Cantor backend plugins. This is " +#~ "important setting - with wrong path Cantor can't create any worksheets." +#~ msgstr "" +#~ "Путь к каталогу, который содержит модули базовых систем Cantor. Это " +#~ "важный параметр — если путь указан неверно, создавать документы с помощью " +#~ "Cantor будет невозможно." + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "Промежуточный формат графиков внутри документа:" + +#~ msgid "Preferred package for the \"Plot\" menu: " +#~ msgstr "Предпочитаемый пакет для меню «График»:" + +#~ msgid "Path to Maxima:" +#~ msgstr "Путь к программе Maxima:" + +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Путь к Python-серверу Cantor:" + +#~ msgid "Path to Sage:" +#~ msgstr "Путь к программе Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Путь к команде scilab-adv-cli:" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Разрешить Cantor следить за созданием и уничтожением переменных" + +#, fuzzy +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "Встраивать графики в документ" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Путь к исполняемому файлу Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Путь к программе Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Безымянный" + +#, fuzzy +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "http://docs.python.org/2/" + +#, fuzzy +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "

      Python — исключительно мощный язык программирования, используемый для " +#~ "широкого круга приложений. Существует несколько пакетов для языка Python, " +#~ "предназначенных для научных расчётов.

      Этот модуль поддержки Python " +#~ "работает только с Python 3.

      " + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Выберите базовую систему компьютерной алгебры:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Базовая система, при помощи которой был создан этот файл, не установлена. " +#~ "Требуется %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "О&публиковать документ" + +#~ msgid "Waiting for Image..." +#~ msgstr "Ожидание изображения..." + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "Не удалось открыть файл %1: неизвестный тип MIME" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|Документы LaTeX" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "Документы Cantor (*.cws)" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Сервер для базовой системы R для Cantor" + +#~ msgid "R Server" +#~ msgstr "Сервер R" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "© Alexander Rieder, 2009" + +# BUGME: note that "saveVariables" should not be translated in the context --aspotashev +#~ msgid "Usage: saveVariables file" +#~ msgstr "Использование: saveVariables [файл]" + +#~ msgid "Saving failed." +#~ msgstr "При сохранении произошла ошибка." + +# BUGME: add context: loadVariables shouldn't be translated --aspotashev +#~ msgid "Usage: loadVariables file" +#~ msgstr "Использование: loadVariables [файл]" + +#~ msgid "Loading failed." +#~ msgstr "При загрузке произошла ошибка." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "© Alexander Rieder, 2009-2013" + +#~ msgid "Path to python command" +#~ msgstr "Путь к команде python" + +#~ msgid "Cantor Server for R" +#~ msgstr "Сервер R для Cantor" + +#, fuzzy +#~ msgid "Path to python2 command:" +#~ msgstr "Путь к команде scilab-adv-cli:" + +#~ msgid " Enable Variable Management" +#~ msgstr " Включить управление переменными" + +#~ msgid "Could not start the server." +#~ msgstr "Не удалось запустить сервер." + +#~ msgid "Start Animation" +#~ msgstr "Запустить анимацию" + +#~ msgid "Restart Animation" +#~ msgstr "Перезапустить анимацию" + +#~ msgid "Append Latex Entry" +#~ msgstr "Добавить фрагмент кода LaTeX" + +#~ msgid "Append Image" +#~ msgstr "Добавить изображение" + +#~ msgid "Append Page Break" +#~ msgstr "Добавить разрыв страницы" + +#~ msgid "Other" +#~ msgstr "Другое" + +#~ msgid "And %1 more..." +#~ msgstr "И ещё %1..." + +#~ msgid "Main Toolbar" +#~ msgstr "Основная панель инструментов" + +#~ msgid "Popup" +#~ msgstr "Во всплывающем меню" + +#~ msgid "The style used for Completion" +#~ msgstr "Режим автодополнения" + +#~ msgid "Insert Command Entry Before" +#~ msgstr "Вставить выражение выше" + +#~ msgid "Command Entry Before" +#~ msgstr "Выражение выше" + +# BUGME: shouldn't be translatable (not user visible) +#~ msgid "GroupBox" +#~ msgstr "GroupBox" + +#~ msgid "This test requires a functioning %1 backend" +#~ msgstr "" +#~ "Для запуска этого теста требуется поддержка системы компьютерной алгебры " +#~ "%1" + +#~ msgid "Help" +#~ msgstr "Справка" + +#~ msgid "Show Help Panel" +#~ msgstr "Панель справки" + +#~ msgid "Error uploading File %1" +#~ msgstr "Ошибка при публикации файла %1" diff --git a/po/ru/docs/cantor/index.docbook b/po/ru/docs/cantor/index.docbook new file mode 100644 index 0000000..b0972cc --- /dev/null +++ b/po/ru/docs/cantor/index.docbook @@ -0,0 +1,571 @@ + + + + + +]> + + + +Руководство &cantor; + + + Alexander Rieder alexanderrieder@gmail.com +АлександрПоташев
      aspotashev@gmail.com
      Перевод на русский язык
      +
      + + +2009 +Alexander Rieder + +&FDLNotice; + +26 августа 2009 г. +0.1 + + +&cantor; — это программа, предоставляющая удобный интерфейс к различным свободным математическим пакетам. + + + +KDE +kdeedu +математика +алгебра +Cantor +Sage +R +Maxima + + +
      + + +Введение + +&cantor; — это программа, позволяющая использовать ваши любимые математические приложения через приятный интерфейс для &kde;. Она содержит диалоговые окна для удобства выполнения часто встречающихся задач и позволяет публиковать документы. + + + +Использование &cantor; + +Снимок экрана: +Это снимок экрана программы &cantor; + + + + + + + + + Снимок экрана + + + + + + + +Возможности &cantor; + + Интуитивно понятный вид документа для подсчёта выражение, + Показ полученных графиков прямо в документе, + Простая модульная структура программы, позволяющая добавлять поддержку новых систем компьютерной алгебры, + Возможность загрузки и публикации примеров документов с помощью утилиты «Загрузка материалов из Интернета». + Вывод математических формул с помощью LaTeX, + Подсветка синтаксиса в зависимости от системы компьютерной алгебры, + Диалоговые окна, упрощающие выполнение часто используемых действий, таких как интегрирование и ввод матрицы. + + + + +Базовые системы для &cantor; +&cantor; предлагает выбрать одну из нескольких систем компьютерной алгебры в зависимости от ваших нужд. +На данный момент доступны следующие системы компьютерной алгебры: + + Sage: + + Sage — это бесплатная математическая программа с открытым исходным кодом, распространяемая на условиях лицензии GPL. Она использует мощь многих существующих пакетов с открытым исходным кодом, предоставляя к ним общий интерфейс на языке Python. Более подробная информация находится на сайте http://sagemath.org. + + + + Maxima: + + Maxima — это система обработки символьных и численных выражений, включая дифференцирование, интегрирование, ряды Тейлора, преобразования Лапласа, обыкновенные дифференциальные уравнения, системы линейных уравнений, многочлены, и множества, списки, векторы, матрицы и тензоры. Maxima получает численные результаты высокой точности, используя точные дроби, целые числа произвольной длины и действительные числа переменной точности. Maxima может строить двумерные и трёхмерные графики функций и данных. Более подробная информация находится на сайте http://maxima.sourceforge.net. + + + + R: + + R — это язык программирования и среда для статистических вычислений и графики, похожая на язык программирования и среду разработки S. Этот язык предоставляет широкий выбор статистических (линейное и нелинейное моделирование, классические статистические тесты, анализ временных рядов, классификация, кластеризация, ...) и графических инструментов. Кроме того, он легко расширяем. Язык программирования S используется повсеместно для статистических исследований, а язык R — альтернативный вариант с открытым кодом. Более подробная информация находится на сайте http://www.r-project.org. + + + + KAlgebra: + + KAlgebra — это калькулятор с поддержкой построения графиков на основе языка MathML, входящий в состав образовательного пакета KDE. Более подробная информация находится на сайте http://edu.kde.org/kalgebra/. + + + + + + + +Интерфейс &cantor; + + + Снимок экрана с документом &cantor; + + + + + + + + + Снимок экрана с документом &cantor; + + + + +Интерфейс пользователя &cantor; состоит из трёх частей: + Панель вкладок, при помощи которой можно переключаться между документами; + Панель справки, где будет показано описание команды, если ввести «? команда»; + Документ. + + + +Документ +В &cantor; вы работаете с документом. В нём можно вводить выражения, производить вычисления и видеть результаты. Набор доступных в выражениях команд зависит от используемой системы компьютерной алгебры, поэтому полезно знать синтаксис конкретной системы. Если вы знаете название команды, можно посмотреть её описание, введя «? команда». Чтобы посмотреть примеры документов &cantor;, выберите пункт меню Файл Загрузить примеры... и загрузите документы, опубликованные другими пользователями. + + Настройка + В меню Настройка можно настроить внешний вид текущего документа. + + + Показывать результаты с помощью LaTeX + + Этот параметр влияет на то, в каком виде будут показаны результаты вычислений. Если он включён, результат будет обработан системой LaTeX для создания визуально понятных формул. Например, 3*x^2*sqrt(2)*x+2/3 превратится в + + + + + + + 3*x^2*sqrt(2)*x+2/3 + + + + + + Подсветка синтаксиса + + Подсветка синтаксиса повышает читаемость кода, выделяя цветом ключевые слова и парные скобки. + + + + Автодополнение + + Если включить этот параметр, &cantor; будет показывать возможные продолжения вводимой вами команды при нажатии клавиши Tab. Если существует только одно продолжение команды, при нажатии клавиши Tab название команды будет автоматически введено полностью. + + + + Показывать номера строк + + Этот параметр позволяет добавить нумерацию введённых выражений. Нумерацию можно использовать для подстановки предыдущих результатов в новое выражение; в Maxima это делается командой %O1. + + + + + + + + + +Список команд + + +Главное окно &cantor; + + +Меню <guimenu +>Файл</guimenu +> + + + + &Ctrl;N Файл Создать +Создаёт новый документ. + + + &Ctrl;S Файл Сохранить +Сохраняет документ. + + + &Ctrl;Q Файл Выход +Завершает работу &cantor;. + + + + + + + +Меню <guimenu +>Справка</guimenu +> +&help.menu.documentation; + + + + + +Руководство разработчика &cantor; + +&cantor; расширяется простыми в написании модулями. Модули бывают: + + Для поддержки системы компьютерной алгебры + + Новый модуль поддержки системы компьютерной алгебры позволит работать с ней из &cantor;. + + + + Диалоговые окна для упрощения ввода команд + + Вспомогательные диалоговые окна упрощают и делают наглядным выполнение таких стандартных действий, как например ввод матрицы или запуск сценария. + + + + +На данный момент не написано ни руководства по написанию модулей для Cantor, ни документации по программному интерфейсу. Поэтому при написанием модулей у вас есть только один источник информации — исходный код Cantor. Все определения интерфейса находятся в каталоге lib. В качестве примеров модулей можно рассматривать модули, входящие в состав &cantor;. + + + + +Вопросы и ответы +&reporting.bugs; &updating.documentation; + + Пункт меню Показывать результаты с помощью LaTeX недоступен + Не все базовые системы поддерживают каждый параметр. + + + Sage или Maxima установлены, но соответствующая базовая система не появляется в списке. + + Возможно программа &cantor; не смогла найти расположение базовой системы. Откройте диалоговое окно «Настройка» и укажите правильный путь к соответствующей программе. + + + + Откуда такое странное название программы? Какое оно имеет отношение к математике? + Программа Cantor названа в честь немецкого математика Георга Кантора (Georg Cantor), создателя теории множеств. + + + + + + +Авторские права и лицензия + +&cantor; +© Alexander Rieder alexanderrieder@gmail.com, программа, 2009 + +© Alexander Rieder alexanderrieder@gmail.com, документация, 2009 + +Перевод на русский язык: Александр Поташев aspotashev@gmail.com +&underFDL; &underGPL; + + +Установка + + +Как получить &cantor; +&install.intro.documentation; + + +Системные требования + +Чтобы успешно использовать &cantor;, необходим &kde; 4. Для возможности отрисовки формул требуется установить LaTeX и LibSpectre. Для использования различных базовых систем компьютерной алгебры, их нужно установить. + + + + + + + + + +Компиляция и установка +&install.compile.documentation; + + +Настройка + +В зависимости от вашей системы может потребоваться настройка путей к различным приложениям, используемым &cantor;. + + + + + +&documentation.index; +
      + + diff --git a/po/sk/cantor.po b/po/sk/cantor.po new file mode 100644 index 0000000..a1b770f --- /dev/null +++ b/po/sk/cantor.po @@ -0,0 +1,5077 @@ +# translation of cantor.po to Slovak +# Richard Fric , 2009. +# Roman Paholík , 2012, 2013, 2014, 2015, 2016, 2017, 2019, 2020. +# Matej Mrenica , 2019. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2020-12-02 18:11+0100\n" +"Last-Translator: Roman Paholík \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.08.2\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Roman Paholík" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "wizzardsk@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Pozastaviť" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Spustiť" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Zastaviť" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "Uložiť výsledok" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Pokročilé kreslenie" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Kresliť" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Výraz:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Ďalšie voľby:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "Kresliť" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Voľba aktívna" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "Vypočítať" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Diferencovať" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Premenná:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Časy:" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "Balík" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importovať balík" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Balíček:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integrovať" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Dolný limit:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Horný limit:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "Určitý integrál" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "Lineárna algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Vytvoriť maticu" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Stĺpce:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Riadky:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Vypočítať vlastné hodnoty" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matica:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Vypočítať vlastné vektory" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Invertovať maticu" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "2D graf" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Premenná" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Názov" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimum:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maximum:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "3D graf" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "Prvá premenná" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "Druhá premenná" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Spustiť skript" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Riešiť rovnice" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Rovnice:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Premenné:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Vybrať backend" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Doporučená verzia: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Pozri %2 pre viac informácii." + +#: backendchoosedialog.cpp:125 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      Recommended version: %3

      Some " +#| "requirements for the backend are not fulfilled:
      %2

      " +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Niektoré požiadavky nie sú splnené: " +"%1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Nastaviť tento backend predvolený" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia je dynamický programovací jazyk vysokej úrovne s vysokým " +"výkonom pre technické výpočty so syntaxou, ktorá je známa používateľom iných " +"technických výpočtových prostredí. Poskytuje sofistikovaný prekladač, " +"distribuované paralelné vykonávanie, číselnú presnosť a bohatú matematickú " +"knižnicu funkcií." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"Cesta k Julia uvedená v nastaveniach aplikácie musí smerovať priamo na " +"spustiteľný súbor. Symlinky nie sú povolené. Zadajte správnu cestu v " +"nastaveniach aplikácie a skúste to znova." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Cantor nevie určiť verziu Julia pre %1. Prosím, určite správnu cestu k " +"programu Julia (nie symbolický odkaz) a skúste znova." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Snažíte sa spustiť Cantos s Julia v%1.%2.%3. Táto verzia Cantor bola " +"skompilovaná s podporou Julia v%4.%5.%6. Prosím, nasmerujte na túto verziu " +"Julia alebo skompilujte Cantor pomocou verzie %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Cesta k Julia natívnemu REPL" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Povoliť správu premenných" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Integrovať grafy do pracovného listu" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Súbor skriptu Julia (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Chyba - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Proces Julia prestal pracovať." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Zlyhalo spustenie procesu Julia." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "Komunikácia s procesom Julia zlyhala z neznámeho dôvodu." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Všeobecné" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, fuzzy, kde-format +msgid "Executable:" +msgstr "Spustiteľný súbor:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Plot Integration:" +msgstr "Integrovať" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, fuzzy, kde-format +#| msgid "" +#| "If true, plots will be displayed inside the worksheet. If not they appear " +#| "in a separate window." +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Ak je pravda, budú grafy zobrazené vnútri pracovného listu. Ak nie je, " +"objavia sa v samostatnom okne." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Zapnuté" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Enable Variable Management" +msgid "Variable Management:" +msgstr "Povoliť správu premenných" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Integrate Plots in Worksheet" +msgid "Internal Plot Format:" +msgstr "Integrovať grafy do pracovného listu" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plots" +msgstr "Kresliť" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "PyPlot" +msgstr "Kresliť" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, fuzzy, kde-format +#| msgid "Scripts to autorun" +msgid "Commands to autorun" +msgstr "Automaticky spustené skripty" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Documentation:" +msgid "Documentation" +msgstr "Dokumentácia:" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "The url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "https://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/stable/en/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Zoznam skriptov automaticky spustených na začiatku sedenia" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Chyba: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua je rýchly a ľahký skriptovací jazyk s jednoduchou procedurálnou " +"syntaxou. Obsahuje niekoľko knižníc zameraných na matematiku a vedu." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Cesta k príkazu luajit" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Súbor skriptu Lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Path to luajit command:" +msgid "Path to luajit:" +msgstr "Cesta k príkazu luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima je systém pre manipuláciu so symbolickými a numerickými " +"výrazmi, vrátane derivovania, integrovania, Taylorovho radu, Laplaceovej " +"transformácie, obyčajných diferenciálnych rovníc, sústav lineárnych rovníc, " +"polynómov a radov, zoznamov, vektorov, matíc a tenzorov. Maxima prináša " +"vysokopresné číselné výsledky pomocou presných zlomkov, celých čísel s " +"ľubovoľnou presnosťou a čísel s plávajúcou desatinnou čiarkou a premenlivou " +"presnosťou. Maxima môže vykresliť funkcie a dáta v dvoch a troch rozmeroch. " + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Cesta k spustiteľnému súboru Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Chyba: Príliš veľa */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Chyba: Príliš veľa /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Chyba: očakávané \" pred ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Čakám na vykreslenie výsledku" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Dávkový súbor Maxima (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Zlyhalo spustenie Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Aplikácia Maxima spadla. reštartovanie..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Aplikácia Maxima spadla dvakrát počas krátkej doby. Zastavenie pokúšania sa " +"o spustenie" + +#: backends/octave/octavebackend.cpp:62 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Octave, please check if there is a " +#| "translated version (currently Czech and Japanese) and use the correct url" +#| msgid "https://octave.org/doc/interpreter/" +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave je vysokoúrovňový programovací jazyk, primárne určený pre " +"numerické výpočty.
      Poskytuje pohodlné rozhranie príkazového riadku pre " +"riešenie lineárnych a nelineárnych problémov numericky a pre vykonávanie " +"iných numerických experimentov pomocou jazyka, ktorý je väčšinou " +"kompatibilný s Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Súbor skriptu Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Syntaktická chyba" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, fuzzy, kde-format +#| msgctxt "The url to the documentation Python 3" +#| msgid "https://docs.python.org/3/" +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, fuzzy, kde-format +#| msgid "" +#| "Python is a remarkably powerful dynamic programming language that " +#| "is used in a wide variety of application domains. There are several " +#| "Python packages to scientific programming. This backend supports Python 2." +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Pythonje pozoruhodne silný, dynamický programovací jazyk, ktorý sa " +"používa v celom rade aplikačných oblastí. Existuje niekoľko balíkov Python " +"pre vedecké programovanie. Tento backend podporuje Python 2." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Súbor skriptu Python (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Python server Cantor prestal pracovať." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Nepodarilo sa spustiť Cantor python server." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "Komunikácia s python serverom Cantor zlyhala z neznámeho dôvodu." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "plot.ly" +msgstr "Kresliť" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Dialóg grafu" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funkcie" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Názov" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Výraz" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Pridať" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Odstrániť" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Vyčistiť zoznam" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Premenná X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Štýl" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Čiary" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Body" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Body a čiary" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Škatule" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogram" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Kroky" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Sviečkový" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Bodky" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Vyhladzovanie" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Žiadne" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monotónne" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Prirodzené kubické splajny" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bézier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bézierove (monotónna)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Rozsah funkcie" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X rozsah" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Vzorkovacia frekvencia" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Veľkosť kroku" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Možnosti" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Titulok grafu" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Popis osi X" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Popis osi Y" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Pozícia legendy" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Skryť legendu" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Vľavo hore" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Vpravo hore" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Vľavo dole" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Vpravo dole" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Pod" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Vonku" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Zobraziť mriežku" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Zobraziť úplne ohraničenie" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Použiť farby" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Zobraziť vložené" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logaritmická stupnica x" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logaritmická stupnica y" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Možnosti súboru" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Uložiť graf do súboru" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Typ súboru" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Zisťovať z názvu súboru" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! nie je váš bežný softvér replikácie najlacnejšej, " +"dostupnej kalkulačky. Qalculate! si kladie za cieľ plne využiť lepšie " +"rozhranie, silu a pružnosť moderných počítačov. V centre pozornosti v " +"Qalculate! je vstupný výraz. Namiesto zadania každého čísla v matematickom " +"výraze samostatne, môžete priamo napísať celý výraz a neskôr ho upraviť. " +"Interpretácia výrazov je flexibilná a odolná voči chybám, a ak predsa len " +"urobíte niečo zlé, Qalculate! vám to povie. Nie celkom riešiteľné výrazy " +"však nie sú chyby. Qalculate! ich zjednoduší tak ďaleko, ako je to možné, a " +"odpovie s výrazom. Okrem čísel a aritmetických operátorov, môže výraz " +"obsahovať ľubovoľnú kombináciu premenných, jednotiek a funkcií." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Či a ako budú jednotky automaticky premenené. Ak je pravda, premeniť na " +"najvhodnejšie jednotky SI (najmenšie množstvo jednotiek)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Predvolená jednotka uhlov pre trigonometrické funkcie." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Základ analyzovaných a vyhodnotených čísel." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Či výsledok vyhodnotenia bude zjednodušený alebo faktorizovaný." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Či budú racionálne čísla zobrazené s desatinnými miestami, ako zlomok alebo " +"niečo medzi tým." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Ukázať, že číselný rad číslic pokračuje neustále s tromi bodkami namiesto " +"zaokrúhlenia (výraz 2/3 sa zobrazí ako 0.666666... namiesto 0.666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Použiť všetky desiatkové predpony SI. Ak je nepravda, predpony, ktoré nie sú " +"násobkami tisíc (centi, deci, deka, hekto) nebudú použité automaticky." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Ak je pravda, budú použité záporné exponenty namiesto delenia (výraz 5/x^2 " +"sa stáva 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Číselné zobrazenie." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Ak je pravda, budú grafy zobrazené vnútri pracovného listu. Ak nie je, " +"objavia sa v samostatnom okne." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Či by sa mali použiť farby v grafoch." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Či by sa mala v grafe vykresliť mriežka." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Či by sa malo vykresliť úplne ohraničenie okolo grafu." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Šírka čiar v pixeloch." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Počet interpolačných krokov, ktoré majú byť použité vo vykresľovaní." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Vyhladzovací režim v grafoch." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Štýl grafov." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Pozícia legendy v grafoch." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" +"Qalculate hlási, že nemožno tlačiť. Je nainštalovaná aplikácia gnuplot?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "chýba %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 musí byť číslo." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 musí byť integer." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 musí byť boolean." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "Neplatná možnosť pre %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "nájdených viac výrazov v jednom príkaze vykreslenia (%1 a %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "CHYBA" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "UPOZORNENIE" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Žiadna funkcia, premenná alebo jednotka s daným názvom neexistuje." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funkcia: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Rozhranie kreslenia" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Zakreslí jednu alebo viac funkcií buď ako vložené alebo v samostatnom okne." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "výraz" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "voľba" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "hodnota" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "celé číslo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "boolean" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "číslo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "predvolené: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Názov funkcie" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Poúis titulku" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "Popis osi y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Popis osi y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Obrázok, do ktorého sa uloží graf. Ak je to prázdne, ukazuje graf v okne na " +"obrazovke. Ak je vložený=pravda, obrázok sa zobrazí bez ohľadu na túto voľbu." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Typ obrázka pre uloženie ako. Jeden z auto, png, ps, eps, latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "Nastaviť pravda pre farebný graf, nepravda pre monochromatický." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Minimálna hodnota osi x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Maximálna hodnota osi x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Či bude použitá logaritmická stupnica pre os x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Či bude použitá logaritmická stupnica pre os y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Logaritmický základ pre os x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Logaritmický základ pre os y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Či bude mriežka zobrazená v grafe." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "Či bude graf ohraničený zo všetkých strán (nielen os)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Šírka čiar." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Kde sa umiestni legenda grafu. Jedno zo žiadneho, hore vľavo, hore vpravo, " +"dole vľavo, dole vpravo, pod grafom, mimo grafu" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Vyhladzovanie grafu. Jedno zo žiadneho, jedinečného, csplajn, bézieroveho, " +"sbézieroveho" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Štýl grafu. Jeden z čiarového, bodového, bodovo-čiarového, krabicového, " +"histogramu, krokového, sviečkového, bodkového" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Použiť stupnicu na druhej osi x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Použiť stupnicu na druhej osi y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Či je graf vykreslený ako vložený, namiesto v novom okne." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Vzdialenosť medzi dvoma interpolačnými bodmi. Tiež pozrieť kroky." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Počet interpolačných bodov. Tiež pozrieť krok." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Názov premennej x. Musí to byť neznáma premenná" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Uložiť premenné do súboru" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Uložiť všetky aktuálne definované premenné do súboru. Môžu byť znovu " +"načítané s %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "súbor" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "súbor: súbor, do ktorého sa ukladá" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Načítať premenné zo súboru" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Načítať premenné zo súboru, ktorý bol už predtým vytvorený s %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "súbor: súbor pre načítanie" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Číselný základ:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Formát zlomku:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Dekadický" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Presne" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Zlomkový" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Kombinovaný" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Číselné zobrazenie:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Čisté" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Vedecké" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Presnosť" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Uviesť nekonečné rady:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Použiť všetky SI predpony:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Použiť záporné exponenty:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Vyhodnotiť" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Premeniť na najlepšie SI jednotky:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radiány" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Stupňe" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradiány" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Štruktúrovaný režim:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Zjednodušiť" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Faktorizovať" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Uhlová jednotka:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Kreslenie" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Zobraziť grafy vložené:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Ukázať úplne ohraničenie:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Šírka čiar:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Vzorkovacia frekvencia:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Režim vyhladzovania:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Prirodzené kubické splajny" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Kroky" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Pozícia legendy:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Farebné grafy:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Zobraziť mriežku:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Štýl nákresu:" + +#: backends/qthelpconfig.cpp:45 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Položka príkazu" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Pridať novú premennú" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Path to local documentation:" +msgid "Add local documentation" +msgstr "Cesta k miestnej dokumentácií:" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Documentation:" +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Dokumentácia:" + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Path to local documentation:" +msgid "Download additional documentations" +msgstr "Cesta k miestnej dokumentácií:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Názov" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, fuzzy, kde-format +#| msgid "Add" +msgctxt "@action:button" +msgid "Add" +msgstr "Pridať" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Select the Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Vybrať backend" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name:" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Názov:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R je jazyk a prostredie pre štatistické výpočty a grafiku, podobný " +"ako prostredie a jazyk S.
      Poskytuje širokú škálu štatistických " +"(lineárne a nelineárne modelovanie, klasické štatistické testy, analýza " +"časových radov, triedenie, zhlukovanie, ...) a grafických techník a je " +"vysoko rozšíriteľný. Jazyk S je často vozidlom voľby pre výskum v " +"štatistickej metodike a R poskytuje Open Source cestu k účasti na tejto " +"činnosti." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Chyba pri otváraní súboru %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "Súbor skriptu R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Chyba príkazu analýzy" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "URL k miestnej dokumentácii R" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Dvojitým kliknutím otvoriť dialóg pre výber súboru" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|Zdrojové súbory R (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage je slobodný open-source matematický softvérový systém pod " +"licenciou GPL.
      Spája v sebe silu mnohých existujúcich open-source " +"balíčkov do spoločného rozhrania založenom na jazyku Python." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Cesta k spustiteľnému súboru Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Povoliť sádzanie textu LaTeX" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Výsledok %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Posledný výstup bol: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Súbor skriptu Python (*.py);;Súbor skriptu Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Sage verzie %1.%2 je nepodporované. Prosím, aktualizujte vašu inštaláciu na " +"podporované verzie, aby fungovali s Cantorom." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Zlyhalo určenie verzie Sage. Prosím, skontrolujte vašu inštaláciu a výstup " +"'sage -v'." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Proces Sage počas vyhodnocovania tohto výrazu spadol" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Proces Sage spadol" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Proces Sage bol počas vyhodnocovania tohto výrazu ukončený" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Proces Sage bol ukončený" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Zlyhalo spustenie Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting:" +msgstr "Povoliť sádzanie textu LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab je slobodný softvér, multiplatformový numerický počítačový " +"balíček a vysokoúrovňový, číselne orientovaný programovací jazyk. Scilab je " +"šírený pod licenciou CeCILL (GPL kompatibilná)" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to the Sage executable" +msgid "Path to the Scilab executable" +msgstr "Cesta k spustiteľnému súboru Sage" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Súbor skriptu Scilab (*.sce);;Súbor funkcie Scilab (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Otvoriť súbor" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "Download Example Worksheets" +msgid "Download Examples" +msgstr "Stiahnuť vzorové pracovné listy" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "Otvoriť príklad" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Prejsť na predošlý pracovný list" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Prejsť na ďalší pracovný list" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Nenájdený žiadny backend

      \n" +"
      Mohli by ste skúsiť:\n" +"
      • Zmena nastavení v konfiguračnom dialógu;
      • " +"
      • InÅ¡talácia balíčkov pre nasledujúci program:
      • %2
      " +msgstr[1] "" +"

      Nenájdený žiadny backend

      \n" +"
      Mohli by ste skúsiť:\n" +"
      • Zmena nastavení v konfiguračnom dialógu;
      • " +"
      • InÅ¡talácia balíčkov pre nasledujúce programy:
      • %2
      " +msgstr[2] "" +"

      Nenájdený žiadny backend

      \n" +"
      Mohli by ste skúsiť:\n" +"
      • Zmena nastavení v konfiguračnom dialógu;
      • " +"
      • InÅ¡talácia balíčkov pre nasledujúce programy:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Chyba" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Backend %1 nie je nainštalovaný" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"Backend %1 je nainštalovaný, ale neaktívny. Prosím, skontrolujte inštaláciu " +"a nastavenia Cantor." + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Sedenie %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Nepodarilo sa nájsť časť Cantor s chybou %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Vypočítava sa..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Pripravený" + +#: cantor.cpp:480 +#, fuzzy, kde-format +#| msgid "Orange" +msgid "Changed" +msgstr "Oranžová" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "Je otvorených viac neuložených pracovných listov. Chcete ich zatvoriť?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Zatvoriť Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Aktuálny projekt bol zmenený. Chcete ho uložiť?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Uloženie projektu" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "Plotting" +msgid "Formatting" +msgstr "Formátovanie" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Backend, ktorý je použitý v predvolenom nastavení" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Sádzanie textu v predvolenom nastavení" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Zvýrazňovať syntax v predvolenom nastavení" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Povoliť dokončovania v predvolenom nastavení" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Povoliť vyčíslenie výrazov v predvolenom nastavení" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Animovať zmeny v pracovnom liste v predvolenom nastavení" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Povoliť vykresľovanie matematických výrazov v $$ .. $$ v položkách Text a " +"Markdown (vyžaduje nainštalovaný pdflatex)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Automaticky znovu vyhodnotiť položky pod aktuálnou" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Pýtať sa na potvrdenie pred reštartovaním backendu" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Zobraziť chybu vykresľovania vloženej matematiky" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Uložiť jednoduchý text" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Exportovať do LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Vyhodnotiť pracovný zošit" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, fuzzy, kde-format +msgid "Zoom" +msgstr "Lupa" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Sádzanie textu pomocou LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Zvýrazňovanie syntaxe" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Dokončovanie" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Čísla riadkov" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Functions" +msgid "Animations" +msgstr "Funkcie" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Zabudovaná matematika" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Reštartovať backend" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Vyhodnotiť položku" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Vložiť položku príkazu" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Vložiť textovú položku" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Vložte položku zľavy" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Vložiť položku LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Vložiť koniec strany" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Vložiť obrázok" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Hide Results" +msgid "Expand All Results" +msgstr "Skryť výsledky" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove All Results" +msgstr "Odstrániť výsledok" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Odstrániť súčasnú položku" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Ukázať editor skriptov" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Ukázať dokončovanie" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Pracovný list Cantor (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyter Notebook (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Uložiť ako" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Uložiť" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Všetky dostupné výsledky výpočtov budú stratené. Naozaj chcete reštartovať " +"%1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Reštartovať %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Prerušenie" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Chyba sedenia: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Inicializácia kompletná" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Inicializácia..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[iba na čítanie]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Chcete nahrať aktuálny pracovný list na verejný webový server?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Otázka - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Pracovný list sa neuložil. Mali by ste ho pred nahratím uložiť." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Varovanie - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Tento backend nepodporuje skripty." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Upraviť" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "P&ohľad" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "Pracovný list" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "Na&stavenia" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Súbor" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Nový" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Panely" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "Na&stavenia" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Farba pozadia" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "Default" +msgstr "Predvolené" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Farba písma" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Písmo" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Tučné" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Kurzíva" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Zväčšiť veľkosť" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Zmenšiť veľkosť" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Vybrať" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Vrátiť na predvolené" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Zobraziť výsledky" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Skryť výsledky" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Zobraziť pomocníka" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Prerušené" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Vyhľadávací panel" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Nájsť:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Nasledujúci" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Predchádzajúci" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Nahradiť:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Nahradiť" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Zameniť všetko" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Prehľadať:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "Rozlišovať veľkosť" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Rodina písma:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Veľkosť písma:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Kapitola" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Oblasť" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Subsection" +msgstr "Podsekcia" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +msgid "Paragraph" +msgstr "Odstavec" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +msgid "Subparagraph" +msgstr "Podod&sek" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Plot Style:" +msgid "Dot Line Style" +msgstr "Štýl nákresu:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Hrúbka čiary" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Tenké" + +#: horizontalruleentry.cpp:303 +#, fuzzy, kde-format +msgid "Medium" +msgstr "Stredné" + +#: horizontalruleentry.cpp:307 +#, fuzzy, kde-format +msgid "Thick" +msgstr "hrubý" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Farba čiary" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Štýl čiary" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Konfigurovať obrázok" + +#: imageentry.cpp:256 +#, fuzzy, kde-format +#| msgid "Double click to open file selection dialog" +msgid "Double click here to configure image settings" +msgstr "Dvojitým kliknutím otvoriť dialóg pre výber súboru" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Nemožno načítať obrázok %1" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "Uložiť výsledok" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Image" +msgid "Images (%1)" +msgstr "Obrázok" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Nastavenia obrázku" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Otvoriť" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Zobraziť veľkosť" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Šírka" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Výška" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Náhľad" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Veľkosť tlače" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Použiť veľkosť displeja" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Nastavenia obrázku" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(auto)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "bd" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Otvoriť súbor obrázka" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Ukázať kód LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Pre spustiteľný súbor %1 nie je zadaná žiadna cesta. Zadajte správnu cestu v " +"nastaveniach aplikácie a skúste to znova." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"Zadaný súbor '%1' pre spustiteľný súbor %2 neexistuje. Zadajte správnu cestu " +"v nastaveniach aplikácie a skúste to znova." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"Zadaný súbor '%1' neukazuje na spustiteľný súbor. Zadajte správnu cestu v " +"nastaveniach aplikácie a skúste to znova." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Cesta k spustiteľnému súboru latex" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Cesta k spustiteľnému súboru dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Hodnota" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "X variable" +msgid "" +msgstr "Premenná X" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Od:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Do:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Hlavný titulok" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Rozsah abscisy" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Rozsah ordináty" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Titulok grafu" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Toto nie je podporovaný obsah typu Jupyter ('%1')" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "Proces %1 sa nečakane zastavil. Všetky výsledky výpočtov sú stratené." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"Proces %1 sa nečakane zastavil so správou \"%2\". Všetky výsledky výpočtov " +"sú stratené." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Rozhranie KDE pre matematické aplikácie" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Správca
      Port Qt5/KF5, backendy Scilab a Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Vývojár" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Pôvodný autor
      Správca (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra backend" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave backend" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Rozhranie" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Ikona Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Použiť backend " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Dokument na otvorenie." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Súbor %1 sa nepodarilo otvoriť" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Vyčistiť prílohy" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Cantor matematická chyba" + +#: markdownentry.cpp:796 +#, fuzzy, kde-format +#| msgid "Cantor failed to read image with error \"%1\"" +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Nepodarilo sa prečítať obrázok s chybou \"%1\"" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Koniec strany ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, fuzzy, kde-format +#| msgid "Go to previous worksheet" +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Prejsť na predošlý pracovný list" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, fuzzy, kde-format +#| msgid "&Match case" +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Rozlišovať veľkosť" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor icon" +msgid "Cantor files" +msgstr "Ikona Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "Jupyter" +msgid "Jupyter files" +msgstr "Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, fuzzy, kde-format +msgid "All supported files" +msgstr "Všetky podporované súbory" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Všetky súbory" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Názov:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Hodnota:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgid "Add New Variable" +msgstr "Pridať novú premennú" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Načítať premenné" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Save Variables" +msgstr "Uložiť premenné" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Remove Variables" +msgstr "Uložiť premenné" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, fuzzy, kde-format +#| msgid "SearchBar" +msgid "Search/Filter" +msgstr "Vyhľadávací panel" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Ste si istý, že chcete odstrániť všetky premenné?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Načítať súbor" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Uložiť výsledok" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Odstrániť výsledok" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Nepodarilo sa nájsť komponent KDE pre textový editor;\n" +"skontrolujte si svoju inštaláciu KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Editor skriptov" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Editor skriptu - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Nenájdené" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Dosiahnutý začiatok" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Dosiahnutý koniec" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Nahradená %1 inštancia" +msgstr[1] "Nahradené %1 inštancie" +msgstr[2] "Nahradených %1 inštancií" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Príkazy" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Výsledky" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Chyby" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Text" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Kód LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "Spustiť" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Predvolený backend:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "Pracovný list" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "Povoliť sádzanie textu LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "LaTeX typesetting" +msgstr "Povoliť sádzanie textu LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "Povoliť zvýrazňovanie syntaxe" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "Zvýrazňovanie syntaxe" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "Povoliť dokončovanie" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "Čísla riadkov" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "Čísla riadkov" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "Integrovať grafy do pracovného listu" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "Rovnice:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, fuzzy, kde-format +#| msgid "Ask for confirmation when restarting the backend" +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "Pýtať sa na potvrdenie pred reštartovaním backendu" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "Znovu vyhodnotiť položky automaticky" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Markdown Entry" +msgid "Markdown:" +msgstr "Zľavnená položka" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +#| msgid "Enable LaTeX Typesetting" +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "Povoliť sádzanie textu LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Nájsť..." + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Pridať vlastný cieľ" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Konvertovať na Textovú položku" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Cieľový MIME typ:" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Copy result" +msgstr "Odstrániť výsledok" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Ukázať vykreslené" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Zobraziť kód" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Zobraziť HTML kód" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Ukázať HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Ukázať HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Nemožno vykresliť súbor Eps. Budete možno potrebovať ďalšie balíčky" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "Uložiť výsledok" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Nemožno zapisovať do súboru %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Nemožno zapisovať do súboru." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "chyba pri ukladaní súboru %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "V read only režime Cantor nemôže zaručiť, že export bude platný pre %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Chyba pri načítaní súboru štýlov latex.xsl" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Nepodarilo sa otvoriť súbor %1." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Otvoriť súbor" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Nepodarilo sa otvoriť vybraný súbor na čítanie." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "Vybraný súbor nie je platný súbor Cantor alebo Jupyter projekt." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Vybraný súbor nie je platný súbor projektu Cantor." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "Backend %1 sa nenašiel. Úprava a spustenie položiek nie je možné." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Existujú nejaké problémy s backendom %1,\n" +"skontrolujte si vašu konfiguráciu alebo nainštalujte potrebné balíčky.\n" +"Budete môcť zobraziť iba tento pracovný list." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Notebooky Jupyter s verziou nižšou ako 4.5 (zistená verzia %1.%2) nie sú " +"podporované." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Notebooky Jupyter s verziou vyššou ako 4.5 (zistená verzia %1.%2) nie sú " +"podporované." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "našli sa nesprávne údaje (%1), ktoré nie sú bunkou Jupyter" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "Súbor nie je platný Jupyter notebook" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Neplatná schéma Jupyter notebook: %1" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Convert Entry To" +msgid "Convert To" +msgstr "Konvertovať položku na" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Commands" +msgid "Command" +msgstr "Príkazy" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Markdown Entry" +msgid "Markdown" +msgstr "Zľavnená položka" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Obrázok" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Koniec strany" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Vodorovná čiara" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +#| msgid "Drag Entry" +msgid "Hierarchy Entry" +msgstr "Presunúť položku" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert Entry After" +msgid "Insert After" +msgstr "Vložiť záznam za" + +#: worksheet.cpp:1856 +#, fuzzy, kde-format +#| msgid "Insert Entry Before" +msgid "Insert Before" +msgstr "Vložiť záznam pred" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Vložiť" + +#: worksheet.cpp:1916 +#, fuzzy, kde-format +msgid "Zoom In" +msgstr "Lupa" + +#: worksheet.cpp:1919 +#, fuzzy, kde-format +msgid "Zoom Out" +msgstr "Lupa" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "Veľkosť tlače" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Convert Entry To" +msgid "Move Entries Down" +msgstr "Konvertovať položku na" + +#: worksheet.cpp:1933 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate Entries" +msgstr "Vyhodnotiť položku" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Entries" +msgstr "Odstrániť položku" + +#: worksheet.cpp:1947 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Collapse Command Entry Results" +msgstr "Vložiť položku príkazu" + +#: worksheet.cpp:1948 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Expand Command Entry Results" +msgstr "Položka príkazu" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Remove Command Entry Results" +msgstr "Položka príkazu" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Scripts to autorun" +msgid "Add Command Entry To Execution" +msgstr "Automaticky spustené skripty" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Farba &textu..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Farba" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Zvýraznenie &textu..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Písmo" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Veľko&sť písma" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Tučné" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Kurzíva" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "Podčiark&nuté" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "Preš&krtnuté" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Zarovnať &vľavo" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Vľavo" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Zarovnať na &stred" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Na stred" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Zarovnať vpr&avo" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Vpravo" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "Do &bloku" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Do bloku" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove all results" +msgstr "Odstrániť výsledok" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Biela" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Čierna" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Tmavočervená" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Červená" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Bledočervená" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Tmavozelená" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Zelená" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Svetlozelená" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Tmavomodrá" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Modrá" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Svetlomodrá" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Tmavožltá" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Žltá" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Svetložltá" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Tmavotyrkysová" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Tyrkysová" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Svetlotyrkysová" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Tmavopurpurová" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Purpurová" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Svetlopurpurová" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Tmavooranžová" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Oranžová" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Svetlooranžová" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Tmavošedá" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Šedá" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Svetlošedá" + +#: worksheetentry.cpp:421 +#, fuzzy, kde-format +msgid "Move Up" +msgstr "Posunúť hore" + +#: worksheetentry.cpp:429 +#, fuzzy, kde-format +msgid "Move Down" +msgstr "Posunúť dole" + +#: worksheetentry.cpp:717 +#, fuzzy, kde-format +#| msgid "Are you sure you want to remove all variables?" +msgid "Do you really want to remove this entry?" +msgstr "Ste si istý, že chcete odstrániť všetky premenné?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Odstrániť položku" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Presunúť položku" + +#~ msgid "Animate Worksheet" +#~ msgstr "Animovať pracovný zošit" + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Ak je povolené, bude Cantor automaticky vyhodnocovať každú položku pod " +#~ "aktuálnou." + +#~ msgid "Defaults" +#~ msgstr "Predvolené" + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "" +#~ "Povoliť LaTeX Typesetting (funguje iba ak je nainštalovaný pdflatex)" + +#~ msgid "Enable Line Numbers" +#~ msgstr "Povoliť čísla riadkov" + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Povoliť animácie pracovného listu" + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "" +#~ "Povoliť zabudovanú matematiku (funguje iba ak je nainštalovaný pdflatex)" + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "Zobraziť správu o chybe pri zlyhaní vykreslenia vloženej matematiky" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#, fuzzy +#~| msgid "Plot" +#~ msgid "Plot.ly" +#~ msgstr "Kresliť" + +#, fuzzy +#~| msgid "Package:" +#~ msgid "Graphic Package: " +#~ msgstr "Balíček:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      Spôsob KDE, ako robiť matematiku" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "URL k miestnej dokumentácii Maxima" + +#~ msgid "Documentation:" +#~ msgstr "Dokumentácia:" + +#~ msgid "Url to the local Python documentation" +#~ msgstr "URL k miestnej dokumentácii Python" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "URL k miestnej dokumentácii Octave" + +#~ msgid "Show %1 Help" +#~ msgstr "Zobraziť pomocníka %1" + +#~ msgid "Path to Julia:" +#~ msgstr "Cesta k Julia:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Integrovať grafy do pracovného listu" + +#~ msgid "Clear Variables" +#~ msgstr "Vyčistiť premenné" + +#~ msgid "Right click here to insert image" +#~ msgstr "Sem kliknúť pravým tlačidlom myši pre vloženie obrázka" + +#~ msgid "Choose Image" +#~ msgstr "Vybrať obrázok" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "Obrázky (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Potvrdenie - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Textový vstup" + +#~ msgid "LaTeX Entry" +#~ msgstr "Položka LaTeX" + +#, fuzzy +#~ msgid "Insert Horizontal Line" +#~ msgstr "Vložiť &vodorovnú čiaru" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Vložiť textovú položku" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Cesta k príkazu scilab-adv-cli (Varovanie: Verzia Scilab musí byť vyššia " +#~ "alebo rovná verzii 5.4)" + +#~ msgid "Insert Image Attachment" +#~ msgstr "Vložiť obrázkovú prílohu" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Vložiť položku Latex" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Cesta k spustiteľnému súboru Octave" + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "Prechodný formát radového zápisu" + +#~ msgid "Path to Maxima:" +#~ msgstr "Cesta k Maxima:" + +#, fuzzy +#~| msgid "Failed to start Cantor python server." +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Nepodarilo sa spustiť Cantor python server." + +#~ msgid "Path to Sage:" +#~ msgstr "Cesta k Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Cesta k príkazu scilab-adv-cli:" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Nechať Cantor sledovať vytvorenie/zánik premenných" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "" +#~ "Integrovať grafy do pracovného listu (spustí nové sedenie pri zmene)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Cesta k spustiteľnému súboru Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Cesta k Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Nepomenované" + +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "https://docs.python.org/2/" + +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "Pythonje pozoruhodne silný, dynamický programovací jazyk, ktorý sa " +#~ "používa v celom rade aplikačných oblastí. Existuje niekoľko balíkov " +#~ "Python pre vedecké programovanie. Tento backend podporuje Python 3." + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "You should set path to Julia executable" +#~ msgstr "Mali by ste nastaviť cestu k programu Julia" + +#~ msgid "" +#~ "Path to Julia should point directly to julia executable, symlink not " +#~ "allowed" +#~ msgstr "" +#~ "Cesta k Julia by mala viesť priamo k programu julia, symbolický odkaz nie " +#~ "je povolený" + +#~ msgid "" +#~ "Lua backend needs installed Lua programming language. The backend often " +#~ "automatically finds needed Lua binary file, but not in this case. Please, " +#~ "go to Cantor settings and set path to Lua executable." +#~ msgstr "" +#~ "Backend Lua potrebuje nainštalovaný programovací jazyk Lua. Backend často " +#~ "automaticky nájde program Lua, ale nie v tomto prípade. Prosím, prejdite " +#~ "do nastavení Cantor a nastavte cestu k programu Lua." + +#~ msgid "" +#~ "In Lua backend settings a path to Lua binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Lua? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "V nastaveniach backendu Lua je nastavená cesta k programu na %1, ale " +#~ "tento súbor nie je program. Ste si istý, že je to správna cesta? Ak nie, " +#~ "zmeňte túto cestu v nastaveniach Cantor." + +#~ msgid "" +#~ "Maxima backend needs installed Maxima - a computer algebra system. The " +#~ "backend often automatically finds needed binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Maxima executable" +#~ msgstr "" +#~ "Backend Maxima potrebuje nainštalovaný algebrický systém Maxima. Backend " +#~ "často automaticky nájde program Maxima, ale nie v tomto prípade. Prosím, " +#~ "prejdite do nastavení Cantor a nastavte cestu k programu Maxima." + +#~ msgid "" +#~ "In Maxima backend settings a path to maxima binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Maxima? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "V nastaveniach backendu Maxima je nastavená cesta k programu na %1, ale " +#~ "tento súbor nie je program. Ste si istý, že je to správna cesta? Ak nie, " +#~ "zmeňte túto cestu v nastaveniach Cantor." + +#~ msgid "" +#~ "Octave backend needs installed Octave programming language. The backend " +#~ "often automatically finds needed Octave binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Octave binary file " +#~ "with command line interface (CLI)" +#~ msgstr "" +#~ "Backend Octave potrebuje nainštalovaný programovací jazyk Octave. Backend " +#~ "často automaticky nájde program Octave, ale nie v tomto prípade. Prosím, " +#~ "prejdite do nastavení Cantor a nastavte cestu k programu Octave s " +#~ "rozhraním príkazového riadku." + +#~ msgid "" +#~ "In Octave backend settings a path to Octave binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Octave? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "V nastaveniach backendu Octave je nastavená cesta k programu na %1, ale " +#~ "tento súbor nie je program. Ste si istý, že je to správna cesta? Ak nie, " +#~ "zmeňte túto cestu v nastaveniach Cantor." + +#~ msgid "" +#~ "R backend uses special binary file - cantor_rserver (installed with R " +#~ "backend), which must be executable." +#~ msgstr "" +#~ " Backend R používa špeciálny binárny súbor - cantor_rserver " +#~ "(nainštalovaný s backendom), ktorý musí byť spustiteľný." + +#~ msgid "" +#~ "Sage backend needs installed Sage programming language. The backend often " +#~ "automatically finds needed Sage binary file, but not in this case. " +#~ "Please, go to Cantor settings and set path to Sage executable" +#~ msgstr "" +#~ "Backend Sage potrebuje nainštalovaný programovací jazyk Sage. Backend " +#~ "často automaticky nájde program Sage, ale nie v tomto prípade. Prosím, " +#~ "prejdite do nastavení Cantor a nastavte cestu k programu Sage." + +#~ msgid "" +#~ "In Sage backend settings a path to Sage binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Sage? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "V nastaveniach backendu Sage je cesta k programu nastavená ako %1, ale " +#~ "nie je to spustiteľný súbor. Ste si istý, že je to správna cesta? Ak nie, " +#~ "zmeňte túto cestu v nastaveniach Cantor." + +#~ msgid "" +#~ "Scilab backend needs installed Scilab programming language. The backend " +#~ "often automatically finds needed Scilab binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Scilab executable" +#~ msgstr "" +#~ "Backend Scilab potrebuje nainštalovaný programovací jazyk Scilab. Backend " +#~ "často automaticky nájde potrebný súbor, ale nie v tomto prípade. Prosím, " +#~ "prejdite do nastavení Cantor a nastavte cestu k programu Scilab." + +#~ msgid "" +#~ "In Scilab backend settings a path to Scilab binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Scilab? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "V nastaveniach backendu Scilab je cesta k programu nastavená ako %1, ale " +#~ "nie je to program. Ste si istý, že je to správna cesta? Ak nie, zmeňte " +#~ "túto cestu v nastaveniach Cantora." + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Vyberte backend na použitie:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Backend, s ktorým bol vygenerovaný tento súbor nie je nainštalovaný. " +#~ "Potrebuje %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Zverejniť pracovný zošit" + +#~ msgid "Waiting for Image..." +#~ msgstr "Čakanie na obrázok..." + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "Nemožno otvoriť súbor %1: Neznámy typ MIME" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex| Dokumenty LaTeX" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Pracovný list Cantor" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Server pre Backend Cantor R" + +#~ msgid "R Server" +#~ msgstr "R Server" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "(C) 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Použitie: uložiť súbor premenných" + +#~ msgid "Saving failed." +#~ msgstr "Uloženie zlyhalo." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Použitie: načítať súbor premenných" + +#~ msgid "Loading failed." +#~ msgstr "Načítanie zlyhalo." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "(C) 2009-2013 Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "Cesta k príkazu python" + +#~ msgid "Cantor Server for R" +#~ msgstr "Server Cantor pre R" diff --git a/po/sl/cantor.po b/po/sl/cantor.po new file mode 100644 index 0000000..a7b9a90 --- /dev/null +++ b/po/sl/cantor.po @@ -0,0 +1,5146 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Jure Repinc , 2010, 2011, 2012, 2013. +# Andrej Mernik , 2013, 2014, 2015, 2016, 2017, 2018. +# Matjaž Jeran , 2019, 2020, 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-11-18 09:41+0100\n" +"Last-Translator: Matjaž Jeran \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" +"Translator: Andrej Mernik \n" +"X-Generator: Poedit 3.1.1\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Jure Repinc,Andrej Mernik,Matjaž Jeran" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "jlp@holodeck1.com,andrejm@ubuntu.si,matjaz.jeran@amis.net" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Premor" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Zaženi" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Zaustavi" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Shrani rezultat animacije" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Animacije (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Napredno risanje" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Graf" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Izraz:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Dodatne možnosti:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "Izriši" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Možnost je omogočena" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "Izračunaj" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Odvajaj" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Spremenljivka:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Krat: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Paket" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Uvozi paket" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Paket:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integriraj" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Spodnja meja:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Zgornja meja:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "določen integral" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Linearna algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Ustvari matriko" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Stolpci:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Vrstice:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Izračunaj lastne vrednosti" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matrika:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Izračunaj lastne vektorje" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Obrni matriko" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Izriši v 2D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Spremenljivka" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Ime" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimum:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maksimum:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Izriši v 3D" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1. spremenljivka" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2. spremenljivka" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Zaženi skript" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Reši enačbe" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Enačbe:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Spremenljivke:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Izberi zaledje" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Priporočena verzija: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Poglej %2 za več informacij." + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Nekaj zahtev ni zadovoljenih: " +"%1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Nastavi kot privzeto zaledje" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia je visok in visoko zmogljiv dinamični programski jezik za " +"tehnično računanje, ki ima skladnjo podobno drugim tehničnim programskim " +"jezikom. Ponuja izpopolnjen prevajalnik, porazdeljeno vzporedno izvajanje, " +"numerično natančnost in obširno knjižnico matematičnih funkcij." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "http://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"Pot do Julije, določena v nastavitvah aplikacije, mora biti usmerjena " +"neposredno do izvajalne datoteke. Simbolične povezave niso dovoljene. Prosim " +"navedite pravilno pot v nastavitvah aplikacije in poskusite znova." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Cantor ni mogel določiti verzije Julije za %1. Prosim navedite pravilno pot " +"do izvršljivega programa Julia (simbolična povezava ni dovoljena) in " +"poskusite znova." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Poskušate uporabiti Cantor z Julijo v%1.%2.%3. Ta verzija Cantorja je bila " +"prevedena s podporo za Julio v%4.%5.%6. Prosim, v nastavitvah pokažite na to " +"verzijo Julije ali ponovno prevedite Cantorj za verzijo %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Pot do lupine za Julio" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Omogoči upravljanje spremenljivk" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Vgradi grafe v delovni list" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Grafični paket za Plot-Assistant" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Opravičilo, a Gadfly ne podpira risb v 3d" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Skriptna datoteka Julia (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Napaka - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"Julia se ne more prijaviti zaradi interne težave Julie zaradi manjkajoče " +"interne datoteke - \"%1\"" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "Julia se ne more prijaviti na sejo zaradi neznane notranje težave" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Proces z Julio se je prenehal izvajati." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Ni bilo mogoče pognati procesa z Julio." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "Komunikacija s procesom z Julio je iz neznanega razloga izpadla." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Za Julijo je trenutno podprt samo okvir za vizualizacijo aplikacij GR " +"(https://gr-framework.org/). Ta paket mora biti nameščen prvič, če to še ni. " +"Za to zaženite Pkg.install (\"GR\") v Cantorju ali v Julia REPL. " +"Upoštevajte, da lahko ta operacija traja nekaj časa in jo je bolje izvesti " +"ga v Juliji REPL, ki lahko kaže trenutni napredek namestitve paketa." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Splošno" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Izvajalni programi:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Integracija risanja:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Če je vključeno, bodo grafi prikazani znotraj delovnih listov, sicer pa bodo " +"prikazani v zunanjem oknu." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Omogočeno" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Upravljanje spremenljivk:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Nadzoruj ustvarjanje in uničevanje spremenljivk in prikazuj obstoječe na " +"kontrolni plošči spremenljivk." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Interni format risbe:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "Notranji format grafov, če je vdelava grafov vključena." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Grafični paket za uporabo v Plot Assistantu" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Paket za Plot Assistanta" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Grafi" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Samodejni zagon" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Ukazi za samodejni zagon" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Dokumentacija" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Seznam skriptov, ki bodo samodejno zagnani na začetku seje" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Napaka: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Ti ukazi ob zagonu se bodo zagnali na zagonu novega delovnega lista. Lahko " +"so uporabni za nalaganje potrebnih modulov, spreminjajoče se okolje itd." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "http://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua je hiter in lahek skriptni jezik s preprosto procedurno skladnjo. " +"Za Lua obstajajo številne knjižnice, ki se osredotočajo na matematiko in " +"znanost." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Pot do ukaza luajit" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Skriptna datoteka Lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Pot do ukaza luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" +"

      Maximin sistem za pomoč

      Funkcija apropos

      Išče imena " +"Maximina, kjer se v njih pojavlja ime; name mora biti niz ali simbol. " +"Tako apropos(exp) vrne seznam vseh zastavic in funkcij, ki imajo exp " +"kot del svojega imena, na primer expand, exp in " +"exponentialize. Če se torej spomnite le dela imena Maximinega ukaza " +"ali spremenljivke, lahko s tem ukazom najdete preostanek imena. Podobno " +"lahko vnesete apropos(tr_), da poiščete seznam številnih stikal, ki " +"se nanašajo na prevajalnik, večina pa se začne z tr_." +"


      apropos(\"\") vrne seznam z vsemi Maximini imeni." +"

      apropos vrne prazen seznam [], če ni najdenega nobenega imena." +"

      Funkcija describe

      describe(string) je " +"enakovredno describe(string, exact).

      describe(string, exact) " +"najde element z naslovom, ki je enak (neobčutljiv na velikost črk) nizu " +"string, če obstaja tak element.


      describe(string, inexact) " +"najde vse dokumentirane elemente, ki vsebujejo niz string v njihovih " +"naslovih. Če je več takšnih elementov, Maxima prosi uporabnika, da izbere " +"element ali elemente za prikaz.

      ? foo (s presledkom med ? in foo) je enakovreden describe ?? foo je enakovreden " +"describe(\"foo\", inexact)

      describe(, inexact) daje " +"seznam vseh tem, dokumentiranih v on-line priročniku.

      describe " +"navede svoj argument. describe vrne true, če najde kakšno " +"dokumentacijo, sicer pa false.

      Funkcija exampleexample(topic) prikazuje nekaj primerov teme topic, ki je " +"simbol ali niz. Če želite dobiti primere za operaterje, kot so if, " +"do ali lambda mora biti argument niz, npr. example(\"do\"). example ni občutljiv na velike/male črke. Večina tem je imen " +"funkcij.

      example() vrne seznam vseh prepoznanih tem." +"

      Ime datoteke, ki vsebuje primere spremenljivke manual_demo, " +"ki privzeto na \"manual.demo\".

      example navaja svoj " +"argument. example vrne done, razen če ne najde primerov ali ni " +"argumenta, v tem primeru example vrne seznam vseh prepoznanih tem." + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima je sistem za manipulacijo s simboličnimi in numeričnimi " +"izrazi, kar vključuje odvajanje, integriranje, Taylorjeve vrste, Laplaceove " +"transformacije, navadne diferencialne enačbe, sisteme linearnih enačb, " +"polinome, ter množice, sezname, vektorje, matrike in tenzorje. Maxima s " +"pomočjo točnih ulomkov, celih števil s poljubno natančnostjo ter decimalnih " +"števil s spremenljivo natančnostjo izračuna izredno natančne numerične " +"rezultate. Maxima lahko funkcije in podatke izriše v dveh in treh dimenzijah." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Pot do izvedljive datoteke Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Napaka: preveč nizov */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Napaka: preveč nizov /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Napaka: pričakovan je \" pred ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Čakam na rezultate risanja" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Paketna datoteka Maxima (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Zagon Maxime ni uspel" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima se je sesula, ponovni zagon ..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima se je v kratkem času dvakrat sesula. Zaustavljanje za poskus " +"ponovnega zagona" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave je visoko-nivojski jezik, ki je v prvi vrsti namenjen " +"numeričnemu računanju.
      Ponuja priročen ukazni vmesnik za numerično " +"reševanje linearnih in nelinearnih problemov ter izvajanje drugih numeričnih " +"poskusov. Jezik je večinoma združljiv z Matlabom." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Skriptna datoteka Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Skladenjska napaka" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Preizkus integracije risanja ni uspel." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "Integracija grafov bo onemogočena." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"Integracija grafike ne deluje, ker je Cantor ugotovil, da Octave ne more " +"ustvarite grafov, ker ni grafičnih programov za to: sklep je bil narejen na " +"podlagi praznega rezultata iz funkcije available_graphics_toolkits(). Kaže, " +"da bi morali namestiti dodatne pakete OS, kot so gnuplot, fltk ali qt za " +"zmožnost ustvarjanja grafov." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python je zmogljiv dinamični programski jezik, ki je uporabljen v " +"številnih programskih domenah. Za znanstveno programiranje obstajajo " +"številni paketi za Python." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# Oprostite, a Bokeh ne podpira 3d grafike" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Skriptna datoteka Python (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Cantorjev Pythonov strežnik je prenehal delovati." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Ni bilo mogoče pognati Cantorjevega Pythonovega strežnika." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"Komunikacija s Cantorjevim Phytonovim strežnikom je iz neznanega razloga " +"izpadla." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Za uporabo integrirane grafike s paketom Matplotlib morate najprej namestiti " +"paket \"matplotlib\" python." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Za uporabo integrirane grafike s programom Plot.ly morate namestiti Python " +"paket \"plotly\" in poseben izvedbeni program \"orca\", združljiv s Plot.ly. " +"Glejte članek \"Static Image Export\" v dokumentaciji Plot.ly za podrobnosti." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor – pogovorno okno risanja" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funkcije" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Naslov" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Izraz" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Dodaj" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Odstrani" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Počisti seznam" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Spremenljivka x" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Slog" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Črte" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Točke" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Točke in črte" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Škatle" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogram" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Stopnice" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Japonske sveče" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Pike" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Glajenje" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Brez" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monotono" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Naravni kubični zlepki" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (monotono)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Interval funkcije" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Interval x" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Gostota vzorčenja" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Velikost koraka" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Možnosti" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Naslov grafa" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Oznaka osi x" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Oznaka osi y" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Položaj legende" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Skrij legendo" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Zgoraj-levo" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Zgoraj-desno" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Spodaj-levo" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Spodaj-desno" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Pod" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Izven" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Pokaži mrežo" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Pokaži polno obrobo" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Uporabi barve" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Pokaži znotrajvrstično" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logaritemsko merilo x" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logaritemsko merilo y" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Možnosti datoteke" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Shrani graf v datoteko" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Vrsta datoteke" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Ugotovi iz imena datoteke" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! ni običajen program, ki bi kopiral najcenejše računalo. " +"Cilj programa Qalculate! je v polni meri izkoristiti boljši uporabniški " +"vmesnik, zmogljivost in prilagodljivost modernih računalnikov. V središču " +"pozornosti je vnos izraza. Namesto vnašanja vsake številke matematičnega " +"izraza posebej lahko neposredno vnesete celoten izraz in ga kasneje " +"spreminjate. Tolmačenje izrazov je prilagodljivo in ni občutljivo na napake. " +"Če kljub temu storite napako, vam bo Qalculate! to sporočil. Izrazi, ki jih " +"ni mogoče rešiti v celoti, niso napake. Qalculate! bo poenostavil kolikor je " +"mogoče in vrnil izraz. Poleg številk in računskih operatorjev lahko izraz " +"vsebuje poljubno kombinacijo spremenljivk, enot in funkcij." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Ali naj se enote samodejno pretvori in kako. Če je vključeno, se enote " +"pretvori v najprimernejše enote SI (najmanjše število enot)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Privzeta kotna enota za trigonometrične funkcije." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Osnova razčlenjenih in ovrednotenih števil." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Ali naj bo rezultat vrednotenja poenostavljen ali faktoriziran." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Ali naj bodo racionalna števila prikazana z decimalkami, kot ulomek ali " +"nekaj vmes." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Namesto zaokroževanja s tripičjem nakaži, da se zaporedje decimalk nadaljuje " +"v neskončnost (npr: 2/3 bo prikazano kot 0,666666... in ne kot 0,666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Uporabi vse decimalne predpone SI. Če ni vključeno, predpone, ki niso " +"mnogokratniki 1000 (centi, deci, deka, hekto), ne bodo uporabljene samodejno." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Če je vključeno, bodo namesto deljenja uporabljeni negativni eksponenti " +"(npr. 5/x^2 postane 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Številski prikaz." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Če je vključeno, bodo grafi prikazani vstavljeni v delovne liste. V " +"nasprotnem bodo prikazani v ločenem oknu." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Ali naj bodo v grafih uporabljene barve." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Ali naj bo na grafu izrisana mreža." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Ali naj bo okoli grafa izrisana polna obroba." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Širina črt v slikovnih točkah." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Število korakov interpolacije pri risanju grafa." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Način glajenja grafa." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Slog grafa." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Položaj legende na grafu." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" +"Qalculate! sporoča, da tiskanje ni mogoče. Ali je program gnuplot nameščen?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "manjka %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 mora biti število." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 mora biti celo število." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 mora biti logična vrednost." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "neveljavna možnost za %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "v enem ukazu za izris grafa je bilo najdenih več izrazov (%1 in %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "NAPAKA" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "OPOZORILO" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Funkcija, spremenljivka ali enota z danim imenom ne obstaja." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funkcija: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Vmesnik za izris grafa" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "Znotrajvrstično ali v ločenem oknu izriše graf ene ali več funkcij." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "izraz" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "možnost" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "vrednost" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "celo število" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "logična vrednost" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "število" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "privzeto: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Ime funkcije" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Naslovna oznaka" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "Oznaka osi x" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Oznaka osi y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Slika, v katero bo shranjen graf. Če je prazno, bo graf prikazan v oknu na " +"zaslonu. Če je možnost »inline« nastavljena na »true«, bo slika prikazana na " +"zaslonu ne glede na to možnost." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Vrsta slike, v katero bo shranjen graf. Izbirate lahko med auto, png, ps, " +"eps, latex, svg in fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "Nastavite na »true« za graf v barvah in na »false« za enobarven graf." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Najmanjša vrednost na osi x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Največja vrednost na osi x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Ali naj bo za os x uporabljeno logaritemsko merilo." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Ali naj bo za os y uporabljeno logaritemsko merilo." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Logaritemska osnova za os x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Logaritemska osnova za os y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Ali naj bo na grafu prikazana mreža." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "Ali naj bo graf obrobljen z vseh strani (in ne samo pri oseh)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Širina črt." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Kam naj bo postavljena legenda grafa. Izbirate lahko med none, top_left, " +"top_right, bottom_left, bottom_right, below, outside" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Glajenje grafa. Izbirate lahko med none, unique, csplines, bezier, sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Slog grafa. Izbirate lahko med lines, points, points_lines, boxes, " +"histogram, steps, candlesticks, dots" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Uporabi merilo na drugi osi x." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Uporabi merilo na drugi osi y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Ali naj bo graf izrisan znotrajvrstično in ne v novem oknu." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" +"Razdalja med točkama interpolacije. Oglejte si tudi nastavitev korakov." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Število interpolacijskih točk. Oglejte si tudi nastavitev korakov." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Ime spremenljivke x. To mora biti neznana spremenljivka" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Shrani spremenljivke v datoteko" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Shrani vse trenutno določene spremenljivke v datoteko. Znova jih lahko " +"naložite z %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "datoteka" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "datoteka: datoteka, v katero se bo shranilo" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Naloži spremenljivke iz datoteke" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Naloži spremenljivke iz datoteke, ki je bila prej ustvarjena z %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "datoteka: datoteka, ki bo naložena" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Številska osnova:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Oblika ulomkov:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Desetiško" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Točno" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Ulomek" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Združeno" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Številski prikaz:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Čisto" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Znanstveno" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Natančnost" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Nakaži neskončna zaporedja:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Uporabi vse predpone SI:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Uporabi negativne eksponente:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Ovrednoti" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Pretvori v najprimernejše enote SI:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radian" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Stopinja" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradian" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Način strukturiranja:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Poenostavi" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Faktoriziraj" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Enota kota:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Risanje grafa" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Graf pokaži znotrajvrstično:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Pokaži polne obrobe:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Širina črt:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Gostota vzorčenja:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Način glajenja:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Naravni kubični zlepki" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Stopnice" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Položaj legende:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Grafi v barvah:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Pokaži mrežo:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Slog grafa:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Spremeni vnos" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Dodaj nov vnos" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Ime ne more biti prazno." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Dodaj lokalno dokumentacijo" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Pridobi novo dokumentacijo" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Prenesi dodatno dokumentacijo" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Stisnjena Qt pomoč ni veljavna." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Že uvožena dokumentacija" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Spremeni" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Zbriši" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Prosimo odstranite iz namestitve prek GHNS." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Namesti dodatne datoteke dokumentacije" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Ime" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Pot" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Dodaj" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Ikona:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Izberi ikono" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Ime:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Vnesite ime" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Izberi ime..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Pot:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Izberi datoteko Qt pomoči..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Izberi datoteko Qt pomoči..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" +"

      R-ov sistem za pomoč: help() in ?:


      Funkcija " +"help() in ? operater za pomoč pri R-u zagotavlja dostop do " +"dokumentacijskih strani za funkcije v R-u, nabore podatkov in druge " +"predmete, tako za pakete v standardni distribuciji R-a kot za prispevane " +"pakete.

      Za dostop do standardne funkcije lm (linearni model) " +"na primer vnesite ukaz help(lm) ali help(\"lm\") ali " +"?lm ali ?\"lm\" (navednice niso obvezne).

      Za dostop do " +"paketa, ki trenutno ni naložen, poleg tega določite še ime paketa: na primer " +"za dokumentacijo za funkcijo rlm() (robustni linearni model) v paketu " +"MASS, help(rlm, package=\"MASS\").

      Standardna imena v R so " +"sestavljena iz velikih ali malih črk, številk (0-9), podčrtajev (_) in pik " +"(.) in se morajo začeti s črko ali piko. Če želite pridobiti pomoč za " +"predmet z nestandardnim imenom (na primer operater pomoči ?), mora " +"biti ime med navednicami: na primer help('?') ali ?\"?\"." +"

      Za dostop do informacij o paketu v vaši knjižnici lahko uporabite " +"tudi funkcijo help(package=\"MASS\") - ki prikazuje indeks " +"razpoložljivih strani za pomoč za paket skupaj z nekaterimi drugimi " +"informacijami. Strani za pomoč za funkcije običajno vključujejo razdelek z " +"izvedljivimi primeri, ki ponazarjajo, kako funkcije delujejo. Te primere " +"lahko izvedete v trenutni seji R prek ukaza example() ukaz: npr. " +"example(lm)." + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R je jezik in okolje za statistično računanje in grafiko in je " +"podoben jeziku in okolju S.
      Ponuja široko paleto statističnih (linearno " +"in ne-linearno modeliranje, klasični statistični preizkusi, klasifikacija, " +"preučitev časovnih vrst, kopičenje ...) in grafičnih metod ter je zelo " +"razširljiv. Jezik S je pogosta izbira za raziskovanje statistične " +"metodologije, R pa ponuja prosto in odprtokodno pot do sodelovanja pri teh " +"dejavnostih." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Napaka med odpiranjem datoteke %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "Skriptna datoteka R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Napaka med razčlenjevanjem ukaza" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "Url do lokalne dokumentacije za R" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Dvokliknite za odprtje pogovornega okna za izbor datotek" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|Izvorna koda R (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage je prosta in odprtokodna matematična programska oprema, ki je " +"pod licenco GPL
      Za skupnim Python-ovim vmesnikom združuje moč več " +"obstoječih odprtokodnih programskih paketov." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Pot do izvedljive datoteke Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Omogoči stavljenje LaTeX-a za Sage v ozadju" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Rezultat %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Zadnji izhod je bil: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Skriptna datoteka Python (*.py);;Skriptna datoteka Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Sage verzija %1.%2 ni podprta. Prosim nadgradite vašo namestitev s podprtimi " +"verzijami, da jih boste lahko uporabili skupaj s Cantorjem." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Ni mogoče ugotovite verzije Sage. Prosim preverite vašo namestitev in izhod " +"ukaza 'sage -v'." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Opravilo Sage se je med vrednotenjem tega izraza sesulo" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Opravilo Sage se je sesulo" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Opravilo Sage se je končalo med vrednotenjem tega izraza" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Opravilo Sage se je končalo" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Ni bilo mogoče zagnati programa Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "Stavljenje v LaTeX-u:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"Sage-v LaTeX-ov izhod ni vedno pravilen, zato se lahko za boljšo izkušnjo " +"latexovo stavljenje onemogoči" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab je prosta programska oprema. Je paket za numerično računanje " +"in visoko-nivojski numerično orientiran programski jezik, ki deluje v več " +"okoljih. Scilab je dostopen pod pogoji licence CeCILL (združljiva z GNU GPL)." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Pot do izvedljive datoteke Scilab" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +";;Skriptna datoteka Scilab (*.sce);;Datoteka s funkcijami za Scilab (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "Datoteka %1 je že odprta." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Odpri datoteko" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Prenesi primere" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Odpri primer" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Pojdi na prejšnji delovni list" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Pojdi na naslednji delovni list" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Vse podprte datoteke (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Najdenega ni bilo nobenega zaledja

      \n" +"
      Poskusite lahko:\n" +"
      • Spremeniti nastavitve
      • Namestiti pakete za naslednji program:" +"
      • %2
      " +msgstr[1] "" +"

      Najdenega ni bilo nobenega zaledja

      \n" +"
      Poskusite lahko:\n" +"
      • Spremeniti nastavitve
      • Namestiti pakete za enega izmed " +"naslednjih programov:
      • %2
      " +msgstr[2] "" +"

      Najdenega ni bilo nobenega zaledja

      \n" +"
      Poskusite lahko:\n" +"
      • Spremeniti nastavitve
      • Namestiti pakete za enega izmed " +"naslednjih programov:
      • %2
      " +msgstr[3] "" +"

      Najdenega ni bilo nobenega zaledja

      \n" +"
      Poskusite lahko:\n" +"
      • Spremeniti nastavitve
      • Namestiti pakete za enega izmed " +"naslednjih programov:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Napaka" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Zaledje %1 ni nameščeno" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"%1 zaledna podpora je nameščena, a ni dejavna. Prosim preverite namestitev " +"in nastavitve Cantorja" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Seja %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Ni bilo mogoče najti sestavnega dela Cantor z napako %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Preračunavanje ..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Pripravljen" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Spremenjeno" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "Več odprtih delovnih listov še ni shranjenih. Ali jih želite zapreti?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Zapri Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Trenutni projekt je bil spremenjen. Ali ga želite shraniti?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Shrani projekt" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Oblikovanje" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Zaledje, ki je uporabljeno privzeto" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Privzeto omogoči stavljenje" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Privzeto omogoči poudarjanje skladnje" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Privzeto omogoči dokončevanje" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Privzeto omogoči številčenje izrazov" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Privzeto animiraj spremembe na delovnem listu" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Privzeto omogočeno upodabljanje matematičnih izrazov znotraj $$ .. $$ v " +"besedilih in vnosih Markdown (potreben je nameščen pdflatex)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Samodejno znova ovrednoti vnose, ki so pod trenutnim" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Prosi za potrditev, kadar ponovno zaganjate program v zaledju" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Shranite obogateno besedilo TextEntry, kadar shranjujete delovni zvezek v " +"Jupyterjevem formatu" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Uporabi stari slog umestitve vnosov v Cantor" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Prikaži napako vloženega rezultata matematike" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Omejitev vidnih črt za besedilni rezultat" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Pisava v hierarhiji za poglavje" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Velikost pisave v hierarhiji za poglavje" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Poševna pisava v hierarhiji za poglavje" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Krepka pisava v hierarhiji za poglavje" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Pisava v hierarhiji za podpoglavje" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Velikost pisave v hierarhiji za podpoglavje" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Poševna pisava v hierarhiji za podpoglavje" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Krepka pisava v hierarhiji za podpoglavje" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Pisava v hierarhiji za sekcijo" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Poševna pisava v hierarhiji za sekcijo" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Krepka pisava v hierarhiji za sekcijo" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Pisava v hierarhiji za podsekcijo" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Poševna pisava v hierarhiji za podsekcijo" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Krepka pisava v hierarhiji za podsekcijo" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Pisava v hierarhiji za odstavek" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Poševna pisava v hierarhiji za odstavek" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Krepka pisava v hierarhiji za odstavek" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Pisava v hierarhiji za pododstavek" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Poševna pisava v hierarhiji za pododstavek" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Krepka pisava v hierarhiji za pododstavek" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Shrani navadno besedilo" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Izvozi v LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Ovrednoti delovni list" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Stavljenje s pomočjo LaTeXa" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Poudarjanje skladnje" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Dokončevanje" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Številke vrstic" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Animacije" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Vložena matematika" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Znova zaženi zaledje" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Ovrednoti vnos" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Vstavi ukazni vnos" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Vstavi besedilni vnos" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Vstavi vnos Markdown" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Vstavi vnos LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Vstavi prelom strani" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Vstavi sliko" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Strni vse rezultate" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Razširi vse rezultate" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Odstrani vse rezultate" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Odstrani trenutni vnos" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Pokaži urejevalnik skriptov" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Prikaži dokončevanje" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Cantorjev delovni list (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyter Notebook (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Shrani kot" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Shrani" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Vsi dosedanji rezultati izračunov bodo izgubljeni. Ali zares želite ponovni " +"zagon %1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Ponovno zaženi %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Prekini" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Napaka seje: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Začenjanje je zaključeno" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Začenjanje ..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[samo za branje]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Ali želite trenutni delovni list poslati na javni spletni strežnik?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Vprašanje - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Delovni list ni shranjen. Pred pošiljanjem bi ga morali shraniti." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Opozorilo - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "To zaledje ne podpira skriptov." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "Ur&edi" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "Pogled" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "Delovni list" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Nastavitve" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "Datoteka" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Nova" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Pulti" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "Na&stavitve" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Barva ozadja" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Privzeto" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Barva besedila" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Pisava" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Krepko" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Ležeče" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Povečaj velikost" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Zmanjšaj velikost" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Izberi" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Ponovno nastavi na privzeto" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Prikaži rezultate" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Skrij rezultate" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Pokaži pomoč" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Videz" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Prekinjeno" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Iskalna vrstica" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Najdi:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Naslednje" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Predhodno" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Zamenjaj:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "Zamenjaj" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Zamenjaj vse" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Poišči v:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "Ujemanje velikosti črk" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Hierarhija pisav" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Pisava poglavja" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Družina pisav:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Velikost pisave:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Pisava podpoglavja" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Pisava sekcije" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Pisava podsekcije" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Pisava odstavka" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Pisava pododstavka" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Poglavje" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Podpoglavje" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Sekcija" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Podsekcija" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Odstavek" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Pododstavek" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Nastavi raven hierarhije" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Polna črta" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Črtkana črta" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Pikčasta črta" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Črtkano pikčasta črta" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Črtkano pikčasto pikčasta črta" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Debelina črte" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Tenka" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Srednja" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Debela" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Barva črte" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Slog črte" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Nastavi sliko" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Dvokliknite za nastavljanje slike" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Ni mogoče naložiti slike %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Shrani sliko rezultata" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Slike (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Nastavitve slik" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Odpri" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Velikost za prikaz" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Širina" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Višina" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Predogled" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Velikost za tisk" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Uporabi velikost za prikaz" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Nastavitev slike" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(samodejno)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Odpri slikovno datoteko" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Pokaži kodo LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Ni določena pot do navedenega izvedljivega programa %1. Prosimo navedite " +"pravilno pot v nastavitvah aplikacije in poskusite znova." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"Navedena datoteka '%1' za izvedljiv program %2 ne obstaja. Prosimo navedite " +"pravilno pot v nastavitvah aplikacije in poskusite znova." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"Navedena datoteka '%1' ne kaže na izvedljivo datoteko. Prosimo, navedite " +"pravilno v nastavitvah aplikacije in poskusite znova." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"Program %1 ni končal izvedbe po %2 milisekundah med preizkusom integracije " +"risanja.." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" +"Med preizkusom integracije risanja ni bilo mogoče odpreti. datoteke %1." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" +"Med preizkusom integracije risanja ni bilo mogoče razčleniti rezultata." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Pot do izvedljive datoteke latex" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Pot do izvedljive datoteke dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Vrednost" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 bajtov>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Od:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Do:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Glavni naslov" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Merilo abscise" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Merilo ordinate" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Naslov grafa:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "To je nepodprta vsebina tipov Jupyter ('%1')" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"Proces %1 se je nepričakovano prekinil. Vsi rezultati izračuna so izgubljeni." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"Proces %1 se je nepričakovano prekinil s sporočilom %2. Vsi rezultati " +"izračuna so izgubljeni." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Izbrali ste podporo za grafični paket %1, vendar podpora ne more biti " +"aktivirana zaradi manjkajočih zahtev, tako bo integracija tega paketa " +"onemogočena. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "KDE-jevo začelje za matematične programe" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Vzdrževalec
      Predelava za Qt5/KF5, zaledji za Scilab in Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Razvijalec" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Prvotni avtor
      Vzdrževalec (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Zaledje za KAlgebro" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Zaledje za Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Vmesnik" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Ikona za Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Uporabi zaledje " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Dokumenti za odprtje." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Ni bilo mogoče odpreti datoteke %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Vstopi v urejevalni način" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Očisti priloge" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Napaka Cantorjeve matematike" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Ni bilo mogoče prebrati slike \"%1\". Napaka \"%2\"" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Prelom strani ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Pojdi na vsebino" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Preišči ključne besede..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Najdi v besedilu trenutne strani dokumentacije" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Ponastavi oddaljenost na 100%" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Zapri" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Skoči na naslednji zadetek" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Skoči na prejšnji zadetek" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Ujemanje glede velikih/malih črk" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "Datoteka je bila uspešno prenesena v Prenose." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Uspešen prenos" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Datoteke za Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Datoteke za Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Vse podprte datoteke" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Vse datoteke" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Ime:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Vrednost:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Dodaj novo spremenljivko" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Naloži spremenljivke" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Shrani spremenljivke" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Odstrani spremenljivke" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Išči/Filter" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Občutljivo na velike/male črke" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Ujemanje celotne besede" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Ali res želite odstraniti vse spremenljivke?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Naloži datoteko" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Shrani rezultat" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Odstrani rezultat" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Sestavnega dela KDE za urejanje besedila ni bilo mogoče najti.\n" +"Preverite vašo namestitev KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Urejevalnik skriptov" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "%1 – Urejevalnik skriptov" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Ni najdeno" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Dosežen začetek" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Dosežen konec" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Zamenjan %1 primerek" +msgstr[1] "Zamenjana %1 primerka" +msgstr[2] "Zamenjani %1 primerki" +msgstr[3] "Zamenjano %1 primerkov" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Ukazi" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Rezultati" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Napake" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Besedilo" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Koda LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "Zagon:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" +"Ustvari nov delovni list za izbrani zaledni sistem. Če ni izbranega sistema, " +"bo uporabnik vprašan po izbiri zalednega sistema ob zagonu." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Privzeto zaledje:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Delovni list:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" +"Omogoči stavljenje LaTeX-a rezultatov izračunov, če to podpira zaledni sistem" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "Stavljenje v LaTeX-u" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Omogoči poudarjanje skladnje" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Poudarjanje skladnje" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "Omogoči dokončevanje skladnje" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Prikazuj številke vrstic" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Številke vrstic" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Omogočaj učinke animacij v delovni list" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" +"Če je omogočeno, so vnosi besedil poravnani na mejo delovnega lista in ne na " +"mejo pozivnika" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "Ne zamikaj vnosov besedil" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Shrani obogateno besedilo za vnose besedil, kadar se shranjuje delovni " +"zvezek v Jupyterjevem formatu" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "Ovrednotenje:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"Če je omogočeno, bo uporabnik vprašan za potrditev pred ponovnim zagonom " +"zalednega sistema" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "Če je omogočeno, bodo vsi vnosi pod trenutnim samodejno ovrednoteni" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "Samodejno ponovno ovrednoti vnose" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Število vrstic rezultata (0 za neomejeno)" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Maksimalno število vidnih vrstic za rezultat ukaza. Uporabite vrednost 0 za " +"delo brez omejitev." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "Omogoči stavljenje LaTeX-a za matematične izraze v vnosih Markdovn" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "Matematični izrazi prek LaTeXa" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "Obveščaj o napakah upodabljanja matematičnih izrazov" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Poišči…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Ciljne surove celice" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Dodaj cilj po meri" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Prevedi v besedilni vnos" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Prevedi v surovo celico" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Ciljni tip MIME:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Kopiraj rezultat" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Pokaži izrisano" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Pokaži kodo" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Pokaži kodo HTML" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Prikaži enostavno alternativo" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Prikaži Html" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Prikaži HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Ni mogoče izrisati datoteke EPS. Morda potrebujete dodatne pakete" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Shrani besedilo rezultata" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "Besedilne datoteke (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Datoteke %1 ni mogoče zapisati." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Ni mogoče zapisati datoteke." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Napaka med shranjevanjem datoteke %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"Cantor v načinu samo za branje ni mogel zagotoviti, da bo izvoz veljaven za " +"%1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Napaka med nalaganjem slogovne predloge latex.xsl" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Ni bilo mogoče odpreti datoteke %1." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Odpri datoteko" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Ni bilo moč odpreti izbrane datoteke za branje." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" +"Izbrana datoteka ni veljavna Cantorjeva ali Jupyterjeva projektna datoteka." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Izbrana datoteka ni veljavna Cantorjeva projektna datoteka." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Ta delovni list je bil ustvarjen s Python2, ki ni več podprt. Uporabljen bo " +"Python3." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python2 ni več podprt" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"%1 v zaledju ni bilo mogoče najti. Urejanje in izvajanje vnosov ni mogoče." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Z zaledjem %1 je nekaj težav.\n" +"Preverite vaše nastavitve ali pa namestite zahtevane pakete.\n" +"Delovni list si boste lahko le ogledali." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Jupyterjevi zvezki z verzijami starejšimi kot 4.5 (zaznana verzija %1.%2) " +"niso podprti." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Jupyterjevi zvezki z verzijami novejšimi kot 4.5 (zaznana verzija %1.%2) " +"niso podprti." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Ta zvezek je bil ustvarjen s Pythonom2, ki ni več podprt. Uporabljen bo " +"Python3." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "predmet s ključi: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "ne-predmetna vrednost JSON" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "najden nekorekten podatek (%1) ki ni Jupyter celica" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "Datoteka ni veljavni Jupyterjev zvezek" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Neveljavna Jupyterjeva shema zvezka: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Predelaj v" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Ukaz" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Slika" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Prelom strani" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Vodoravna črta" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Vnos hierarhije" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Vstavi po" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Vstavi pred" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Vstavi" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Povečaj" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Pomanjšaj" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Izvirna velikost" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Premakni vnose navzgor" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Premakni vnose navzdol" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Ovrednoti vnose" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Odstrani vnose" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Strni rezultate vnosnega ukaza" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Razširi rezultate ukaznega vnosa" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Odstrani rezultate ukaznega vnosa" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Izvzemi ukazni vnos iz izvajanja" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Dodaj ukaze za izvajanje" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Barva besedila..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Barva" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Poudarjanje besedila..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "Pisava" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Velikost pisave" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "Krepko" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "Ležeče" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "Podčrtano" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "Prečrtano" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Poravnaj l&evo" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Levo" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Na sredino" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Na sredino" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Poravnaj desno" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Desno" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "Poravnaj obo&jestransko" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Obojestransko" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"S tem dejanjem bodo odstranjeni vsi rezultati brez možnosti preklica. Ali " +"ste prepričani?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Odstrani vse rezultate" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Belo" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Črno" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Temno rdeče" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Rdeče" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Svetlo rdeče" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Temno zeleno" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Zeleno" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Svetlo zeleno" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Temno modro" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Modro" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Svetlo modro" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Temno rumeno" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Rumeno" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Svetlo rumeno" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Temno sinje" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Sinje" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Svetlo sinje" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Temna magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Svetla magenta" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Temno oranžna" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Oranžna" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Svetlo oranžna" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Temno siva" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Siva" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Svetlo siva" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Pojdi gor" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Pojdi dol" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Ali zares želite odstraniti ta vnos?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Odstrani vnos" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Povlecite vnos" + +#~ msgid "Animate Worksheet" +#~ msgstr "Animiraj delovni list" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "Ob zagonu, če je nastavljen privzeto zaledje, ustvarite delovni list, " +#~ "namesto prikazovanja pogovornega okna za izbiro zaledja." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Ko je omogočeno, bo Cantor samodejno ovrednotil vse vnose, ki so pod " +#~ "trenutnim." + +#~ msgid "Defaults" +#~ msgstr "Privzete vrednosti" + +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "To je začetna vrednost za sejo \"Stavljenje s pomočjo LaTeXa\", ki " +#~ "ustreza upodabljanju nekaterih izhodnih izhodov kot LaTeX, če je podprt." +#~ "Izhodi Maxima bodo na primer prikazani prek LaTeXa, če je ta možnost " +#~ "aktivirana." + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "Omogoči stavljenje z LaTeX-om (deluje, samo če je nameščen latex)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "To je začetna vrednost za sejo \"Poudarjanje skladnje\", ki je odziv na " +#~ "poudarjanje skladnje pri vnašanjih ukazov." + +#~ msgid "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." +#~ msgstr "" +#~ "To je začetna vrednost za sejo \"Dokončevanje\", ki ustreza avtomatskemu " +#~ "dokončevanju kode." + +#~ msgid "" +#~ "This is initial value for the session \"Line numbers\" option, which " +#~ "response for presence of command entries execution numbers." +#~ msgstr "" +#~ "To je začetna vrednost za sejo \"Številke vrstic\", ki ustreza prikazu " +#~ "številk ukaznih vrstic." + +#~ msgid "Enable Line Numbers" +#~ msgstr "Omogoči številke vrstic" + +#~ msgid "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." +#~ msgstr "" +#~ "To je začetna vrednost za sejo \"Animiraj delovni list\", ki ustreza " +#~ "prikazu animacije delovnih listov." + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Omogoči animacije delovnega lista" + +#~ msgid "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." +#~ msgstr "" +#~ "To je začetna vrednost za možnost seje \"Vložena matematika\", ki odziv " +#~ "za omogočanje upodabljanja matematičnih izrazov v besedilu in vnosov za " +#~ "markdown." + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "Omogoči vloženo matematiko (deluje, samo če je nameščen pdflatex)" + +#~ msgid "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." +#~ msgstr "" +#~ "Če je onemogočeno, se ob pritisku gumba ponovni zagon opozorilo ne " +#~ "prikaže." + +#~ msgid "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." +#~ msgstr "" +#~ "Če je omogočeno, se bo pri vsaki napaki pri upodabljanju matematike " +#~ "prikazalo informacijsko okno z opisom napake." + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "Prikaži sporočilo o napaki prikazovanja vložene matematike" + +#~ msgid "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." +#~ msgstr "" +#~ "če je omogočeno, potem bo uporabljen stari slog vnosa Cantor (vsi vnosi " +#~ "so levo poravnani)." + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Uporabi star slog zamikanja vnosov v Cantorju" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Če je omogočeno, bo Cantor shranil bogato oblikovanje besedilnih zapisov " +#~ "pri shranjevanju delovni zvezek Jupyter." + +#~ msgid "" +#~ "Graphical package, for which will be enable support for embedding plots" +#~ msgstr "Grafični paket, za katerega bo omogočena podpora za vdelane grafe" + +#~ msgid "" +#~ "Graphic package, which code will be used for plotting via \"Plot\" Cantor " +#~ "menu." +#~ msgstr "" +#~ "Grafični paket, katerega koda bo uporabljena v Cantorjevem meniju \"Riši" +#~ "\"." + +#~ msgid "Matplotlib (with seaborn, ggplot support too)" +#~ msgstr "Matplotlib (s seaborn, in podporo ggplot)" + +#~ msgid "Plot.ly" +#~ msgstr "Plot.ly" + +#~ msgid "All supported" +#~ msgstr "Vse podprto" + +#~ msgid "" +#~ "Graphic package, used for plotting. When integrated plots option is " +#~ "enabled, then plots from the package will be integrated to worksheet" +#~ msgstr "" +#~ "Grafični paket, ki se uporablja za risanje. Ko je omogočena možnost " +#~ "integrirane grafike,bodo grafi iz paketa integrirani v delovni list" + +#~ msgid "Graphic Package: " +#~ msgstr "Paket grafike: " + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      KDE-jev način za delo z matematiko" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "Url do lokalne dokumentacije za Maxima" + +#~ msgid "" +#~ "If empty, the \"Show help\" action will show the default online " +#~ "documentation. Otherwise, the specified URL will be opened." +#~ msgstr "" +#~ "Če je prazno, bo aktivnost \"Prikaži pomoč\" prikazalo privzeto " +#~ "dokumentacijo v spletu. Sicer se bo odprl navedeni spletni naslov." + +#~ msgid "Documentation:" +#~ msgstr "Dokumentacija:" + +#~ msgid "Url to the local Python documentation" +#~ msgstr "Url do lokalne dokumentacije za Python" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "Url do lokalne dokumentacije za Octave" + +#~ msgid "Show %1 Help" +#~ msgstr "Pokaži pomoč za %1" + +#~ msgid "Path to Julia:" +#~ msgstr "Pot do Julie:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Vgradi grafe v delovni list" + +#~ msgid "" +#~ "Commands to automatically run on start. They can be useful for loading " +#~ "needed modules, changing environment, etc." +#~ msgstr "" +#~ "Ti ukazi se bodo zagnali ob zagonu programa. Lahko so uporabni za " +#~ "nalaganje potrebnih modulov, spreminjajoče se okolje itd." + +#~ msgid "Clear Variables" +#~ msgstr "Počisti spremenljivke" + +#~ msgid "Exclude from Execution" +#~ msgstr "Izvzemi iz obdelave" + +#~ msgid "Add to Execution" +#~ msgstr "Dodaj k obdelavi" + +#~ msgid "Right click here to insert image" +#~ msgstr "Kliknite tukaj z desno, da vstavite sliko" + +#~ msgid "Choose Image" +#~ msgstr "Izberi sliko" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "Slike (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Potrditev – Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Besedilni vnos" + +#~ msgid "LaTeX Entry" +#~ msgstr "Vnos LaTeX-a" + +#~ msgid "Insert Horizontal Line" +#~ msgstr "Vstavi vodoravno črto" + +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Vstavi vnos hierarhije" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Pot do ukaza scilab-adv-cli (opozorilo: različica paketa Scilab mora biti " +#~ "5.4 ali višja)" + +#~ msgid "Insert Image Attachment" +#~ msgstr "Vstavi sliko kot prilogo" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Vstavi vnos LaTeX" + +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Pot do izvedljive datoteke Cantor python server" + +#~ msgid "" +#~ "Path to directory, which contains Cantor plugins (cantorpart and all " +#~ "backends)" +#~ msgstr "" +#~ "Pot do imenika, ki vsebuje Cantorjeve vtičnike (cantorpart in vse " +#~ "programe v ozadju)" + +#~ msgid "Paths (advance settings)" +#~ msgstr "Poti (napredne nastavitve)" + +#~ msgid "Path to Cantor plugin directory:" +#~ msgstr "Pot do imenika Cantorjevih vtičnikov:" + +#~ msgid "" +#~ "Path to directory, which contains Cantor backend plugins. This is " +#~ "important setting - with wrong path Cantor can't create any worksheets." +#~ msgstr "" +#~ "Pot do imenika, ki vsebuje vtičnike ozadja Cantor. To je pomembna " +#~ "nastavitev - pri napačni poti Cantor ne more ustvariti nobenih delovnih " +#~ "listov." + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "Vmesna oblika znotrajvrstičnih grafov:" + +#~ msgid "Preferred package for the \"Plot\" menu: " +#~ msgstr "Prednostni paket za meni \"Plot\":" + +#~ msgid "Path to Maxima:" +#~ msgstr "Pot do Maxime:" + +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Pot doi Cantorjevega Pythonovega strežnika:" + +#~ msgid "Path to Sage:" +#~ msgstr "Pot do programa Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Pot do ukaza scilab-adv-cli:" + +#~ msgid "" +#~ "On this moment, integrated graphic can handle only one of Julia packages " +#~ "- GR graphic package. And for using this feature you need to install the " +#~ "package first. For this, run Pkg.install(\"GR\") in Cantor or in julia " +#~ "REPL. Also, it is important to note, that this is a long operation and " +#~ "better use julia REPL, because Cantor doesn't show intermediate text " +#~ "unlike the julia." +#~ msgstr "" +#~ "V tem trenutku integrirana grafika lahko upravlja samo z enim od paketov " +#~ "Julia - grafični paket GR. Za uporabo te zmožnosti morate najprej " +#~ "namestiti paket. Za to zaženite run Pkg.install(\"GR\") v Cantorju ali v " +#~ "julia REPL.Pomembno je tudi poudariti, da gre pri tem za dolgo obdelavo " +#~ "in je bolje uporabiti julia REPL, za razliko od julie Cantor ne prikazuje " +#~ "vmesnega besedila." + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Cantor naj spremlja ustvaritev in uničenje spremenljivk" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "Vgradi grafe v delovni list (začni novo sejo ob spremembi)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Pot do izvedljive datoteke Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Pot do Octave-a:" + +#~ msgid "Unnamed" +#~ msgstr "Neimenovano" + +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "http://docs.python.org/2/" + +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "Python je zmogljiv dinamični programski jezik, ki je uporabljen v " +#~ "številnih programskih domenah. Za znanstveno programiranje obstajajo " +#~ "številni paketi za Python. To zaledje podpira Python 3." + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Izberite zaledje, ki bo uporabljeno:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Zaledje, s katerim je bila ustvarjena ta datoteka, ni nameščeno. " +#~ "Zahtevano je zaledje %1." + +#~ msgid "Publish Worksheet" +#~ msgstr "Objavi delovni list" + +#~ msgid "Waiting for Image..." +#~ msgstr "Čakanje na sliko ..." + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "Ni mogoče odpreti datoteke %1: neznana vrsta MIME" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|Dokument LaTeX" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantorjev delovni list" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Strežnik za Cantor-jevo zaledje za R" + +#~ msgid "R Server" +#~ msgstr "Strežnik R" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "© 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Uporaba: saveVariables datoteka" + +#~ msgid "Saving failed." +#~ msgstr "Shranjevanje ni uspelo." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Uporaba: loadVariables datoteka" + +#~ msgid "Loading failed." +#~ msgstr "Nalaganje ni uspelo." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "© 2009–2013 Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "Pot do ukaza python" + +#~ msgid "Cantor Server for R" +#~ msgstr "Cantor-jev Strežnik za R" + +#~ msgid "Path to python2 command:" +#~ msgstr "Pot do ukaza python2:" diff --git a/po/sv/cantor.po b/po/sv/cantor.po new file mode 100644 index 0000000..9994cd0 --- /dev/null +++ b/po/sv/cantor.po @@ -0,0 +1,5355 @@ +# translation of mathematik.po to Swedish +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2009, 2010. +# Stefan Asserhall , 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: mathematik\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-09-25 09:28+0200\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.08.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Stefan Asserhäll" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "stefan.asserhall@bredband.net" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Paus" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Starta" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Stoppa" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Spara animeringsresultat" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Animeringar (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Avancerat diagram" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Rita" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Uttryck:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Ytterligare alternativ:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Rita" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Alternativ aktivt" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Beräkna" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Differentiera" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Variabel:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Gånger: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Paket" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Importera paket" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Paket:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Integrera" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Under gräns:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Övre gräns:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "bestämd integral" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Linjär algebra" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Skapa matris" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Kolumner:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Rader:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Beräkna egenvärden" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matris:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Beräkna egenvektorer" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Invertera matris" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Rita i två dimensioner" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Variabel" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Namn" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Minimum:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Maximum:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Rita i tre dimensioner" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "Första variabel" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "Andra variabel" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Kör skript" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Lös ekvationer" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Ekvationer:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Variabler:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Välj bakgrundsprogram" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Rekommenderad version: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Se %2 för mer information.
      " + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Några krav är inte uppfyllda: " +"%1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Gör detta bakgrundsprogram till standard" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia är ett högnivå och högprestanda dynamiskt programspråk för " +"teknisk databehandling, med en syntax som är bekant för användare av andra " +"tekniska databehandlingsmiljöer. Det tillhandahåller en sofistikerad " +"kompilator, distribuerad parallell exekvering, numerisk noggrannhet och ett " +"omfattande matematiskt funktionsbibliotek." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"Sökvägen till Julia angiven i programinställningarna måste peka direkt på " +"det körbara programmet. Symboliska länkar tillåts ej. Ange riktig sökväg i " +"programinställningarna och försök igen." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Cantor kunde inte bestämma version av Julia för %1. Ange korrekt sökväg till " +"Julia körbar fil (inga symboliska länkar är tillåtna) och försök igen." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Du försöker använda Cantor med Julia v%1.%2.%3. Den här versionen av Cantor " +"har kompilerats med stöd för Julia v%4.%5.%6. Peka på den här versionen av " +"Julia eller kompilera om Cantor för att använda version %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Sökväg till Julia inbyggd REPL" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Aktivera variabelhantering" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Integrera diagram på arbetsblad" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Grafikpaket för diagramguiden" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Tyvärr stöder inte Gadfly tredimensionella diagram" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Julia-skriptfil (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Fel - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"Julia-sessionen kan inte logga in på grund av ett internt problem i Julia " +"problem med en saknad intern fil: \"%1\"" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" +"Julia-sessionen kan inte logga in på grund av ett okänt internt problem" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Julia-processen slutade fungera." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Misslyckades starta Julia-process." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "Kommunikation med Julia-process misslyckades av okända orsaker." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"För Julia stöds för närvarande bara GR (https://gr-framework.org/), ett " +"ramverk för visualiseringsprogram. Paketet måste installeras först, om det " +"inte redan är gjort. Kör Pkg.install(\"GR\") i Cantor eller i Julia REPL. " +"Observera att åtgärden kan ta en viss tid och det är bättre att utföra den i " +"Julia REPL, som kan visa paketinstallationens förlopp." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Allmänt" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Körbart program:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Diagramintegrering:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Om aktiverat, visas diagram inne i arbetsbladet. Annars visas de i ett " +"externt fönster." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Aktiverad" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Variabelhantering:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Bevaka när variabler skapas och destrueras och visa befintliga variabler i " +"variabelpanelen." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Internt diagramformat:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "Inre diagramformat, om inbäddade diagram är aktiverade." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Grafikpaket att använda i diagramguiden" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Paket för diagramguiden" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Diagram" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Kör automatiskt" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Kommandon att köra automatiskt" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Dokumentation" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Lista med skript att köra automatiskt när sessionen startas" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Fel: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Automatiska körkommandon, som kommer att köras när ett nytt arbetsblad " +"påbörjas. De kan vara användbara för att ladda nödvändiga moduler, ändra " +"miljö, etc." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua är ett snabbt och lättviktigt skriptspråk, men en enkel " +"procedurbaserad syntax. Det finns flera bibliotek i Lua avsedda för " +"matematik och vetenskap." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Sökväg till luajit-kommando" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Lua-skriptfil (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Sökväg till luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" +"

      Maximas hjälpsystem

      Funktionen apropos

      Söker efter " +"Maxima-namn där namn ingår någonstans i dem; namn måste vara en " +"sträng eller symbol. Sålunda returnerar apropos(exp) en lista över " +"alla flaggor och funktioner där exp ingår som en del av namnet, såsom " +"expand, exp och exponentialize. Så om du bara kan komma " +"ihåg en del av namnet på ett Maxima-kommando eller en variabel, kan du " +"använda kommandot för att hitta resten av namnet. På liknande sätt kan du " +"skriva apropos(tr_) för att hitta en lista över många av väljarna " +"relaterade till översättaren, där många börjar med tr_." +"

      apropos(\"\") returnerar en lista över alla Maxima- namn." +"

      apropos returnerar den tomma listan [], om inget namn hittas." +"

      Funktionen describe

      describe(sträng) är " +"ekvivalent med describe(sträng, exact).

      describe(sträng, exact) hittar ett objekt med titeln (skiftlägesokänsligt) lika med sträng, om " +"något sådant objekt finns.

      describe(sträng, inexact) hittar " +"alla dokumenterade objekt som innehåller sträng i sina titlar. Om det finns " +"mer än ett sådant objekt, ber Maxima användaren att välja ett eller flera " +"objekt att visa.

      ? exempel (med ett mellanslag mellan ? " +"and exempel) är ekvivalent med describe(\"exempel\", exact) " +"och ?? exempel är ekvivalent med describe(\"foo\", inexact)." +"

      describe(, inexact) ger en lista över alla ämnen " +"dokumenterade i handboken på nätet.

      describe citerar sina " +"argument. describe returnerar true om någon dokumentation " +"hittas, annars false.

      Funktionen exampleexample(ämne) visar några exempel på ämne, som är en symbol " +"eller en sträng. För att få exempel på operatorer som if, do " +"eller lambda måste argumentet vara en sträng, t.ex. example(\"do" +"\"). example är inte skiftlägeskänsligt. De flesta ämnen är " +"funktionsnamn.

      example() returnerar en lista över alla kända " +"ämnen.

      Namnet på filen som innehåller exemplen anges av den globala " +"alternativvariabeln manual_demo, som har det förvalda värdet " +"\"manual.demo\".

      example citerar sina argument. " +"example returnerar done , utom om inga exempel hittas eller " +"det inte finns något argument. example returnerar listan över alla " +"ämnen som känns igen." + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima är ett system för hantering av symboliska och numeriska " +"uttryck, inklusive derivering, integrering, Taylor-serier, Laplace-" +"transformer, vanliga differentialekvationer, system av linjära ekvationer, " +"polynom, samt mängder, listor, vektorer, matriser och tensorer. Maxima ger " +"numeriska resultat med hög precision genom att använda exakta bråk, heltal " +"med godtycklig precision och flyttal med variabel precision. Maxima kan rita " +"upp funktioner och data i två och tre dimensioner." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Sökväg till körbar fil för Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Fel: För många */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Fel: För många /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Fel: Förväntade \" innan ;" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Väntar på diagramresultatet" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Maxima-bakgrundsfil (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Misslyckades starta Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima kraschade. Startar om..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "Maxima kraschade två gånger på kort tid. Avbryter startförsök." + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave är ett högnivåspråk, i huvudsak avsett för numeriska " +"beräkningar.
      Det tillhandahåller ett bekvämt kommandoradsgränssnitt för " +"att lösa linjära och icke-linjära problem numeriskt, och för att uföra andra " +"numeriska experiment med användning av ett språk som i huvudsak är " +"kompatibelt med Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Octave-skriptfil (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Syntaxfel" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Test av diagramintegrering misslyckades." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "Integrering av diagram kommer att inaktiveras." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"Diagramintegrering fungerar inte eftersom Cantor märkte att Octave inte kan " +"generera diagram, på grund av att det inte finns något " +"grafikbakgrundsprogram för det: slutsatsen drogs baserat på att det saknas " +"utdata från funktionen available_graphics_toolkits(). Det ser ut som några " +"ytterligare paket för operativsystemet måste installeras, såsom gnuplot, " +"fltk eller qt för att få möjlighet att skapa diagram." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python är ett häpnadsväckande kraftfullt dynamiskt programspråk som " +"utnyttjas för ett stort antal användningsområden. Det finns flera Python-" +"paket för vetenskaplig programmering." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# Tyvärr stöder inte Bokeh tredimensionella diagram" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Python-skriptfil (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Cantor Python-server slutade fungera." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Misslyckades starta Cantor Python-server." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "Kommunikation med Cantor Python-server misslyckades av okända orsaker." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"För att använda integrerad grafik med Matplotlib-paketet måste Python-" +"paketet \"matplotlib\" först installeras." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"För att använda integrerad grafik med Plot.ly måste Python-paketet \"plotly" +"\" och det särskilda Plot.ly-kompatibla körbara programmet \"orca\" först " +"installeras. Se artikeln \"Static Image Export\" i dokumentationen av Plot." +"ly för detaljerad information." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Diagramdialogruta" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Funktioner" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Rubrik" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Uttryck" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Lägg till" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Ta bort" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Rensa lista" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "X-variabel" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Stil" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Linjer" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Punkter" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Punkter och linjer" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Rutor" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Histogram" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Steg" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Ljus" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Cirklar" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Utjämning" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Ingen" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Monoton" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Naturlig kubisk spline" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (monoton)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Funktionsintervall" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X-intervall" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Sa&mplingsfrekvens" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Ste&gstorlek" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Alternativ" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Diagramrubrik" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "X-axelns beteckning" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Y-axelns beteckning" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Förklaringens position" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Dölj förklaring" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Uppe till vänster" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Uppe till höger" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Nere till vänster" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Nere till höger" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Nedanför" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Utanför" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Visa rutnät" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Visa fullständig kant" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Använd färger" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Visa på plats" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logaritmisk x-skala" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logaritmisk y-skala" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Filalternativ" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Spara diagram i fil" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Filtyp" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Detektera från filnamn" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "Latex" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! är inte en vanlig programvarukopia av den billigaste " +"tillgängliga räknaren. Syftet med Qalculate! är att dra full nytta av det " +"överlägsna gränssnittet, kraftfullheten och flexibiliteten hos moderna " +"datorer. Fokus för uppmärksamheten i Qalculate! är inmatningen av uttryck, " +"där man direkt kan skriva in hela det matematiska uttrycket och senare " +"modifiera det, istället för att skriva in varje tal i ett uttryck separat. " +"Tolkningen av uttryck är flexibel och feltolerant, och om du trots det gör " +"något fel, talar Qalculate! om det. Uttryck som inte kan lösas helt är dock " +"inga fel. Qalculate! förenklar så långt det går, och svarar med ett uttryck. " +"Förutom tal och aritmetiska operatorer, kan ett uttryck innehålla vilken " +"kombination av variabler, enheter och funktioner som helst." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Om och hur enheter kommer att konverteras automatiskt. Om sant, konvertera " +"till de SI-enheter som passar bäst (minst antal enheter)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Förvald vinkelenhet för trigonometriska funktioner." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Bas för tolkade och utvärderade tal." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Om utvärderingsresultatet ska förenklas eller faktoriseras." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Om rationella tal kommer att visas med decimaler, som bråk, eller någonting " +"däremellan." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Visa att talföljden för ett tal fortsätter i det oändliga med tre punkter, " +"istället för avrundning (t.ex. 2/3 visas som 0,666666... istället för " +"0,666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Använd alla decimala SI-prefix. Om falskt, kommer prefix som inte är en " +"multipel av tusen (centi, deci, deka, hekto) inte användas automatiskt." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Om sant, kommer negativa exponenter användas istället för division (t.ex. " +"blir 5/x^2 till 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Numerisk display." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Om sant, kommer diagram visas inne i arbetsbladet. Om inte visas de i ett " +"separat fönster." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Om färger ska användas i diagram." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Om ett rutnät ska ritas upp." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Om hela kanter ska ritas omkring diagrammet." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Linjebredden i bildpunkter." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Antal interpolationssteg att använda vid uppritning." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Utjämningsmetod i diagram." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Diagramstilen." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Förklaringens position i diagram." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" +"Qalculate rapporterar att utskrift inte är möjlig. Är gnuplot installerat?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "saknar %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 måste vara ett tal." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 måste vara ett heltal." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 måste vara Boolesk." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "ogiltigt alternativ för %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "hittade flera uttryck i ett diagramkommando (%1 och %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "Fel" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "Varning" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Det finns ingen funktion, variabel eller enhet med angivet namn." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Funktion: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Diagramgränssnitt" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Ritar diagram av ett eller flera funktioner antingen på plats eller i ett " +"separat fönster." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "uttryck" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "alternativ" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "värde" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "heltal" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "boolean" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "tal" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "förval: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Funktionens namn" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Rubrikbeteckning" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "x-axelns beteckning" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "y-axelns beteckning" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Bild att spara diagrammet i. Om tomt visas diagrammet i ett fönster på " +"skärmen. Om på plats är sant visas bilden oberoende av det här alternativet." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "Bildtypen att spara med. En av auto, png, ps, eps, latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "Ställ in till sant för färglagda diagram, falskt för svartvita." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Minimalt x-axelvärde." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Maximalt x-axelvärde." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Om en logaritmisk skala ska användas för x-axeln." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Om en logaritmisk skala ska användas för y-axeln." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Logaritmisk bas för x-axeln." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Logaritmisk bas för y-axeln." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Om ett rutnät ska visas i diagrammet." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "Om diagrammet ska omges av kanter på alla sidor (inte bara axlar)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Linjebredden." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Var diagramförklaringen ska placeras. Ett av ingen, uppe till vänster, uppe " +"till höger, nere till vänster, nere till höger, nedanför, utanför." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "Diagramutjämning. Ett av ingen, unik, csplines, bezier, sbezier." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Diagramstil. En av linjer, punkter, punkt och linjer, rutor, histogram, " +"steg, ljus, cirklar" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Använd skala på andra x-axeln." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Använd skala på andra y-axeln." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Om diagrammet ska ritas på plats, istället för i ett nytt fönster." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Avstånd mellan två interpolationspunkter. Se också steg." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Antal interpolationspunkter. Se också steg." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Namnet på x-variabeln. Den måste vara en okänd variabel." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Spara variabler i en fil" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Spara alla variabler som för närvarande är definierade i en fil. De kan " +"läsas in igen med %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "fil" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "fil: filen att spara i" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Läs in variabler från en fil" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "Läs in variabler från en fil som tidigare har skapats av %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "fil: filen att läsa in" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Talbas:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Bråkdelsformat:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Decimal" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Exakt" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Bråkdel" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Kombinerat" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Numerisk visning:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Enkel" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Vetenskaplig" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Precision" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Ange oändliga serier:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Använd alla SI-prefix:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Använd negativa exponenter:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Beräkna" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Konvertera till bästa SI-enheter:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Radianer" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Grader" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradianer" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Struktureringsläge:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Förenkla" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Faktorisera" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Vinkelenhet:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Uppritning" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Visar diagram på plats:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Visa hela kanter:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Linjebredden:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Samplingsfrekvens:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Utjämningsmetod:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Naturlig kubisk spline" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Steg" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Förklaringens position:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Färglagda diagram:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Visa rutnät:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Diagramstil:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Ändra post" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Lägg till ny post" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Namn kan inte vara tomt." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Lägg till lokal dokumentation" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Hämta ny dokumentation" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Ladda ner ytterligare dokumentation" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Qt komprimerad hjälpfil är inte giltig." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Dokumentation redan importerad" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Ändra" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Ta bort" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Avinstallera det här via GHNS." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Installera ytterligare dokumentationsfiler" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Namn" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Sökväg" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Lägg till" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Ikon:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Välj en ikon" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Namn:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Ange ett namn" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Välj ett namn..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Sökväg:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Välj en Qt-hjälpfil..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Välj en Qt-hjälpfil..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" +"

      R:s hjälpsystem: help() och ?:


      Funktionen " +"help() och hjälpoperatorn ? i R ger åtkomst till " +"dokumentationssidorna för R-funktioner, datamängder, och andra objekt, både " +"för paket i standarddistributionen av R och för bidragna paket.

      För " +"att exempelvis komma åt dokumentation om standardfunktionen lm " +"(linjär modell), ange kommandot help(lm), help(\"lm\"), " +"?lm eller ?\"lm\" (dvs. citationstecknen är valfria)." +"

      För att komma åt hjälp för en funktion i ett paket som för " +"närvarande inte är inläst, ange dessutom paketnamnet: för att exempelvis " +"erhålla dokumentation om funktionen rlm() (robust linjär modell) i " +"paketet MASS, använd help(rlm, package=\"MASS\").

      Standardnamn " +"i R består av stora och små bokstäver, siffror (0-9), understreck (_) och " +"punkter (.), och måste börja med en bokstav eller en punkt. För att erhålla " +"hjälp om ett namn som inte följer standarden (såsom hjälpoperatorn ?), måste namnet vara inom citationstecken: exempelvis help('?') " +"eller ?\"?\".

      Du kan också använda funktionen help() " +"för att komma åt information om ett paket i ditt bibliotek, exempelvis " +"help(package=\"MASS\"), som visar ett index över tillgängliga " +"hjälpsidor för paketet tillsammans med en del annan information." +"

      Hjälpsidor för funktioner innehåller vanligtvis ett avsnitt med " +"körbara exempel som åskådliggör hur funktionerna fungerar. Du kan köra " +"exemplen i den aktuella R-sessionen via kommandot example(): t.ex., " +"example(lm)." + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R är ett språk och en miljö för statistiska beräkningar och diagram, " +"som liknar språket och miljön S.
      Det tillhandahåller en stor mängd " +"statistiska och grafiska tekniker (linjär och icke-linjär modellering, " +"klassiska statistiska prov, analys av tidserier, klassificering, ...), och " +"är mycket utökningsbart. Språket S är ofta förstahandsvalet för forskning i " +"statistiska metoder, och R tillhandahåller en väg att delta i dessa " +"aktiviteter med öppen källkod." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Fel när filen %1 skulle öppnas" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "R-skriptfil (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Fel vid tolkning av kommando" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "Webbadress till den lokala dokumentationen av R" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Dubbelklicka för att öppna en filvalsdialogruta" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R-källkodsfiler (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage är ett fritt matematikpaket med öppen källkod licensierat med " +"GPL.
      Det kombinerar kraftfullheten hos många befintliga paket med öppen " +"källkod i ett gemensamt Python-baserat gränssnitt." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Sökväg till körbar fil för Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Aktivera typsättning med Latex för Sage bakgrundsprogram" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Resultat för %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Den senaste utmatningen är: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Python-skriptfil (*.py);;Sage-skriptfil (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Sage version %1.%2 stöds inte. Uppdatera installationen till versioner som " +"stöds för att det ska fungera med Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Misslyckades bestämma version av Sage. Kontrollera installationen och " +"utmatning från 'sage -v'." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Processen Sage kraschade medan det här uttrycket utvärderades" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Processen Sage kraschade" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Processen Sage avslutades medan det här uttrycket utvärderades" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Processen Sage avslutades" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Misslyckades starta Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "Typsättning med Latex:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"Sage Latex-utmatning är inte alltid korrekt, så typsättning med Latex kan " +"inaktiveras för en bättre upplevelse" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab är ett numeriskt beräkningspaket med fri programvara för flera " +"plattformar, och ett högnivåspråk med numerisk inriktning. Scilab " +"distribueras med licensen CeCILL (kompatibel med GPL)" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Sökväg till körbar fil för Scilab" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Scilab-skriptfil (*.sce);;Scilab-funktionsfil (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "Filen %1 är redan öppen." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Öppna fil" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Ladda ner exempel" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "Ö&ppna exempel" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Gå till föregående arbetsblad" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Gå till nästa arbetsblad" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Alla filer som stöds (*.cws *ipynb);;Cantor-arbetsblad (*.cws);;Jupyter " +"anteckningsblock (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Inget bakgrundsprogram hittades.

      \n" +"
      Du kan prova att:\n" +"
      • Ändra inställningar i inställningsdialogrutan
      • " +"
      • Installera paket för nÃ¥gon av följande programvaror:
      • %2
      " +"
      " +msgstr[1] "" +"

      Inget bakgrundsprogram hittades.

      \n" +"
      Du kan prova att:\n" +"
      • Ändra inställningar i inställningsdialogrutan
      • " +"
      • Installera paket för nÃ¥gon av följande programvaror:
      • %2
      " +"
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Fel" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Bakgrundsprogrammet %1 är inte installerat" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"Gränssnitt %1 installerat, men inaktivt. Kontrollera installationen och " +"Cantors inställningar." + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Session %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Misslyckades hitta Cantor-delprogram med fel %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Beräknar..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Klar" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Ändrad" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "Flera osparade arbetsblad är öppna. Vill du stänga dem?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Stäng Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Aktuellt projekt har ändrats. Vill du spara det?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Spara projekt" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Formatering" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Bakgrundsprogrammet som normalt används" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Utför normalt typsättning" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Utför normalt syntaxfärgläggning" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Aktivera normalt komplettering" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Aktivera normalt numrering av uttryck" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Animera normalt ändringar av arbetsbladet" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Aktivera läsning av matematiska uttryck inne i $$..$$ i text- och Markdown-" +"poster (kräver att pdflatex är installerat)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Utvärdera automatiskt posterna under den nuvarande igen" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Fråga efter bekräftelse när bakgrundsprogrammet startas om" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Spara Rich Text-formatering av textpost när arbetsblad sparas med Jupyter " +"anteckningsblockformat" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Använd gammaldags placeringsstil för Cantor-poster" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Visa fel för inbäddad matematikåtergivning" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Gräns för synliga rader med textresultat" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "hierarkiskt teckensnitt för kapitel" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Hierarkisk teckenstorlek för kapitel" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Kursivt hierarkiskt teckensnitt för kapitel" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Fetstilt hierarkiskt teckensnitt för kapitel" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Hierarkiskt teckensnitt för delkapitel" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Hierarkisk teckenstorlek för delkapitel" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Kursivt hierarkiskt teckensnitt för delkapitel" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Fetstilt hierarkiskt teckensnitt för delkapitel" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Hierarkiskt teckensnitt för avsnitt" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Kursivt hierarkiskt teckensnitt för avsnitt" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Fetstilt hierarkiskt teckensnitt för avsnitt" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Hierarkiskt teckensnitt för delavsnitt" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Kursivt hierarkiskt teckensnitt för delavsnitt" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Fetstilt hierarkiskt teckensnitt för delavsnitt" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Hierarkiskt teckensnitt för stycke" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Kursivt hierarkiskt teckensnitt för stycke" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Fetstilt hierarkiskt teckensnitt för stycke" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Hierarkiskt teckensnitt för delstycke" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Kursivt hierarkiskt teckensnitt för delstycke" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Fetstilt hierarkiskt teckensnitt för delstycke" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Spara vanlig text" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Exportera till Latex" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Beräkna arbetsblad" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Zooma" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Typsätt med Latex" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Syntaxfärgläggning" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Komplettering" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Radnummer" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Animeringar" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Inbäddad matematik" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Starta om bakgrundsprogram" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Beräkna post" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Infoga kommandopost" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Infoga textpost" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Infoga Markdown-post" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Infoga Latex-post" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Infoga sidbrytning" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Infoga bild" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Dra ihop alla resultat" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Expandera alla resultat" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Ta bort alla resultat" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Ta bort nuvarande post" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Visa skripteditor" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Visa komplettering" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "Cantor-delprogram" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "© 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Cantor-arbetsblad (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyter anteckningsblock (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Spara som" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Spara" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Alla tillgängliga beräkningsresultat kommer att gå förlorade. Vill du " +"verkligen starta om %1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Starta om %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Avbrott" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Sessionsfel: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Initiering färdig" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Initierar..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[skrivskyddad]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Vill du ladda upp nuvarande arbetsblad till en öppen webbserver?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Fråga - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Arbetsbladet har inte sparats. Du bör spara det innan uppladdning." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Varning - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Bakgrundsprogrammet stöder inte skript." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "&Redigera" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Visa" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "Ar&betsblad" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Inställningar" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Arkiv" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Ny" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Paneler" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "In&ställningar" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Bakgrundsfärg" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Standardvärde" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Textfärg" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Teckensnitt" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Fetstil" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Kursiv" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Öka storlek" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Minska storlek" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Välj" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Återställ till standardvärde" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Visa resultat" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Dölj resultat" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Visa hjälp" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Utseende" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Avbruten" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Sökrad" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Sök:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Nästa" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Föregående" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Ersätt:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "E&rsätt" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Ersätt &alla" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Sök i:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Matcha skiftläge" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Hierarkiska teckensnitt" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Teckensnitt för kapitel" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Teckenfamilj" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Teckenstorlek:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Teckensnitt för delkapitel" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Teckensnitt för avsnitt" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Teckensnitt för delavsnitt" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Teckensnitt för stycke" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Teckensnitt för delstycke" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Kapitel" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Delkapitel" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Avsnitt" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Delavsnitt" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Stycke" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Delstycke" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Ange hierarkinivå" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Heldragen linjestil" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Strecklinjestil" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Punktlinjestil" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Streck-punktlinjestil" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Streck-punkt-punktlinjestil" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Linjebredd" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Tunn" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Medium" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Tjock" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Linjefärg" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Linjestil" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Anpassa bild" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Dubbelklicka här för att anpassa bildinställningar" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Kan inte läsa in bild %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Spara bildresultat" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Bilder (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Bildinställningar" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Öppna" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Visningsstorlek" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Bredd" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Höjd" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Förhandsgranskning" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Utskriftsstorlek" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Använd skärmstorlek" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Bildinställningar" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(automatisk)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "bildpunkter" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr " %" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Öppna bildfil" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Visa Latex-kod" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Ingen sökväg angiven för det körbara programmet %1. Ange riktig sökväg i " +"programinställningarna och försök igen." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"Den angivne filen '%1' för det körbara programmet %2 finns inte. Ange riktig " +"sökväg i programinställningarna och försök igen." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"Den angivne filen '%1' pekar inte på ett körbart program. Ange riktig sökväg " +"i programinställningarna och försök igen." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"Programmet %1 avslutade inte körning efter %2 millisekunder under test av " +"diagramintegrering." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "Misslyckades öppna filen %1 under test av diagramintegrering." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "Misslyckades tolka resultatet under test av diagramintegrering." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Sökväg till körbar fil för latex" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Sökväg till körbar fil för dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Värde" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 byte>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Från:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Till:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Huvudrubrik" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "X-axelns skala" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Y-axelns skala" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Diagramrubrik:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Det här är ett Jupyter innehåll av typer (%1) som inte stöds" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"Processen %1 har avslutats oväntat. Alla beräkningsresultat har gått " +"förlorade." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"Processen %1 har avslutats oväntat med meddelandet \"%2\". Alla " +"beräkningsresultat har gått förlorade." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Du har valt stöd för grafikpaketet %1, men stödet kan inte aktiveras på " +"grund av saknade krav, alltså kommer integreringen av paketet inaktiveras. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Gränssnitt till matematiska program för KDE" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "© 2016 Filipe Saraiva
      © 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" +"Underhåll
      Konvertering till Qt5/KF5, bakgrundsprogram för Scilab och " +"Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Utvecklare" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Ursprunglig upphovsman
      Underhåll (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Bakgrundsprogram för Kalgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Bakgrundsprogram för Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Gränssnitt" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Cantor-ikon" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Använd bakgrundsprogram " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Dokument att öppna." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Kunde inte öppna filen %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Starta redigeringsläge" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Ta bort bilagor" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Cantor matematikfel" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Misslyckades läsa bilden \"%1\". Fel \"%2\"" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Sidbrytning ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Gå till innehållet" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Sök igenom nyckelord..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Sök i den aktuella dokumentationssidans text" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Nollställ zoomnivå till 100%" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Stäng" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Gå till nästa träff" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Gå till föregående träff" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Matcha skiftläge" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "Filen har laddats ner till Downloads med lyckat resultat." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Nerladdning lyckades" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Cantor-filer" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Jupyter-filer" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Alla filer som stöds" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Alla filer" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Namn:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Värde:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Lägg till ny variabel" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Läs in variabler" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Spara variabler" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Ta bort variabler" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Sök, filtrera" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "Skiftlägeskänslig" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Matcha hela ord" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Är du säker på att du vill ta bort alla variabler?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Läs in fil" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Spara resultat" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Ta bort resultat" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"En KDE texteditorkomponent kunde inte hittas,\n" +"kontrollera installationen av KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Skripteditor" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Skripteditor - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Hittades inte" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Början uppnådd" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Slutet uppnått" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Ersatte %1 förekomst" +msgstr[1] "Ersatte %1 förekomster" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Kommandon" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Resultat" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Fel" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Text" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Latex-kod" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "Start:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" +"Skapa ett nytt arbetsblad för det valda bakgrundssystemet. Om inget är valt, " +"tillfrågas användaren om vilket system som ska användas vid start." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Standardbakgrundsprogram:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Arbetsblad:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" +"Aktivera typsättning med Latex för beräkningsresultaten, om det stöds av " +"bakgrundssystemet" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "Typsättning med Latex" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Aktivera syntaxfärgläggning" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Syntaxfärgläggning" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "Aktivera syntaxkomplettering" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Visa radnummer" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Radnummer" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Aktivera animeringseffekter på arbetsbladet" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" +"Om aktiverat, justeras textposter till arbetsbladets kant och inte till " +"promptens kant" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "Indentera inte textposter" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Använd Rich Text-format för text poster när de sparas med Jupyter Notebook-" +"format" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "Utvärdering:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"Om aktiverat, blir användaren tillfrågad om att bekräfta innan " +"bakgrundssystemet startas om" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "Om aktiverat, utvärderas alla poster under den aktuella automatiskt" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "Utvärdera poster automatiskt igen" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Antal rader i resultatet (0 för obegränsat):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Maximalt antal synliga rader i resultatet för en kommandoinmatning. Använd 0 " +"för att arbeta utan begränsningar." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" +"Aktivera typsättning med Latex för matematiska uttryck i Markdown-poster" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "Matematiska uttryck via Latex" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "Underrätta om återgivningsfel av matematiska uttryck" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Sök…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Obehandlade cellmål" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Lägg till eget mål" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Konvertera till textpost" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Konvertera till obehandlad cell" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Målets MIME-type:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Kopiera resultat" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Visa återgivning" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Visa kod" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Visa HTML-kod" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Visa enkelt alternativ" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Visa HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Visa HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Kan inte återge eps-fil. Ytterligare paket kan behövas." + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Spara textresultat" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "Textfiler (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Kan inte skriva till filen %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Kan inte skriva filen." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Fel när filen %1 skulle sparas" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"I skrivskyddat läge kan inte Cantor garantera att export är giltig för %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Fel vid inläsning av stilmallen latex.xsl" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Kunde inte öppna filen %1." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Öppna fil" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Kunde inte öppna den valda filen för läsning." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "Den valda filen är inte en giltig Cantor eller Jupyter projektfil." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Den valda filen är inte en giltig Cantor projektfil." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Det här arbetsbladet skapades med användning av Python 2 som inte längre " +"stöds. Python 3 kommer att användas." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python 2 stöds inte längre" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"Bakgrundsprogrammet %1 hittades inte. Redigering och utvärdering av poster " +"är inte möjlig." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"Det finns vissa problem med bakgrundsprogrammet %1.\n" +"Kontrollera din inställning, eller installera nödvändiga paket.\n" +"Du kommer bara att kunna granska det här arbetsbladet." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Jupyter anteckningsblock med version tidigare än 4.5 stöds inte (detekterade " +"version %1.%2)." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Jupyter anteckningsblock med version senare än 4.5 stöds inte (detekterade " +"version %1.%2)." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Det här anteckningsblocket skapades med användning av Python 2 som inte " +"längre stöds. Python 3 kommer att användas." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "ett objekt med nycklar: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "icke-objekt JSON-värde" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "hittade felaktig data (%1) som inte är en Jupyter-cell" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "Filen är inte ett giltigt Jupyter anteckningsblock" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Ogiltig Jupyter anteckningsblockschema: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Konvertera till" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Kommando" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Bild" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Sidbrytning" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Horisontell linje" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Hierarkisk post" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Infoga efter" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Infoga före" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Infoga" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Zooma in" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Zooma ut" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Originalstorlek" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Flytta upp poster" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Flytta ner poster" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Beräkna poster" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Ta bort poster" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Dra ihop kommandoresultat" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Expandera kommandoresultat" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Ta bort kommandopostresultat" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Undanta kommandopost från körning" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Lägg till kommandopost för körning" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Text&färg..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Färg" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Textfärg&läggning..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Teckensnitt" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Tecken&storlek" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Fetstil" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Kursiv" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Understryket" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "Över&struket" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Justera &vänster" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Vänster" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "&Centrera" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Centrera" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Justera &höger" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Höger" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&Justera" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "Justera" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"Den här åtgärden tar bort alla resultat utan möjlighet att avbryta. Är du " +"säker?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Ta bort alla resultat" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Vit" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Svart" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Mörkröd" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Röd" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Ljusröd" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Mörkgrön" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Grön" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Ljusgrön" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Mörkblå" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Blå" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Ljusblå" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Mörkgul" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Gul" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Ljusgul" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Mörkturkos" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Turkos" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Ljusturkos" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Mörk magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Magenta" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Ljus magenta" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Mörkorange" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Orange" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Ljusorange" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Mörkgrå" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Grå" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Ljusgrå" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Flytta upp" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Flytta ner" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Vill du verkligen ta bort posten?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Ta bort post" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Dra post" + +#~ msgid "Animate Worksheet" +#~ msgstr "Animera arbetsblad" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "Vid start, om ett standardbakgrundsprogram är inställt, skapa ett " +#~ "arbetsblad för det istället för att visa väljardialogrutan för " +#~ "bakgrundsprogram." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Om aktiverat, utvärderar Cantor automatiskt alla poster under den " +#~ "nuvarande." + +#~ msgid "Defaults" +#~ msgstr "Standardvärden" + +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "Det här är sessionens initialvärde för alternativet \"Typsätt med Latex" +#~ "\", som är ansvarigt för att tillåta återgivning av någon utmatning från " +#~ "bakgrundsprogrammet som Latex, om det stöds. Exempelvis återges utmatning " +#~ "från Maxima via Latex, om alternativet är aktiverat." + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "" +#~ "Aktivera typsättning med Latex (fungerar bara om latex är installerat)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "Det här är sessionens initialvärde för alternativet \"Syntaxfärgläggning" +#~ "\", som är ansvarigt för syntaxfärgläggning inne i kommandoposter." + +#~ msgid "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." +#~ msgstr "" +#~ "Det här är sessionens initialvärde för alternativet \"Komplettering\", " +#~ "som är ansvarigt för automatisk kodkomplettering." + +#~ msgid "" +#~ "This is initial value for the session \"Line numbers\" option, which " +#~ "response for presence of command entries execution numbers." +#~ msgstr "" +#~ "Det här är sessionens initialvärde för alternativet \"Radnummer\", som är " +#~ "ansvarigt för att kommandoposternas körnummer är tillgängliga." + +#~ msgid "Enable Line Numbers" +#~ msgstr "Aktivera radnummer" + +#~ msgid "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." +#~ msgstr "" +#~ "Det här är sessionens initialvärde för alternativet \"Animera arbetsblad" +#~ "\", som är ansvarigt för förekomst av arbetsbladsanimering." + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Aktivera animeringar av arbetsblad" + +#~ msgid "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." +#~ msgstr "" +#~ "Det här är sessionens initialvärde för alternativet \"Inbäddad matematik" +#~ "\", som är ansvarigt för att aktivera återgivning av matematiska uttryck " +#~ "i text och Markdown-poster." + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "" +#~ "Aktivera inbäddad matematik (fungerar bara om pdflatex är installerat)" + +#~ msgid "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." +#~ msgstr "" +#~ "Om inaktiverat visas inte någon varning om omstart när omstartsknappen " +#~ "klickas." + +#~ msgid "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." +#~ msgstr "" +#~ "Om aktiverat visas ett informationsfönster med felbeskrivning för alla " +#~ "matematiska återgivningsfel." + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "" +#~ "Visa meddelanden om fel vid återgivningsmisslyckade för inbäddad matematik" + +#~ msgid "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." +#~ msgstr "" +#~ "Om aktiverat används den gamla indenteringsstilen för poster i Cantor " +#~ "(alla poster vänsterjusterade)." + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Använd gammaldags indenteringsstil för Cantor-poster" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Om aktiverat, lagrar Cantor Rich Text-formatering av textposter när de " +#~ "sparas med Jupyter anteckningsblockformat." + +#~ msgid "" +#~ "Graphical package, for which will be enable support for embedding plots" +#~ msgstr "Grafikpaket, som aktiveras för att stödja inbäddade diagram" + +#~ msgid "" +#~ "Graphic package, which code will be used for plotting via \"Plot\" Cantor " +#~ "menu." +#~ msgstr "" +#~ "Grafikpaket vars kod används för diagramritning via menyn \"Rita\" i " +#~ "Cantor." + +#~ msgid "Matplotlib (with seaborn, ggplot support too)" +#~ msgstr "Matplotlib (också med stöd för seaborn, ggplot)" + +#~ msgid "Plot.ly" +#~ msgstr "Plot.ly" + +#~ msgid "All supported" +#~ msgstr "Alla som stöds" + +#~ msgid "" +#~ "Graphic package, used for plotting. When integrated plots option is " +#~ "enabled, then plots from the package will be integrated to worksheet" +#~ msgstr "" +#~ "Grafikpaket använd för diagramritning. När alternativet för integrerade " +#~ "diagram är aktiverat, kommer diagram från paketet integreras på " +#~ "arbetsblad." + +#~ msgid "Graphic Package: " +#~ msgstr "Grafikpaket:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      KDE:s sätt att utföra matematik" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "Webbadress till den lokala dokumentationen av Maxima" + +#~ msgid "" +#~ "If empty, the \"Show help\" action will show the default online " +#~ "documentation. Otherwise, the specified URL will be opened." +#~ msgstr "" +#~ "Om tom, visar åtgärden \"Visa hjälp\" den vanliga dokumentationen på " +#~ "nätet. Annars öppnas den angivna webbadressen." + +#~ msgid "Documentation:" +#~ msgstr "Dokumentation:" + +#~ msgid "Url to the local Python documentation" +#~ msgstr "Webbadress till den lokala dokumentationen av Python" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "Webbadress till den lokala dokumentationen av Octave" + +#~ msgid "Show %1 Help" +#~ msgstr "Visa hjälp om %1" + +#~ msgid "Path to Julia:" +#~ msgstr "Sökväg till Julia:" + +#~ msgid "Documentation provided by GHNS" +#~ msgstr "Dokumentation som tillhandahålls av GHNS" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Integrera diagram på arbetsblad" + +#~ msgid "" +#~ "Commands to automatically run on start. They can be useful for loading " +#~ "needed modules, changing environment, etc." +#~ msgstr "" +#~ "Kommandon att köra automatiskt vid start. De kan vara användbara för att " +#~ "ladda nödvändiga moduler, ändra miljö, etc." + +#~ msgid "Clear Variables" +#~ msgstr "Rensa variabler" + +#~ msgid "Exclude from Execution" +#~ msgstr "Undanta från körning" + +#~ msgid "Add to Execution" +#~ msgstr "Lägg till i körning" + +#~ msgid "Right click here to insert image" +#~ msgstr "Högerklicka här för att infoga bild" + +#~ msgid "Choose Image" +#~ msgstr "Välj bild" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "Bilder (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Bekräftelse - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Textpost" + +#~ msgid "LaTeX Entry" +#~ msgstr "Latex-post" + +#~ msgid "Insert Entry Before" +#~ msgstr "Infoga post före" + +#~ msgid "Insert Horizontal Line" +#~ msgstr "Infoga horisontell linje" + +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Infoga hierarkisk post" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Sökväg till kommandot scilab-adv-cli (Varning: Versionen av Scilab måste " +#~ "vara senare än eller lika med version 5.4)" + +#~ msgid "Insert Image Attachment" +#~ msgstr "Infoga bildbilaga" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Infoga Latex-post" + +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Sökväg till körbar fil för Cantor python-server" + +#~ msgid "" +#~ "Path to directory, which contains Cantor plugins (cantorpart and all " +#~ "backends)" +#~ msgstr "" +#~ "Sökväg till katalog som innehåller Cantor insticksprogram (cantor-" +#~ "delprogram och alla bakgrundsprogram)" + +#~ msgid "Paths (advance settings)" +#~ msgstr "Sökvägar (avancerade inställningar)" + +#~ msgid "Path to Cantor plugin directory:" +#~ msgstr "Sökväg till Cantor insticksprogramkatalog:" + +#~ msgid "" +#~ "Path to directory, which contains Cantor backend plugins. This is " +#~ "important setting - with wrong path Cantor can't create any worksheets." +#~ msgstr "" +#~ "Sökväg till katalog som innehåller Cantor bakgrundsprogram. Det är en " +#~ "viktig inställning, med felaktig sökväg kan inte Cantor skapa några " +#~ "arbetsblad." + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "Intermediärt format för diagram på plats:" + +#~ msgid "Preferred package for the \"Plot\" menu: " +#~ msgstr "Föredraget paket för menyn \"Diagram\":" + +#~ msgid "Path to Maxima:" +#~ msgstr "Sökväg till Maxima:" + +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Sökväg till Cantor Python-server:" + +#~ msgid "Path to Sage:" +#~ msgstr "Sökväg till Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Sökväg till kommandot scilab-adv-cli:" + +#~ msgid "" +#~ "On this moment, integrated graphic can handle only one of Julia packages " +#~ "- GR graphic package. And for using this feature you need to install the " +#~ "package first. For this, run Pkg.install(\"GR\") in Cantor or in julia " +#~ "REPL. Also, it is important to note, that this is a long operation and " +#~ "better use julia REPL, because Cantor doesn't show intermediate text " +#~ "unlike the julia." +#~ msgstr "" +#~ "För tillfället kan integrerad grafik bara hantera ett av Julias paket, GR-" +#~ "grafikpaketet, och för att använda funktionen måste paketet först " +#~ "installeras. Kör Pkg.install(\"GR\") i Cantor eller i Julia REPL för att " +#~ "göra det. Det är också viktigt att observera att det tar lång tid, och " +#~ "det är bättre att använda Julia REPL, eftersom Cantor inte visar " +#~ "intermediär text i motsats till Julia." + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Låt Cantor bevaka när variabler skapas och försvinner" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "Integrera diagram på arbetsblad (starta ny session vid ändring)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Sökväg till körbar fil för Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Sökväg till Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Namnlös" + +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "https://docs.python.org/2/" + +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "Python är ett häpnadsväckande kraftfullt dynamiskt programspråk " +#~ "som utnyttjas för ett stort antal användningsområden. Det finns flera " +#~ "Python-paket för vetenskaplig programmering. Det här bakgrundsprogrammet " +#~ "stöder Python 3." + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "You should set path to Julia executable" +#~ msgstr "Sökvägen till Julia måste ställas in" + +#~ msgid "" +#~ "Path to Julia should point directly to julia executable, symlink not " +#~ "allowed" +#~ msgstr "" +#~ "Sökvägen till Julia ska peka direkt på den binära körbara filen för " +#~ "Julia, en symbolisk länk tillåts inte" + +#~ msgid "" +#~ "Lua backend needs installed Lua programming language. The backend often " +#~ "automatically finds needed Lua binary file, but not in this case. Please, " +#~ "go to Cantor settings and set path to Lua executable." +#~ msgstr "" +#~ "Bakgrundsprogrammet Lua kräver att programspråket Lua är installerat. " +#~ "Bakgrundsprogrammet hittar ofta automatiskt binärfilen för Lua som " +#~ "behövs, men har inte gjort det i detta fall. Gå till Cantors " +#~ "inställningar och ange sökväg till Lua körbar fil." + +#~ msgid "" +#~ "In Lua backend settings a path to Lua binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Lua? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "I inställningarna för bakgrundsprogrammet Lua är sökvägen till Lua " +#~ "binärfil inställd till %1, men filen är inte körbar. Är du säker på att " +#~ "det är sätt sökväg till Lua? Om inte, ändra sökvägen i Cantors " +#~ "inställningar." + +#~ msgid "" +#~ "Maxima backend needs installed Maxima - a computer algebra system. The " +#~ "backend often automatically finds needed binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Maxima executable" +#~ msgstr "" +#~ "Bakgrundsprogrammet Maxima kräver att datoralgebrasystemet Maxima är " +#~ "installerat Bakgrundsprogrammet hittar ofta automatiskt binärfilen som " +#~ "behövs, men har inte gjort det i detta fall. Gå till Cantors " +#~ "inställningar och ange sökväg till Maxima körbar fil." + +#~ msgid "" +#~ "In Maxima backend settings a path to maxima binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Maxima? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "I inställningarna för bakgrundsprogrammet Maxima är sökvägen till Maxima " +#~ "binärfil inställd till %1, men filen är inte körbar. Är du säker på att " +#~ "det är sätt sökväg till Maxima? Om inte, ändra sökvägen i Cantors " +#~ "inställningar." + +#~ msgid "" +#~ "Octave backend needs installed Octave programming language. The backend " +#~ "often automatically finds needed Octave binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Octave binary file " +#~ "with command line interface (CLI)" +#~ msgstr "" +#~ "Bakgrundsprogrammet Octave kräver att programspråket Octave är " +#~ "installerat. Bakgrundsprogrammet hittar ofta automatiskt binärfilen för " +#~ "Octave som behövs, men har inte gjort det i detta fall. Gå till Cantors " +#~ "inställningar och ange sökväg till Octave körbar fil med " +#~ "kommandoradsgränssnitt (CLI)." + +#~ msgid "" +#~ "In Octave backend settings a path to Octave binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Octave? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "I inställningarna för bakgrundsprogrammet Octave är sökvägen till Octave " +#~ "binärfil inställd till %1, men filen är inte körbar. Är du säker på att " +#~ "det är sätt sökväg till Octave? Om inte, ändra sökvägen i Cantors " +#~ "inställningar." + +#~ msgid "" +#~ "R backend uses special binary file - cantor_rserver (installed with R " +#~ "backend), which must be executable." +#~ msgstr "" +#~ "Bakgrundsprogrammet R använder en särskild binärfil - cantor_rserver " +#~ "(installerad med bakgrundsprogrammet), som måste vara körbar." + +#~ msgid "" +#~ "Sage backend needs installed Sage programming language. The backend often " +#~ "automatically finds needed Sage binary file, but not in this case. " +#~ "Please, go to Cantor settings and set path to Sage executable" +#~ msgstr "" +#~ "Bakgrundsprogrammet Sage kräver att programspråket Sage är installerat. " +#~ "Bakgrundsprogrammet hittar ofta automatiskt binärfilen för Sage som " +#~ "behövs, men har inte gjort det i detta fall. Gå till Cantors " +#~ "inställningar och ange sökväg till Sage körbar fil." + +#~ msgid "" +#~ "In Sage backend settings a path to Sage binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Sage? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "I inställningarna för bakgrundsprogrammet Sage är sökvägen till Sage " +#~ "binärfil inställd till %1, men filen är inte körbar. Är du säker på att " +#~ "det är sätt sökväg till Sage? Om inte, ändra sökvägen i Cantors " +#~ "inställningar." + +#~ msgid "" +#~ "Scilab backend needs installed Scilab programming language. The backend " +#~ "often automatically finds needed Scilab binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Scilab executable" +#~ msgstr "" +#~ "Bakgrundsprogrammet Scilab kräver att programspråket Scilab är " +#~ "installerat. Bakgrundsprogrammet hittar ofta automatiskt binärfilen för " +#~ "Scilab som behövs, men har inte gjort det i detta fall. Gå till Cantors " +#~ "inställningar och ange sökväg till Scilab körbar fil." + +#~ msgid "" +#~ "In Scilab backend settings a path to Scilab binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Scilab? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "I inställningarna för bakgrundsprogrammet Scilab är sökvägen till Scilab " +#~ "binärfil inställd till %1, men filen är inte körbar. Är du säker på att " +#~ "det är sätt sökväg till Scilab? Om inte, ändra sökvägen i Cantors " +#~ "inställningar." + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Välj bakgrundsprogram att använda:" + +#~ msgid "" +#~ "The file is old Jupyter notebook (found version %1.%2), which isn't " +#~ "supported by Cantor" +#~ msgstr "" +#~ "Filen är en gammal Jupyter anteckningsblock (hittade version %1.%2), som " +#~ "inte stöds av Cantor" + +#~ msgid "" +#~ "Julia backend uses special binary file - %1 (installed with Julia " +#~ "backend), which must be executable" +#~ msgstr "" +#~ "Bakgrundsprogrammet Julia använder en särskild binärfil - %1 (installerad " +#~ "med bakgrundsprogrammet), som måste vara körbar" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "Bakgrundsprogrammet som den här filen skapades med är inte installerat. " +#~ "Den behöver %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Publicera arbetsblad" + +#~ msgid "Waiting for Image..." +#~ msgstr "Väntar på bild..." + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "Kan inte öppna filen %1: Okänd Mime-typ" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|Latex-dokument" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|Cantor-arbetsblad" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Server för bakgrundsprogrammet Cantor R" + +#~ msgid "R Server" +#~ msgstr "R-server" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "© 2009 Alexander Rieder" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Användning: saveVariables fil" + +#~ msgid "Saving failed." +#~ msgstr "Misslyckades spara." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Användning: loadVariables fil" + +#~ msgid "Loading failed." +#~ msgstr "Inläsning misslyckades." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "© 2009-2013 Alexander Rieder" + +#~ msgid "Path to python command" +#~ msgstr "Sökväg till Python-kommando" + +#~ msgid "Cantor Server for R" +#~ msgstr "Cantorserver för R" + +#~ msgid "Path to python2 command:" +#~ msgstr "Sökväg till kommandot python2:" + +#~ msgid " Enable Variable Management" +#~ msgstr " Aktivera variabelhantering" + +#~ msgid "Could not start the server." +#~ msgstr "Kunde inte starta servern." + +#~ msgid "Start Animation" +#~ msgstr "Starta animering" + +#~ msgid "Restart Animation" +#~ msgstr "Starta om animering" + +#~ msgid "Append Latex Entry" +#~ msgstr "Lägg till Latex-post" + +#~ msgid "Append Image" +#~ msgstr "Lägg till bild sist" + +#~ msgid "Append Page Break" +#~ msgstr "Lägg till sidbrytning sist" + +#~ msgid "Other" +#~ msgstr "Annan" + +#~ msgid "And %1 more..." +#~ msgstr "Och ytterligare %1..." + +#~ msgid "Main Toolbar" +#~ msgstr "Huvudverktygsrad" + +#~ msgid "Popup" +#~ msgstr "Ruta" + +#~ msgid "The style used for Completion" +#~ msgstr "Stilen använd för komplettering" + +#~ msgid "" +#~ "Scilab version of the master branch of the Scilab's repository is " +#~ "compatible" +#~ msgstr "Versionen av Scilab i huvudgrenen av Scilabs arkiv är kompatibel" + +#~ msgid "Insert Command Entry Before" +#~ msgstr "Infoga kommandopost före" + +#~ msgid "Command Entry Before" +#~ msgstr "Kommandopost före" + +#~ msgid "GroupBox" +#~ msgstr "Gruppruta" + +#~ msgid "This test requires a functioning %1 backend" +#~ msgstr "Testen kräver ett fungerade bakgrundsprogram %1" + +#~ msgid "Form" +#~ msgstr "Formulär" + +#~ msgid "Help" +#~ msgstr "Hjälp" + +#~ msgid "Show Help Panel" +#~ msgstr "Visa hjälpruta" + +#~ msgid "Error uploading File %1" +#~ msgstr "Fel när filen %1 skulle laddas upp" + +#~ msgid "MathematiKPart" +#~ msgstr "Matematik-delprogram" + +#~ msgid "MathematiK" +#~ msgstr "Matematik" diff --git a/po/sv/docs/cantor/index.docbook b/po/sv/docs/cantor/index.docbook new file mode 100644 index 0000000..5987e19 --- /dev/null +++ b/po/sv/docs/cantor/index.docbook @@ -0,0 +1,1583 @@ + +ATEX"> + + +]> + + + +Handbok &cantor; + + + Alexander Rieder alexanderrieder@gmail.com + Stefan Asserhäll
      stefan.asserhall@bredband.net
      Översättare
      +
      + + +2009 +Alexander Rieder + +&FDLNotice; + +2020-12-16 +Program 20.12 + + +&cantor; är ett program med målet att tillhandahålla en vy med ett trevligt kalkylblad för andra matematikpaket med fri programvara. + + + +KDE +kdeedu +matematik +matte +Cantor +Julia +Lua +Maxima +Octave +Python +Qalculate +R +Sage +Scilab + + +
      + + +Inledning + +&cantor; är ett program som lÃ¥ter dig använda ditt matematiska favoritprogram inne i ett elegant arbetsbladgränssnitt integrerat med &kde;. Det tillhandahÃ¥ller guidedialogrutor för vanliga uppgifter och lÃ¥ter dig dela arbetsblad med andra. + + + +Använda &cantor; + +Skärmbild: +Här är en skärmbild av &cantor; + + + + + + Skärmbild + + + + + + + +Funktioner i &cantor; + + Intuitiv arbetsbladsvy för att utvärdera uttryck. + Resultat av diagramuppritning visas pÃ¥ arbetsbladet + Enkel struktur baserad pÃ¥ insticksprogram för att tillÃ¥ta att olika bakgrundsprogram läggs till. + Integrering med Hämta heta nyheter för att tillÃ¥ta att exempel pÃ¥ arbetsblad laddas ner (eller laddas upp). + Typsättning av matematiska formler med användning av &latex;. + Syntaxfärgläggning med kännedom om bakgrundsprogram. + Guidedialogrutor baserade pÃ¥ insticksprogram för att hjälpa till med vanliga uppgifter, som att integrera en funktion eller skriva in en matris. + + + + +Bakgrundsprogrammen för &cantor; +&cantor; erbjuder flera val av bakgrundsprogram som du önskar använda med det. Valet beror pÃ¥ vad du vill uppnÃ¥. +För närvarande är följande bakgrundsprogram tillgängliga: + + Sage: + + Sage är ett fritt matematikpaket med öppen källkod licensierat med GPL. Det kombinerar kraftfullheten hos mÃ¥nga befintliga paket med öppen källkod inom ett gemensamt Python-baserat gränssnitt. Se https://sagemath.org för mer information. + + + + Maxima: + + Maxima är ett system för hantering av symboliska och numeriska uttryck, inklusive derivering, integrering, Taylor-serier, Laplace-transformer, vanliga differentialekvationer, system av linjära ekvationer, polynom, mängder, listor, vektorer, matriser och tensorer. Maxima ger numeriska resultat med hög precision genom att använda exakta brÃ¥k, heltal med godtycklig precision och flyttal med variabel precision. Maxima kan rita upp funktioner och data i tvÃ¥ och tre dimensioner. Se http://maxima.sourceforge.net för mer information. + + + + R: + + R är ett sprÃ¥k och en miljö för statistiska beräkningar och diagram, som liknar sprÃ¥ket och miljön S. Det tillhandahÃ¥ller en stor mängd statistiska och grafiska tekniker (linjär och icke-linjär modellering, klassiska statistiska prov, analys av tidserier, klassificering, ...), och är mycket utökningsbart. SprÃ¥ket S är ofta förstahandsvalet för forskning i statistiska metoder, och R tillhandahÃ¥ller en väg med öppen källkod för det. Se https://www.r-project.org för mer information. + + + + Julia: + + Julia är ett högnivÃ¥ och högprestanda dynamiskt programsprÃ¥k för teknisk databehandling, med en syntax som är bekant för användare av andra tekniska databehandlingsmiljöer. Det tillhandahÃ¥ller en sofistikerad kompilator, distribuerad parallell exekvering, numerisk noggrannhet och ett omfattande matematiskt funktionsbibliotek. Se Julias dokumentation för mer information. + + + + &kalgebra;: + + &kalgebra; är en grafisk räknare baserad pÃ¥ MathML, som levereras med &kde;:s utbildningsprojekt. Se http://edu.kde.org/kalgebra/ för mer information. + + + + Qalculate!: + + Qalculate! är inte en vanlig programvarukopia av den billigaste tillgängliga räknaren. Syftet med Qalculate! är att dra full nytta av det överlägsna gränssnittet, kraftfullheten och flexibiliteten hos moderna datorer. Fokus för uppmärksamheten i Qalculate! är inmatningen av uttryck, där man direkt kan skriva in hela det matematiska uttrycket och senare modifiera det, istället för att skriva in varje tal i ett uttryck separat. Tolkningen av uttryck är flexibel och feltolerant, och om du trots det gör nÃ¥got fel, talar Qalculate! om det. Uttryck som inte kan lösas helt är dock inga fel. Qalculate! förenklar sÃ¥ lÃ¥ngt det gÃ¥r, och svarar med ett uttryck. Förutom tal och aritmetiska operatorer, kan ett uttryck innehÃ¥lla vilken kombination av variabler, enheter och funktioner som helst. Se https://qalculate.github.io/ för mer information. + + + + Python2 och Python3: + + Python är ett häpnadsväckande kraftfullt dynamiskt programsprÃ¥k som utnyttjas för ett stort antal användningsomrÃ¥den. Det finns flera Python-paket för vetenskaplig programmering. + Python distribueras enligt Python Software Foundation-licensen (kompatibel med GPL). Se den officiella webbplatsen för mer information. + + Bakgrundsprogrammet lägger till ytterligare ett alternativ i &cantor;s huvudmeny, Paket. Det enda alternativet i menyn är Paket Importera paket. Alternativet kan användas för att importera Python-paket till arbetsbladet. + + + + + Scilab: + + Scilab är ett numeriskt beräkningspaket med fri programvara för flera plattformar, och ett högnivÃ¥sprÃ¥k med numerisk inriktning. + Scilab distribueras enligt CeCILL licensen (kompatibel med GPL). Se http://www.scilab.org/ för mer information. + + Du mÃ¥ste installera Scilab version 5.5 eller senare för att kunna installeras pÃ¥ systemet för att bakgrundsprogrammet ska vara användbart. + + + + + Octave: + + &GNU; Octave är ett högnivÃ¥sprÃ¥k, i huvudsak avsett för numeriska beräkningar. Det tillhandahÃ¥ller ett bekvämt kommandoradsgränssnitt för att lösa linjära och icke-linjära problem numeriskt, och för att utföra andra numeriska experiment med ett sprÃ¥k som i huvudsak är kompatibelt med MATLAB. Se https://www.gnu.org/software/octave/ för mer information. + + + + Lua: + + Lua är ett snabbt och lättviktigt skriptsprÃ¥k, men en enkel procedurbaserad syntax. Det finns flera bibliotek i Lua avsedda för matematik och vetenskap. + Se https://www.lua.org/ för mer information. + Bakgrundsprogrammet stöder luajit 2. + + + + + + + +Arbetsytan i &cantor; + + + Skärmbild av arbetsytan i &cantor; + + + + + + Skärmbild av arbetsytan i &cantor; + + + + +Arbetsbladgränssnittet i &cantor; bestÃ¥r av tre delar: + Flikraden, där du kan byta mellan öppna arbetsblad. + En hjälppanel där hjälp för ett specifikt kommando visas om du skriver in ?? kommando, describe(kommando) eller example(kommando) (bakgrundsprogrammet Maxima). + En ruta för variabelhantering där du kan se en lista över alla tillgängliga variabler pÃ¥ det aktuella arbetsbladet. Rutorna för hjälp och variabelhantering visas som flikar pÃ¥ en sidorad i &cantor;s fönster. Variabelhantering kan bara användas för bakgrundsprogrammen Maxima (om det aktiveras pÃ¥ sidan Maxima med Inställningar Anpassa &cantor;...), &kalgebra;, Octave, Python 2, Python 3, Qalculate och Scilab. + Själva arbetsbladet. + + + +Arbetsbladet +Arbetsbladet är det grundläggande omrÃ¥det för att arbeta med &cantor;. Genom att använda det kan du skriva in uttryck, lÃ¥ta bakgrundsprogrammet utföra beräkningar, och titta pÃ¥ resultaten. Kommandon som arbetsbladen accepterar beror pÃ¥ det valda bakgrundsprogrammet, sÃ¥ man bör lära sig lämplig syntax för bakgrundsprogrammet (knappen Visa hjälp gÃ¥r direkt dit). Om du kan kommandot, men behöver ytterligare information, kan du skriva "? kommando", sÃ¥ visas sammanhangsberoende hjälp till höger om arbetsbladet. Om du vill se exempel pÃ¥ arbetsblad, kan du gÃ¥ till menyalternativet ArkivLadda ner exempelarbetsblad, och ladda ner arbetsblad som andra användare har publicerat. +För att hantera varje kommandoinmatning pÃ¥ arbetsbladet, kan du använda styrknapparna som visas pÃ¥ höger sida av arbetsbladet när muspekaren hÃ¥lls i inmatningsfältet. Det finns tre grundÃ¥tgärder för varje inmatning: Beräkna post för att uppdatera resultatet av beräkningarna för posten, Dra post för att flytta posten till en annan plats pÃ¥ det aktuella arbetsbladet och Ta bort post för att ta bort posten frÃ¥n det aktuella arbetsbladet. +Teckensnittsinställningar och justering av arbetsbladets poster kan ändras genom att använda en verktygsrad ovanför arbetsbladet. + + Inställningar + Menyn Inställningar lÃ¥ter dig ändra vissa inställningar av det aktuella arbetsbladets utseende + + + Typsättning med användning av Latex + + Inställningen ändrar sättet som resultat presenteras. Om aktiverat, skickas resultatet genom &latex;-systemet för att skapa visuellt tilltalande formler. Exempelvis blir 3*x^2*sqrt(2)*x+2/3: + + + + 3*x^2*sqrt(2)*x+2/3 + + + + + + Syntaxfärgläggning + + Syntaxfärgläggning ökar kodens läsbarhet, genom att färglägga nyckelord eller samhörande parenteser i olika färger. + + + + Komplettering + + När det här är aktiverat visar &cantor; möjliga kompletteringar av kommandot som du för närvarande skriver in, när du trycker pÃ¥ tabulatortangenten. Om bara ett val Ã¥terstÃ¥r, infogas resten av kommandot Ã¥t dig. + + + + Radnummer + + Inställningen styr om de olika uttrycken ska föregÃ¥s av ett nummer. Det lÃ¥ter dig Ã¥terkalla gamla resultat: i Maxima görs det exempelvis med kommandot %O1. + + + + Animera arbetsblad + + Den här inställningen styr om de olika animeringarna används för att färglägga ändringar pÃ¥ ett arbetsblad. + + + + Inbäddad matematik + + Inställningen bestämmer om Ã¥tergivning av matematiska uttryck $$..$$ i text- och &Markdown;-poster normalt är aktiverade (kräver att pdflatex är installerat). + + + + + + + +Guidedialogrutorna +Flera handledningsdialogrutor är implementerade i &cantor; för att underlätta nÃ¥gra grundoperationer. +Dialogrutorna kan kommas Ã¥t via alternativen i huvudmenyn. Varje bakgrundsprogram har sina egna handledningsdialogrutor. + +Dialogrutan Skapa matris + + Skärmbild av dialogrutan Skapa matris i &cantor; + + + + + + Skärmbild av dialogrutan Skapa matris i &cantor; + + + +Dialogrutan kan användas för att mata in matriser. Det gÃ¥r att definiera matrisens dimensioner och dess element. +Det är möjligt att snabbt navigera mellan celler vid inmatning genom att använda tabulatortangenten. + + +Dialogrutan Matrisoperation + + Skärmbild av dialogrutan för matrisinmatning i &cantor; + + + + + + Skärmbild av dialogrutan för matrisinmatning i &cantor; + + + +Dialogrutan gör det möjligt att ange matrisens namn för att beräkna dess egenvektorer, egenvärden, eller invertera matrisen. Förvalt värde (%) används för att referera till föregÃ¥ende resultat av en beräkning eller inmatning. + + +Deriveringsdialogrutan + + Skärmbild av deriveringsdialogrutan i &cantor; + + + + + + Skärmbild av deriveringsdialogrutan i &cantor; + + + +Dialogrutan gör det möjligt att mata in funktionsuttrycket att derivera, namnet pÃ¥ variabeln och derivatans ordning. + + +Integreringsdialogrutan + + Skärmbild av integreringsdialogrutan i &cantor; + + + + + + Skärmbild av integreringsdialogrutan i &cantor; + + + +Dialogrutan gör det möjligt att mata in funktionen att integrera, namnet pÃ¥ variabeln och integralens gränser (för en bestämd integral). + + +Dialogrutan Lös ekvationer + + Skärmbild av dialogrutan Lös ekvationer i &cantor; + + + + + + Skärmbild av dialogrutan Lös ekvationer i &cantor; + + + +Dialogrutan gör det möjligt att mata in ekvationer att lösa (varje ekvation pÃ¥ en separat linje) och variablerna att bestämma (Ã¥tskilda av kommatecken). + + +Dialogrutan Paketimport + + Skärmbild av dialogrutan Paketimport i &cantor; + + + + + + Skärmbild av dialogrutan Paketimport i &cantor; + + + +Dialogrutan gör det möjligt att ange namnet pÃ¥ paketet att importera (t.ex. numpy för Python). + + +Dialogrutan Rita + + Skärmbild av dialogrutan Rita i &cantor; (fliken Funktioner) + + + + + + Skärmbild av dialogrutan Rita i &cantor; (fliken Funktioner) + + + +Dialogrutans alternativ är uppdelade i tvÃ¥ grupper genom att använda flikar. Fliken Funktioner gör det möjligt att mata in funktioner att rita upp. +Klicka pÃ¥ Lägg till för att mata in en ny funktion. Dubbelklicka pÃ¥ cellen Rubrik och ange rubriken, dubbelklicka därefter pÃ¥ cellen Uttryck och ange funktionens uttryck. + + Skärmbild av dialogrutan Rita i &cantor; (fliken Alternativ) + + + + + + Skärmbild av dialogrutan Rita i &cantor; (fliken Alternativ) + + + +Fliken Alternativ används för att definiera diagram- och förklaringsalternativ. Det gÃ¥r att finjustera nästan alla diagramalternativ för att erhÃ¥lla ett snyggt utseende pÃ¥ figuren. + + +Dialogrutan Rita i tvÃ¥ dimensioner + + Skärmbild av dialogrutan Rita i tvÃ¥ dimensioner i &cantor; + + + + + + Skärmbild av dialogrutan Rita i tvÃ¥ dimensioner i &cantor; + + + +Dialogrutan gör det möjligt att mata in funktionens uttryck, dess variabel och variabelns gränser. + + +Dialogrutan Rita i tre dimensioner + + Skärmbild av dialogrutan Rita i tre dimensioner i &cantor; + + + + + + Skärmbild av dialogrutan Rita i tre dimensioner i &cantor; + + + +Dialogrutan gör det möjligt att mata in funktionens uttryck, dess variabler och varje variabels gränser. + + + + + +Kommandoreferens + + +Huvudfönstret i &cantor; + +&cantor; har de vanliga menyalternativen i &kde;. För mer information, läs kapitlet Meny i &kde;:s grunder. + +Nedan är listan över ytterligare eller speciella menyalternativ i &cantor;. Observera att vissa menyer bara visas för bakgrundsprogram som har motsvarande implementering. + + +Menyn Arkiv + + + +&Ctrl;N AlbumNy +Skapar ett nytt arbetsblad med förvalt bakgrundsprogram. + + +Arkiv Ny Bakgrundsprogram +Skapar ett nytt arbetsblad med valt bakgrundsprogram. + + + &Ctrl;O Arkiv Öppna... +Öppnar ett nytt arbetsblad som stöds med fildialogrutan. + + +Arkiv Öppna senaste +Väj ett arbetsblad frÃ¥n en lista över senast använda filer. + + +Arkiv Ladda ner exempelarbetsblad +Öppnar en dialogruta för att ladda ner exempel uppladdade av andra användare &cantor; med Hämta heta nyheter. + + +Arkiv Öppna exempel +Öppnar dialogrutan för att välja ett exempel att läsa in. Exemplen mÃ¥ste först laddas ner med Arkiv Ladda ner exempelarbetsblad innan. + + +Arkiv Spara vanlig text +Gör det möjligt att spara aktuellt arbetsblad som ett vanligt textdokument. + + +Arkiv Exportera till Latex +Gör det möjligt att spara aktuellt arbetsblad som ett &latex;-dokument. + + +Arkiv Publicera arbetsblad +Öppnar dialogrutan för att publicera aktuellt arbetsblad och göra det tillgängliga för andra användare av &cantor; via Hämta heta nyheter. + + +Arkiv Kör skript +Gör det möjligt att ladda och köra bakgrundsskripten för nuvarande bakgrundsprogram. + + + + + + + +Menyn Visa + + + +Visa Paneler +LÃ¥ter dig ändra synlighet för vissa flikar i sidoraden. Du kan välja: + + Filbläddrare + Ändrar synlighet för fliken Filbläddrare i sidoraden. + + + + Hjälp + Ändrar synlighet för fliken Hjälp i sidoraden. + + + + Variabelhantering + Ändrar synlighet för fliken Variabelhantering i sidoraden. + + + + + &Ctrl;+ Visa Zooma in +Zooma in aktuellt arbetsblad 10 %. + + + &Ctrl;- Visa Zooma ut +Zooma ut aktuellt arbetsblad 10 %. + + +Visa Visa skripteditor +Öppna fönstret för redigering av bakgrundsskript för aktuellt bakgrundsprogram. + + + + + + +Menyn Arbetsblad + + + + &Ctrl;E Arbetsblad Beräkna arbetsblad +Utlöser beräkningen av hela arbetsbladet. + + + &Shift;Enter Arbetsblad Beräkna post +Utlöser beräkningen av aktuell post. + + + &Ctrl;Enter Arbetsblad Infoga kommandopost +Infogar en ny kommandopost under nuvarande markörposition. + + +Arbetsblad Infoga textpost +Infogar en ny textpost under nuvarande markörposition. + + +Arbetsblad Infoga Markdown-post +Infogar en ny &Markdown;-post under nuvarande markörposition. + + +Arbetsblad Infoga Latex-post +Infogar en ny &latex;-post under nuvarande markörposition. + + +Arbetsblad Infoga bild +Infogar en bild under nuvarande markörposition. + + +Arbetsblad Infoga sidbrytning +Infogar sidbrytningen under nuvarande markörposition. + + +Arbetsblad Dra ihop alla resultat +Dra ihop alla kommandoinmatningens resultat. + + +Arbetsblad Expandera alla resultat +Expandera alla kommandoinmatningens resultat. + + +Arbetsblad Ta bort alla resultat +Ta bort alla kommandoinmatningens resultat. + + + &Shift;Delete Arbetsblad Ta bort nuvarande post +Tar bort aktuell post frÃ¥n arbetsbladet. + + + + + + +Menyn Linjär algebra + + + +Linjär algebra Skapa matris +Visar handledningsdialogrutan Skapa matris. + + +Linjär algebra Beräkna egenvärden +Visar handledningsdialogrutan för inmatning av matrisnamn för att beräkna dess egenvärden och dimensionerna för egenvärdenas multipler i motsvarande ordning. + + +Linjär algebra Beräkna egenvektorer +Visar handledningsdialogrutan för inmatning av matrisnamn för att beräkna dess egenvärden och dimensionerna för egenvärdenas och egenvektorernas multipler i motsvarande ordning. + + +Linjär algebra Invertera matris +Visar handledningsdialogrutan för inmatning av matrisnamn för att beräkna matrisens invers. + + + + + + +Menyn Beräkna + + + +Beräkna Derivera +Visar dialogrutan för deriveringsparametrar. + + +Beräkna Integrera +Visar dialogrutan för integreringsparametrar. + + +Beräkna Lös ekvationer +Visar dialogrutan för parameterinmatning för att lösa linjära och icke-linjära ekvationer. + + + + + + +Menyn Paket + + + +Paket Importera paket +Visar dialogrutan för paketimport. + + + + + + +Menyn Rita + + + +Rita Rita +Visar dialogrutan för diagramparametrar. + + +Rita Rita i tvÃ¥ dimensioner +Visar dialogrutan för diagramparametrar. + + +Rita Rita i tre dimensioner +Visar dialogrutan för diagramparametrar. + + + + + + +Menyerna Inställningar och Hjälp +&cantor; har de vanliga menyalternativen i &kde;, Inställningar och Hjälp. För mer information läs avsnitten om Menyn Inställningar och Menyn Hjälp i &kde;:s grunder. + + + + + + + +Vanliga frÃ¥gor + + + + Menyalternativet Typsätt med Latex är inte tillgängligt + Alla bakgrundsprogram stöder inte alla alternativ. Den nuvarande versionen stöder &latex;-utmatning för bakgrundsprogrammen Maxima, Qalculate! och Sage. + + + Jag har installerat Sage och Maxima eller ett annat CAS som stöds, men det lämpliga bakgrundsprogrammet visas inte. + + En möjlig förklaring är att &cantor; inte detekterade platsen riktigt. GÃ¥ till Inställningar Anpassa &cantor;... och ändra Sökväg till lämpligt program pÃ¥ bakgrundsprogramsidan. + + + + Vilket underligt namn, vad har det att göra med matematik? + &cantor; är uppkallat efter den tyska matematikern Georg Cantor, skaparen av mängdteori. + + + + + + +Tack till och licens + +&cantor; +Program copyright 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +Dokumentation Copyright © 2009-2011 Alexander Rieder alexanderrieder@gmail.com + +Översättning Stefan Asserhäll stefan.asserhall@bredband.net &underFDL; &underGPL; + +&documentation.index; +
      + + diff --git a/po/th/cantor.po b/po/th/cantor.po new file mode 100644 index 0000000..db7b049 --- /dev/null +++ b/po/th/cantor.po @@ -0,0 +1,4955 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Phuwanat Sakornsakolpat , 2010, 2011. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2011-05-12 22:47+0700\n" +"Last-Translator: Phuwanat Sakornsakolpat \n" +"Language-Team: Thai \n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 1.0\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "ภูวณัฏฐ์ สาครสกลพัฒน์" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "narachai@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "บันทึกผล" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "การลงจุดขั้นสูง" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "ลงจุด" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "สูตร:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "ตัวเลือกเพิ่มเติม:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&ลงจุด" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "ใช้งานตัวเลือก" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "คำ&นวณ" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "หาอนุพันธ์" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "ตัวแปร:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "จำนวนครั้ง: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "หาปริพันธ์" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "ขีดจำกัดล่าง:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "ขีดจำกัดบน:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "ปริพันธ์จำกัดเขต" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "พีช&คณิตเชิงเส้น" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "สร้างเมทริกซ์" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "คอลัมน์:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "แถว:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "คำนวณค่าลักษณะเฉพาะ" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "เมทริกซ์:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "คำนวณเวกเตอร์ลักษณะเฉพาะ" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "กลับเมทริกซ์" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "ลงจุดแบบสองมิติ" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "ตัวแปร" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "ชื่อ" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "ค่าต่ำสุด:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "ค่าสูงสุด:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "ลงจุดแบบสามมิติ" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "ตัวแปรที่ 1" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "ตัวแปรที่ 2" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "ดำเนินการสคริปต์" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "แก้สมการ" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "สมการ:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "ตัวแปร:" + +#: backendchoosedialog.cpp:64 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Select the Backend" +msgstr "เริ่มโปรแกรมเบื้องหลังใหม่" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"

      %1

      %2

      อ่านรายละเอียดเพิ่มเติมที่ %3" + +#: backendchoosedialog.cpp:125 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"

      %1

      %2

      อ่านรายละเอียดเพิ่มเติมที่ %3" + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "ทำให้แบ็กเอนด์นี้เป็นค่าปริยาย" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "หาปริพันธ์ของจุดไปยังตารางงาน" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Julia script file (*.jl)" +msgstr "*.R|แฟ้มสคริปต์ R" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "ผิดพลาด - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Julia process." +msgstr "การเริ่ม Sage ล้มเหลว" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "ทั่วไป" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Plot Integration:" +msgstr "หาปริพันธ์" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Variable:" +msgid "Variable Management:" +msgstr "ตัวแปร:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Integrate Plots in Worksheet" +msgid "Internal Plot Format:" +msgstr "หาปริพันธ์ของจุดในแผ่นงาน" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plots" +msgstr "ลงจุด" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "PyPlot" +msgstr "ลงจุด" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, fuzzy, kde-format +#| msgid "Scripts to autorun" +msgid "Commands to autorun" +msgstr "สคริปต์ตัวเริ่มอัตโนมัติ" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documentation" +msgstr "เอกสารที่จะเปิด" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "http://docs.kde.org/stable/en/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "รายการของสคริปต์ที่จะเริ่มทำงานเมื่อเปิดขณะเริ่มวาระ" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "ผิดพลาด: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Path to luajit command" +msgstr "ตำแหน่งของ Maxima:" + +#: backends/lua/luaextensions.cpp:20 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Lua script file (*.lua)" +msgstr "*.R|แฟ้มสคริปต์ R" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Path to luajit:" +msgstr "ตำแหน่งของ Maxima:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, fuzzy, kde-format +#| msgid "" +#| "Maxima is a system for the manipulation of symbolic and numerical " +#| "expressions, including differentiation, integration, Taylor series, " +#| "Laplace transforms, ordinary differential equations, systems of linear " +#| "equations, polynomials, and sets, lists, vectors, matrices, and tensors. " +#| "Maxima yields high precision numeric results by using exact fractions, " +#| "arbitrary precision integers, and variable precision floating point " +#| "numbers. Maxima can plot functions and data in two and three dimensions. " +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima เป็นระบบสำหรับจัดการสัญลักษณ์และนิพจน์ทางตัวเลข รวมไปถึงการหาอนุพันธ์, การหาปริพันธ์, " +"ลำดับเทเลอร์, การแปลงลาปลาซ, สมการเชิงอนุพันธ์สามัญ, ระบบสมการเชิงเส้น, พหุนาม, เซต, " +"รายการ, เวกเตอร์, เมตริกซ์ และเทนเซอร์ นอกจากนี้ Maxima ยังให้ผลลัพธ์ที่เที่ยงตรง โดยใช้ " +"exact fraction, จำนวนเต็มเที่ยงเปลี่ยนค่าได้ (arbitrary precision intergers) " +"และความเที่ยง ที่เป็นเลขทศนิยมที่เป็นตัวแปร และสามารถลงจุดของฟังก์ชันและข้อมูลใน 2 และ 3 มิติ" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "ตำแหน่งของโปรแกรม Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, fuzzy, kde-format +#| msgid "*.mac|Maxima batch File" +msgid "Maxima batch file (*.mac)" +msgstr "*.mac|แฟ้มกลุ่ม Maxima" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "การเริ่ม Maxima ล้มเหลว" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima หยุดทำงาน กำลังเปิดอีกครั้ง..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "Maxima หยุดทำงานติดต่อกันสองครั้ง ยกเลิกการลองเปิดทำงาน" + +#: backends/octave/octavebackend.cpp:62 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Octave, please check if there is a " +#| "translated version (currently Czech and Japanese) and use the correct url" +#| msgid "http://www.gnu.org/software/octave/doc/interpreter/" +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "http://www.gnu.org/software/octave/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, fuzzy, kde-format +#| msgid "" +#| "GNU Octave is a high-level language, primarily intended for numerical " +#| "computations.
      It provides a convenient command line interface for " +#| "solving linear and nonlinear problems numerically, and for performing " +#| "other numerical experiments using a language that is mostly compatible " +#| "with Matlab." +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave คือภาษาระดับสูงที่มีเป้าหมายเบื้องต้นในการคำนวณทางตัวเลข
      " +"ซึ่งมีอินเทอร์เฟซบรรทัดคำสั่งที่สะดวกสำหรับการแก้ปัญหาเชิงเส้นและไม่เชิงส้นแบบตัวเลขได้ " +"และดำเนินการทดลองทางตัวเลขอื่นโดยใช้ภาษาที่เข้ากันได้กับ Matlab" + +#: backends/octave/octaveextensions.cpp:34 +#, fuzzy, kde-format +#| msgid "*.m|Octave script file" +msgid "Octave script file (*.m)" +msgstr "*.m|แฟ้มสคริปต์ Octave" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "ผิดไวยากรณ์" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "Python script file (*.py)" +msgstr "*.R|แฟ้มสคริปต์ R" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, fuzzy, kde-format +#| msgid "Failed to start Sage" +msgid "Failed to start Cantor python server." +msgstr "การเริ่ม Sage ล้มเหลว" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "plot.ly" +msgstr "ลงจุด" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Functions" +msgstr "สมการ:" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, fuzzy, kde-format +#| msgid "Expression:" +msgid "Expression" +msgstr "สูตร:" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove" +msgstr "ลบรายการ" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, fuzzy, kde-format +#| msgid "Clear Variables" +msgid "Clear List" +msgstr "ล้างตัวแปร" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, fuzzy, kde-format +#| msgid "Variable" +msgid "X variable" +msgstr "ตัวแปร" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, fuzzy, kde-format +#| msgid "Option active" +msgid "Options" +msgstr "ใช้งานตัวเลือก" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, fuzzy, kde-format +#| msgid "Plot title:" +msgid "Plot title" +msgstr "หัวเรื่องการลงจุด:" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, fuzzy, kde-format +#| msgid "Expression:" +msgid "expression" +msgstr "สูตร:" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, fuzzy, kde-format +#| msgid "Completion" +msgid "option" +msgstr "การเติมเต็มคำ" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, fuzzy, kde-format +#| msgctxt "@title:column" +#| msgid "Value" +msgid "value" +msgstr "ค่า" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "integer" +msgstr "หาปริพันธ์" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "number" +msgstr "หมายเลขบรรทัด" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "default: %1" +msgstr "ค่าปริยาย" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, fuzzy, kde-format +#| msgid "Load Variables" +msgid "Load variables from a file" +msgstr "โหลดตัวแปร" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, fuzzy, kde-format +#| msgid "Expression:" +msgid "Precision" +msgstr "สูตร:" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate" +msgstr "คำนวณรายการ" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plotting" +msgstr "ลงจุด" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show grid:" +msgstr "แสดงโค้ด" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, fuzzy, kde-format +#| msgid "Plot title:" +msgid "Plot Style:" +msgstr "หัวเรื่องการลงจุด:" + +#: backends/qthelpconfig.cpp:45 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "รายการคำสั่ง" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Append Text Entry" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "เพิ่มรายการข้อความ" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Add local documentation" +msgstr "ตำแหน่งของ Maxima:" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Document to open" +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "เอกสารที่จะเปิด" + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Path to Maxima:" +msgid "Download additional documentations" +msgstr "ตำแหน่งของ Maxima:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "ชื่อ" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "เริ่มโปรแกรมเบื้องหลังใหม่" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name:" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "ชื่อ:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, fuzzy, kde-format +#| msgid "" +#| "R is a language and environment for statistical computing and graphics, " +#| "similar to the S language and environment.
      It provides a wide " +#| "variety of statistical (linear and nonlinear modelling, classical " +#| "statistical tests, time-series analysis, classification, clustering, ...) " +#| "and graphical techniques, and is highly extensible. The S language is " +#| "often the vehicle of choice for research in statistical methodology, and " +#| "R provides an Open Source route to participation in that activity." +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R เป็นภาษาและสภาพแวดล้อมสำหรับการคำนวณทางสถิติและกราฟิก ซึ่งคล้ายคลึงกับ " +"ภาษาและสภาพแวดล้อม S
      โดยมีเทคนิคทางสถิติ (เช่น ตัวแบบเชิงเส้นและไม่เชิงเส้น, " +"การทดสอบทางสถิติแบบคลาสิค, การวิเคราะห์แบบอนุกรมเวลา, การจำแนก และคลัสเตอร์) " +"และเทคนิคแบบกราฟิกที่เพิ่มเติมได้อย่างมาก ทั้งนี้ ภาษา S มักเป็นพาหนะของตัวเลือกในการ " +"วิจัยทางวิธีทางสถิติ และ R เป็นเส้นทางแบบโอเพนซอร์สในการมีส่วนร่วมในกิจกรรมนั้น" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "เกิดข้อผิดพลาดขณะเปิดแฟ้ม %1" + +#: backends/R/rextensions.cpp:22 +#, fuzzy, kde-format +#| msgid "*.R|R script file" +msgid "R script file (*.R)" +msgstr "*.R|แฟ้มสคริปต์ R" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "คำสั่งแจงข้อผิดพลาด" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "คลิกสองครั้งเพื่อเปิดกล่องโต้ตอบสำหรับเลือกแฟ้ม" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|แฟ้มซอร์ส R (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, fuzzy, kde-format +#| msgid "" +#| "Sage is a free open-source mathematics software system licensed under the " +#| "GPL.
      It combines the power of many existing open-source packages " +#| "into a common Python-based interface." +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage เป็นระบบซอฟต์แวร์คณิตศาสตร์ที่เป็นโอเพนซอร์สและฟรี โดยมีลิขสิทธิ์ภายใต้ GPL.
      " +"ซึ่งได้รวบรวมแพกเกจโอเพนซอร์สหลาย ๆ ตัวเป็นอินเทอร์เฟซแบบไพธอนร่วมกัน" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "ตำแหน่งของโปรแกรม Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, fuzzy, kde-format +#| msgid "Enable LaTex Typesetting" +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "เปิดใช้งานการตั้งการป้อนโดยใช้ LaTex" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "ผลลัพธ์ของ %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"ผลลัพธ์สุดท้ายคือ: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, fuzzy, kde-format +#| msgid "" +#| "*.py|Python script file\n" +#| "*.sage|Sage script file" +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" +"*.py|แฟ้มสคริปต์ Python\n" +"*.sage|แฟ้มสคริปต์ Sage" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "โพรเซส Sage หยุดทำงานขณะหาค่าของนิพจน์นี้" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "โพรเซส Sage หยุดทำงาน" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "โพรเซส Sage ปิดขณะกำลังคำนวณนิพจน์นี้" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "โพรเซส Sage ปิดทำงาน" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "การเริ่ม Sage ล้มเหลว" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Enable LaTex Typesetting" +msgid "LaTeX typesetting:" +msgstr "เปิดใช้งานการตั้งการป้อนโดยใช้ LaTex" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://www.sagemath.org/doc/reference/index.html" +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "http://www.sagemath.org/doc/reference/index.html" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to the Sage executable" +msgid "Path to the Scilab executable" +msgstr "ตำแหน่งของโปรแกรม Sage" + +#: backends/scilab/scilabextensions.cpp:23 +#, fuzzy, kde-format +#| msgid "" +#| "*.py|Python script file\n" +#| "*.sage|Sage script file" +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +"*.py|แฟ้มสคริปต์ Python\n" +"*.sage|แฟ้มสคริปต์ Sage" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Open file" +msgstr "เปิดตัว&อย่าง" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "Download Example Worksheets" +msgid "Download Examples" +msgstr "ดาวน์โหลดแผ่นงานตัวอย่าง" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "เปิดตัว&อย่าง" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      ไม่พบโปรแกรมเบื้องหลัง

      \n" +"
      คุณสามารถลอง:\n" +"
      • เปลี่ยนการตั้งค่านี้ในหน้าต่างการตั้งค่า
      • " +"
      • ติดตั้งแพกเกจใดแพกเกจหนึ่งในนี้:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "ผิดพลาด" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "โปรแกรมเบื้องหลัง %1 ยังไม่ถูกติดตั้ง" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "วาระ %1" + +#: cantor.cpp:386 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to find the Cantor Part with error %1" +msgstr "ไม่พบ Cantor Part" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "กำลังคำนวณ..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "พร้อม" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Close Cantor" +msgstr "Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save Project" +msgstr "บันทึกผล" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Formatting" +msgstr "ลงจุด" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "โปรแกรมเบื้องหลังที่ใช้เป็นค่าปริยาย" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "ตั้งการป้อนโดยปริยาย" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "เน้นไวยากรณ์โดยปริยาย" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "เปิดใช้งานการเติมเต็มคำเป็นค่าปริยาย" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "เปิดใช้งานจำนวนนิพจน์โดยปริยาย" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "คำนวณรายการที่อยู่ใต้รายการปัจจุบันโดยอัตโนมัติ" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, fuzzy, kde-format +#| msgid "Export to LaTex" +msgid "Export to LaTeX" +msgstr "ส่งออกไปยัง LaTex" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "คำนวณแผ่นงาน" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "ตั้งการป้อนโดยใช้ LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "การเน้นไวยากรณ์" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "การเติมเต็มคำ" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "หมายเลขบรรทัด" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Pause Animation" +msgid "Animations" +msgstr "พักภาพเคลื่อนไหว" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "เริ่มโปรแกรมเบื้องหลังใหม่" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "คำนวณรายการ" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "แทรกรายการคำสั่ง" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "แทรกรายการข้อคาม" + +#: cantor_part.cpp:278 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Insert Markdown Entry" +msgstr "แทรกรายการคำสั่ง" + +#: cantor_part.cpp:285 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Insert LaTeX Entry" +msgstr "แทรกรายการข้อคาม" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Expand All Results" +msgstr "ผลลัพธ์" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove All Results" +msgstr "ลบผลลัพธ์" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "ลบรายการปัจจุบัน" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "แสดงตัวแก้ไขสคริปต์" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "แสดงการเติมเต็ม" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "ส่วนCantor" + +#: cantor_part.cpp:406 +#, fuzzy, kde-format +#| msgid "(C) 2009-2010 Alexander Rieder" +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "สงวนลิขสิทธิ์ 2552-2553 โดย Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, fuzzy, kde-format +#| msgid "*.cws|Cantor Worksheet" +msgid "Cantor Worksheet (*.cws)" +msgstr "*.cws|แผ่นงาน Cantor" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save as" +msgstr "บันทึกผล" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Restart %1?" +msgstr "เริ่มโปรแกรมเบื้องหลังใหม่" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "ขัดจังหวะ" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "วาระผิดพลาด: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "การเริ่มต้นเสร็จสมบูรณ์" + +#: cantor_part.cpp:690 +#, fuzzy, kde-format +#| msgid "Initializing Session" +msgid "Initializing..." +msgstr "กำลังเริ่มวาระ" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "คุณต้องการจะอัพโหลดแผ่นงานปัจจุบันไปยังเว็บเซิร์ฟเวอร์สาธารณะหรือไม่?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "คำถาม - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "คุณน่าจะบันทึกแผ่นงานก่อนที่จะอัพโหลด" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "คำเตือน - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "โปรแกรมเบื้องหลังนี้ไม่สนับสนุนการใช้สคริปต์" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "มุม&มอง" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "แผ่น&งาน" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "ตั้&งค่า" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "แฟ้&ม" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "ใ&หม่" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "แถบพาแนล" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "ตั้&งค่า" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "Default" +msgstr "ค่าปริยาย" + +#: commandentry.cpp:151 +#, fuzzy, kde-format +#| msgid "Text Entry" +msgid "Text Color" +msgstr "รายการข้อคาม" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Show Results" +msgstr "ผลลัพธ์" + +#: commandentry.cpp:338 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Hide Results" +msgstr "ผลลัพธ์" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Help" +msgstr "แสดงความช่วยเหลือ %1" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "ถูกขัดจังหวะ" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Section" +msgstr "สมการ:" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Subsection" +msgstr "สมการ:" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Solid Line Style" +msgstr "ลักษณะการเติมเต็มคำ:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Dot Line Style" +msgstr "ลักษณะการเติมเต็มคำ:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgid "Text Entry" +msgid "Line Color" +msgstr "รายการข้อคาม" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "" + +#: imageentry.cpp:256 +#, fuzzy, kde-format +#| msgid "Double click to open file selection dialog" +msgid "Double click here to configure image settings" +msgstr "คลิกสองครั้งเพื่อเปิดกล่องโต้ตอบสำหรับเลือกแฟ้ม" + +#: imageentry.cpp:288 +#, fuzzy, kde-format +#| msgid "Cannot write file %1." +msgid "Cannot load image %1" +msgstr "ไม่สามารถเขียนแฟ้ม %1" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "บันทึกผล" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Images (%1)" +msgstr "ลบรายการ" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Image Settings" +msgstr "ตั้&งค่า" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "&Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "ตั้&งค่า" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, fuzzy, kde-format +#| msgid "x" +msgid "px" +msgstr "x" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "" + +#: latexentry.cpp:61 textentry.cpp:111 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show LaTeX code" +msgstr "แสดงโค้ด" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "ตำแหน่งของโปรแกรม latex" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "ตำแหน่งของโปรแกรม dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "ค่า" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "Variable" +msgid "" +msgstr "ตัวแปร" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "จาก:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "ถึง:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "หัวเรื่องหลัก" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "มาตราส่วนของค่าบนแกนนอนของจุด (abscissa)" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "มาตราส่วนของค่าบนแกนตั้งของจุด (ordinate)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "หัวเรื่องการลงจุด:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "ส่วนหน้าของ KDE สำหรับแอพพลิเคชันด้านคณิตศาสตร์" + +#: main.cpp:74 +#, fuzzy, kde-format +#| msgid "(C) 2009-2010 Alexander Rieder" +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "สงวนลิขสิทธิ์ 2552-2553 โดย Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "" + +#: main.cpp:78 +#, fuzzy, kde-format +#| msgid "Octave backend" +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "โปรแกรมเบื้องหลัง Octave" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, fuzzy, kde-format +#| msgid "Alexander Rieder" +msgid "Alexander Semke" +msgstr "Alexander Rieder" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "โปรแกรมเบื้องหลัง KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "โปรแกรมเบื้องหลัง Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "" + +#: main.cpp:84 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Interface" +msgstr "หาปริพันธ์" + +#: main.cpp:86 main.cpp:87 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor icon" +msgstr "Cantor" + +#: main.cpp:92 +#, fuzzy, kde-format +#| msgid "Use this backend" +msgid "Use backend " +msgstr "ใช้โปรแกรมเบื้องหลังนี้" + +#: main.cpp:95 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documents to open." +msgstr "เอกสารที่จะเปิด" + +#: main.cpp:130 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1" +msgstr "เกิดข้อผิดพลาดขณะเปิดแฟ้ม %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, fuzzy, kde-format +#| msgid "Syntax Error" +msgid "Cantor Math Error" +msgstr "ผิดไวยากรณ์" + +#: markdownentry.cpp:796 +#, fuzzy, kde-format +#| msgid "Could not find the Cantor Part." +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "ไม่พบ Cantor Part" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor files" +msgstr "Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Jupyter files" +msgstr "เปิดตัว&อย่าง" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "ชื่อ:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "ค่า:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgid "Add New Variable" +msgstr "เพิ่มตัวแปรใหม่" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "โหลดตัวแปร" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Save Variables" +msgstr "เก็บตัวแปร" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Remove Variables" +msgstr "เก็บตัวแปร" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "คุณแน่ใจหรือไม่ที่จะลบตัวแปรทั้งหมด?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +#| msgid "Load Variables" +msgid "Load file" +msgstr "โหลดตัวแปร" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "บันทึกผล" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "ลบผลลัพธ์" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "ไม่พบตัวแก้ไขข้อความของ KDE กรุณาตรวจสอบการติดตั้ง KDE ของคุณ" + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "ตัวแก้ไขสคริปต์" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "ตัวแก้ไขสคริปต์ - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Commands" +msgstr "รายการคำสั่ง" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +#| msgid "Result" +msgid "Results" +msgstr "ผลลัพธ์" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, fuzzy, kde-format +#| msgid "Error" +msgid "Errors" +msgstr "ผิดพลาด" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "โปรแกรมเบื้องหลังปริยาย:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "แผ่น&งาน" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, fuzzy, kde-format +#| msgid "Enable LaTex Typesetting" +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "เปิดใช้งานการตั้งการป้อนโดยใช้ LaTex" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, fuzzy, kde-format +#| msgid "Enable LaTex Typesetting" +msgid "LaTeX typesetting" +msgstr "เปิดใช้งานการตั้งการป้อนโดยใช้ LaTex" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "เปิดใช้งานการเน้นไวยากรณ์" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "การเน้นไวยากรณ์" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "เปิดใช้งานการเติมเต็มคำ" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "หมายเลขบรรทัด" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "หมายเลขบรรทัด" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "หาปริพันธ์ของจุดไปยังตารางงาน" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "สมการ:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "คำนวณรายการใหม่อัตโนมัติ" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown:" +msgstr "แทรกรายการคำสั่ง" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, fuzzy, kde-format +#| msgid "Enable LaTex Typesetting" +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "เปิดใช้งานการตั้งการป้อนโดยใช้ LaTex" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert to Text Entry" +msgstr "แทรกรายการข้อคาม" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Copy result" +msgstr "ลบผลลัพธ์" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "แสดงสิ่งที่ให้แสงและเงาแล้ว" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "แสดงโค้ด" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, fuzzy, kde-format +#| msgid "Show Code" +msgid "Show HTML Code" +msgstr "แสดงโค้ด" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Html" +msgstr "แสดงความช่วยเหลือ %1" + +#: textresultitem.cpp:90 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show HTML" +msgstr "แสดงความช่วยเหลือ %1" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "ไม่สามารถแสดงแฟ้ม Eps ได้ อาจจะต้องติดตั้งแพกเกจเพิ่มเติม" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "บันทึกผล" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "ไม่สามารถเขียนแฟ้ม %1" + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, fuzzy, kde-format +#| msgid "Cannot write file %1." +msgid "Cannot write file." +msgstr "ไม่สามารถเขียนแฟ้ม %1" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "มีข้อผิดพลาดขณะบันทึกแฟ้ม %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "การโหลดแผ่นตารางงาน latex.xsl ผิดพลาด" + +#: worksheet.cpp:1327 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the file %1." +msgstr "เกิดข้อผิดพลาดขณะเปิดแฟ้ม %1" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Open File" +msgstr "เปิดตัว&อย่าง" + +#: worksheet.cpp:1350 +#, fuzzy, kde-format +#| msgid "Error opening file %1" +msgid "Couldn't open the selected file for reading." +msgstr "เกิดข้อผิดพลาดขณะเปิดแฟ้ม %1" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"มีปัญหาเกี่ยวกับโปรแกรมเบื้องหลัง %1\n" +"กรุณาตรวจสอบการตั้งค่าของคุณหรือติดตั้งแพกเกจที่ต้องการ\n" +"คุณสามารถอ่านแผ่นงานนี้อย่างเดียว" + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Convert To" +msgstr "แทรกรายการข้อคาม" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Command" +msgstr "รายการคำสั่ง" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Markdown" +msgstr "แทรกรายการคำสั่ง" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Image" +msgstr "ลบรายการ" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Hierarchy Entry" +msgstr "ลบรายการ" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Insert After" +msgstr "แทรกรายการข้อคาม" + +#: worksheet.cpp:1856 +#, fuzzy, kde-format +#| msgid "Insert Text Entry Before" +msgid "Insert Before" +msgstr "แทรกรายการข้อความก่อน" + +#: worksheet.cpp:1875 +#, fuzzy, kde-format +#| msgid "Insert Entry" +msgid "Insert" +msgstr "แทรกรายการ" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Insert Text Entry" +msgid "Move Entries Down" +msgstr "แทรกรายการข้อคาม" + +#: worksheet.cpp:1933 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate Entries" +msgstr "คำนวณรายการ" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Entries" +msgstr "ลบรายการ" + +#: worksheet.cpp:1947 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Collapse Command Entry Results" +msgstr "แทรกรายการคำสั่ง" + +#: worksheet.cpp:1948 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Expand Command Entry Results" +msgstr "เพิ่มรายการคำสั่ง" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Remove Command Entry Results" +msgstr "รายการคำสั่ง" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Append Command Entry" +msgid "Add Command Entry To Execution" +msgstr "เพิ่มรายการคำสั่ง" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "" + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "" + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "" + +#: worksheet.cpp:2111 +#, fuzzy, kde-format +#| msgid "Inline" +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "ในบรรทัด" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove all results" +msgstr "ลบผลลัพธ์" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +#| msgid "Ready" +msgid "Red" +msgstr "พร้อม" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, fuzzy, kde-format +#| msgid "Do you also want to export the images?" +msgid "Do you really want to remove this entry?" +msgstr "คุณต้องการจะส่งออกรูปภาพหรือไม่?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "ลบรายการ" + +#: worksheetentry.cpp:850 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Drag Entry" +msgstr "ลบรายการ" + +#, fuzzy +#~| msgid "Evaluate Worksheet" +#~ msgid "Animate Worksheet" +#~ msgstr "คำนวณแผ่นงาน" + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "เมื่อเปิดใช้งาน Cantor จะคำนวณทุกรายการที่อยู่ใต้รายการปัจจุบันโดยอัตโนมัติ" + +#~ msgid "Defaults" +#~ msgstr "ค่าปริยาย" + +#~ msgid "Enable Line Numbers" +#~ msgstr "เปิดใช้งานเลขบรรทัด" + +#, fuzzy +#~| msgid "Evaluate Worksheet" +#~ msgid "Enable Worksheet Animations" +#~ msgstr "คำนวณแผ่นงาน" + +#, fuzzy +#~| msgid "Plot" +#~ msgid "Plot.ly" +#~ msgstr "ลงจุด" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      ทำคณิตศาสตร์ในแบบฉบับของ KDE" + +#, fuzzy +#~| msgid "Document to open" +#~ msgid "Documentation:" +#~ msgstr "เอกสารที่จะเปิด" + +#~ msgid "Show %1 Help" +#~ msgstr "แสดงความช่วยเหลือ %1" + +#, fuzzy +#~| msgid "Path to Maxima:" +#~ msgid "Path to Julia:" +#~ msgstr "ตำแหน่งของ Maxima:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "หาปริพันธ์ของจุดในแผ่นงาน" + +#~ msgid "Clear Variables" +#~ msgstr "ล้างตัวแปร" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "การยืนยัน - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "รายการข้อคาม" + +#, fuzzy +#~| msgid "Text Entry" +#~ msgid "LaTeX Entry" +#~ msgstr "รายการข้อคาม" + +#, fuzzy +#~| msgid "Text Entry Before" +#~ msgid "Insert Entry Before" +#~ msgstr "รายการข้อความก่อน" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "แทรกรายการข้อคาม" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Latex Entry" +#~ msgstr "แทรกรายการข้อคาม" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "ตำแหน่งของโปรแกรม Octave" + +#~ msgid "Path to Maxima:" +#~ msgstr "ตำแหน่งของ Maxima:" + +#, fuzzy +#~| msgid "Failed to start Sage" +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "การเริ่ม Sage ล้มเหลว" + +#~ msgid "Path to Sage:" +#~ msgstr "ตำแหน่งของ Sage:" + +#, fuzzy +#~| msgid "Integrate Plots in Worksheet" +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "หาปริพันธ์ของจุดในแผ่นงาน" + +#~ msgid "Path to the Octave executable" +#~ msgstr "ตำแหน่งของโปรแกรม Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "ตำแหน่งของ Octave:" + +#~ msgid "Unnamed" +#~ msgstr "ไม่มีชื่อ" + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "เลือกแบ็กเอนด์ที่จะใช้:" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "โปรแกรมเบื้องหลังที่มีแฟ้มนี้ที่ถูกสร้างไม่ถูกติดตั้ง มันต้องการ %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "เผยแพร่แผ่นงาน" + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "ไม่สามารถเปิดแฟ้ม %1: ไม่พบชนิดของไมม์" + +#, fuzzy +#~| msgid "*.tex|LaTex Document" +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|เอกสาร LaTex" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|แผ่นงาน Cantor" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "เซิร์ฟเวอร์สำหรับแบ็กเอนด์ Cantor R" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "สงวนลิขสิทธิ์ 2552 โดย Alexander Rieder" + +#, fuzzy +#~| msgid "Load Variables" +#~ msgid "Usage: loadVariables file" +#~ msgstr "โหลดตัวแปร" + +#, fuzzy +#~| msgid "Load Variables" +#~ msgid "Loading failed." +#~ msgstr "โหลดตัวแปร" + +#, fuzzy +#~| msgid "(C) 2009-2010 Alexander Rieder" +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "สงวนลิขสิทธิ์ 2552-2553 โดย Alexander Rieder" + +#~ msgid "Cantor Server for R" +#~ msgstr "เซิร์ฟเวอร์ Cantor สำหรับ R" + +#~ msgid "Could not start the server." +#~ msgstr "เซิร์ฟเวอร์ไม่สามารถเริ่มทำงานได้" + +#~ msgid "Start Animation" +#~ msgstr "เริ่มภาพเคลื่อนไหว" + +#~ msgid "Restart Animation" +#~ msgstr "เริ่มภาพเคลื่อนไหวใหม่" + +#, fuzzy +#~| msgid "Append Text Entry" +#~ msgid "Append Latex Entry" +#~ msgstr "เพิ่มรายการข้อความ" + +#~ msgid "Other" +#~ msgstr "อื่น ๆ" + +#~ msgid "And %1 more..." +#~ msgstr "และมีเพิ่มเติมอีก %1..." + +#~ msgid "Main Toolbar" +#~ msgstr "แถบเครื่องมือหลัก" + +#~ msgid "Popup" +#~ msgstr "ผุดขึ้น" + +#~ msgid "The style used for Completion" +#~ msgstr "ลักษณะที่ใชสำหรับการเติมเต็มคำ" + +#~ msgid "Insert Command Entry Before" +#~ msgstr "แทรกรายการคำสั่งก่อน" + +#~ msgid "Command Entry Before" +#~ msgstr "รายการคำสั่งก่อน" + +#~ msgid "GroupBox" +#~ msgstr "กล่องกลุ่ม" + +#~ msgid "This test requires a functioning %1 backend" +#~ msgstr "การทดสอบนี้อาศัยโปรแกรมเบื้องหลัง %1 ที่ทำงานได้" + +#~ msgid "Help" +#~ msgstr "ช่วยเหลือ" + +#~ msgid "Show Help Panel" +#~ msgstr "แสดงแถบความช่วยเหลือ" diff --git a/po/tr/cantor.po b/po/tr/cantor.po new file mode 100644 index 0000000..0367227 --- /dev/null +++ b/po/tr/cantor.po @@ -0,0 +1,4762 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# zeugma , 2013. +# Ozan Çağlayan , 2010. +# Renan Cakirerk, 2010. +# obsoleteman , 2009. +# Volkan Gezer , 2014, 2015, 2017. +# Emir SARI , 2022, 2023. +msgid "" +msgstr "" +"Project-Id-Version: kdeedu-kde4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2023-02-08 13:39+0300\n" +"Last-Translator: Emir SARI \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 22.12.2\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Serdar Soytetir, Renan Çakırerk, Emir SARI" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "tulliana@gmail.com, renan@pardus.org.tr, emir_sari@icloud.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Duraklat" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Başlat" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Dur" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Canlandırma sonucunu kaydet" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "Canlandırmalar (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Gelişmiş Çizim" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Çizim" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "İfade:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Ek seçenekler:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Çizim" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Seçenek etkin" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Hesapla" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Farklılaştır" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Değişken:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Kez: " + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Paket" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Paketi İçe Aktar" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Paket:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Bütünleştir" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Alt sınır:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Üst sınır:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "belirli intagral" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Doğrusal Cebir" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Matris Oluştur" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Sütunlar:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Satırlar:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Eigen değerlerini hesapla" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Matris:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Eigen vektörlerini hesapla" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Matrisi Tersine Çevir" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "2B Çizim" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Değişken" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Ad" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "En küçük:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "En büyük:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "3B Çizim" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "1. Değişken" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "2. Değişken" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Betik Çalıştır" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Eşitlikleri çöz" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Eşitlikler:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Değişkenler:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Arka Ucu Seç" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Önerilen sürüm: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Daha fazla bilgi için: %2.
      " + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Bazı gereksinimler karşılanmadı: %1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Bunu öntanımlı arka uç yap" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia, teknik hesaplamalar için diğer teknik hesaplama ortamlarının " +"kullanıcıları tarafından bilinen sözdizimi ile birlikte yüksek düzeyli, " +"yüksek başarımlı bir dinamik programlama dilidir. Gelişmiş bir derleyici, " +"dağıtık paralel yürütme, sayısal doğruluk ve kapsamlı bir matematiksel işlev " +"kitaplığı sağlamaktadır." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"Uygulama ayarlarında belirtilen Julia yolu, doğrudan çalıştırılabiliri " +"gösteriyor olmalıdır. Sembolik bağlantılara izin verilmez. Uygulama " +"ayarlarında doğru yolu sağlayın ve yeniden deneyin." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Cantor, %1 için Julia sürümünü algılayamıyor. Lütfen, Julia " +"çalıştırılabilirine olan doğru yolu sağlayın (sembolik bağlantılara izin " +"verilmez) ve yeniden deneyin." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Cantor'u Julia sürüm %1.%2.%3 ile kullanmaya çalışıyorsunuz. Cantor'un bu " +"sürümü, Julia sürüm %4.%5.%6 kullanılarak derlendi. Lütfen Julia'nın bu " +"sürümünü sağlayın veya Cantor'u %1.%2.%3 kullanarak yeniden derleyin." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Julia yerel REPL'i için yol" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Değişken Yönetimini Etkinleştir" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Çizimlerin integralini çalışma sayfasına koy" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Çizim Yardımcısı için grafiksel paket" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Üzgünüm; ancak Gadfly 3B çizimleri desteklemiyor" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Julia betik dosyası (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Hata - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"Julia oturumu, eksik Julia iç dosyası sorunu nedeniyle açılamıyor- \"%1\"" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "Julia oturumu, bilinmeyen bir iç sorun nedeniyle açılamıyor" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Julia süreci çalışmayı durdurdu." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Julia süreci başlatılamadı." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" +"Julia süreci ile olan iletişim, bilinmeyen nedenlerden dolayı başarısız oldu." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Julia için şu anda yalnızca GR (https://gr-framework.org/) görselleştirme " +"kod kitaplığı desteklenmektedir. Henüz yapılmadıysa öncelikle paket " +"kurulmalıdır. Bunun için Pkg.install(\"GR\") komutunu Cantor'da veya Julia " +"REPL'de çalıştırın. Bu işlem biraz zaman alabilir ve süreç ilerlemesini " +"görebilmek için Julia REPL'de yapılması önerilir." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Genel" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Çalıştırılabilir:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Çizim Tümleştirmesi:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Etkinleştirilmişse çizimler çalışma sayfasının içinde gösterilir. Aksi " +"takdirde, çizimler dış bir pencerede gösterilecektir." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "Etkin" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Değişken Yönetimi:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Değişkenlerin oluşturulmasını ve kaldırılmasını izle ve var olan " +"değişkenleri değişken panelinde göster." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "İç Çizim Biçimi:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "Çizim gömme etkinleştirilmişse çizimlerin iç biçimi." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Çizim Yardımcısı'nda kullanılacak grafiksel paket" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Çizim Yardımcısı için Paket" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Çizimler" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Otomatik Çalıştır" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Otomatik çalıştırılacak komutlar" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Belgelendirme" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Oturum başlangıcında otomatik çalıştırılacak betiklerin listesi" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Hata: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Yeni çalışma sayfası başlangıcında çalıştırılacak otomatik komutlar. Gerekli " +"modüllerin yüklenmesi, çevre değişikliği vb. konularda yararlıdır." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua, yalın ve işlevsel bir sözdizime iye, hızlı ve hafif bir betik " +"yazım dilidir. Lua'da matematik ve bilime yönelik birkaç kitaplık " +"bulunmaktadır." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "luajit komutunun yolu" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Lua betik dosyası (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "luajit yolu:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" +"

      Maxima'nın Yardım Sistemi

      apropos İşlevi

      İçinde " +"herhangi bir yerde ad geçen Maxima adlarını arar; ad, bir dizi veya " +"sembol olmalıdır. Bu nedenle, apropos(exp) adının bir parçası olarak " +"exp'e iye tüm bayrakları ve işlevleri döndürür; örneğin expand, " +"exp, and exponentialize. Bundan dolayı, bir Maxima komutu veya " +"değişkeninin yalnızca bir kısmını anımsayabiliyorsanız komutun geri kalanını " +"bulmak için bu komuttan yararlanabilirsiniz. Benzer olarak, apropos(tr_) yazarak, çoğu tr_ ile başlayan ve çevirmen ile ilgili bir çok " +"anahtarın listesini de bulabilirsiniz.

      apropos(\"\"), tüm " +"Maxima adları içeren bir liste döndürür.

      apropos, bir ad " +"bulunamamışsa boş [] listesini döndürür.

      describe İşlevidescribe(string), describe(string, exact) ile eşdeğerdir." +"

      describe(string, exact), eğer varsa diziye eşdeğer başlığa " +"eşit (BÜYÜK/küçük harf duyarsız) bir öge bulur.

      describe(string, " +"inexact), başlıklarında diziyi içeren tüm belgelendirilmiş ögeleri " +"bulur. Böyle birden çok öge varsa Maxima kullanıcıya bir öge seçmesini sorar." +"

      ? foo (? ve foo arasında bir boşlukla), " +"describe(\"foo\", exact) ile eşdeğerdir, ve ?? foo, " +"describe(\"foo\", inexact)ile eşdeğerdir.

      describe(, " +"inexact), çevrimiçi kılavuzdaki tüm belgelendirilmiş konuların bir " +"listesini verir.

      describe, argümanını alıntılar. describe, bir konu bulunursa true döndürür, aksi takdirde false." +"

      example İşlevi

      example(konu), konu'nun bir " +"örneğini görüntüler, bir dizi veya semboldür. if, do veya " +"lambda gibi işleçler için örnekler almak için argüman bir dizi " +"olmalıdır, örn. example(\"do\"). example BÜYÜK/küçük harf " +"duyarlı değildir. Çoğu konu adı, işlev adından ibarettir." +"

      example(), tüm tanınan konu adlarının bir listesini döndürür." +"

      Örnekleri içeren dosyanın adı global seçenek değişkeni " +"manual_demo tarafından verilir, öntanımlı olarak \"manual.demo\"dur.

      example, argümanını alıntılar. example, bir " +"örnek bulunamamışsa veya argüman yoksa done döndürür; bu durumda " +"example, tanınan tüm konuların bir listesini döndürür." + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima, türev, integral, Taylor serileri, Laplace dönüşümleri, adi " +"differansiyel denklemler, doğrusal eşitlik sistemleri, polinomlar, takımlar " +"(set), listeler, vektörler, matrisler, tensör (tensor) gibi sembolik ve " +"sayısal ifadeleri düzenlemek için kullanılan bir sistemdir. Maxima tam " +"kesir, rastgele hassasiyetli tamsaylar ve değişken hassasiyetli kayan " +"noktalı sayılar kullanarak yüksek hassasiyetli sayısal sonuçlar üretir. " +"Maxima, işlevleri ve verileri iki ve üç boyutlu olarak çizebilir." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Maxima çalıştırılabilir dosyası yolu" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Hata: Çok fazla */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Hata: Çok fazla /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Hata: ; öncesinde \" bekleniyordu" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Çizim sonucu bekleniyor" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Maxima toplu iş dosyası (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Maxima başlatılamadı" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima çöktü. Yeniden başlatılıyor..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Maxima kısa bir süre içinde 2 kere çöktü. Yeniden başlatılmaya çalışılıyor." + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave, öncelikli olarak sayısal hesaplamalar için geliştirilmiş " +"yüksek düzeyli bir dildir.
      Lineer ve lineer olmayan sorunları sayısal " +"olarak çözmek ve diğer sayısal deneyleri yapmak için çoğunlukla Matlab ile " +"uyumlu güçlü bir komut satırı arayüzü sunar." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Octave betik dosyası (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Sözdizim Hatası" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Çizim tümleştirmesi sınaması başarısız." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "Çizimlerin tümleştirilmesi devre dışı bırakılacak." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"Çizim tümleştirmesi çalışmıyor; çünkü Cantor, Octave için bir grafiksel " +"çizim oluşturma arka ucu bulunmadığını algıladı: Bu sonuca, " +"available_graphics_toolkits() işlevinden gelen boş çıktıya istinaden " +"ulaşıldı. Çizim oluşturabilmek için ek birkaç işletim sistemi paketi " +"kurmanız gerek gibi görünüyor; örneğin gnuplot, fltk veya qt gibi." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python, geniş bir yelpazede uygulama alanları bulunan son derece " +"güçlü devingen bir programlama dilidir. Bilimsel hesaplama için pek çok " +"Python kitaplığı bulunmaktadır." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# Üzgünüm; ancak Bokeh 3B çizim desteklemiyor" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Python betik dosyası (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Cantor Python sunucusu çalışmayı durdurdu." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Cantor Python sunucusu başlatılamadı." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"Cantor Python sunucusu ile iletişim, bilinmeyen nedenlerden dolayı başarısız " +"oldu." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Matplotlib paketi ile tümleşik grafikleri kullanmak için öncelikle " +"\"matplotlib\" python paketini kurmalısınız." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Plot.ly ile tümleşik grafikleri kullanmak için \"plotly\" python paketini ve " +"özel Plot.ly uyumlu \"orca\" çalıştırılabilirini kurmalısınız. Ayrıntılar " +"için Plot.ly belgelendirmesinde \"Static Image Export\" bölümüne bakın." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - Çizim Penceresi" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "İşlevler" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Başlık" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "İfade" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Ekle" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Kaldır" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Listeyi Temizle" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "X değişkeni" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Biçem" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "Çizgiler" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "Noktalar" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "Noktalar ve Çizgiler" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "Kutular" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "Sütun Grafiği" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Adımlar" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "Sütunlar" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "Noktalar" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Pürüzsüzleştirme" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "Hiçbiri" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "Tek Tür" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "Doğal Kübik Şeritler" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "Bezier" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "Bezier (tek tür)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "İşlev Aralığı" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X aralığı" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "Ör&nekleme hızı" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "Adım bü&yüklüğü" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Seçenekler" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Çizim başlığı" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "X ekseni etiketi" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Y ekseni etiketi" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Açıklama konumu" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "Açıklamayı gizle" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "Sol üst" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "Sağ üst" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "Sol alt" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "Sağ alt" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "Altında" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "Dışarıda" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Izgarayı Göster" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Tüm kenarlığı göster" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Renkleri Kullan" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Satır içinde görüntüle" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Logaritmik x ölçeği" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Logaritmik y ölçeği" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Dosya Seçenekleri" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Çizimi dosyaya kaydet" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Dosya türü" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Dosya adından algıla" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate!, basit hesap makinenizin bir yenilemesi değildir. " +"Qalculate! günümüz bilgisayarlarının bütün gücünü ve esnekliğini kullanması " +"için tasarlanmıştır. Qalculate!'in odağında ifade girdileri vardır. Bir " +"matematiksel ifadenin her sayısını ayrı ayrı girmek yerine tüm ifadeyi yazıp " +"daha sonra düzenleyebilirsiniz. İfadelerin yorumlanması esnek ve hata " +"toleranslıdır ve yine de hatalı bir şey yaparsanız Qalculate! bunu size " +"bildirecektir. Tamamen çözülemeyen ifadeler hata sayılmazlar. Qalculate! " +"yapabildiği kadar onları yalınlaştırır ve sonuç olarak gösterir. Sayılar ve " +"aritmetik işlemlerin yanı sıra bir ifade değişkenler, birimler ve " +"işlevlerden oluşabilir." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Birimlerin otomatik olarak dönüştürülüp dönüştürülmeyeceği ve " +"dönüştürülecekse bunun nasıl yapılacağı. Eğer doğru olarak ayarlanırsa en " +"uygun SI birimlerine dönüştürülür (en azından çoğu birim)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Trigonometrik işlevler için varsayılan açı birimi." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Ayrıştırılmış ve değerlendirilmiş sayılara dayanır." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Hesaplama sonucu yalınlaştırılacak mı çarpanlara mı ayrılacak." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Rasyonel sayıların ondalıklı mı, kesir olarak mı yoksa ikisinin arasında mı " +"görüntüleneceği." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Sonsuza kadar süren ondalıklı sayıları yuvarlamak yerine üç nokta ile göster " +"(2/3 ifadesi 0.666667 yerine 0.666666... olarak görüntülenir)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Tüm ondalık SI ön eklerini kullan. Eğer false olarak ayarlanırsa bin çarpanı " +"olan önekler (centi, desi, deka, hekto) otomatik olarak kullanılmaz." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Eğer true olarak ayarlanırsa bölme yerine negatif kuvvetler kullanılır (5/" +"x^2 yerine 5*x^-2 yazılır)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Sayısal görünüm." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Eğer doğru olarak ayarlanırsa çizimler çalışma sayfasının içinde " +"görüntülenir. Aksi halde ayrı pencerede gösterilirler." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Çizimde renklerin kullanılıp kullanılmayacağı." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Izgaraların çizilip çizilmeyeceği." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Çizimin etrafına tüm kenarlıkların çizilip çizilmeyeceği." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Piksel cinsinden çizgi kalınlığı." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Çizimde kullanılan interpolasyon adım sayısı." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Çizimlerde pürüzsüzleştirme kipi." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Çizimlerin biçemi." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Çizimde açıklamanın konumu." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate yazdıramadığını bildirdi. gnuplot kurulu mu?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "%1 eksik" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 bir sayı olmalıdır." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 bir tamsayı olmalıdır." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 doğru veya yanlış olmalı." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "%1 için geçersiz seçenek: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "bir çizim komutunda birden çok ifade bulundu (%1 ve %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "HATA" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "UYARI" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Belirtilen adda bir işlev, değişken veya birim yok." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "İşlev: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Çizim arayüzü" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "Bir veya daha fazla işlevi bir arada veya ayrı pencerelerde çizer." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "ifade" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "seçenek" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "değer" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "tamsayı" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "mantıksal değer" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "sayı" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "öntanımlı: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "İşlevin adı" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Başlık etiketi" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "x ekseni etiketi" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "y ekseni etiketi" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Çizimin kaydedileceği görüntü dosyası. Boş olduğunda çizim ekranda bir " +"pencerede gösterilir. Eğer inline=true olarak ayarlanmışsa bu seçeneğe " +"bakılmadan görüntülenir." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Görselin kaydedileceği tür. auto, png, ps, eps, latex, svg veya fig olabilir." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "Renkli çizim için true, tek renk çizim için false olarak ayarlayın." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "En küçük x ekseni değeri." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "En büyük x ekseni değeri." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "X ekseni için logaritmik ölçek kullanılıp kullanılmayacağı." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Y ekseni için logaritmik ölçek kullanılıp kullanılmayacağı." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "X ekseni için logaritmik taban." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Y ekseni için logaritmik taban." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Çizimde ızgara gösterilip gösterilmeyeceği." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Çizimin tüm slaytlarda kenarlıklarla çevrelenip çevrelenmeyeceği (yalnızca " +"eksenler değil)." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Çizgilerin genişliği." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Çizim açıklamasının konumu. none, top_left, top_right, bottom_left, " +"bottom_right, below veya outside olabilir" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Çizim pürüzsüzleştirme. none, unique, csplines, bezier veya sbezier olabilir" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Çizim biçemi. lines, points, points_lines, boxes, histogram, steps, " +"candlesticks veya dots olabilir" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "İkinci x ekseninde ölçek kullan." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "İkinci y ekseninde ölçek kullan." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "Çizimin yeni bir pencere yerine iç içe çizilip çizilmeyeceği." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" +"İki interpolasyon noktası arasındaki uzaklık. Adımlar alanına da bakın." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "İnterpolasyon noktası sayısı. Adım alanına da bakın." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "X değişkeninin adı. Bu bilinmeyen bir değer olmalıdır" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Değişkenleri dosyaya kaydet" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Tanımlanmış bütün değişkenleri bir dosyaya kaydet. %1 ile yeniden " +"yüklenebilirler." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "dosya" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "dosya: kaydedilecek dosya" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Değişkenleri dosyadan yükle" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "%1 tarafından oluşturulmuş dosyadan değişkenleri yükle." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "dosya: yüklenecek dosya" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Sayı tabanı:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Kesir biçimi:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "Ondalık" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "Tam" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "Kesirli" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "Bileşik" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Sayısal görünüm:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "Saf" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "Bilimsel" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "Duyarlılık" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Sonsuz serileri belirtin:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Tüm SI önekleri kullan:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Negatif üsleri kullan:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Hesapla" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "En iyi SI birimlere dönüştür:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "Yarıçaplar" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "Derece" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradiyantler" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Yapılandırma Kipi:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "Basitleştir" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "Çarpanlara ayır" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Açı birimi:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Çizim" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Çizimleri bir arada göster:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Tüm kenarlıkları göster:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Çizgilerin genişliği:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Örnekleme oranı:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Pürüzsüzleştirme Kipi:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "Doğal kübik Spline çizgileri" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Adımlar" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Açıklama Konumu:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Renkli Çizimler:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Izgarayı göster:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Çizim Biçemi:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Girdiyi Düzenle" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Yeni Girdi Ekle" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Ad boş olamaz." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Yerel belgelendirme ekle" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Yeni Belgelendirme Al" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Ek belgelendirmeleri indir" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Qt Sıkıştırılmış Yardım Dosyası geçerli değil." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Belgelendirme halihazırda içe aktarılmış" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Değiştir" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Sil" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Lütfen bunun GHNS ile kurulumuunu kaldırın." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Ek Belgelendirme Dosyaları İndir" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Ad" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Yol" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Ekle" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Simge:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Bir simge seçin" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Ad:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Bir ad girin" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Bir ad seç..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Yol:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Bir Qt Yardım dosyası seçin..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Bir Qt yardım dosyası seç..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" +"

      R' Yardım Sistemi: help() ve ?:


      R'de help() " +"işlevi ve ? yardım işleci, hem standart R dağıtımındaki paketler ve " +"katkıda bulunulan R işlevleri için belgelendirme sayfaları, veri kümeleri ve " +"diğer nesnelere erişim sağlar.

      Standart lm (doğrusal model) " +"işlevi belgelendirmesine erişmek için; örneğin help(lm) veya " +"help(\"lm\") komutunu girin veya ?lm veya ?\"lm\" yazın " +"(tırnaklar isteğe bağlıdır).

      Şu anda yüklü olmayan bir paket içindeki " +"işlev yardımına erişmek için ek olarak paketin adını sağlayın: Örneğin, MASS " +"paketindeki rlm() (hatasız doğrular model) işlevi yardımına erişmek " +"için help(rlm, package=\"MASS\")yazın.

      R'deki standart adlar " +"BÜYÜK ve küçük harfler, sayılar (0-9), alt çizgiler ve noktalar (.) içerir " +"ve bir nokta veya harf ile başlamalıdır. Standart adı olmayan bir nesne " +"yardımını almak için (örneğin ? yardım işleci), ad tırnak içine " +"alınmalıdır: Örneğin, help('?') veya ?\"?\"." +"

      Kitaplığınızdaki bir paket hakkında bilgiye erişmek için aynı " +"zamanda help() işlevini de kullanabilirsiniz — örneğin, " +"help(package=\"MASS\") — kullanılabilir yardım sayfalarını ve ek " +"diğer bilgileri görüntüler.

      İşlev yardım sayfaları, genelde onların " +"nice çalıştığını gösteren bir bölüm de içerir. Bu örnekleri geçerli R " +"oturumunda example() komutu ile çalıştırabilirsiniz: Örneğin, " +"example(lm)." + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R, S diline ve programlama arayüzüne benzeyen, istatistiksel " +"hesaplamalar ve grafikler için kullanılan bir programlama dili ve ortamıdır. " +"
      Çok çeşitli istatistiksel ve grafiksel teknikler (doğrusal ve doğrusal " +"olmayan modelleme, klasik istatistiksel testler, zaman-dizi çözümlemesi, " +"sınıflandırma, kümelendirme, ...) içerir ve oldukça genişletilebilir bir " +"yapıya sahiptir. S programalama dili sıklıkla istatistiksel metodoloji " +"üzerine yapılan araştırmalarda kullanılan bir araçtır, R dili ise buna açık " +"kaynaklı bir çözüm getirmektedir." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "%1 dosyası açılırken hata" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "R betik dosyası (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Komut Ayrıştırılırken Hata" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "Yerel R belgelendirmesi URL'si" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "Dosya seçim penceresini açmak için çift tıklayın" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R kaynak dosyaları (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage, GPL lisanlı açık kaynaklı bir matematik yazılımıdır.
      Halihazırda bulunan birçok açık kaynaklı paketin gücünü Python tabanlı bir " +"arayüzde birleştirir." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Sage çalıştırılabilirinin yolu" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Sage arka ucu için LaTeX dizgisini etkinleştir" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "%1 sonucu" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Son çıktı: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Python betik dosyası (*.py);;Sage betik dosyası (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Sage sürüm %1.%2 desteklenmiyor. Cantor ile çalışması için kurulumunuzu " +"desteklenen sürümlere güncelleyin." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Sage sürümü algılanamadı. Lütfen kurulumunuzu ve 'sage -v' çıktısını " +"denetleyin." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Bu ifade değerlendirilirken Sage süreci çöktü" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Sage süreci çöktü" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Bu ifade değerlendirilirken Sage süreci çıktı" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Sage süreci çıktı" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Sage başlatılamadı" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "LaTeX dizgisi:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"Sage LaTeX çıktısı her zaman doğru değildi, bundan dolayı LaTeX dizgisi daha " +"iyi bir deneyim için devre dışı bırakılabilir" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab, bir özgür yazılımdır, çapraz platform sayısal hesaplama " +"paketi ve sayısal olarak yönlendirilmiş üst düzey bir programlama dilidir. " +"Scilab, CeCILL lisansı altında dağıtılır (GPL uyumlu)." + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Sage çalıştırılabilirinin yolu" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Scilab betik dosyası (*.sce);;Scilab işlev dosyası (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "%1 dosyası halihazırda açık." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Dosya aç" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Örnekler İndir" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "Ö&rnek Aç" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Bir önceki çalışma sayfasına git" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Bir sonraki çalışma sayfasına git" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"Tüm desteklenen dosyalar (*.cws *ipynb);;Cantor Çalışma Sayfası (*.cws);;" +"Jupyter Defteri (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Arka Uç Bulunamadı

      \n" +"
      Şunları deneyebilirsiniz:\n" +"
      • Yapılandırma penceresinden ayarları değiştirin;
      • Şu " +"program için gerekli paketleri kurun:
      • %2
      " +msgstr[1] "" +"

      Arka Uç Bulunamadı

      \n" +"
      Şunları deneyebilirsiniz:\n" +"
      • Yapılandırma penceresinden ayarları değiştirin;
      • Şu " +"programlar için gerekli paketleri kurun:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Hata" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "%1 arka ucu kurulu değil" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"%1 arka ucu kurulu; ancak etkin değil. Kurulumunuzu ve Cantor ayarlarınızı " +"denetleyin" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Oturum %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Cantor parçacığı bulunamadı, hata %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Hesaplanıyor..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Hazır" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Değiştirildi" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" +"Birden çok kaydedilmemiş Çalışma Sayfası açık. Onları kapatmak istiyor " +"musunuz?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Cantor'u Kapat" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "Mevcut proje değiştirildi. Kaydetmek istiyor musunuz?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Projeyi Kaydet" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Biçimlendirme" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Öntanımlı olarak kullanılan arka uç" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Öntanımlı olarak dizgi yap" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Öntanımlı olarak sözdizim vurgulaması yap" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Öntanımlı olarak tamamlamayı etkinleştir" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Öntanımlı olarak ifade numaralandırmayı etkinleştir" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Öntanımlı olarak değişiklikleri çalışma sayfasında canlandır" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Öntanımlı olarak matematik ifadelerini metin ve Markdown girdilerinde $$.$$ " +"içinde sunmayı etkinleştir (pdflatex kurulu olmasını gerektirir)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "" +"Geçerli girdinin altındaki girdileri otomatik olarak yeniden değerlendir" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Arka ucu yeniden başlatırken onay iste" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Çalışma sayfasını Jupyter defteri biçiminde kaydederken TextEntry'nin zengin " +"metin biçimlendirmesini sakla" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Eski tarz Cantor girdileri yerleştirme biçemini kullan" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Gömülü matematik sunum hatasını göster" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Metin sonucu için görünür satırlar sınırı" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Fasıl için hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Fasıl için hiyerarşi yazıtipi boyutu" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Fasıl için yatık hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Fasıl için kalık hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Alt fasıl için hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Alt fasıl için hiyerarşi yazıtipi boyutu" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Alt fasıl için yatık hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Alt fasıl için kalın hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Bölüm için hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Bölüm için yatık hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Bölüm için kalın hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Alt bölüm için hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Alt bölüm için yatık hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Alt bölüm için kalın hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Paragraf için hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Paragraf için yatık hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Paragraf için kalın hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Alt paragraf için hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Alt paragraf için yatık hiyerarşi yazıtipi" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Alt paragraf için kalın hiyerarşi yazıtipi" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Düz Metin Kaydet" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "LaTex'e Dışa Aktar" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Çalışma Sayfasını Değerlendir" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Yakınlaştır" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "LaTeX Kullanan Dizgi" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Sözdizim Vurgulama" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Tamamlama" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Satır Numaraları" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Canlandırmalar" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Gömülü Matematik" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Arka Ucu Yeniden Başlat" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Girdiyi Değerlendir" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Komut Girdisi Ekle" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Metin Girdisi Ekle" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Markdown Girdisi Ekle" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "LaTeX Girdisi Ekle" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Sayfa Sonu Ekle" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Görsel Ekle" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Tüm Sonuçları Daralt" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Tüm Sonuçları Genişlet" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Tüm Sonuçları Kaldır" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Geçerli Girdiyi Kaldır" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Betik Düzenleyiciyi Göster" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Tamamlamayı Göster" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Cantor Çalışma Sayfası (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyter Defteri (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Farklı Kaydet" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Kaydet" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Tüm kullanılabilir hesaplama sonuçları kaybolacak. %1 programını gerçekten " +"yeniden başlatmak istiyor musunuz?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "%1 Yeniden Başlatılsın mı?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Yarıda Kes" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Oturum Hatası: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "İlklendirme tamamlandı" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "İlklendiriliyor..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[saltokunur]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" +"Geçerli çalışma sayfasını genel bir web sunucusuna karşıya yüklemek istiyor " +"musunuz?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Soru - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "Çalışma sayfası kaydedilmedi. Karşıya yüklemeden önce kaydetmelisiniz." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Uyarı - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Bu arka uç betikleri desteklemiyor." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "Dü&zen" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "&Görünüm" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Çalışma Sayfası" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Ayarlar" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Dosya" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Yeni" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Paneller" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "Ayar&lar" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Arka Plan Rengi" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Öntanımlı" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Metin Rengi" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Yazıtipi" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Kalın" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Yatık" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Boyutu Artır" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Boyutu Azalt" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Seç" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Öntanımlılara Sıfırla" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Sonuçları Göster" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Sonuçları Gizle" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Yardımı Göster" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Görünüş" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Yarıda kesildi" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Arama Çubuğu" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Bul:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Sonraki" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Önceki" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Değiştir:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "&Değiştir" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Tümünü &Değiştir" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Burada ara:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&BÜYÜK/küçük harf eşleştir" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Hiyerarşi Yazıtipleri" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Fasıl Yazıtipi" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Yazıtipi Ailesi:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Yazıtipi Boyutu:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Alt Fasıl Yazıtipi" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Bölüm Yazıtipi" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Alt Bölüm Yazıtipi" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Paragraf Yazıtipi" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Alt Paragraf Yazıtipi" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Fasıl" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Alt Fasıl" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Bölüm" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Alt Bölüm" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Paragraf" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Alt Paragraf" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Hiyerarşi Düzeyini Ayarla" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Katı Çizgi Biçemi" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Tireli Çizgi Biçemi" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Noktalı Çizgi Biçemi" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Tireli Noktalı Çizgi Biçemi" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Tireli Noktalı Noktalı Çizgi Biçemi" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Çizgi Kalınlığı" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "İnce" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Orta" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Kalın" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Çizgi Rengi" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Çizgi Biçemi" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Görseli Yapılandır" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Görsel ayarlarını yapılandırmak için burada çift tıklayın" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "%1 görseli yüklenemiyor" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Görsel sonucunu kaydet" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Görseller (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Görsel Ayarları" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Aç" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Görüntüleme Boyutu" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Genişlik" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Yükseklik" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Önizleme" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Yazdırma Boyutu" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Görüntüleme Boyutunu Kullan" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Görsel Ayarları" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(otomatik)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "pks" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Görsel dosyası aç" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "LaTeX kodunu göster" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"%1 çalıştırılabiliri için bir yol belirtilmedi. Uygulama ayarlarında doğru " +"yolu sağlayın ve yeniden deneyin." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"%2 çalıştırılabiliri için '%1' yolu yok. Uygulama ayarlarında doğru yolu " +"sağlayın ve yeniden deneyin." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"Belirtilen '%1' dosyası, bir çalıştırılabilire işaret etmiyor. Uygulama " +"ayarlarında doğru yolu sağlayın ve yeniden deneyin." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"%1 programı, çizim tümleştirme sınaması sırasında %2 milisaniyeden sonra " +"çalışmayı bitirmedi." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "Çizim tümleştirme sınaması sırasında %1 dosyası açılamadı." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "Çizim tümleştirme sınaması sırasında sonuç ayrıştırılamadı." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "latex çalıştırılabilirinin yolu" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "dvips çalıştırılabilirinin yolu" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Değer" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 bayt>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Kimden:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "Kime:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Ana başlık" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Apsis ölçeği" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Ordinat ölçeği" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Çizim başlığı:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Bu, desteklenmeyen Jupyter içerik türü (\"%1\")" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"%1 süreci beklenmedik bir biçimde sonlandı. Tüm hesaplama sonuçları kayboldu." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"%1 süreci, \"%2\" iletisiyle beklenmedik bir biçimde sonlandı. Tüm hesaplama " +"sonuçları kayboldu." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"%1 grafiksel paketi için destek seçtiniz; ancak destek, eksik gereksinimler " +"nedeniyle etkinleştirilemiyor. Bu paket için tümleştirme devre dışı " +"bırakılacak. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Matematiksel uygulamalar için bir KDE ön ucu" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Projeyi Sürdüren
      Qt5/KF5 portu, Scilab ve Python arka ucu" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Geliştirici" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Özgün yazar
      Projeyi Sürdüren (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra arka ucu" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave arka ucu" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Arayüz" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Cantor simgesi" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr " arka ucunu kullan" + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Açılacak belgeler." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "%1 dosyası açılamadı" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Düzenleme Kipine Gir" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Ekleri Temizle" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Cantor Matematik Hatası" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "\"%1\" görseli okunamadı. Hata \"%2\"" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Sayfa Sonu ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "İçeriğe git" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Anahtar sözcüklerde ara..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Geçerli belgelendirme sayfası metninde ara" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Yakınlaştırma düzeyini %​100 yap" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Kapat" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Sonra eşleşmeye git" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Önceki eşleşmeye git" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "BÜYÜK/küçük harf eşleştir" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "Dosya, İndirilenler'e başarıyla indirildi." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "İndirme Başarılı" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Cantor dosyaları" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Jupyter dosyaları" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "Tüm desteklenen dosyalar" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "Tüm dosyalar" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Ad:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Değer:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Yeni Değişken Ekle" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Değişkenleri Yükle" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Değişkenleri Kaydet" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Değişkenleri Kaldır" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Ara/Süz" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "BÜYÜK/küçük Harf Duyarlı" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Tam Sözcüğü Eşleştir" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Tüm değişkenleri kaldırmak istediğinize emin misiniz?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Dosya yükle" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Sonucu kaydet" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Sonucu kaldır" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Bir KDE metin düzenleyici bileşeni bulunamadı;\n" +"lütfen KDE kurulumunuzu denetleyin." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Betik Düzenleyici" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Betik Düzenleyici - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Bulunamadı" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Başlangıca ulaşıldı" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Sona ulaşıldı" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "%1 örnek değiştirildi" +msgstr[1] "%1 örnek değiştirildi" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Komutlar" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Sonuçlar" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Hatalar" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Metin" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX Kodu" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "Başlangıç:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" +"Seçili arka uç sistemi için yeni bir çalışma sayfası oluştur. Hiçbiri " +"seçilmemişse kullanıcıya, başlangıçta hangi sistemin kullanılması hakkında " +"sorulur." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Öntanımlı Arka Uç:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Çalışma sayfası:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" +"Arka uç sistemi tarafından destekleniyorsa hesap sonuçları için LaTeX " +"dizgisini etkinleştir" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "LaTeX dizgisi" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Sözdizim vurgulamasını etkinleştir" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Sözdizim vurgulama" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "Sözdizim tamamlamayı etkinleştir" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Satır numaralarını göster" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Satır numaraları" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Çalışma sayfasında canlandırma efektlerini etkinleştir" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" +"Etkinleştirilmişse metin girdileri çalışma sayfası kenarında hizalanır, " +"istem kenarında değil" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "Metin girdilerini girintileme" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Jupyter Defteri Biçimi'nde kaydederken metin girdileri için zengin metin " +"biçimi kullan" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "Değerlendirme:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"Etkinleştirilmişse arka uç sistemi yeniden başlatılmadan önce kullanıcıya " +"onay sorulur" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" +"Etkinleştirilmişse geçerli girdinin altındaki tüm girdiler otomatik olarak " +"değerlendirilir" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "Girdileri otomatik olarak yeniden değerlendir" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Sonuçtaki satır sayısı (0: sınırsız):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Bir komut girdisi sonucundaki en çok görünür satır sayısı. Sınırlandırmalar " +"olmadan çalışmak için 0 kullanın." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" +"Markdown girdilerindeki matematiksel ifadeler için LaTeX dizgisini " +"etkinleştir" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "Matematiksel ifadeler LaTeX ile" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "Matematiksel ifadelerdeki sunum hataları ile ilgili bildir" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Bul…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Ham Hücre Hedefleri" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Özel hedef ekle" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Metin Girdisine Dönüştür" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Ham Hücreye Dönüştür" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Hedef MIME türü:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Sonucu kopyala" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Sunulanı Göster" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Kodu Göster" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "HTML Kodunu Göster" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Düz Alternatifi Göster" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "HTML'yi Göster" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "HTML'yi Göster" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "Eps dosyası sunulamıyor. Ek paketlere gerek olabilir" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Metin sonucu kaydet" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "Metin Dosyaları (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "%1 dosyası yazılamıyor." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Dosya yazılamıyor." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "%1 dosyası kaydedilirken hata" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"Saltokunur kipte Cantor, dışa aktarmanın %1 için geçerli olacağının " +"garantisini veremez" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "latex.xsl çalışma sayfası yüklenirken hata" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "%1 dosyası açılamadı." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Dosya Aç" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Seçili dosya okuma için açılamadı." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "Seçili dosya, geçerli bir Cantor veya Jupyter proje dosyası değil." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Seçili dosya, geçerli bir Cantor proje dosyası değil." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Bu çalışma sayfası, artık desteklenmeyen Python2 ile oluşturulmuş. Yerine " +"Python3 kullanılacak." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python2 artık desteklenmiyor" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"%1 arka ucu bulunamadı. Girdileri düzenleme ve çalıştırma olanaklı değil." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"%1 arka ucunda sorun var,\n" +"lütfen yapılandırmanızı denetleyin veya gereken paketleri kurun.\n" +"Bu çalışma sayfasını yalnızca görüntüleyebileceksiniz." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Sürüm 4.5 ve daha düşük Jupyter defterleri (algılanan sürüm %1.%2) " +"desteklenmiyor." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Sürüm 4.5 veya daha yüksek Jupyter defterleri (algılanan sürüm %1.%2) " +"desteklenmiyor." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Bu defter, artık desteklenmeyen Python2 ile oluşturulmuş. Yerine Python3 " +"kullanılacak." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "anahtarlı bir nesne: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "nesne olmayan JSON değeri" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "Jupyter hücresi olmayan hatalı veri (%1) bulundu" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "Dosya, geçerli bir Jupyter defteri değil" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Geçersiz Jupyter defter şeması: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Şuna Dönüştür" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Komut" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Görsel" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Sayfa Sonu" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Yatay Çizgi" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Hiyerarşi Girdisi" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Sonrasına Ekle" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Öncesine Ekle" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Ekle" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Yakınlaştır" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Uzaklaştır" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Özgün Boyut" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Girdileri Yukarı Taşı" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Girdileri Aşağı Taşı" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Girdileri Değerlendir" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Girdileri Kaldır" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Komut Satırı Girdilerini Daralt" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Komut Satırı Girdilerini Genişlet" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Komut Satırı Girdilerini Kaldır" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Komut Girdisini Çalıştırmadan Dışarıda Tut" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Komut Girdisini Çalıştırmaya Ekle" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "Metin &Rengi..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Renk" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "Metin &Vurgulama..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Yazıtipi" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "Yazıtipi Boyutu" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Kalın" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Yatık" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "&Altı Çizili" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Üzeri Çizili" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "&Sola Hizala" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Sol" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "&Ortaya Hizala" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "Ortala" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "S&ağa Hizala" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Sağ" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "&İki Yana Hizala" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "İki Yana Hizala" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"Bu eylem, tüm sonuçları iptal olanağı olmadan kaldıracaktır. Emin misiniz?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Tüm sonuçları kaldır" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "Beyaz" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "Siyah" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "Koyu Kırmızı" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "Kırmızı" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "Açık Kırmızı" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "Koyu Yeşil" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "Yeşil" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "Açık Yeşil" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "Koyu Mavi" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "Mavi" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "Açık Mavi" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "Koyu Sarı" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "Sarı" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "Açık Sarı" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "Koyu Camgöbeği" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "Camgöbeği" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "Açık Camgöbeği" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "Koyu Mor" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "Mor" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "Açık Mor" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "Koyu Turuncu" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "Turuncu" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "Açık Turuncu" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "Koyu Gri" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "Gri" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "Açık Gri" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Yukarı Taşı" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Aşağı Taşı" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Bu girdiyi gerçekten kaldırmak istiyor musunuz?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Girdiyi Kaldır" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Girdiyi Sürükle" diff --git a/po/ug/cantor.po b/po/ug/cantor.po new file mode 100644 index 0000000..aaa898c --- /dev/null +++ b/po/ug/cantor.po @@ -0,0 +1,4655 @@ +# Uyghur translation for cantor. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sahran , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: Uyghur Computer Science Association \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "ئابدۇقادىر ئابلىز, غەيرەت كەنجى" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "sahran.ug@gmail.com, gheyret@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "ۋاقىتلىق توختا" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "باشلاش" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "توختا" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "سىزمىچىلىق" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "ئىپادە:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "قوشۇمچە تاللانمىلار:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "ھېسابلا(&C)" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "ھاسىلە" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "ئىنتېگرال" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "توۋەن چەك:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "يۇقىرى چەك:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "ماترىتسا قۇرۇش" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "ئىستون:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "قۇر:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "تەتۈر ماترىتسا" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "ئۆزگىرىشچان" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "ئاتى" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "ئەڭ كىچىك:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "ئەڭ چوڭ:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "قوليازما ئىجرا قىل" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "" + +#: backendchoosedialog.cpp:64 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Select the Backend" +msgstr "ئارقا ئۇچنى قايتا باشلاش" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "" + +#: backendchoosedialog.cpp:113 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"

      %1

      %2

      تېخىمۇ كوپ ئۆچۈر ئۈچۈن%3 قاراڭ
      " + +#: backendchoosedialog.cpp:125 +#, fuzzy, kde-format +#| msgid "" +#| "

      %1

      %2

      See %3 for more " +#| "information
      " +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"

      %1

      %2

      تېخىمۇ كوپ ئۆچۈر ئۈچۈن%3 قاراڭ
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "بۇ كۆڭۈلدىكى ئارقا ئۇچ بولسۇن" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "" + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "ئادەتتىكى" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Plot Integration:" +msgstr "ئىنتېگرال" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "ئىناۋەتلىك قىلىنغان" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plots" +msgstr "سىزمىچىلىق" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "PyPlot" +msgstr "سىزمىچىلىق" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documentation" +msgstr "ئاچىدىغان پۈتۈك" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "خاتالىق: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "" + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "گرامماتىكىلىق خاتالىق" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "" + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "plot.ly" +msgstr "سىزمىچىلىق" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "فۇنكسىيىلەر" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "ماۋزۇ" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "ئىپادە" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "قوش" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "چىقىرىۋەت" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "تىزىملىكنى تازىلا" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "ئۇسلۇب" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "سىزىقلار" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "نۇقتا" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "كۆزنەكچىلەر" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "سىتاتىسكا گرافىكى، چاسا دىئاگرامما" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "قەدەم" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "چېكىت" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "سىيلىق" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "يوق" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, fuzzy, kde-format +#| msgid "Steps" +msgid "Step si&ze" +msgstr "قەدەم" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "تاللانما" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "سول ئۈستى" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "ئوڭ ئۈستى" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "سول ئاستى" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "ئوڭ ئاستى" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "ئاستى" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "ھۆججەت تاللانمىلىرى" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "ھۆججەت تىپى" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "ERROR" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "ئاگاھلاندۇرۇش" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "تاللانما" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "قىممىتى" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "پۈتۈن سان" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "لوگىكىلىق قىممەت" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "نومۇر" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "ھۆججەت" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "ئونلۇق كەسىر" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "دەل" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "پەن-تېخنىكا" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "ئېنىقلىقى" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "باھا" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "رادىئان" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "گرادۇس" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "پىرسەنت" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "ئاددىيلاشتۇر" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "كۆپەيتكۈچىلەرگە ئايرىش" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "بۇلۇڭ بىرلىكى:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "قەدەم" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Variable" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "ئۆزگىرىشچان" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Add local documentation" +msgstr "ئاچىدىغان پۈتۈك" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Document to open" +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "ئاچىدىغان پۈتۈك" + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Additional options:" +msgid "Download additional documentations" +msgstr "قوشۇمچە تاللانمىلار:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "ئاتى" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, fuzzy, kde-format +#| msgid "Add" +msgctxt "@action:button" +msgid "Add" +msgstr "قوش" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "ئارقا ئۇچنى قايتا باشلاش" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name:" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "ئاتى:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Open file" +msgstr "مىسالنى ئاچ(&O)" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Download Examples" +msgstr "مىسالنى ئاچ(&O)" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "مىسالنى ئاچ(&O)" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "خاتالىق" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "ئەڭگىمە %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "ھېسابلاۋاتىدۇ…" + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "تەييار" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" + +#: cantor.cpp:565 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Close Cantor" +msgstr "Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "ئىشلىتىدىغان كۆۈلدىكى ئارقا ئۇچ" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "گرامماتىكىلىق يورۇتۇش" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "تاماملاش" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "قۇر نومۇرى" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Functions" +msgid "Animations" +msgstr "فۇنكسىيىلەر" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "ئارقا ئۇچنى قايتا باشلاش" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "" + +#: cantor_part.cpp:278 +#, fuzzy, kde-format +#| msgid "Insert Before" +msgid "Insert Markdown Entry" +msgstr "ئالدىغا قىستۇر" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "سۈرەت قىستۇر" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Expand All Results" +msgstr "نەتىجە" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Remove All Results" +msgstr "نەتىجە" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" + +#: cantor_part.cpp:578 +#, fuzzy, kde-format +#| msgid "Restart Backend" +msgid "Restart %1?" +msgstr "ئارقا ئۇچنى قايتا باشلاش" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "ئۈزۈلۈش" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "تەھرىر(&E)" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "كۆرۈنۈش(&V)" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "تەڭشەك(&S)" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "ھۆججەت(&F)" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "يېڭى(&N)" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "تاختايلار" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "تەڭشەك(&S)" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "Default" +msgstr "كۆڭۈلدىكى قىممەتلەر" + +#: commandentry.cpp:151 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Text &Color..." +msgid "Text Color" +msgstr "تېكىست رېڭى(&C)…" + +#: commandentry.cpp:176 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "&Font" +msgid "Font" +msgstr "خەت نۇسخا(&F)" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, fuzzy, kde-format +#| msgctxt "@action boldify selected text" +#| msgid "&Bold" +msgid "Bold" +msgstr "توم(&B)" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, fuzzy, kde-format +#| msgctxt "@action italicize selected text" +#| msgid "&Italic" +msgid "Italic" +msgstr "يانتۇ(&I)" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Show Results" +msgstr "نەتىجە" + +#: commandentry.cpp:338 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Hide Results" +msgstr "نەتىجە" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Show Help" +msgstr "نەتىجە" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "…" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "ئىزدە:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "كېيىنكى(&N)" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "ئالدىنقى(&P)" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "ئالماشتۇر:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "ئالماشتۇر(&R)" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "ھەممىنى ئالماشتۇر" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "ئىزدەش:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "چوڭ-كىچىكلىكىگە قارا(&M)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Font &Size" +msgid "Font Size:" +msgstr "خەت نۇسخا چوڭلۇقى(&S)" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Section" +msgstr "فۇنكسىيە" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "function" +msgid "Subsection" +msgstr "فۇنكسىيە" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Solid Line Style" +msgstr "تاماملاش ئۇسلۇبى:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Completion Style:" +msgid "Dot Line Style" +msgstr "تاماملاش ئۇسلۇبى:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Text &Color..." +msgid "Line Color" +msgstr "تېكىست رېڭى(&C)…" + +#: horizontalruleentry.cpp:351 +#, fuzzy, kde-format +#| msgid "Style" +msgid "Line Style" +msgstr "ئۇسلۇب" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Save image result" +msgstr "تۈرنى چىقىرىۋەت" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Image" +msgid "Images (%1)" +msgstr "سۈرەت" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "سۈرەت تەڭشەك" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "ئاچ" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "كەڭلىك" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "ئېگىزلىك" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, fuzzy, kde-format +#| msgid "&Previous" +msgid "Preview" +msgstr "ئالدىنقى(&P)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "بېسىش چوڭلۇقى" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "سۈرەت تەڭشەك" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "قىممەت" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "ئەۋەتكۈچى:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "خەت تاپشۇرۇۋالغۇچى:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra ئارقا ئۇچى" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave ئارقا ئۇچى" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "ئارايۈز" + +#: main.cpp:86 main.cpp:87 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor icon" +msgstr "Cantor" + +#: main.cpp:92 +#, fuzzy, kde-format +#| msgid "Use this backend" +msgid "Use backend " +msgstr "مەزكۇر ئارقا ئۇچنى ئىشلەت" + +#: main.cpp:95 +#, fuzzy, kde-format +#| msgid "Document to open" +msgid "Documents to open." +msgstr "ئاچىدىغان پۈتۈك" + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "" + +#: markdownentry.cpp:587 +#, fuzzy, kde-format +#| msgid "Syntax Error" +msgid "Cantor Math Error" +msgstr "گرامماتىكىلىق خاتالىق" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, fuzzy, kde-format +#| msgid "&Match case" +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "چوڭ-كىچىكلىكىگە قارا(&M)" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor" +msgid "Cantor files" +msgstr "Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Jupyter files" +msgstr "مىسالنى ئاچ(&O)" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, fuzzy, kde-format +#| msgid "file" +msgid "All files" +msgstr "ھۆججەت" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "ئاتى:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "قىممىتى:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Variable" +msgid "Add New Variable" +msgstr "ئۆزگىرىشچان" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Save Variables" +msgstr "تۈرنى چىقىرىۋەت" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Variables" +msgstr "تۈرنى چىقىرىۋەت" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, fuzzy, kde-format +#| msgid "Search in:" +msgid "Search/Filter" +msgstr "ئىزدەش:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, fuzzy, kde-format +#| msgid "file" +msgid "Load file" +msgstr "ھۆججەت" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"ك د ئې(KDE) تەھرىرلىگۈچ بۆلىكى تېپىلمىدى؛\n" +" ك د ئې(KDE) نىڭ ئورنىتىلىشىنى تەكشۈرۈڭ." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "تېپىلمىدى" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "بۇيرۇقلار" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "نەتىجە" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "خاتالىق" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "تېكىست" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "باشلاش" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "كۆڭۈلدىكى ئارقا ئۇچ" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "گرامماتىكا يورۇق كۆرسىتىشنى قوزغىتىش" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "گرامماتىكىلىق يورۇتۇش" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax completion" +msgstr "گرامماتىكا يورۇق كۆرسىتىشنى قوزغىتىش" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "قۇر نومۇرى" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "قۇر نومۇرى" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Evaluate" +msgid "Evaluation:" +msgstr "باھا" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Insert Before" +msgid "Markdown:" +msgstr "ئالدىغا قىستۇر" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, fuzzy, kde-format +#| msgid "Find:" +msgid "Find…" +msgstr "ئىزدە:" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "" + +#: textentry.cpp:76 +#, fuzzy, kde-format +#| msgid "Text Entry" +msgid "Convert to Text Entry" +msgstr "تېكىست كىرگۈ" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Results" +msgid "Copy result" +msgstr "نەتىجە" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "" + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, fuzzy, kde-format +#| msgid "&Open Example" +msgid "Open File" +msgstr "مىسالنى ئاچ(&O)" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Text Entry" +msgid "Convert To" +msgstr "تېكىست كىرگۈ" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Commands" +msgid "Command" +msgstr "بۇيرۇقلار" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Insert Before" +msgid "Markdown" +msgstr "ئالدىغا قىستۇر" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "سۈرەت" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "بەت ئايرىش بەلگىسى" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert Image" +msgid "Insert After" +msgstr "سۈرەت قىستۇر" + +#: worksheet.cpp:1856 +#, fuzzy, kde-format +#| msgid "Insert Before" +msgid "Insert Before" +msgstr "ئالدىغا قىستۇر" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "قىستۇر" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "بېسىش چوڭلۇقى" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Text Entry" +msgid "Move Entries Down" +msgstr "تېكىست كىرگۈ" + +#: worksheet.cpp:1933 +#, fuzzy, kde-format +#| msgid "Evaluate" +msgid "Evaluate Entries" +msgstr "باھا" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Entries" +msgstr "تۈرنى چىقىرىۋەت" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Command Entry Results" +msgstr "تۈرنى چىقىرىۋەت" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "تېكىست رېڭى(&C)…" + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "رەڭ" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "تېكىستنى يورۇت(&H)…" + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "خەت نۇسخا(&F)" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "خەت نۇسخا چوڭلۇقى(&S)" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "توم(&B)" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "يانتۇ(&I)" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "ئاستى سىزىق(&U)" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "ئۆچۈرۈش سىزىقى(&S)" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "سولغا توغرىلا(&L)" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "سول" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "ئوتتۇرىغا توغرىلا(&C)" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "مەركەز" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "ئوڭغا توغرىلا(&R)" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "ئوڭ" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "ئوڭ-سول تەرىپى تەكشى(&J)" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "ئوڭ-سول تەرىپى تەكشى" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove all results" +msgstr "تۈرنى چىقىرىۋەت" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "" + +#: worksheetentry.cpp:68 +#, fuzzy, kde-format +#| msgid "Ready" +msgid "Red" +msgstr "تەييار" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "تۈرنى چىقىرىۋەت" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "" + +#~ msgid "Defaults" +#~ msgstr "كۆڭۈلدىكى قىممەتلەر" + +#, fuzzy +#~| msgid "Plot" +#~ msgid "Plot.ly" +#~ msgstr "سىزمىچىلىق" + +#, fuzzy +#~| msgid "Document to open" +#~ msgid "Documentation:" +#~ msgstr "ئاچىدىغان پۈتۈك" + +#, fuzzy +#~| msgid "Insert Image" +#~ msgid "Choose Image" +#~ msgstr "سۈرەت قىستۇر" + +#~ msgid "Text Entry" +#~ msgstr "تېكىست كىرگۈ" + +#, fuzzy +#~| msgid "Insert Before" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "ئالدىغا قىستۇر" + +#, fuzzy +#~| msgid "Insert Image" +#~ msgid "Insert Image Attachment" +#~ msgstr "سۈرەت قىستۇر" + +#~ msgid "Unnamed" +#~ msgstr "ئاتسىز" + +#~ msgid "Choose the Backend to use:" +#~ msgstr "ئىشلىتىدىغان ئارقا ئۇچنى تاللاڭ:" + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "Other" +#~ msgstr "باشقا" + +#~ msgid "Main Toolbar" +#~ msgstr "ئاساسىي قورال بالداق" + +#~ msgid "Popup" +#~ msgstr "سەكرىمە" diff --git a/po/uk/cantor.po b/po/uk/cantor.po new file mode 100644 index 0000000..fa49e28 --- /dev/null +++ b/po/uk/cantor.po @@ -0,0 +1,5411 @@ +# Translation of cantor.po to Ukrainian +# Copyright (C) 2009-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Yuri Chornoivan , 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: cantor\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2022-08-07 08:37+0300\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.12.0\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Юрій Чорноіван" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "yurchor@ukr.net" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "Призупинити" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "Почати" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "Зупинити" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Save animation result" +msgstr "Зберегти анімацію-результат" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "анімації (*.gif)" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "Складне креслення" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "Креслення" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "Вираз:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "Додаткові параметри:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "&Креслення" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "Задіяний параметр" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "&Обчислення" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "Продиференціювати" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "Змінна:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "Порядок:" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "&Пакунок" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "Імпортувати пакунок" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "Пакунок:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "Проінтегрувати" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "Нижня межа:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "Верхня межа:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "визначений інтеграл" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "&Лінійна алгебра" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "Створити матрицю" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "Стовпчиків:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "Рядків:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "Обчислити власні значення" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "Матриця:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "Обчислити власні вектори" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "Знайти обернену матрицю" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "Двовимірний графік" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "Змінна" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "Назва" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "Мінімум:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "Максимум:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "Тривимірний графік" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "Перша змінна" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "Друга змінна" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "Виконати скрипт" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "Розв’язати рівняння" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "Рівняння:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "Змінні:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "Виберіть модуль" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      Рекомендована версія: %2
      " + +# %3 — це сайт СКА +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      Див. %2, щоб дізнатися більше." + +# %3 — це сайт СКА +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      Не виконано декілька з вимог: " +"%1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "Зробити цей модуль типовим" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia — високорівнева високошвидкісна динамічна мова для виконання " +"інженерних обчислень. Синтаксис мови подібний до синтаксису інших середовищ " +"для виконання технічних обчислень. Передбачено гнучкий компілятор, виконання " +"паралельних обчислень, визначення точності представлення чисел та бібліотеку " +"із широким спектр математичних функцій." + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"Вказана у параметра програми адреса виконуваного файла Julia має вказувати " +"безпосередньо на виконуваний файл. Не можна використовувати символічні " +"посилання. Будь ласка, вкажіть чинний шлях у параметрах програми і повторіть " +"спробу." + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"Сantor не вдалося визначити версію Julia для %1. Будь ласка, вкажіть шлях до " +"виконуваного файла Julia належним чином (не можна використовувати символічні " +"посилання) і повторіть спробу." + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"Ви намагаєтеся користуватися Cantor у поєднанні із Julia версії %1.%2.%3. Цю " +"версію Cantor було зібрано з підтримкою Julia версії %4.%5.%6. Будь ласка, " +"вкажіть шлях до відповідної версії Julia або зберіть Cantor із використанням " +"бібліотек версії %1.%2.%3." + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Шлях до програми інтерактивного керування Julia" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "Увімкнути керування змінними" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "Інтегрувати графіки до робочого аркуша" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "Графічний пакунок для допоміжного засобу креслення" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# Вибачте, але у Gadfly не передбачено підтримки просторових креслень" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "файл скрипту Julia (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "Помилка — Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" +"Неможливо увійти до сеансу Julia через внутрішні проблеми julia — не " +"знайдено внутрішнього файла — «%1»" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" +"Неможливо увійти до сеансу Julia через невідомі внутрішні проблеми julia" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Процес Julia припинив роботу." + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "Не вдалося запустити процес Julia." + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "Не вдалося виконати обмін даними з процесом Julia з невідомих причин." + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"Для Julia у поточній версії передбачено підтримку лише GR (https://gr-" +"framework.org/), бібліотеки для візуалізації даних у програмах. Спочатку вам " +"слід встановити цей пакунок, якщо ви цього ще не зробили. Для цього віддайте " +"команду Pkg.install(\"GR\") у Cantor або у REPL Julia. Зауважте, що " +"встановлення є досить тривалою операцією. Краще виконати її у REPL Julia, " +"оскільки там ви зможете стежити за поступом встановлення пакунка." + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "Загальне" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "Виконуваний файл:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "Інтеграція графіків:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "" +"Якщо позначено, креслення буде показано на робочому аркуші. Якщо не " +"позначено, креслення буде показано у зовнішньому вікні." + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "увімкнено" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "Керування змінними:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" +"Стежити за створенням і знищенням змінних і показувати наявні змінні на " +"панелі змінних." + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "Формат вбудованих креслень:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "Внутрішній формат креслень, якщо увімкнено вбудовування креслень." + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "Графічний пакунок для допоміжного засобу креслення" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "Пакунок для допоміжного засобу креслення" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "Креслення" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "Автозапуск" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "Команди для автоматичного запуску" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "Документація" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra&language=uk" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "Список скриптів, які буде автоматично запущено на початку сеансу" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "Помилка: %1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"Цей пункт автоматично запускає команди, які буде виконано під час створення " +"робочого аркуша. Ці команди можуть бути корисними для завантаження потрібних " +"модулів, зміни середовища тощо." + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua — проста і невибаглива до ресурсів скриптова мова програмування з " +"простим процедурним синтаксисом. Для Lua створено декілька бібліотек для " +"математичного і наукового програмування." + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "Шлях до програми luajit" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "файл скрипту Lua (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "Шлях до luajit:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" +"

      Довідкова система Maxima

      Функція apropos

      Шукає " +"ключові слова Maxima, які можуть трапитися будь-де у записі; назва " +"має бути рядком або символом. Отже, apropos(exp) повертає список усіх " +"прапорців і функцій, частиною назви яких є рядок «exp», зокрема expand, exp та exponentialize. Тому, якщо ви пам'ятаєте лише " +"частину назви команди або змінної Maxima скористайтеся цією командою, щоб " +"згадати решту назви. Так само, ви можете ввести apropos(tr_), щоб " +"отримати список багатьох перемикачів, які пов'язано із транслятором, " +"більшість з яких починається з tr_.

      apropos(\"\") " +"поверне список усіх назв Maxima.

      apropos повертає порожній " +"список [], якщо жодної назви не буде знайдено.

      Функція " +"describe

      describe(рядок) є еквівалентом describe(рядок, " +"exact).

      describe(рядок, exact) знаходить запис із заголовком, " +"який дорівнює (без врахування регістру символів) рядку «рядок», якщо такий " +"запис існує.

      describe(рядок, inexact) знаходить усі " +"документовані записи, які містять рядок «рядок» у заголовку. Якщо таких " +"записів декілька, Maxima попросить користувача вибрати запис або записи, які " +"слід показати.

      ? щось (із пробілом між ? і щось) " +"є рівнозначним describe(\"щось\", exact), а ?? щось — " +"describe(\"щось\", inexact).

      describe(, inexact) " +"видасть список усіх тем, які документовано у інтернет-підручнику." +"

      describe додає лапки до аргументу команди. describe " +"повертає true, якщо виявлено якусь документацію, інакше, повертає " +"false.

      Функція example

      example(тема) " +"виводить деякі приклади за ключовим словом тема, яке є символом або " +"рядком. Щоб отримати приклади для операторів, подібних до if, do або lambda, аргумент має бути рядком, наприклад example(\"do" +"\"). example враховує регістр символів. Більшість тем є назвами " +"функцій.

      example() повертає список усіх розпізнаних тем." +"

      Назва файла, що містить приклад, задається загальною змінною " +"параметра manual_demo, типовим є \"manual.demo\"." +"

      example додає лапки до аргументу команди. example " +"повертає done, якщо буде знайдено хоч якісь приклади або надано " +"аргумент. В інших випадках example повертає список усіх розпізнаних " +"тем." + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima — це система для роботи з символічними і числовими виразами, " +"зокрема диференціювання, інтегрування, розкладу у ряди Тейлора, виконання " +"перетворення Лапласа, розв’язання звичайних диференціальних рівнянь, роботи " +"з поліномами, множинами, списками, векторами, матрицями і тензорами. За " +"допомогою Maxima можна отримувати результати з високою точністю, оскільки " +"програма використовує точні дроби і виконує обчислення з довільною " +"визначеною точністю. Maxima здатна креслити графіки функцій та графічно " +"відображати дані у двох та трьох вимірах." + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Шлях до виконуваного файла Maxima" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "Помилка: забагато */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "Помилка: забагато /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "Помилка: перед ; мало бути \"" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "Очікуємо на завершення побудови креслення" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "пакетний файл Maxima (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "Не вдалося запустити Maxima" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Аварійне завершення Maxima. Перезапуск..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "" +"Протягом нетривалого часу Maxima аварійно завершила роботу двічі. Спроби " +"запуску модуля припинено." + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave — високорівнева оболонка мови програмування, основним " +"призначенням якої є обчислення.
      У оболонці передбачено зручний " +"інтерфейс командного рядка для числового розв’язання лінійних і нелінійних " +"задач, проведення інших числових експериментів. Мова програмування має " +"високий рівень сумісності з мовою Matlab." + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "файл скрипту Octave (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "Синтаксична помилка" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "Не вдалося пройти текст на інтегрування графіка." + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "Інтегрування графіків вимкнено." + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"Вбудовування креслень не працюватиме, оскільки Cantor виявлено, що Octave не " +"може створювати креслень, оскільки немає модуля для їх обробки. Цей висновок " +"було зроблено через те, що функція available_graphics_toolkits() вивела " +"порожнє значення. Здається, вам слід встановити деякі додаткові пакунки " +"операційної системи, наприклад gnuplot, fltk або qt, щоб мати змогу " +"створювати креслення." + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python є доволі потужною мовою динамічного програмування, яка " +"використовується у багатьох комплектах програм. Існує декілька пакунків " +"Python для наукового програмування." + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# Вибачте, але у Bokeh не передбачено підтримки просторових креслень" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "файл скрипту Python (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Сервер Python Cantor припинив роботу." + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "Не вдалося запустити сервер Python Cantor." + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "" +"Не вдалося виконати обмін даними із сервером Python Cantor з невідомих " +"причин." + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"Для використання інтегрованої графіки за допомогою пакунка Matplotlib, вам " +"слід спочатку встановити пакунок Python «matplotlib»." + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"Для користування інтегрованою графікою з пакунка Plot.ly, вам слід " +"встановити пакунок Python «plotly» і спеціальний сумісний із orca " +"виконуваний файл Plot.ly. Докладніший опис можна знайти у розділі «Static " +"Image Export» документації до Plot.ly." + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor — діалогове вікно креслення" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "Функції" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "Заголовок" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "Вираз" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "Додати" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "Вилучити" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "Спорожнити список" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "Змінна X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "Стиль" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "лінії" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "точки" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "точки та лінії" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "стовпчики" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "гістограма" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "сходинки" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "японські свічки" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "крапки" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "Згладжування" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "не визначено" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "монотонне" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "природні кубічні сплайни" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "крива Безьє" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "крива Безьє (монотонна)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "Діапазон графіка" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "Діапазон за X" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "&Частота поділу" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "&Розмір кроку" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "Параметри" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "Заголовок графіка" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "Мітка вісі X" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Мітка вісі Y" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "Розташування умовних позначень" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "сховати умовні позначення" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "вгорі ліворуч" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "вгорі праворуч" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "внизу ліворуч" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "внизу праворуч" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "під графіком" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "ззовні" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "Показувати сітку" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "Показувати рамку" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "Використовувати кольори" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "Показувати вбудованим" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "Логарифмічна шкала за X" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Логарифмічна шкала за Y" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "Параметри файлів" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "Зберегти графік до файла" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "Тип файла" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "Визначати за назвою" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! — це не звичайна програмна реалізація найдешевшого з " +"калькуляторів. Qalculate! намагається повністю використати чудовий " +"інтерфейс, потужність та гнучкість сучасних комп’ютерів. Основну увагу у " +"Qalculate! приділено зручності введення даних. Замість введення кожного " +"числа у математичному виразі окремо ви можете безпосередньо вписати цілий " +"вираз і пізніше внести до нього зміни. Обробка виразів є доволі гнучкою і " +"поблажливою до помилок. Якщо ви введете щось неправильно, Qalculate! " +"повідомить вам про це. Якщо звести вираз до числового результату не " +"вдасться, програма не поверне повідомлення про помилку. Qalculate! " +"максимально спростить вираз і повідомить вам відповідь. Окрім чисел та " +"арифметичних операторів, у виразах можуть міститися будь-які комбінації " +"змінних, одиниць та функцій." + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"Визначає спосіб автоматичного перетворення одиниць. Якщо має значення true, " +"перетворювати на найближчі одиниці СІ (форму з найкоротшим записом)." + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "Типова одиниця кутів для тригонометричних функцій." + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "Основа для обробки та обчислень." + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "Визначає, чи слід спрощувати або розкладати на множники результат." + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "" +"Визначає спосіб показу раціональних чисел: десяткові дроби, звичайні дроби " +"чи проміжний варіант." + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"Позначати нескінченні послідовності цифр трьома точками замість округлення " +"(наприклад показувати для 2/3 0.666666... замість 0.666667)." + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"Використовувати всі десяткові префікси СІ. Якщо має значення false, " +"префікси, які утворюються множенням на степінь тисячі (санти-, деци-, дека-, " +"гекто-), не буде автоматично використано." + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "" +"Якщо має значення true, використовувати від’ємні степені замість ділення " +"(наприклад, показувати замість 5/x^2 5*x^-2)." + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "Формат показу чисел." + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "" +"Якщо має значення true, графіки буде показано всередині робочого аркуша. " +"Якщо має значення false, графіки буде показано у окремому вікні." + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "Визначає, чи слід використовувати кольори на графіках." + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "Визначає, чи слід показувати на графіках координатну сітку." + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "Визначає, чи слід малювати рамку з усіх боків від графіка." + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "Товщина ліній у пікселях." + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "Кількість кроків інтерполяції, які буде використано під час малювання." + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "Режим згладжування на графіках." + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "Стиль графіків." + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "Розташування умовних позначень на графіках." + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "" +"Qalculate повідомляє про неможливість виведення даних. Чи встановлено " +"gnuplot?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "не вистачає %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 має бути числом." + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 має бути цілим числом." + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 має бути булевим значенням." + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "некоректний параметр %1: %2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "виявлено декілька виразів у одній команді креслення (%1 і %2)." + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "ПОМИЛКА" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "ПОПЕРЕДЖЕННЯ" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "Функції, змінної або одиниці з вказаною назвою не існує." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "Функція: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "Інтерфейс креслення" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "" +"Креслить графіки однієї або декількох функцій на обчислювальному аркуші або " +"у окремому вікні." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "вираз" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "параметр" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "значення" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "ціле" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "булеве" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "число" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "типове значення: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "Назва функції" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "Мітка заголовка" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "Мітка вісі x" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Мітка вісі y" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"Файл зображення, до якого слід вивести дані. Порожнє значення призведе до " +"показу графіка у вікні на екрані. Якщо встановлено inline=true, зображення " +"буде показано незалежно від значення цього параметра." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "" +"Тип файла зображення, до якого слід зберегти дані. Можливі значення: auto, " +"png, ps, eps, latex, svg, fig." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "" +"Встановіть значення true для виведення даних у кольорі, false — чорно-біле " +"зображення." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "Мінімальне значення за віссю X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "Максимальне значення за віссю X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "Визначає, чи слід використовувати для вісі X логарифмічну шкалу." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Визначає, чи слід використовувати для вісі Y логарифмічну шкалу." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "Основа логарифма для вісі X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Основа логарифма для вісі Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "Визначає, чи слід показувати на кресленні координатну сітку." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "" +"Визначає, чи слід малювати навколо креслення рамку з усіх боків (не лише з " +"боку осей)" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "Товщина ліній." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"Визначає розташування умовних позначень графіка. Можливі значення: none, " +"top_left, top_right, bottom_left, bottom_right, below, outside." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "" +"Режим згладжування графіка. Можливі значення: none, unique, csplines, " +"bezier, sbezier." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"Стиль графіка. Можливі значення: lines, points, points_lines, boxes, " +"histogram, steps, candlesticks, dots." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "Використовувати шкалу на другій вісі X." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "Використовувати шкалу на другій вісі Y." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "" +"Визначає, чи слід вбудовувати графік у поточне вікно замість малювання його " +"у новому вікні." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "Відстань між двома інтерполяційними точками. Також див. steps." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "Кількість точок інтерполяції. Також див. step." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "Назва змінної для вісі X. Це має бути ще не використана змінна." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "Зберегти змінні до файла" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "" +"Зберегти всі поточні визначені змінні до файла. Перезавантажити змінні можна " +"за допомогою %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "файл" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "файл: файл, до якого слід зберегти дані" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "Завантажити змінні з файла" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "" +"Завантажити змінні з файла %1, який раніше було створено за допомогою %1." + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "файл: файл, який слід завантажити" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "Основа числення:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "Формат показу дробів:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "десятковий" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "точний" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "дробовий" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "комбінований" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "Формат показу чисел:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "простий" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "інженерний" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "точний" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "Позначати нескінченні послідовності:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "Використовувати всі префікси СІ:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "Використовувати від’ємні степені:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "Обчислення" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "Перетворити на найкращі одиниці СІ:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "радіани" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "градуси" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "градіани" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "Режим структурування:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "спрощення" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "розкладання на множники" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "Одиниця кутів:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "Креслення" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "Вбудовувати креслення:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "Показувати всі межі:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "Товщина ліній:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "Ділянок розбиття:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "Режим згладжування:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "природні кубічні сплайни" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "сходинки" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "Розташування умовних позначень:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "Кольорові графіки:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "Показувати сітку:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "Стиль графіка:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "Внесення змін до запису" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "Додавання нового запису" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "Назва не може бути порожньою." + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "Додати локальну документацію" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "Отримати нову документацію" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "Отримати додаткову документацію" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "Некоректний файл стиснутої довідки до Qt." + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "Документацію вже імпортовано" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "Змінити" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "Вилучити" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "Будь ласка, вилучіть це за допомогою засобу отримання нових даних." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "Встановлення додаткових файлів документації" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "Назва" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "Шлях" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "Додати" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "Піктограма:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "Вибрати піктограму" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "Назва:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "Введіть назву" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "Виберіть назву…" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "Шлях:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "Вибрати файл довідки з Qt…" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "Вибрати файл довідки з Qt…" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" +"

      Довідкова система R: help() і ?:


      Функція " +"help() і оператор довідки ? в R надають доступ до сторінок " +"документації щодо функцій R, наборів даних та інших об'єктів, як для " +"пакунків у стандартному дистрибутиві R, так і для додаткових пакунків." +"

      Щоб, наприклад, отримати доступ до документації щодо стандартної " +"функції lm (лінійна модель), введіть команду help(lm), " +"або help(\"lm\"), або ?lm, або ?\"lm\" (тобто лапки є " +"необов'язковими).

      Щоб отримати доступ до довідки щодо функції у " +"пакунку, який не завантажено, вкажіть додаткову назву пакунка. Наприклад, " +"щоб отримати документацію щодо функції rlm() (стійка лінійна модель) " +"у пакунку MASS, help(rlm, package=\"MASS\").

      Стандартні назви " +"в R складають з літер верхнього і нижнього регістрів, цифр (0-9), символів " +"підкреслення (_) та крапок (.) і мають починатися з літери або крапки. Щоб " +"отримати довідку щодо об'єкта із нестандартною назвою (наприклад, оператора " +"довідки ?), назву слід взяти у лапки, приклад: help('?') або " +"?\"?\".

      Ви також можете скористатися функцією help() " +"для доступу до відомостей щодо пакунка у вашій бібліотеці — наприклад, " +"help(package=\"MASS\") — виведе покажчик доступних сторінок довідки " +"для пакунка разом із додатковими відомостями.

      Сторінки довідки щодо " +"функцій, зазвичай, включають розділ із ілюстративними прикладами роботи " +"функції. Ви можете виконати ці приклади у поточному сеансі R за допомогою " +"команди example(). Приклад: example(lm)." + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R — це мова і середовище для статистичних обчислень та побудови " +"графіків, подібна до мови і середовища S.
      У середовищі реалізовано " +"широкий спектр статистичних та графічних методик (лінійне і нелінійне " +"моделювання, класичні статистичні перевірки, аналіз часових послідовностей, " +"класифікацію, групування тощо). Можливості середовища досить просто " +"розширити. Мова S часто є основним рушієм у статистичних дослідженнях, R " +"надає вам змогу виконувати подібні дослідження за допомогою вільного " +"програмного забезпечення." + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "Помилка під час відкриття файла %1" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "файл скрипту R (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "Помилка під час обробки команди" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "Адреса локальної документації до R" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "" +"Двічі клацніть лівою кнопкою миші, щоб відкрити діалогове вікно вибору файла" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|файли кодів R (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage — це вільна система математичного програмного забезпечення з " +"відкритим кодом, випущена за умов дотримання GPL.
      У ній поєднується " +"потужність багатьох пакунків з відкритим програмним кодом та загальний " +"заснований на Python інтерфейс." + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Шлях до виконуваного файла Sage" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "Увімкнути верстання LaTeX для модуля Sage" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "Результат %1" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"Останніми виведеними даними були: \n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "файл скрипту Python (*.py);;файл скрипту Sage (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"Підтримки версії Sage %1.%2 не передбачено. Будь ласка, оновіть встановлені " +"пакунки до підтримуваних версій, щоб можна було працювати із Sage у Cantor." + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"Не вдалося визначити версію Sage. Будь ласка, перевірте, чи належним чином " +"встановлено програму і чи виводить вона корисні дані у відповідь на команду " +"«sage -v»." + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Під час спроби обчислення за виразом процес Sage аварійно завершився" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Процес Sage завершився аварійно" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Під час спроби обчислення за виразом процес Sage завершив роботу" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Процес Sage завершив роботу" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "Не вдалося запустити Sage" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "Типографський набір LaTeX:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" +"Виведений Sage код LaTeX не завжди є правильним, тому іноді кращих " +"результатів можна досягти, якщо вимкнути верстання latex" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab є вільним програмним забезпеченням, працює на багатьох " +"платформах. Це програмне забезпечення призначено для виконання обчислень і " +"керується високорівневою мовою програмування. Scilab поширюється за умов " +"дотримання ліцензії CeCILL (сумісної з GPL)" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Шлях до виконуваного файла Scilab" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;файл скрипту Scilab (*.sce);;файл функції Scilab (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "Файл %1 вже відкрито." + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "Відкриття файла" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "Отримати приклади" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "&Відкрити приклад" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "Перейти до попереднього робочого аркуша" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "Перейти до наступного робочого аркуша" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"усі підтримувані файли (*.cws *ipynb);;робочий аркуш Cantor (*.cws);;" +"нотатник Jupyter (*.ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      Не знайдено модулів.

      \n" +"
      Можете спробувати:\n" +"
      • змінити параметри у діалоговому вікні налаштування
      • " +"
      • встановити однієї з таких програм:
      • %2
      " +msgstr[1] "" +"

      Не знайдено модулів.

      \n" +"
      Можете спробувати:\n" +"
      • змінити параметри у діалоговому вікні налаштування
      • " +"
      • встановити пакунки однієї з таких програм:
      • %2
      " +msgstr[2] "" +"

      Не знайдено модулів.

      \n" +"
      Можете спробувати:\n" +"
      • змінити параметри у діалоговому вікні налаштування
      • " +"
      • встановити пакунки однієї з таких програм:
      • %2
      " +msgstr[3] "" +"

      Не знайдено модулів.

      \n" +"
      Можете спробувати:\n" +"
      • змінити параметри у діалоговому вікні налаштування
      • " +"
      • встановити пакунки цієї програми:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "Помилка" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "Модуль %1 не встановлено" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "" +"Модуль %1 встановлено, але не задіяно. Будь ласка, перевірте, чи належним " +"чином його встановлено і чи правильно визначено параметри Cantor." + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "Сеанс %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "Не вдалося знайти модуль Cantor. Помилка %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "Обчислення…" + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "Виконано" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "Змінено" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "" +"Відкрито декілька робочих аркушів, зміни у яких не збережено. Хочете закрити " +"їх усі?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "Закрити Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "До поточного проєкту було внесено зміни. Хочете зберегти їх?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "Зберегти проєкт" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "Форматування" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "Модуль, який використовуватиметься типово" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "Типово виконувати верстання" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "Типово виконувати підсвічування синтаксису" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "Типово увімкнути доповнення" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "Типово, увімкнути нумерування виразів" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "Типово анімувати зміни на робочому аркуші" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"Увімкнути обробку математичних формул у конструкціях $$..$$ у записах Text " +"та Markdown (потребує встановлення pdflatex)" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "Автоматично переобчислювати записи під поточним" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "Підтверджувати перезапуск модуля" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" +"Зберігати форматування тексту у TextEntry при збереженні у робочому аркуші у " +"форматі нотатника Jupyter" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "Розташування записів Cantor у старому стилі" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "Помилка обробки під час спроби показати вбудовані формули" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "Обмежити кількість видимих рядків для текстового результату" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "Шрифт для глави в ієрархії" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "Розмір шрифту для глави в ієрархії" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "Курсивний шрифт для глави в ієрархії" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "Напівжирний шрифт для глави в ієрархії" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "Шрифт для підглави в ієрархії" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "Розмір шрифту для підглави в ієрархії" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "Курсивний шрифт для підглави в ієрархії" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "Напівжирний шрифт для підглави в ієрархії" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "Шрифт для розділу в ієрархії" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "Курсивний шрифт для розділу в ієрархії" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "Напіжирний шрифт для розділу в ієрархії" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "Шрифт для підрозділу в ієрархії" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "Курсивний шрифт для підрозділу в ієрархії" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "Напівжирний шрифт для підрозділу в ієрархії" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "Шрифт для параграфа в ієрархії" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "Курсивний шрифт для параграфа в ієрархії" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "Напівжирний шрифт для параграфа в ієрархії" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "Шрифт для підпараграфа в ієрархії" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "Курсивний шрифт для підпараграфа в ієрархії" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "Напівжирний шрифт для підпараграфа в ієрархії" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "Зберегти як простий текст" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "Експортувати до LaTeX" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "Виконати обчислення на аркуші" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "Масштаб" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "Показ з використанням LaTeX" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "Підсвічування синтаксису" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "Доповнення" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "Номери рядків" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "Анімації" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "Вбудовані формули" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "Перезапустити модуль" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "Обчислити запис" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "Вставити запис команди" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "Вставити текстовий запис" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "Вставити запис Markdown" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "Вставити запис LaTeX" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "Вставити розрив сторінки" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "Вставити зображення" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "Згорнути усі результати" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "Розгорнути усі результати" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "Вилучити усі результати" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "Вилучити поточний запис" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "Відкрити редактор скриптів" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "Показувати доповнення" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "CantorPart" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "© Alexander Rieder, 2009–2015" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "робочий аркуш Cantor (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "нотатник Jupyter (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "Зберегти як" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "Зберегти" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "" +"Усі доступні результати обчислень буде втрачено. Ви справді хочете " +"перезапустити %1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "Перезапустити %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "Перервати" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "Помилка сеансу: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "Ініціалізацію завершено" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "Ініціалізація…" + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[лише читання]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "Бажаєте вивантажити поточний робочий аркуш на відкритий вебсервер?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "Питання — Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "" +"Дані робочого аркуша не збережено. Вам слід зберегти дані, перш ніж їх " +"вивантажувати." + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "Попередження — Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "Цей модуль не підтримує скриптів." + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "З&міни" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "П&ерегляд" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "&Аркуш" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "Параметри" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "&Файл" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "&Новий аркуш" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "Панелі" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "П&араметри" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "Колір тла" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "Типовий" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "Колір тексту" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "Шрифт" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "Напівжирний" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "Курсив" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "Збільшити розмір" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "Зменшити розмір" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "Вибрати" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "Повернутися до типового" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "Показати результати" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "Приховати результати" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "Показати довідку" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "Вигляд" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "Перервано" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "Панель пошуку" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "…" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "Знайти:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "&Наступний" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "&Попередній" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "Замінити:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "З&амінити" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "Замінити &всі" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "Шукати у:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "&Враховувати регістр" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "Шрифти ієрархії" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "Шрифт глави" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "Гарнітура шрифту:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "Розмір шрифту:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "Шрифт підглави" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "Шрифт розділу" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "Шрифт підрозділу" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "Шрифт параграфа" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "Шрифт підпараграфа" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "Глава" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "Підглава" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "Розділ" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "Підрозділ" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "Параграф" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "Підпараграф" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "Встановити рівень ієрархії" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "Стиль суцільної лінії" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "Стиль штрихової лінії" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "Стиль пунктиру" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "Стиль штрих-пунктиру" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "Стиль штрих-подвійна-крапка" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "Товщина лінії" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "Тонка" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "Середня" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "Товста" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "Колір лінії" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "Стиль лінії" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "Налаштувати зображення" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "Двічі клацніть тут, щоб налаштувати параметри зображення" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "Не вдалося завантажити зображення %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "Зберегти зображення-результат" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "Зображення (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "Параметри зображення" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "Відкрити" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "Розмір показу" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "Ширина" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "Висота" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "Попередній перегляд" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "Показ розмірів" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "Використовувати розмір показу" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "Параметри зображення" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(авто)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "точок" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "Відкриття файла зображення" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "Показати код LaTeX" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" +"Не вказано шляху для виконуваного файла %1. Будь ласка, вкажіть чинний шлях " +"у параметрах програми і повторіть спробу." + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" +"Вказаного файла «%1» для виконуваної програми %2 не існує. Будь ласка, " +"вкажіть чинний шлях у параметрах програми і повторіть спробу." + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" +"Вказаний файл «%1» не є файлом виконуваної програми. Будь ласка, вкажіть " +"коректний шлях у параметрах програми і повторіть спробу." + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" +"Програма %1 не завершила виконання за %2 мілісекунд під час виконання " +"перевірки на інтегрування графіка." + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "Не вдалося відкрити файл %1 під час перевірки на інтегрування графіка." + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" +"Не вдалося обробити результат під час перевірки на інтегрування графіка." + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "Шлях до виконуваного файла latex" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "Шлях до виконуваного файла dvips" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "Значення" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 байтів>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "<надто велика змінна>" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "Від:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "До:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "Основний заголовок" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "Шкала абсцис" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "Шкала ординат" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "Заголовок креслення:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "Це непідтримуваний вміст типів Jupyter («%1»)" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "" +"Процес %1 неочікувано завершив роботу. Усі результати обчислень втрачено." + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "" +"Процес %1 неочікувано завершив роботу із повідомленням «%2». Усі результати " +"буде втрачено." + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" +"Ви вибрали підтримку графічного пакунка %1, але цю підтримку не можна " +"активувати, оскільки не встановлено через те, що не встановлено залежності. " +"Отже, інтеграцію із робочим аркушем буде вимкнено. %2" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Графічна оболонка KDE для математичних програм" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "© Filipe Saraiva, 2016
      © Alexander Rieder, 2009–2015" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "Супровідник
      Портування на Qt5/KF5, модулі Scilab і Python" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Микита Сергієнко" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "Розробник" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Олександр Семке" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "Автор початкової версії
      Супровідник (2009–2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "Модуль KAlgebra" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Модуль Octave" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "Інтерфейс" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Піктограма Cantor" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "Використовувати вказаний модуль" + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "Документ, який слід відкрити." + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "Не вдалося відкрити файл %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "Увійти до режиму редагування" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "Вилучити долучення" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Математична помилка у Cantor" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Не вдалося прочитати зображення «%1». Помилка «%2»" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- Розрив сторінки ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "Перейти до вмісту" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "Шукати за ключовими словами…" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "Знайти у тексті поточної сторінки документації" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "Скинути масштаб до 100%" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "Закрити" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "Перейти до наступного відповідника" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "Перейти до попереднього відповідника" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "Відповідність з урахуванням регістру" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "Файл успішно отримано до теки «Завантаження»." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "Успішне отримання" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "файли Cantor" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "файли Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "усі підтримувані файли" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "усі файли" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "Назва:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "Значення:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "Додати нову змінну" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "Завантажити змінні" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "Зберегти змінні" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "Вилучити змінні" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "Пошук/Фільтрування" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "З урахуванням регістру" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "Шукати ціле слово" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "Ви справді бажаєте вилучити всі змінні?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "Завантаження файла" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "Зберегти результат" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "Вилучити результат" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"Не вдалося знайти компонент текстового редактора KDE.\n" +"Будь ласка, перевірте коректність встановлення KDE." + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "Редактор скриптів" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "Редактор скриптів — %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "Не знайдено" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "Досягнуто початку" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "Досягнуто кінця" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "Замінено %1 запис" +msgstr[1] "Замінено %1 записи" +msgstr[2] "Замінено %1 записів" +msgstr[3] "Замінено один запис" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "Команди" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "Результати" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "Помилки" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "Текст" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "Код LaTeX" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "Запуск:" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" +"Створити робочий аркуш для позначеної системи модулів обробки. Якщо не " +"вибрано жодного модуля, програма попросить користувача вказати модуль при " +"запуску." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "Типовий модуль:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "Робочий аркуш:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" +"Увімкнути верстання LaTeX для результатів обчислень, якщо підтримку такого " +"верстання передбачено системою модулів обробки" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "Типографський набір LaTeX" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "Увімкнути підсвічування синтаксису" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "Підсвічування синтаксису" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "Увімкнути доповнення синтаксичних конструкцій" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "Показувати номери рядків" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "Номери рядків" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "Увімкнути ефекти анімації на робочому аркуші" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" +"Якщо позначено, текстові записи буде вирівняно за рамкою робочого аркуша, а " +"не за позицією запиту щодо команди" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "Не додавати відступи для текстових записів" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" +"Використовувати форматований текст для текстових записів при збереженні у " +"форматі нотатника Jupyter" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "Обчислення:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" +"Якщо позначено, програма питатиме користувача перед перезапуском системи " +"модулів обробки" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" +"Якщо позначено, усі записи під поточним будуть автоматично переобчислюватися" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "Автоматично переобчислювати записи" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "Максимальна кількість рядків результату (0 — без обмежень):" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" +"Максимальна кількість видимих рядків у записі результату використання " +"команди. Скористайтеся значенням 0, якщо не хочете обмежувати виведення " +"даних." + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "Markdown:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "Увімкнути верстання LaTeX для математичних виразів у записах Markdown" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "Математичні вирази з використанням LaTeX" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "Сповіщати про помилки обробки для математичних виразів" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "Знайти…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "Прості комірки" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "Додати нетипове призначення" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "Перетворити на текстовий запис" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "Перетворити на просту комірку" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "Тип MIME призначення:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "Копіювати результат" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "Показати вигляд" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "Показати код" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "Показати код HTML" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "Показувати спрощену альтернативу" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "Показати HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "Показати HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "" +"Не вдалося показати файл Eps. Ймовірно, вам слід встановити додаткові " +"пакунки." + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "Зберегти текст-результат" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "текстові файли (*.txt)" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "Не вдалося виконати запис до файла %1." + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "Не вдалося виконати запис до файла." + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "Помилка під час спроби зберегти файл %1" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "" +"У режимі лише читання Cantor не може гарантувати коректних результатів " +"експортування %1" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "Помилка під час спроби завантаження таблиці стилів latex.xsl" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "Не вдалося відкрити файл %1." + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "Відкриття файла" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "Не вдалося відкрити вибраний файл для читання." + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "Вибраний файл не є коректним файлом проєкту Cantor або Jupyter." + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "Вибраний файл не є коректним файлом проєкту Cantor." + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Цей робочий аркуш було створено за допомогою Python2, підтримку якого " +"припинено. Для роботи з аркушем буде використано Python3." + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Підтримку Python2 припинено" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "" +"Модуль %1 не знайдено. Ви не зможете редагувати аркуш та виконувати команди." + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"З модулем %1 виникли певні проблеми. Будь ласка,\n" +"перевірте налаштування або встановіть потрібні пакунки.\n" +"Ви не зможете змінити вміст цього робочого аркуша." + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Підтримки нотатників Jupyter для версій, старіших за 4.5 (виявлено версію %1." +"%2), не передбачено." + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "" +"Підтримки нотатників Jupyter для версій, новіших за 4.5 (виявлено версію %1." +"%2), не передбачено." + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"Цей нотатник було створено за допомогою Python2, підтримку якого припинено. " +"Для роботи з аркушем буде використано Python3." + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "об'єкт із ключами: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "значення JSON без зв'язку із об'єктом" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "виявлено помилкові дані (%1), які не є вмістом комірки Jupyter" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "Файл не є коректним нотатником Jupyter" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "Некоректна схема нотатника Jupyter: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "Перетворити на" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "Команда" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "Зображення" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "Розрив сторінки" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "Горизонтальна лінія" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "Запис ієрархії" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "Вставити після" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "Вставити до" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "Вставити" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "Збільшити" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "Зменшити" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "Початкові розміри" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "Пересунути записи вище" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "Пересунути записи нижче" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "Обчислити записи" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "Вилучити записи" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "Згорнути результати введення команд" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "Розгорнути результати введення команд" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "Вилучити результати введення команд" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "Виключити запис команди з виконання" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "Додати запис команди для виконання" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "&Колір тексту..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "Колір" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "П&ідсвічування тексту..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "&Шрифт" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "&Розмір шрифту" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "&Жирний" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "&Курсив" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "П&ідкреслений" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "&Закреслений" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "Вирівняти &ліворуч" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "Ліворуч" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "Вирівнювати по &центру" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "По центру" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "Вирівняти &праворуч" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "Праворуч" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "З&а обома краями" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "За шириною" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" +"У результаті виконання цієї дії буде вилучено усі результати без можливості " +"скасовування. Ви справді цього хочете?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "Вилучити усі результати" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "білий" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "чорний" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "темно-червоний" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "червоний" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "світло-червоний" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "темно-зелений" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "зелений" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "світло-зелений" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "темно-синій" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "синій" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "світло-синій" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "темно-жовтий" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "жовтий" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "світло-жовтий" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "темно-бірюзовий" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "блакитний" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "світло-бірюзовий" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "темно-бузковий" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "бузковий" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "світло-бузковий" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "темно-жовтогарячий" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "жовтогарячий" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "світло-жовтогарячий" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "темно-сірий" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "сірий" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "світло-сірий" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "Пересунути вище" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "Пересунути нижче" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "Ви справді хочете вилучити цей запис?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "Вилучити запис" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "Перетягнути запис" + +#~ msgid "Animate Worksheet" +#~ msgstr "Анімувати робочий аркуш" + +#~ msgid "" +#~ "On startup, if a default backend is set, create a worksheet for it " +#~ "instead of showing the backend chooser dialog." +#~ msgstr "" +#~ "Якщо встановлено типовий модуль обробки, після запуску програми замість " +#~ "вікна вибору модуля обробки буде створено робочий аркуш для типового " +#~ "модуля." + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "" +#~ "Якщо буде позначено цей пункт, Cantor автоматично переобчислюватиме всі " +#~ "записи під поточним зміненим записом." + +#~ msgid "Defaults" +#~ msgstr "Типові параметри" + +#~ msgid "" +#~ "This is initial value for the session \"Typeset using LaTeX\" option, " +#~ "which response for allowing rendering some backend output as latex, if " +#~ "supported. For example, Maxima outputs will be rendered via latex, if the " +#~ "option is enabled." +#~ msgstr "" +#~ "Це початкове значення для параметра сеансу «Показ з використанням LaTeX», " +#~ "який відповідає за обробку у деяких модулях коду latex, якщо таку " +#~ "передбачено. Наприклад, виведені Maxima дані буде оброблено як latex, " +#~ "якщо позначено цей пункт." + +#~ msgid "Enable LaTeX Typesetting (works only if latex is installed)" +#~ msgstr "Увімкнути верстання LaTeX (працює, лише якщо встановлено latex)" + +#~ msgid "" +#~ "This is initial value for the session \"Syntax Highlighting\" option, " +#~ "which response for syntax highlighting inside command entries." +#~ msgstr "" +#~ "Це початкове значення для параметра сеансу «Підсвічування синтаксису», " +#~ "який відповідає за підсвічування синтаксису у полях для введення команд." + +#~ msgid "" +#~ "This is initial value for the session \"Completion\" option, which " +#~ "response for code autocompletion." +#~ msgstr "" +#~ "Це початкове значення параметра сеансу «Доповнення», який відповідає за " +#~ "автоматичне доповнення коду." + +#~ msgid "" +#~ "This is initial value for the session \"Line numbers\" option, which " +#~ "response for presence of command entries execution numbers." +#~ msgstr "" +#~ "Це початкове значення параметра сеансу «Номери рядків», який відповідає " +#~ "за показ номерів виконання записів команд." + +#~ msgid "Enable Line Numbers" +#~ msgstr "Увімкнути номери рядків" + +#~ msgid "" +#~ "This is initial value for the session \"Animate Worksheet\" option, which " +#~ "response for presence of worksheet animation." +#~ msgstr "" +#~ "Це початкове значення параметра сеансу «Анімація робочого аркуша», який " +#~ "відповідає за показ анімацій на робочому аркуші." + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "Увімкнути анімацію на робочому аркуші" + +#~ msgid "" +#~ "This is initial value for the session \"Embedded Math\" option, which " +#~ "response for enabling of rendering math expressions in text and markdown " +#~ "entries." +#~ msgstr "" +#~ "Це початкове значення параметра сеансу «Вбудовані формули», який " +#~ "відповідає за вмикання обробки математичних формул у тексті та записах " +#~ "розмітки." + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "" +#~ "Увімкнути вбудовані формули (працює, лише якщо встановлено pdflatex)" + +#~ msgid "" +#~ "If disabled, then warning about restart won't appear on pressing of " +#~ "restart button." +#~ msgstr "" +#~ "Якщо вимкнено, програма не показуватиме попередження щодо перезапуску у " +#~ "відповідь на натискання кнопки перезапуску." + +#~ msgid "" +#~ "If enabled, then on any math render error will appear an information " +#~ "window with error description." +#~ msgstr "" +#~ "Якщо увімкнено, будь-які помилки щодо обробки формул буде показано в " +#~ "інформаційному вікні із описом помилки." + +#~ msgid "Show message about error on render failure of embedded math" +#~ msgstr "Показувати повідомлення щодо помилки при обробці вбудованих формул" + +#~ msgid "" +#~ "if enabled, then old Cantor entries indent style (all entries left " +#~ "aligned) will be used." +#~ msgstr "" +#~ "Якщо увімкнено, буде використано застарілий стиль відступів записів " +#~ "Cantor (усі записи буде вирівняно ліворуч)." + +#~ msgid "Use old Cantor entries indent style" +#~ msgstr "Відступи записів Cantor у старому стилі" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#~ msgid "" +#~ "If enable, then Cantor will store rich formatting of text entries on " +#~ "saving to Jupyter notebook format." +#~ msgstr "" +#~ "Якщо позначено, Cantor зберігатиме форматування текстових записів при " +#~ "збереження у форматі нотатників Jupyter." + +#~ msgid "" +#~ "Graphical package, for which will be enable support for embedding plots" +#~ msgstr "" +#~ "Графічний пакунок, Для якого слід увімкнути підтримку вбудованих креслень" + +#~ msgid "" +#~ "Graphic package, which code will be used for plotting via \"Plot\" Cantor " +#~ "menu." +#~ msgstr "" +#~ "Графічний пакунок, код якого буде використано для креслення за допомогою " +#~ "меню «Креслення» у Cantor." + +#~ msgid "Matplotlib (with seaborn, ggplot support too)" +#~ msgstr "Matplotlib (із підтримкою seaborn, ggplot)" + +#~ msgid "Plot.ly" +#~ msgstr "Plot.ly" + +#~ msgid "All supported" +#~ msgstr "Усі підтримувані" + +#~ msgid "" +#~ "Graphic package, used for plotting. When integrated plots option is " +#~ "enabled, then plots from the package will be integrated to worksheet" +#~ msgstr "" +#~ "Графічний пакунок, який буде використано для креслення. Якщо увімкнено " +#~ "інтегрування креслень до аркуша, креслення з пакунка буде інтегровано із " +#~ "робочим аркушем." + +#~ msgid "Graphic Package: " +#~ msgstr "Графічний пакунок:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      Інструмент виконання математичних завдань для KDE" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "Адреса локальної документації до Maxima" + +#~ msgid "" +#~ "If empty, the \"Show help\" action will show the default online " +#~ "documentation. Otherwise, the specified URL will be opened." +#~ msgstr "" +#~ "Якщо вказано порожнє значення, дія «Показати довідку» відкриватиме типову " +#~ "документацію з мережі. Якщо вказано якесь значення, буде відкрито дані за " +#~ "вказаною адресою." + +#~ msgid "Documentation:" +#~ msgstr "Документація:" + +#~ msgid "Url to the local Python documentation" +#~ msgstr "Адреса локальної документації до Python" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "Адреса локальної документації до Octave" + +#~ msgid "Show %1 Help" +#~ msgstr "Показати довідку з %1" + +#~ msgid "Path to Julia:" +#~ msgstr "Шлях до Julia:" + +#~ msgid "Documentation provided by GHNS" +#~ msgstr "Документація, що надається за допомогою GHNS" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "Інтегрувати графіки на робочому аркуші" + +#~ msgid "" +#~ "Commands to automatically run on start. They can be useful for loading " +#~ "needed modules, changing environment, etc." +#~ msgstr "" +#~ "Команди, які слід автоматично виконати під час запуску. Ці команди можуть " +#~ "бути корисними для завантаження потрібних модулів, зміни середовища тощо." + +#~ msgid "Clear Variables" +#~ msgstr "Спорожнити змінні" + +#~ msgid "Exclude from Execution" +#~ msgstr "Виключити з виконання" + +#~ msgid "Add to Execution" +#~ msgstr "Додати до виконання" + +#~ msgid "Right click here to insert image" +#~ msgstr "Клацніть правою кнопкою миші, щоб вставити зображення" + +#~ msgid "Choose Image" +#~ msgstr "Вибір зображення" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "зображення (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "Підтвердження — Cantor" + +#~ msgid "Text Entry" +#~ msgstr "Текстовий запис" + +#~ msgid "LaTeX Entry" +#~ msgstr "Запис LaTeX" + +#~ msgid "Insert Entry Before" +#~ msgstr "Вставити запис перед" + +#~ msgid "Insert Horizontal Line" +#~ msgstr "Вставити горизонтальну лінію" + +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "Вставити запис ієрархії" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "" +#~ "Шлях до виконуваного файла scilab-adv-cli. Попередження: слід встановити " +#~ "версію Scilab не старішу за 5.4." + +#~ msgid "Insert Image Attachment" +#~ msgstr "Вставити долучення-зображення" + +#~ msgid "Insert Latex Entry" +#~ msgstr "Вставити запис LaTeX" + +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Шлях до виконуваного файла сервера python Cantor" + +#~ msgid "" +#~ "Path to directory, which contains Cantor plugins (cantorpart and all " +#~ "backends)" +#~ msgstr "" +#~ "Шлях до каталогу, у якому зберігаються додатки до Cantor (cantorpart та " +#~ "усі модулі)" + +#~ msgid "Paths (advance settings)" +#~ msgstr "Шляхи (додаткові параметри)" + +#~ msgid "Path to Cantor plugin directory:" +#~ msgstr "Шлях до каталогу додатків Cantor:" + +#~ msgid "" +#~ "Path to directory, which contains Cantor backend plugins. This is " +#~ "important setting - with wrong path Cantor can't create any worksheets." +#~ msgstr "" +#~ "Шлях до каталогу, у якому зберігаються додатки модулів обробки до Cantor. " +#~ "Цей параметр є дуже важливим — якщо шлях вказано неправильно, Cantor не " +#~ "зможе створювати робочі аркуші." + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "Проміжний формат вбудованих креслень:" + +#~ msgid "Preferred package for the \"Plot\" menu: " +#~ msgstr "Бажаний пакунок для меню «Креслення»: " + +#~ msgid "Path to Maxima:" +#~ msgstr "Шлях до Maxima:" + +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "Шлях до сервера Python Cantor:" + +#~ msgid "Path to Sage:" +#~ msgstr "Шлях до Sage:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "Шлях до програми scilab-adv-cli:" + +#~ msgid "" +#~ "On this moment, integrated graphic can handle only one of Julia packages " +#~ "- GR graphic package. And for using this feature you need to install the " +#~ "package first. For this, run Pkg.install(\"GR\") in Cantor or in julia " +#~ "REPL. Also, it is important to note, that this is a long operation and " +#~ "better use julia REPL, because Cantor doesn't show intermediate text " +#~ "unlike the julia." +#~ msgstr "" +#~ "На цей момент для вбудованих графіків може бути використано лише один з " +#~ "пакунків Julia — графічний пакунок GR. Отже, щоб скористатися цією " +#~ "можливістю, вам слід спершу встановити цей пакунок. Для цього віддайте " +#~ "команду Pkg.install(\"GR\") у Cantor або у REPL julia. Крім того, важливо " +#~ "зауважити, що встановлення є доволі тривалою процедурою — краще " +#~ "скористатися REPL julia, оскільки, на відміну від julia, Cantor не " +#~ "показуватиме проміжних текстових повідомлень." + +#~ msgid "" +#~ "If default backend is setted, then on startup instead of the backend " +#~ "chooser dialog will be created worksheet of the default backend" +#~ msgstr "" +#~ "Якщо встановлено типовий модуль обробки, після запуску програми замість " +#~ "вікна вибору модуля обробки буде створено робочий аркуш для типового " +#~ "модуля" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "Дозволити Cantor стежити за створенням і знищенням змінних" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "" +#~ "Інтегрувати графіки до робочого аркуша (стосуватиметься лише нових " +#~ "сеансів)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Шлях до виконуваного файла Octave" + +#~ msgid "Path to Octave:" +#~ msgstr "Шлях до Octave:" + +#~ msgid "Unnamed" +#~ msgstr "Без назви" + +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "https://docs.python.org/2/" + +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "Python є доволі потужною мовою динамічного програмування, яка " +#~ "використовується у багатьох комплектах програм. Існує декілька пакунків " +#~ "Python для наукового програмування. У цьому модулі реалізовано підтримку " +#~ "Python 3." + +#~ msgctxt "" +#~ "the url to the documentation of R, please check if there is a translated " +#~ "version and use the correct url" +#~ msgid "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" +#~ msgstr "http://rwiki.sciviews.org/doku.php?id=rdoc:rdoc" + +#~ msgid "You should set path to Julia executable" +#~ msgstr "Вам слід встановити шлях до виконуваного файла Julia" + +#~ msgid "" +#~ "Path to Julia should point directly to julia executable, symlink not " +#~ "allowed" +#~ msgstr "" +#~ "Шлях до Julia має вказувати безпосередньо на виконуваний файл julia. Не " +#~ "можна використовувати символічне посилання на цей файл." + +#~ msgid "" +#~ "Lua backend needs installed Lua programming language. The backend often " +#~ "automatically finds needed Lua binary file, but not in this case. Please, " +#~ "go to Cantor settings and set path to Lua executable." +#~ msgstr "" +#~ "Для роботи модуля Lua слід встановити пакунки мови програмування Lua. " +#~ "Модуль має автоматично знайти потрібний виконуваний файл Lua, але цього " +#~ "разу його знайти не вдалося. Будь ласка, поверніться до параметрів Cantor " +#~ "і вкажіть шлях до виконуваного файла Lua." + +#~ msgid "" +#~ "In Lua backend settings a path to Lua binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Lua? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "У параметрах модуля Lua встановлено шлях до виконуваного файла Lua %1, " +#~ "але відповідний файл не є придатним до виконання. Ви впевнені, що це " +#~ "правильний шлях до виконуваного файла Lua? Якщо ні, змініть цей шлях у " +#~ "параметрах Cantor." + +#~ msgid "" +#~ "Maxima backend needs installed Maxima - a computer algebra system. The " +#~ "backend often automatically finds needed binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Maxima executable" +#~ msgstr "" +#~ "Для роботи модуля Maxima слід встановити Maxima — систему комп'ютерної " +#~ "алгебри. Модуль має автоматично знайти потрібний виконуваний файл, але " +#~ "цього разу його знайти не вдалося. Будь ласка, поверніться до параметрів " +#~ "Cantor і вкажіть шлях до виконуваного файла Maxima." + +#~ msgid "" +#~ "In Maxima backend settings a path to maxima binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Maxima? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "У параметрах модуля Maxima встановлено шлях до виконуваного файла maxima " +#~ "%1, але відповідний файл не є придатним до виконання. Ви впевнені, що це " +#~ "правильний шлях до виконуваного файла Maxima? Якщо ні, змініть цей шлях у " +#~ "параметрах Cantor." + +#~ msgid "" +#~ "Octave backend needs installed Octave programming language. The backend " +#~ "often automatically finds needed Octave binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Octave binary file " +#~ "with command line interface (CLI)" +#~ msgstr "" +#~ "Для роботи модуля Octave слід встановити пакунки мови програмування " +#~ "Octave. Модуль має автоматично знайти потрібні для його роботи виконувані " +#~ "файли Octave, але цього разу зробити це не вдалося. Будь ласка, " +#~ "скористайтеся параметрами Cantor і вкажіть шлях до виконуваного файла " +#~ "Octave, який забезпечує роботу інтерфейс командного рядка (CLI)" + +#~ msgid "" +#~ "In Octave backend settings a path to Octave binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Octave? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "У параметрах модуля Octave встановлено шлях до виконуваного файла Octave " +#~ "%1, але відповідний файл не є придатним до виконання. Ви впевнені, що це " +#~ "правильний шлях до виконуваного файла Octave? Якщо ні, змініть цей шлях у " +#~ "параметрах Cantor." + +#~ msgid "" +#~ "R backend uses special binary file - cantor_rserver (installed with R " +#~ "backend), which must be executable." +#~ msgstr "" +#~ "У модулі R використовується спеціальний двійковий файл - cantor_rserver " +#~ "(встановлюється разом із модулем R), який має бути придатним до виконання." + +#~ msgid "" +#~ "Sage backend needs installed Sage programming language. The backend often " +#~ "automatically finds needed Sage binary file, but not in this case. " +#~ "Please, go to Cantor settings and set path to Sage executable" +#~ msgstr "" +#~ "Для роботи модуля Sage слід встановити пакунки мови програмування Sage. " +#~ "Модуль має автоматично знайти потрібний виконуваний файл Sage, але цього " +#~ "разу його знайти не вдалося. Будь ласка, поверніться до параметрів Cantor " +#~ "і вкажіть шлях до виконуваного файла Sage." + +#~ msgid "" +#~ "In Sage backend settings a path to Sage binary file set as %1, but this " +#~ "file not executable. Are you sure, that this is correct path to Sage? " +#~ "Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "У параметрах модуля Sage встановлено шлях до виконуваного файла Sage %1, " +#~ "але відповідний файл не є придатним до виконання. Ви впевнені, що це " +#~ "правильний шлях до виконуваного файла Sage? Якщо ні, змініть цей шлях у " +#~ "параметрах Cantor." + +#~ msgid "" +#~ "Scilab backend needs installed Scilab programming language. The backend " +#~ "often automatically finds needed Scilab binary file, but not in this " +#~ "case. Please, go to Cantor settings and set path to Scilab executable" +#~ msgstr "" +#~ "Для роботи модуля Scilab слід встановити пакунки мови програмування " +#~ "Scilab. Модуль має автоматично знайти потрібний виконуваний файл Scilab, " +#~ "але цього разу його знайти не вдалося. Будь ласка, поверніться до " +#~ "параметрів Cantor і вкажіть шлях до виконуваного файла Scilab." + +#~ msgid "" +#~ "In Scilab backend settings a path to Scilab binary file set as %1, but " +#~ "this file not executable. Are you sure, that this is correct path to " +#~ "Scilab? Change this path in Cantor settings, if no." +#~ msgstr "" +#~ "У параметрах модуля Scilab встановлено шлях до виконуваного файла Scilab " +#~ "%1, але відповідний файл не є придатним до виконання. Ви впевнені, що це " +#~ "правильний шлях до виконуваного файла Scilab? Якщо ні, змініть цей шлях у " +#~ "параметрах Cantor." + +#~ msgid "Choose the Backend to use:" +#~ msgstr "Оберіть модуль обробки програми:" + +#~ msgid "" +#~ "The file is old Jupyter notebook (found version %1.%2), which isn't " +#~ "supported by Cantor" +#~ msgstr "" +#~ "Файл є нотатником Jupyter у застарілому форматі (виявлено версію %1.%2), " +#~ "підтримку якого у Cantor не реалізовано" + +#~ msgid "" +#~ "Julia backend uses special binary file - %1 (installed with Julia " +#~ "backend), which must be executable" +#~ msgstr "" +#~ "У модулі Julia використовується спеціальний двійковий файл — %1 " +#~ "(встановлюється разом із модулем Julia), який має бути придатним до " +#~ "виконання" + +#~ msgid "" +#~ "The backend with which this file was generated is not installed. It needs " +#~ "%1" +#~ msgstr "" +#~ "У вашій системі не встановлено модуля, за допомогою якого було створено " +#~ "цей файл. Потрібен модуль %1" + +#~ msgid "Publish Worksheet" +#~ msgstr "Оприлюднити робочий аркуш" + +#~ msgid "Waiting for Image..." +#~ msgstr "Очікування на зображення…" + +#~ msgid "%1: %2" +#~ msgstr "%1: %2" + +#~ msgid "cannot open file %1: Unknown MimeType" +#~ msgstr "Не вдалося відкрити файл %1: невідомий тип MIME" + +#~ msgid "*.tex|LaTeX Document" +#~ msgstr "*.tex|документ LaTeX" + +#~ msgid "*.cws|Cantor Worksheet" +#~ msgstr "*.cws|робочий аркуш Cantor" + +#~ msgid "Server for the Cantor R Backend" +#~ msgstr "Модуль для інструмента обробки R Cantor" + +#~ msgid "R Server" +#~ msgstr "Сервер R" + +#~ msgid "(C) 2009 Alexander Rieder" +#~ msgstr "© Alexander Rieder, 2009" + +#~ msgid "Usage: saveVariables file" +#~ msgstr "Використання: saveVariables файл" + +#~ msgid "Saving failed." +#~ msgstr "Спроба збереження зазнала невдачі." + +#~ msgid "Usage: loadVariables file" +#~ msgstr "Використання: loadVariables файл" + +#~ msgid "Loading failed." +#~ msgstr "Спроба завантаження завершилася невдало." + +#~ msgid "(C) 2009-2013 Alexander Rieder" +#~ msgstr "© Alexander Rieder, 2009–2013" + +#~ msgid "Path to python command" +#~ msgstr "Шлях до програми python" + +#~ msgid "Cantor Server for R" +#~ msgstr "Модуль Cantor для R" + +#~ msgid "Path to python2 command:" +#~ msgstr "Шлях до інтерпретатора python2:" + +#~ msgid " Enable Variable Management" +#~ msgstr " Увімкнути керування змінними" + +#~ msgid "Could not start the server." +#~ msgstr "Не вдалося запустити сервер." + +#~ msgid "Start Animation" +#~ msgstr "Почати анімацію" + +#~ msgid "Restart Animation" +#~ msgstr "Перезапустити анімацію" + +#~ msgid "Append Latex Entry" +#~ msgstr "Долучити запис LaTeX" + +#~ msgid "Append Image" +#~ msgstr "Долучити зображення" + +#~ msgid "Append Page Break" +#~ msgstr "Додати розрив сторінки" + +#~ msgid "Other" +#~ msgstr "Інше" + +#~ msgid "And %1 more..." +#~ msgstr "І ще %1..." + +#~ msgid "Main Toolbar" +#~ msgstr "Головна панель" + +#~ msgid "Popup" +#~ msgstr "Контекстне вікно" + +#~ msgid "The style used for Completion" +#~ msgstr "Режим, який буде використано для доповнення" + +#~ msgid "" +#~ "Scilab version of the master branch of the Scilab's repository is " +#~ "compatible" +#~ msgstr "" +#~ "Можна скористатися версією Scilab з основної гілки (master) сховища " +#~ "Scilab." + +#~ msgid "Insert Command Entry Before" +#~ msgstr "Вставити запис команди раніше" + +#~ msgid "Command Entry Before" +#~ msgstr "Запис команди вище" + +#~ msgid "GroupBox" +#~ msgstr "GroupBox" + +#~ msgid "This test requires a functioning %1 backend" +#~ msgstr "Для роботи цього тесту потрібен працездатний сервер %1" + +#~ msgid "Form" +#~ msgstr "Форма" + +#~ msgid "Help" +#~ msgstr "Довідка" + +#~ msgid "Show Help Panel" +#~ msgstr "Показати панель довідки" + +#~ msgid "Error uploading File %1" +#~ msgstr "Помилка під час вивантаження файла %1" diff --git a/po/uk/docs/cantor/create-dlg.png b/po/uk/docs/cantor/create-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..258fa42ef3f53961dd0c6bc17d92009b57a0dbca GIT binary patch literal 8312 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 literal 0 HcmV?d00001 diff --git a/po/uk/docs/cantor/import-dlg.png b/po/uk/docs/cantor/import-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..ec36e49b63603312cb769e70c4d0cd6b05a03278 GIT binary patch literal 7155 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 +ATEX"> + + +]> + + + +Підручник з &cantor; + + + Alexander Rieder alexanderrieder@gmail.com +ЮрійЧорноіван
      yurchor@ukr.net
      Переклад українською
      +
      + + +2009 +Alexander Rieder + +&FDLNotice; + +16 грудня 2020 року +Програми 20.12 + + +&cantor; — програма-оболонка, за допомогою якої ви можете працювати на зручних робочих аркушах з математичними пакунками вільного програмного забезпечення. + + + +KDE +kdeedu +математика +математика +Cantor +Julia +Lua +Maxima +Octave +Python +Qalculate +R +Sage +Scilab + + +
      + + +Вступ + +&cantor; — це програма, за допомогою якої ви зможете користуватися вашими улюбленими математичними програмами, не полишаючи зручного інтегрованого з &kde; інтерфейсу робочого аркуша. У програмі передбачено допоміжні діалогові вікна, призначені для виконання типових завдань, та можливість оприлюднення ваших робочих аркушів. + + + +Користування &cantor; + +Знімок вікна: +Ось знімок вікна &cantor; + + + + + + Знімок вікна + + + + + + + +Можливості &cantor; + + Робочий аркуш для виконання обчислень. + Перегляд результатів креслення на робочому аркуші. + Проста заснована на додатках побудова, що спрощує додавання різних модулів обробки даних + Інтеграція з системою отримання нових матеріалів для вивантаження і отримання прикладів робочих аркушів + Показ математичних формул за допомогою &latex;. + Прив’язане до модуля обробки даних підсвічування синтаксису. + Засновані на додатках допоміжні діалогові вікна для виконання типових дій (зокрема інтегрування функції або введення матриці). + + + + +Модулі обробки &cantor; +У &cantor; передбачено декілька можливих модулів обробки даних, якими ви можете скористатися. Вибір модуля залежить від завдань, які ви бажаєте виконати. +У поточній версії програми підтримуються такі модулі: + + Sage: + + Sage — це вільна система математичного програмного забезпечення з відкритим кодом, випущена за умов дотримання GPL. У ній поєднується потужність багатьох пакунків з відкритим програмним кодом та загальний заснований на Python інтерфейс. Докладніше про систему можна дізнатися за адресою https://sagemath.org. + + + + Maxima: + + Maxima — це система для роботи з символічними і числовими виразами, зокрема диференціювання, інтегрування, розкладу у ряди Тейлора, виконання перетворення Лапласа, розв’язання звичайних диференціальних рівнянь, роботи з поліномами, множинами, списками, векторами, матрицями і тензорами. За допомогою Maxima можна отримувати результати з високою точністю, оскільки програма використовує точні дроби і виконує обчислення з довільною визначеною точністю. Maxima здатна креслити графіки функцій та графічно відображати дані у двох та трьох вимірах. Докладніше про програму можна дізнатися за адресою http://maxima.sourceforge.net. + + + + R: + + R — це мова і середовище для статистичних обчислень та побудови графіків, подібна до мови і середовища S. У середовищі реалізовано широкий спектр статистичних та графічних методик (лінійне і нелінійне моделювання, класичні статистичні перевірки, аналіз часових послідовностей, класифікацію, групування тощо). Можливості середовища досить просто розширити. Мова S часто є основним рушієм у статистичних дослідженнях, R надає вам змогу виконувати подібні дослідження за допомогою вільного програмного забезпечення. Докладніше про мову і середовище можна дізнатися за адресою https://www.r-project.org. + + + + Julia: + + Julia — високорівнева високошвидкісна динамічна мова для виконання інженерних обчислень. Синтаксис мови подібний до синтаксису інших середовищ для виконання технічних обчислень. Передбачено гнучкий компілятор, виконання паралельних обчислень, визначення точності представлення чисел та бібліотеку із широким спектр математичних функцій. Докладнішу інформацію можна знайти на сторінці документації з Julia. + + + + &kalgebra;: + + &kalgebra; — це заснований на MathML калькулятор-інструмент побудови графіків, який є частиною освітнього модуля &kde;. Докладніше про програму можна дізнатися за адресою https://edu.kde.org/kalgebra/. + + + + Qalculate!: + + Qalculate! — це не звичайна програмна реалізація найдешевшого з калькуляторів. Qalculate! намагається повністю використати чудовий інтерфейс, потужність та гнучкість сучасних комп’ютерів. Основну увагу у Qalculate! приділено зручності введення даних. Замість введення кожного числа у математичному виразі окремо ви можете безпосередньо вписати цілий вираз і пізніше внести до нього зміни. Обробка виразів є доволі гнучкою і поблажливою до помилок. Якщо ви введете щось неправильно, Qalculate! повідомить вам про це. Якщо звести вираз до числового результату не вдасться, програма не поверне повідомлення про помилку. Qalculate! максимально спростить вираз і повідомить вам відповідь. Окрім чисел та арифметичних операторів, у виразах можуть міститися будь-які комбінації змінних, одиниць та функцій. Докладніше про програму можна дізнатися за адресою https://qalculate.github.io/. + + + + Python2 і Python3: + + Python є доволі потужною мовою динамічного програмування, яка використовується у багатьох комплектах програм. Існує декілька пакунків Python для наукового програмування. + Python поширюється за умов дотримання ліцензії Python Software Foundation (сумісної з GPL). Докладніше про мову програмування можна дізнатися з офіційного сайта. + + Цим модулем додається пункт основного меню &cantor; Пакунок. Єдиним пунктом цього меню є ПакунокІмпортувати пакунок. За допомогою цього пункту можна імпортувати до робочого простору вказаний вами пакунок Python. + + + + + Scilab: + + Scilab є вільним програмним забезпеченням, працює на багатьох платформах. Це програмне забезпечення призначено для виконання обчислень і керується високорівневою мовою програмування. + Scilab поширюється за умов дотримання ліцензії CeCILL (сумісної з GPL). Докладніше про програму можна дізнатися за адресою https://www.scilab.org/. + + У вашій системі має бути встановлено Scilab версії 5.5 або новішої, щоб цим модулем можна було користуватися. + + + + + Octave: + + &GNU; Octave — високорівнева оболонка мови програмування, основним призначенням якої є обчислення. У оболонці передбачено зручний інтерфейс командного рядка для числового розв’язання лінійних і нелінійних задач, проведення інших числових експериментів. Мова програмування має високий рівень сумісності з мовою MATLAB. Докладніше про цю мову програмування можна дізнатися з цієї сторінки. + + + + Lua: + + Lua — проста і невибаглива до ресурсів скриптова мова програмування з простим процедурним синтаксисом. Для Lua створено декілька бібліотек для математичного і наукового програмування. + Докладніші відомості можна знайти на цій сторінці. + У цьому модулі реалізовано підтримку luajit 2. + + + + + + + +Робочий простір &cantor; + + + Знімок робочого простору &cantor; + + + + + + Знімок робочого простору &cantor; + + + + +Інтерфейс робочого аркуша &cantor; складається з трьох частин: + Панелі вкладок, за допомогою якої ви зможете перемикатися між робочими аркушами. + Панелі довідки, де може бути показано довідку щодо певної команди, якщо ви введете команду ?? команда, describe(команда) або example(команда) (модуль Maxima). + Панель керування змінними, на якій буде показано список всіх доступних змінних поточного робочого аркуша. Панелі довідки та керування змінними буде показано як вкладки на бічній панелі вікна &cantor;. Керуванням змінними можна скористатися, лише якщо використовується один з таких модулів: Maxima (якщо увімкнено на сторінці Maxima вікна ПараметриНалаштувати &cantor;...), &kalgebra;, Octave, Python2, Python3, Qalculate та Scilab. + Сам робочий аркуш. + + + +Робочий аркуш +Робочий аркуш — це основна область для роботи у &cantor;. Тут ви вводитимете вирази, тут виконуватиме обчислення модуль обробки даних, тут він показуватиме вам результати. Перелік команд, які можна буде використати на робочому аркуші, залежатиме від вибраного модуля, отже вам слід ознайомитися з відповідною документацією (натискання кнопки Показати довідку відкриє відповідну сторінку довідки). Якщо ви знаєте назву команди, але потребуєте додаткової інформації щодо неї, ви можете ввести команду «? команда», щоб переглянути у правій частині робочого аркуша контекстну довідку. Якщо ви бажаєте переглянути приклади робочих аркушів, ви можете скористатися пунктом меню Файл Отримати приклади робочих аркушів і отримати створені іншими користувачами робочі аркуші. +Для керування записами команд на робочому аркуші ви можете скористатися кнопками, які буде показано у правій частині робочого аркуша після наведення вказівника миші на поле запису. Для кожного з записів передбачено три основні дії: Обчислити запис для оновлення результату обчислень для запису, Перетягнути запис для пересування запису до іншого місця поточного робочого аркуша та Вилучити запис для вилучення запису з поточного робочого аркуша. +Змінити параметри шрифту та вирівнювання записів робочого аркуша можна за допомогою панелі інструментів, розташованої над робочим аркушем. + + Параметри + За допомогою меню Параметри ви можете змінити деякі з параметрів вигляду вашого поточного робочого аркуша. + + + Показ з використанням LaTeX + + За допомогою цього пункту можна змінити спосіб, у який вам буде показано результати. Якщо пункт буде позначено, результат буде показано за допомогою системи &latex;, тобто формули набудуть приємнішого вигляду. Наприклад, вираз 3*x^2*sqrt(2)*x+2/3 буде показано як + + + + 3*x^2*sqrt(2)*x+2/3 + + + + + + Підсвічування синтаксису + + Підсвічування синтаксису спрощує роботу з кодом. Програма підсвічуватиме ключові слова або відповідні дужки вказаним вами кольорами. + + + + Доповнення + + Якщо буде позначено це пункт, &cantor; показуватиме можливі варіанти завершення команди, яку ви вводите після натискання клавіші Tab. Якщо можливим буде лише один варіант, програма просто завершить введення вашої команди. + + + + Номери рядків + + За допомогою цього пункту можна визначити, чи буде показано перед кожним з виразів його номер, отже, наприклад, у Maxima ви зможете вказувати попередні результати за допомогою команди %O1. + + + + Анімувати робочий аркуш + + За допомогою цього пункту можна вмикати або вимикати анімаційний супровід змін на робочому аркуші. + + + + Вбудовані формули + + За допомогою цього параметра можна визначити, чи буде увімкнено обробку математичних формул $$..$$ у текстових записах та записах розмітки (має бути встановлено pdflatex). + + + + + + + +Допоміжні діалогові вікна +У &cantor; передбачено декілька допоміжних діалогових вікон для полегшення виконання деяких простих операцій. +Доступ до цих діалогових вікон можна отримати за допомогою пунктів головного меню програми. У кожного із модулів обробки власний набір допоміжних діалогових вікон. + +Діалогове вікно створення матриці + + Знімок діалогового вікна створення матриці у &cantor; + + + + + + Знімок діалогового вікна створення матриці у &cantor; + + + +За допомогою цього діалогового вікна можна вводити матриці. Ви можете визначити розмірності матриці і ввести її елементи. +Під час введення даних можна швидко пересуватися між комірками за допомогою натискання клавіші . + + +Діалогове вікно дій з матрицею + + Знімок діалогового вікна введення матриці &cantor; + + + + + + Знімок діалогового вікна введення матриці &cantor; + + + +За допомогою цього діалогового вікна можна ввести назву матриці для обчислення її власних векторів, власних значень або оберненої матриці. Типове значення (%) використовується для позначення попереднього результату обчислень або введення. + + +Діалогове вікно диференціювання + + Знімок діалогового вікна диференціювання &cantor; + + + + + + Знімок діалогового вікна диференціювання &cantor; + + + +За допомогою цього діалогового вікна можна ввести вираз для функції, яку слід продиференціювати, її змінну та порядок похідної. + + +Діалогове вікно інтегрування + + Знімок діалогового вікна інтегрування &cantor; + + + + + + Знімок діалогового вікна інтегрування &cantor; + + + +За допомогою цього діалогового вікна можна ввести вираз для функції, яку слід проінтегрувати, її змінну та межі інтегрування (для визначеного інтеграла). + + +Діалогове вікно розв’язування рівнянь + + Знімок діалогового вікна розв’язування рівнянь &cantor; + + + + + + Знімок діалогового вікна розв’язування рівнянь &cantor; + + + +За допомогою цього діалогового вікна можна вводити рівняння для розв’язування (кожне з рівнянь у окремому рядку) та змінні, значення яких слід визначити (відокремлені комами). + + +Діалогове вікно імпортування пакунків + + Знімок діалогового вікна імпортування пакунків &cantor; + + + + + + Знімок діалогового вікна імпортування пакунків &cantor; + + + +За допомогою цього діалогового вікна можна ввести назву пакунка, який слід імпортувати (наприклад, numpy для Python). + + +Діалогове вікно креслення + + Знімок діалогового вікна креслення &cantor; (вкладка «Функції») + + + + + + Знімок діалогового вікна креслення &cantor; (вкладка «Функції») + + + +Параметри у цьому діалоговому вікні поділено на дві групи за вкладками. За допомогою вкладки Функції можна вводити функції, графіки яких слід накреслити. +Щоб ввести нову функцію, натисніть кнопку Додати. Двічі клацніть на комірці Заголовок і введіть заголовок, потім двічі клацніть на комірці Вираз і введіть вираз функціональної залежності. + + Знімок діалогового вікна креслення &cantor; (вкладка «Параметри») + + + + + + Знімок діалогового вікна креслення &cantor; (вкладка «Параметри») + + + +За допомогою вкладки Параметри можна визначити параметри креслення та умовних позначень. Ви можете налаштувати майже усі параметри креслення, щоб отримати потрібний вам вигляд. + + +Діалогове вікно двовимірного креслення + + Знімок діалогового вікна плоского креслення &cantor; + + + + + + Знімок діалогового вікна плоского креслення &cantor; + + + +За допомогою цього діалогового вікна можна ввести вираз для функції, її змінну та вказати межі зміни цієї змінної. + + +Діалогове вікно тривимірного креслення + + Знімок діалогового вікна просторового креслення &cantor; + + + + + + Знімок діалогового вікна просторового креслення &cantor; + + + +За допомогою цього діалогового вікна можна ввести вираз для функції, її змінні та межі зміни кожної зі змінних. + + + + + +Довідка щодо команд + + +Головне вікно &cantor; + +У &cantor; передбачено типові пункти меню &kde;. Ознайомитися з їхнім призначенням можна за допомогою розділу, присвяченого меню підручника з основ роботи у &kde;. + +Нижче наведено список додаткових або спеціальних пунктів меню &cantor;. Будь ласка, зауважте, що деякі меню буде показано лише для модулів, у яких реалізовано відповідні можливості. + + +Меню «Файл» + + + + &Ctrl;N Файл Новий аркуш +Створює робочий аркуш з типовим модулем обробки команд. + + +Файл Новий аркуш Модуль +Створює робочий аркуш з вказаним модулем обробки команд. + + + &Ctrl;O Файл Відкрити... +Відкрити підтримуваний новий робочий аркуш за допомогою діалогового вікна роботи з файлами. + + +Файл Відкрити недавні +Вибрати робочий аркуш зі списку нещодавно використаних файлів. + + +Файл Отримати приклади робочих аркушів +Відкриває діалогове вікно для отримання прикладів, вивантажених іншими користувачами &cantor; за допомогою можливості отримання нових даних. + + +Файл Відкрити приклад +Відкриває діалогове вікно вибору прикладу для завантаження. Цей приклад має бути попередньо отримано за допомогою пункту меню Файл Отримати приклади робочих аркушів. + + +Файл Зберегти як простий текст +Надає користувачеві змогу зберегти поточний робочий аркуш як простий текстовий документ. + + +Файл Експортувати до LaTeX +Надає користувачеві змогу зберегти поточний робочий аркуш як документ &latex;. + + +Файл Оприлюднити робочий аркуш +Відкриває діалогове вікно оприлюднення вашого поточного робочого аркуша. За допомогою цього пункту ви можете надати ваш аркуш іншими користувачам &cantor; з використанням можливості отримання нових даних. + + +Файл Виконати скрипт +Надає змогу завантажити і виконати пакетні скрипти для поточного сервера виконання команд. + + + + + + + +Меню «Перегляд» + + + +Перегляд Панелі +Надає вам змогу увімкнути або вимкнути показ певних вкладок на бічній панелі. Можливі варіанти: + + Навігація файлами + Вмикає або вимикає видимість вкладки бічної панелі Навігація файлами. + + + + Довідка + Вмикає або вимикає видимість вкладки бічної панелі Довідка. + + + + Керування змінними + Вмикає або вимикає видимість вкладки бічної панелі Керування змінними. + + + + + &Ctrl;+ Перегляд Збільшити +Збільшує масштаб поточного робочого аркуша на 10%. + + + &Ctrl;- Перегляд Зменшити +Зменшує масштаб поточного робочого аркуша на 10%. + + +Перегляд Відкрити редактор скриптів +Відкриває вікно редактора пакетних скриптів для поточного сервера обробки команд. + + + + + + +Меню «Аркуш» + + + + &Ctrl;E Аркуш Виконати обчислення на аркуші +Виконує обчислення за всіма командами робочого аркуша. + + + &Shift;&Enter; Аркуш Обчислити запис +Виконує обчислення за поточним записом команди. + + + &Ctrl;&Enter; Аркуш Вставити запис команди +Вставляє нову команду під поточним розташуванням курсора. + + +Аркуш Вставити текстовий запис +Вставляє новий текстовий запис під поточним розташуванням курсора. + + +Аркуш Вставити запис Markdown +Вставляє новий запис Markdown під поточним розташуванням курсора. + + +Аркуш Вставити запис LaTeX +Вставляє новий запис LaTeX під поточним розташуванням курсора. + + +Аркуш Вставити зображення +Додає у документ зображення під поточним розташуванням курсора. + + +Аркуш Вставити розрив сторінки +Додає у документ розрив сторінки під поточним розташуванням курсора. + + +Аркуш Згорнути усі результати +Згорнути усі результати введення команд. + + +Аркуш Розгорнути усі результати +Розгорнути усі результати введення команд. + + +Аркуш Вилучити усі результати +Вилучити усі результати введення команд. + + + &Shift;∇ Аркуш Вилучити поточний запис +Вилучає поточний запис з робочого аркуша. + + + + + + +Меню «Лінійна алгебра» + + + +Лінійна алгебра Створити матрицю +Відкриває допоміжне діалогове вікно створення матриці. + + +Лінійна алгебра Обчислити власні значення +Відкриває допоміжне діалогове вікно введення назви матриці для обчислення власних значень та кратностей власних значень у відповідному порядку. + + +Лінійна алгебра Обчислити власні вектори +Відкриває допоміжне діалогове вікно введення назви матриці для обчислення власних значень, кратностей власних значень та власних векторів у відповідному порядку. + + +Лінійна алгебра Знайти обернену матрицю +Відкриває допоміжне діалогове вікно введення назви матриці для знаходження оберненої до неї матриці. + + + + + + +Меню «Обчислення» + + + +Обчислення Продиференціювати +Відкриває діалогове вікно параметрів диференціювання. + + +Обчислення Інтегрувати +Відкриває діалогове вікно параметрів інтегрування. + + +Обчислення Розв’язати рівняння +Відкриває діалогове вікно введення параметрів для розв’язування лінійних і нелінійних рівнянь. + + + + + + +Меню «Пакунок» + + + +Пакунок Імпортувати пакунок +Відкриває діалогове вікно імпортування пакунків. + + + + + + +Меню «Креслення» + + + +Креслення Креслення +Відкриває діалогове вікно параметрів креслення. + + +Креслення Двовимірний графік +Відкриває діалогове вікно параметрів креслення. + + +Креслення Тривимірний графік +Відкриває діалогове вікно параметрів креслення. + + + + + + +Меню «Параметри» і «Довідка» +У &cantor; передбачено типові для &kde; пункти меню Параметри і Довідка. Щоб дізнатися більше, ознайомтеся з розділами щодо меню «Параметри» та меню «Довідка» підручника з основ роботи у &kde;. + + + + + + + +Запитання і відповіді + + + + У меню програми немає пункту Показ з використанням LaTeX + Не всі сервери підтримують подібний спосіб показу. У поточній версії передбачено підтримку виведення зображень &latex; для серверів Maxima, Qalculate! та Sage. + + + Мною було встановлено Sage/Maxima або іншу підтримувану комп’ютерну алгебру, але відповідного пункту у програмі так і не з’явилося. + + Можливо, &cantor; не вдалося правильно визначити адреси файлів програм. Відкрийте діалогове вікно ПараметриНалаштувати &cantor;... і належним чином змініть шлях до відповідної програми на сторінці модуля. + + + + Що за незрозуміла назва? Що спільного вона має з математикою? + &cantor; названо на честь німецького математика Георга Кантора, творця теорії множин. + + + + + + +Подяки і ліцензія + +&cantor; +Авторські права на програму належать Alexander Rieder alexanderrieder@gmail.com, 2009–2011. + +Авторські права на документацію належать Alexander Rieder alexanderrieder@gmail.com, 2009–2011. + +Переклад українською: Юрій Чорноіван yurchor@ukr.net +&underFDL; &underGPL; + +&documentation.index; +
      + + diff --git a/po/uk/docs/cantor/integrate-dlg.png b/po/uk/docs/cantor/integrate-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..cb2e1912d4360578e5653c93dd1903ea846b5652 GIT binary patch literal 8957 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 literal 0 HcmV?d00001 diff --git a/po/uk/docs/cantor/matrix-dlg.png b/po/uk/docs/cantor/matrix-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..3fa18c571e8953395fe1fff69895b6cbaa146f4a GIT binary patch literal 6900 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 literal 0 HcmV?d00001 diff --git a/po/uk/docs/cantor/plot-dlg1.png b/po/uk/docs/cantor/plot-dlg1.png new file mode 100644 index 0000000000000000000000000000000000000000..185570b782da5af7595d73bfff36d03e08c5152b GIT binary patch literal 14549 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 T?$F-f|70o2smYc}n+E@1)Qqwu literal 0 HcmV?d00001 diff --git a/po/uk/docs/cantor/plot-dlg2.png b/po/uk/docs/cantor/plot-dlg2.png new file mode 100644 index 0000000000000000000000000000000000000000..bc88a859d8adf99db17c2bd76ea2e5dc7989dbd6 GIT binary patch literal 16581 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 vxD%q5>}~*^U(hS%7p2C literal 0 HcmV?d00001 diff --git a/po/uk/docs/cantor/screenshot.png b/po/uk/docs/cantor/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..ad85ff2f0b015162cab766cae946d4d2ec66e577 GIT binary patch literal 65514 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 literal 0 HcmV?d00001 diff --git a/po/uk/docs/cantor/solve-equations-dlg.png b/po/uk/docs/cantor/solve-equations-dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..2f8d9717599d0c129bb1e469666ff3dbc56d50a3 GIT binary patch literal 7976 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

      Recommended version: %2
      " +msgstr "

      %1

      推荐版本: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      查看%2以获取更多信息。
      " + +#: backendchoosedialog.cpp:125 +#, kde-format +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "" +"
      有些要求没有满足: %1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "将此设为默认后端" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia 是一种用于科学计算的高级,高性能动态编程语言,其语法类似于其他科" +"学计算环境。它提供了先进的编译器,分布式并行执行,数值精度和广泛的数学函数" +"库。" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" +"应用程序设置中指定的 Julia 路径必须直接指向可执行文件。 不允许符号链接。请在" +"应用程序设置中提供正确的路径,然后重试。" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" +"无法为 %1 确定 Julia 的版本。请指定到 Julia 可执行文件的正确路径(不允许使用" +"符号链接),然后重试。" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" +"你正在尝试在 Cantor 中使用 Julia v%1.%2.%3。此版本的 Cantor 仅支持 Julia v%4." +"%5.%6。请指定到前述版本 Julia 的路径或者重新编译 Cantor 使其支持 %1.%2.%3 版" +"本的 Julia。" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Julia 原生 REPL 路径" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "启用变量管理" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "将绘图整合到工作表" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "# 对不起,Gadfly 不支持 3d 图表。" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Julia 脚本文件 (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "错误 - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "Julia 会话无法登录,因为 Julia 遇到了内部问题,缺失内部文件 - “%1”" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "Julia 会话因为未知内部问题无法登录" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Julia 进程停止工作。" + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "启动 Julia 进程失败。" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "与 Julia 进程的通信由于未知原因而失败。" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" +"对于Julia,目前只支持 GR (https://gr-framework.org/),一个可视化应用框架。 此" +"软件包必须先安装,如果尚未安装,请在 Cantor 或 Julia REPL 中运行 Pkg." +"install(“GR”) 。请注意,这个操作可能需要一些时间,并且最好在 Julia REPL 中执" +"行,这将能够显示软件包安装的当前进度。" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "常规" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "可执行文件:" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, kde-format +msgid "Plot Integration:" +msgstr "绘图集成:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, kde-format +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "如果启用,图表将显示在工作表中。否则,图表将显示在外部窗口中。" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "启用" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, kde-format +msgid "Variable Management:" +msgstr "变量管理:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "监视变量的创建和销毁,并显示变量面板中的现有变量。" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, kde-format +msgid "Internal Plot Format:" +msgstr "内部绘图格式:" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "启用嵌入绘图时的内部绘图格式" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "GR" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, kde-format +msgid "Plots" +msgstr "绘图" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, kde-format +msgid "PyPlot" +msgstr "PyPlot" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "Gadfly" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "自动运行" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, kde-format +msgid "Commands to autorun" +msgstr "要自动运行的命令" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, kde-format +msgid "Documentation" +msgstr "文档" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, kde-format +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/?application=kalgebra" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "会话开始前自动运行的脚本" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "错误:%1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" +"打开新的工作表时自动运行的命令。它们可以用于加载所需模块、改变运行环境等。" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua 是一种快速而轻量的脚本语言,拥有简单的过程语法。Lua 中有几个针对数" +"学和科学的库。" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "luajit 命令的路径" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Lua 脚本文件 (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, kde-format +msgid "Path to luajit:" +msgstr "LuaJIT 的路径:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima 是一套用于操作符号与算术的系统,囊括的功能包括微分、积分、泰勒" +"表达式、拉普拉斯转换、常微分方程式、线性方程式系统、多项式、集合、列表、向" +"量、矩阵、张量等等。Maxima 采用精确的分数、整数与浮点数来提供高精度的运算结" +"果,并且可用于绘制函数的二维或三维图形。" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Maxima 可执行文件路径" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "错误:太多 */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "错误:太多 /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "错误: ; 之前应该有 \";" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "等待图表生成结果" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Maxima 批处理文件 (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "启动 Maxima 失败" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima 已崩溃。正在重启..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "Maxima 在短时间内连续崩溃了两次。已停止启动尝试" + +#: backends/octave/octavebackend.cpp:62 +#, kde-format +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave 是一个高级语言,主要为数字计算而设计。
      提供了一个方便" +"的命令行界面,并使用几乎与Matlab兼容的语言,以求解线性或非线性问题的数值解与" +"进行其他数学实验" + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Octave 脚本文件 (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "语法错误" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "绘图集成测试失败。" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "绘图集成将被禁用。" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" +"绘图集成无法正常运行,因为 Cantor 发现 Octave 无法创建绘图,因为它没有图形后" +"端:这个结论是基于 available_graphics_toolkits() 函数的空输出做出的。 看起来" +"您应该安装一些额外的操作系统软件包,如 gnutplot、fltk 或 qt 来使其能够绘图。" + +#: backends/python/pythonbackend.cpp:67 +#, kde-format +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, kde-format +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python 是一个非常强大的动态编程语言,适用领域非常广泛。科学计算方面也" +"有多个软件包支持。" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "# 对不起,Bokeh 不支持 3d 图表。" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Python 脚本文件 (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Cantor Python 服务器停止了工作。" + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "无法启动 Cantor python 服务器。" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "与 Cantor python 服务器的通信由于未知原因而失败。" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" +"要使用 Matplotlib 包的集成图形,您需要先安装 \"matplotlib\" python 包。" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" +"使用 Plot.ly 的集成图形,您需要安装 \"plotly\" python 软件包和与 Plot.ly 兼容" +"的 \"orca\" 可执行文件。详情请参阅 Plot.ly 文档中的 “静态图像导出” (Static " +"Image Export) 文章。" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "matplotlib" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "pylab" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, kde-format +msgid "plot.ly" +msgstr "plot.ly" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "bokeh" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor - 绘图对话框" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "函数" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "标题" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "表达式" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "添加" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "删除" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "清除列表" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "变量 X" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "样式" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "线条" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "点" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "点线" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "立方体数" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "直方图" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "步" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "K线" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "点" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "平滑" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "无" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "单调性" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "三次自然曲线" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "贝塞尔" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "贝塞尔(单调的)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "函数范围" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X 范围" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "采样率(&M)" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "步长(&Z)" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "选项" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "绘图标题" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "X-轴标签" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Y-轴标签" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "图例位置" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "隐藏图例" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "左上" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "右上" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "左下" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "右下" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "下方" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "外部" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "显示网格" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "显示完整边界" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "使用颜色" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "显示内联" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "对数刻度 x 的比例" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "对数刻度 y 的比例" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "文件选项" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "保存绘图到文件" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "文件类型" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "根据文件名检测" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! 不是您通常意义上最廉价计算器的复刻。Qalculate! 的目的是充分" +"利用现代计算机优秀的界面、计算能力与灵活性。Qalculate! 关注的中心是表达式条" +"目,您可以直接写出整个表达式而稍后再改动它,而非分开地输入数学表达式中的每个" +"数字。表达式的解释是灵活的且容许错误。如果您犯了错误,Qalculate! 会告诉您。不" +"能完全解出的式子不一定是错误。Qalculate! 会尽可能地化简并以一个表达式作答。不" +"仅是数字与算术运算符,表达式也可以包含变量、单位与函数的任何组合。" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"是否与如何自动转换单位。若为真,转换为最适合的国际单位制(单位总数最少)。" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "三角函数的默认角度单位。" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "被解析且所求的数的底数。" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "是否简化或因式分解求出的结果。" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "如果有理数会以小数点显示,例如一个分数,或 两者兼有。" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"用三个点表示一列循环数字,而非舍入 (例如 2/3 显示为 0.666666... 而非 " +"0.666667)。" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"全部使用十进制的国际单位制词头。若为假,将不自动使用 不是千的倍数的词头 (厘、" +"分、十、百)。" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "若为真,将使用负指数而非分式 (例如 5/x^2 会变成 5*x^-2)。" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "数值显示。" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "若为真,绘图将在工作表中显示。否则他们出现在一个单独的窗口。" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "绘图中是否使用颜色。" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "是否绘制网格。" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "是否在绘图周围绘制完整边界。" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "线条宽度,用像素值表示。" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "绘图时使用的插值步数。" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "平滑绘图模式。" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "绘图风格。" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "绘图图例的位置。" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate! 报告它不能打印。gnuplot 安装了吗?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "缺少 %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 必须是一个数字。" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 必须是一个整数。" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 必须是一个布尔型。" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "%1 的 %2 选项无效" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "在一个绘图命令中找到多个表达式( %1 与 %2 )。" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "错误" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "警告" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "不存在指定名字的函数、变量或单位。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "函数:%1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "绘图界面" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "内嵌或在分别在窗口中绘制一个或更多函数。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "表达式" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "选项" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "值" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "整数" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "逻辑" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "数字" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "默认: %1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "函数名" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "标题标签" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "x-轴标签" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "y-轴标签" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"绘图要保存到的图像。若为空则在屏幕上的窗口显示。若 inline=true (内嵌为真)则" +"显示图像而无视这个选项。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "要保存的图像类型。自动(auto)、png、ps、eps、latex、svg、fig 之一。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "为彩色绘图设为真,为单色设为假。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "x 轴最小值。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "x 轴最大值。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "x 轴是否使用对数刻度。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "y 轴是否使用对数刻度。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "x 轴对数刻度的底数。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "y 轴对数刻度的底数。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "是否在绘图中显示网格。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "边界是否要在绘图的所有边(不只是轴)。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "线宽。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "" +"绘图图例所放的地方。none、top_left、top_right、bottom_left、bottom_right、" +"below、outside 中的一个" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "平滑绘图。none、unique、csplines、bezier、sbezier 中选一个" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"绘制样式。lines、points、points_lines、boxes、histogram、steps、" +"candlesticks、dots 中的一个" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "在第二个 x 轴上用刻度。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "在第二个 y 轴上用刻度。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "绘图是画在内部,而非一个新的窗口。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "两个插值点间的距离。另见步。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "插值点的数量。另见步。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "x 变量的名字。这必须是一个未知变量。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "保存变量为文件" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "保存所有当前定义了的变量为文件。它们可以用 %1 重载。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "文件" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "file:要保存到的文件" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "从一个文件加载变量" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "从之前由 %1 创建的文件中加载变量。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "file:要加载的文件" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "数字基:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "分式格式:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "十进制" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "精确" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "分数" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "结合" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "数值显示:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "纯数值" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "科学" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "精度" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "显示无穷数字列:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "使用所有国际单位制词头:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "使用负指数:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "估值" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "转换成最佳的国际单位制单位:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "弧度" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "角度" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "梯度" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "结构模式:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "简化" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "因数分解" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "角度单位:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "绘图" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "显示绘图内嵌:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "显示完整边界:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "线宽:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "采样率:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "平滑模式:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "自然三次曲线样条" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "步" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "图例位置:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "彩色绘图:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "显示网格:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "绘制样式:" + +#: backends/qthelpconfig.cpp:45 +#, kde-format +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "修改条目" + +#: backends/qthelpconfig.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "添加新条目" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "名称不能为空。" + +#: backends/qthelpconfig.cpp:84 +#, kde-format +msgid "Add local documentation" +msgstr "添加本地文档" + +#: backends/qthelpconfig.cpp:100 +#, kde-format +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "获取新文档" + +#: backends/qthelpconfig.cpp:103 +#, kde-format +msgid "Download additional documentations" +msgstr "下载附加文档" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "已压缩的 Qt 帮助文件无效。" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "文档已导入" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "修改" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "删除" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "请通过 GHNS 卸载。" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "安装额外文档文件" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "名称" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "路径" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, kde-format +msgctxt "@action:button" +msgid "Add" +msgstr "添加" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "图标:" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "选择图标" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, kde-format +msgctxt "@label:textbox" +msgid "Name:" +msgstr "名称:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "输入名称" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "选择名称..." + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "路径:" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "选择 Qt Help 文件..." + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "选择 Qt Help 文件..." + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R 是一种用于统计计算和图表绘制的语言环境,和 S 语言环境类似。
      它提" +"供了多种统计(如线性与非线性模型、传统统计测试、时间序列分析、分类和集群等)" +"和绘图技术,并且具备高扩展性。S 语言通常是一种用于研究统计方法的利器,而 R 语" +"言则为人们提供一个开放源码的学术选择。" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "打开文件 %1 出错" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "R 脚本文件 (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "解析命令出错" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "本地 R 文档 URL" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "双击这里打开文件选择对话框" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R 源文件(*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, kde-format +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "https://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage 是一个在 GPL 自由软件授权协议下分发的数学软件。
      它整合了多种" +"现有的同类开源软件的杰出特色,并提供了通用的 Python 界面。" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Sage 可执行文件路径" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "为 Sage 后端启用 LaTeX 排版" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "%1 的结果" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"最后的输出为:\n" +" %2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "" +"*.py|Python 脚本文件\n" +"*.sage|Sage 脚本文件" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "不支持 Sage %1.%2 版本。请更新您的安装到支持的版本,Cantor 才能工作。" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "无法决定 Sage 版本。请检查您的安装和 sage -v 的输出。" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "计算此算式时 Sage 进程崩溃" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Sage 进程已崩溃" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "计算此算式时 Sage 进程退出" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Sage 进程已退出" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "启动 Sage 失败" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "LaTeX 排版:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "Sage LaTeX 输出并不总是正确,因此禁用 latex 排版可以获得更好的体验" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab 是一个自由的跨平台数值计算软件包。它也是一种高级的、面向数值的" +"编程语言。Scilab 以 CeCILL 许可证(GPL兼容)授权。" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, kde-format +msgid "Path to the Scilab executable" +msgstr "Scilab 可执行文件路径" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr "" +"*.sce|Scilab 脚本文件\n" +"*.sci|Scilab 函数文件" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "文件 %1 已经打开。" + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "打开文件" + +#: cantor.cpp:146 +#, kde-format +msgid "Download Examples" +msgstr "下载示例" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "打开示例(&O)" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "转到上一个工作表" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "转到下一个工作表" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" +"所有支持的文件 (*.cws *ipynb);;Cantor 工作表 (*.cws);;Jupyter Notebook (*." +"ipynb)" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      找不到后端

      \n" +"
      您可以尝试:\n" +"
      • 在配置对话框中更改设置;
      • 安装以下程序之一: %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "错误" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "后端 %1 未安装" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "已安装 %1 后端,但未激活。请检查安装和 Cantor 设置" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "会话 %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "无法找到 Cantor 组件:%1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "正在计算..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "就绪" + +#: cantor.cpp:480 +#, kde-format +msgid "Changed" +msgstr "已更改" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "打开了多个未保存的工作表。是否要关闭它们?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "关闭 Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "当前项目已被修改。您想要保存它吗?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "保存项目" + +#: cantor.cpp:628 +#, kde-format +msgid "Formatting" +msgstr "格式" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "默认使用的后端" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "默认执行排版" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "默认执行语法加亮" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "默认启用补全" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "默认启用算式编号" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "工作表的更改默认用动画显示" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" +"在文本条目和 Markdown 条目中默认启用 $$..$$ 内的数学表达式渲染(需要安装" +"pdflatex)。" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "自动重算现在列在下面的项目" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "重新启动后端时要求确认" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "当保存 Jupyter 笔记本格式的工作表时,用富文本格式 (RTF) 保存文本条目" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "使用旧式 Cantor 条目布局样式" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "显示嵌入式数学渲染错误" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "文本结果可见行数限制" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "保存纯文本" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "导出到 LaTex 格式" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "计算工作表" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "缩放" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "使用 LaTeX 排版" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "语法加亮" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "自动补全" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "显示行号" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, kde-format +msgid "Animations" +msgstr "" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "嵌入式数学" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "重启后端" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "计算条目" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "插入命令条目" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "插入文本条目" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "插入 Markdown 条目" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "插入 Latex 条目" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "插入分页" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "插入图像" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "折叠所有结果" + +#: cantor_part.cpp:306 +#, kde-format +msgid "Expand All Results" +msgstr "展开所有结果" + +#: cantor_part.cpp:311 +#, kde-format +msgid "Remove All Results" +msgstr "删除所有结果" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "删除当前项" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "显示脚本编辑器" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "显示补全" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "Cantor 部件" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Cantor 工作表 (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyter 笔记本文件 (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "另存为" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "保存" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "所有可用的计算结果都将丢失。是否确实要重新启动 %1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "要重新启动 %1 吗?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "中断" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "会话错误:%1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "初始化完成" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "正在初始化..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[只读]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "您想要将当前工作表上传到公共网页服务器上吗?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "问题 - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "此工作表尚未保存。您需要在上传前先保存它。" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "警告 - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "此后端不支持脚本" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "编辑(&E)" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "视图(&V)" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "工作表(&W)" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, kde-format +msgid "Settings" +msgstr "" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "文件(&F)" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "新建(&N)" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "面板" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "设置(&S)" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "背景颜色" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, kde-format +msgid "Default" +msgstr "默认" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "文本颜色" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "字体" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "粗体" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "斜体" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "增大字体" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "减小字体" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "选择" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "重置为默认" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "显示结果" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "隐藏结果" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, kde-format +msgid "Show Help" +msgstr "显示帮助" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "外观" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "已中断" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "搜索栏" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "查找:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "下一个(&N)" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "上一个(&P)" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "替换:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "替换(&R)" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "全部替换(&A)" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "搜索于:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "区分大小写(&M)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "层次结构字体" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "章节字体" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "字体系列:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, kde-format +msgid "Font Size:" +msgstr "字体大小:" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "子章节字体" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "节字体" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "子节字体" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "段落字体" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "子段落字体" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "章节" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "子章节" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Section" +msgstr "组" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subsection" +msgstr "亚组" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "段落" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "子段落" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "设置层次结构级别" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "实线样式" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "破折线样式" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dot Line Style" +msgstr "点线样式" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "点破折线样式" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "线宽" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "细" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "中" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "粗" + +#: horizontalruleentry.cpp:320 +#, kde-format +msgid "Line Color" +msgstr "线条颜色" + +#: horizontalruleentry.cpp:351 +#, kde-format +msgid "Line Style" +msgstr "线条样式" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "配置图像" + +#: imageentry.cpp:256 +#, kde-format +msgid "Double click here to configure image settings" +msgstr "双击编辑图像设置" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "无法加载图片 %1" + +#: imageresultitem.cpp:97 +#, kde-format +msgid "Save image result" +msgstr "" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, kde-format +msgid "Images (%1)" +msgstr "图像 (%1)" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "图像设置" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "打开" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "显示大小" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "宽度" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "高度" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "预览" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "打印大小" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "使用显示大小" + +#: imagesettingsdialog.cpp:23 +#, kde-format +msgctxt "@title:window" +msgid "Image Settings" +msgstr "图像设置" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(自动)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "像素" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "打开图像文件" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "显示 LaTeX 代码" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "在绘图集成测试中,程序 %1 没有在 %2 毫秒内完成执行。" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "无法解析绘图集成测试中产生的结果。" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "latex 可执行文件路径" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "dvips 可执行文件路径" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "值" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "<%1 字节>" + +#: lib/defaultvariablemodel.cpp:104 +#, kde-format +msgid "" +msgstr "<变量过大>" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "从:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "到:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "主标题" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "横坐标刻度" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "纵坐标刻度" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "绘图标题:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "该 Jupyter 内容类型暂不支持 (‘%1’)" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "%1 进程意外关闭。所有计算结果都已丢失。" + +#: lib/session.cpp:313 +#, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "%1 进程因“%2”而意外关闭。所有计算结果都已丢失。" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "数学应用程序的 KDE 前端" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "维护者
      Qt5/KF5 移植,Scilab 和 Python 后端" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "开发人员" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "原作者
      维护者 (2009-2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra 后端" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave 后端" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "界面" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Cantor 图标" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "使用后端 " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "要打开的文档。" + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "无法打开文件 %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "进入编辑模式" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "清除附件" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Cantor 数学错误" + +#: markdownentry.cpp:796 +#, kde-format +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "无法读取图像“%1”。错误“%2”" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "---分页---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "转到内容" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "搜索关键字..." + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "在当前文档页面的文本中查找" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "重新设置缩放比例为 100%" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "关闭" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "跳至下一个匹配项" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "跳至上一个匹配项" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, kde-format +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "匹配时区分大小写" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "文件已成功下载到 Downloads" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "下载成功" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, kde-format +msgid "Cantor files" +msgstr "Cantor 文件" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, kde-format +msgid "Jupyter files" +msgstr "Jupyter 文件" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "所有支持的文件" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, kde-format +msgid "All files" +msgstr "所有文件" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "名称:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "值:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, kde-format +msgid "Add New Variable" +msgstr "添加新的变量" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "加载变量" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, kde-format +msgid "Save Variables" +msgstr "保存变量" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, kde-format +msgid "Remove Variables" +msgstr "删除变量" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, kde-format +msgid "Search/Filter" +msgstr "搜索/过滤" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "区分大小写" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "匹配完整单词" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "您确认要删除全部变量吗?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "加载文件" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "保存结果" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "删除结果" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"找不到 KDE 文本编辑器组件;\n" +"请检查您的 KDE 安装。" + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "脚本编辑器" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "脚本编辑器 - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "未找到" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "已到开头" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "已到末尾" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "替换 %1 个实例" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "命令" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "结果" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "错误" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "文本" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX 代码" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, kde-format +msgid "Startup:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "默认后端:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, kde-format +msgid "Worksheet:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, kde-format +msgid "Enable syntax highlighting" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, kde-format +msgid "Syntax highlighting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, kde-format +msgid "Enable syntax completion" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, kde-format +msgid "Show line numbers" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, kde-format +msgid "Line numbers" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, kde-format +msgid "Enable animation effects in the worksheet" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, kde-format +msgid "Evaluation:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, kde-format +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, kde-format +msgid "Reevaluate entries automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "在命令条目中最大可见行数。0 表示不受限制。" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, kde-format +msgid "Markdown:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "查找…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "原始单元格目标" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "添加自定义目标" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "转换为文本条目" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "转换为原始单元格" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "目标 MIME 类型:" + +#: textresultitem.cpp:59 +#, kde-format +msgid "Copy result" +msgstr "复制结果" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "显示渲染图像" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "显示代码" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "显示 HTML 代码" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "显示纯文本版本" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "显示 Html" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "显示 HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "无法渲染 Eps 文件。您可能还需要其他软件包" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Save text result" +msgstr "" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "无法写入文件 %1。" + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "无法写入文件。" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "保存文件 %1 出错" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "在只读模式中,Cantor 无法保证导出对 %1 有效" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "加载 latex.xsl 样式表时出错" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "无法打开文件 %1。" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "打开文件" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "无法打开要读取的文件。" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "所选的文件不是有效的 Cantor 或者 Jupyter 项目文件。" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "所选的文件不是有效的 Cantor 项目文件。" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "此工作表是使用不再受支持的 Python2 创建的。将会使用 Python3 代替。" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "Python2 不再受支持" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "未找到 %1 后端。无法编辑和执行条目。" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"%1 后端有些问题,\n" +"请检查您的配置,或安装所需的软件包。\n" +"目前您只能查看此工作表。" + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "不支持低于 4.5 版本的 Jupyter 笔记本 (检测到版本 %1.%2)" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "不支持高于 4.5 版本的 Jupyter 笔记本(检测到版本 %1.%2)" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" +"此笔记本是使用不再受支持的 Python2 创建的。Cantor 将会使用 Python3 代替。" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "一个包含密钥的对象: %1" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "非对象类型的 JSON 值" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "发现不是 Jupyter 单元格的无效数据(%1)" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "该文件不是有效的 Jupyter 笔记本" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "无效的 Jupyter 笔记本方案: %1" + +#: worksheet.cpp:1804 +#, kde-format +msgid "Convert To" +msgstr "转换为" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, kde-format +msgid "Command" +msgstr "命令" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, kde-format +msgid "Markdown" +msgstr "Markdown" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "图像" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "分页" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, kde-format +msgid "Horizontal Line" +msgstr "水平线" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, kde-format +msgid "Hierarchy Entry" +msgstr "层次结构条目" + +#: worksheet.cpp:1835 +#, kde-format +msgid "Insert After" +msgstr "在后面插入" + +#: worksheet.cpp:1856 +#, kde-format +msgid "Insert Before" +msgstr "在前面插入" + +#: worksheet.cpp:1875 +#, kde-format +msgid "Insert" +msgstr "插入" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "放大" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "缩小" + +#: worksheet.cpp:1923 +#, kde-format +msgid "Original Size" +msgstr "原始大小" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "上移条目" + +#: worksheet.cpp:1932 +#, kde-format +msgid "Move Entries Down" +msgstr "下移条目" + +#: worksheet.cpp:1933 +#, kde-format +msgid "Evaluate Entries" +msgstr "计算条目" + +#: worksheet.cpp:1934 +#, kde-format +msgid "Remove Entries" +msgstr "删除条目" + +#: worksheet.cpp:1947 +#, kde-format +msgid "Collapse Command Entry Results" +msgstr "折叠命令条目结果" + +#: worksheet.cpp:1948 +#, kde-format +msgid "Expand Command Entry Results" +msgstr "展开命令条目结果" + +#: worksheet.cpp:1949 +#, kde-format +msgid "Remove Command Entry Results" +msgstr "删除命令条目结果" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "从执行中排除命令条目" + +#: worksheet.cpp:1951 +#, kde-format +msgid "Add Command Entry To Execution" +msgstr "添加要执行的命令条目" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "文本颜色(&C)..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "颜色" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "文本加亮(&H)..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "字体(&F)" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "字体大小(&S)" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "粗体(&B)" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "斜体(&I)" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "下划线(&U)" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "删除线(&S)" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "左对齐(&L)" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "左对齐" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "居中对齐(&C)" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "居中对齐" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "右对齐(&R)" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "右对齐" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "两端对齐(&J)" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "两端对齐" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "此操作将删除所有结果并无法取消。你确定要这么做吗?" + +#: worksheet.cpp:2861 +#, kde-format +msgid "Remove all results" +msgstr "删除所有结果" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "白色" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "黑色" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "深红色" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "红色" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "浅红色" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "深绿色" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "绿色" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "浅绿色" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "深蓝色" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "蓝色" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "浅蓝色" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "深黄色" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "黄色" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "淡黄色" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "深青色" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "青色" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "浅青色" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "暗洋红色" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "洋红色" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "浅洋红色" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "深橙色" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "橙色" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "浅橙色" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "暗灰色" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "灰色" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "浅灰色" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "上移" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "下移" + +#: worksheetentry.cpp:717 +#, kde-format +msgid "Do you really want to remove this entry?" +msgstr "你真的想要删除该条目吗?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "删除条目" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "拖动项目" diff --git a/po/zh_TW/cantor.po b/po/zh_TW/cantor.po new file mode 100644 index 0000000..ff4d44e --- /dev/null +++ b/po/zh_TW/cantor.po @@ -0,0 +1,4814 @@ +# +# Franklin Weng , 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2017. +# Tsung-en Hsiao , 2015. +# Jeff Huang , 2016. +# pan93412 , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: mathematik\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-10-08 00:40+0000\n" +"PO-Revision-Date: 2019-09-22 19:06+0800\n" +"Last-Translator: pan93412 \n" +"Language-Team: Chinese \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 19.08.1\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Franklin Weng, Jeff Huang" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "franklin@goodhorse.idv.tw, s8321414@gmail.com" + +#: animationresultitem.cpp:38 +#, kde-format +msgid "Pause" +msgstr "暫停" + +#: animationresultitem.cpp:41 +#, kde-format +msgid "Start" +msgstr "開始" + +#: animationresultitem.cpp:45 +#, kde-format +msgid "Stop" +msgstr "停止" + +#: animationresultitem.cpp:113 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save animation result" +msgstr "儲存結果" + +#: animationresultitem.cpp:113 +#, kde-format +msgid "Animations (*.gif)" +msgstr "" + +#: assistants/advancedplot/advancedplotassistant.cpp:30 +#, kde-format +msgid "Advanced Plotting" +msgstr "進階繪製" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/advancedplot/advancedplotdialog.ui:24 +#: backends/qalculate/plotassistant/qalculateplotassistant.cpp:24 +#, kde-format +msgid "Plot" +msgstr "繪製" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:33 +#: assistants/differentiate/differentiatedlg.ui:19 +#: assistants/integrate/integratedlg.ui:19 assistants/plot2d/plot2ddlg.ui:19 +#: assistants/plot3d/plot3ddlg.ui:17 +#, kde-format +msgid "Expression:" +msgstr "表示式:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/advancedplot/advancedplotdialog.ui:45 +#, kde-format +msgid "Additional options:" +msgstr "額外選項:" + +#. i18n: ectx: Menu (Plot) +#: assistants/advancedplot/cantor_advancedplot_assistant.rc:4 +#: assistants/plot2d/cantor_plot2d_assistant.rc:4 +#: assistants/plot3d/cantor_plot3d_assistant.rc:4 +#: backends/qalculate/plotassistant/cantor_qalculateplotassistant.rc:4 +#, kde-format +msgid "&Plot" +msgstr "繪製(&P)" + +#. i18n: ectx: property (title), widget (QGroupBox, directiveContainer) +#: assistants/advancedplot/directivecontainer.ui:14 +#, kde-format +msgid "Option active" +msgstr "選項啟動" + +#. i18n: ectx: Menu (calculate) +#: assistants/differentiate/cantor_differentiate_assistant.rc:4 +#: assistants/integrate/cantor_integrate_assistant.rc:4 +#: assistants/solve/cantor_solve_assistant.rc:4 +#, kde-format +msgid "&Calculate" +msgstr "計算(&C)" + +#: assistants/differentiate/differentiateassistant.cpp:29 +#, kde-format +msgid "Differentiate" +msgstr "微分" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/differentiate/differentiatedlg.ui:29 +#: assistants/integrate/integratedlg.ui:29 +#, kde-format +msgid "Variable:" +msgstr "變數:" + +#. i18n: ectx: property (text), widget (KLineEdit, variable) +#. i18n: ectx: property (text), widget (KLineEdit, xVarEdit) +#: assistants/differentiate/differentiatedlg.ui:36 +#: assistants/integrate/integratedlg.ui:36 +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:123 +#, kde-format +msgid "x" +msgstr "x" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/differentiate/differentiatedlg.ui:47 +#, kde-format +msgid "Times: " +msgstr "時間:" + +#. i18n: ectx: Menu (import_package) +#: assistants/importpackage/cantor_import_package_assistant.rc:4 +#, kde-format +msgid "&Package" +msgstr "套件(&P)" + +#: assistants/importpackage/importpackageassistant.cpp:29 +#, kde-format +msgid "Import Package" +msgstr "匯入套件" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/importpackage/importpackagedlg.ui:17 +#, kde-format +msgid "Package:" +msgstr "套件:" + +#: assistants/integrate/integrateassistant.cpp:29 +#, kde-format +msgid "Integrate" +msgstr "積分" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: assistants/integrate/integratedlg.ui:49 +#, kde-format +msgid "Lower limit:" +msgstr "下限:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: assistants/integrate/integratedlg.ui:63 +#, kde-format +msgid "Upper limit:" +msgstr "上限:" + +#. i18n: ectx: property (text), widget (QCheckBox, isDefinite) +#: assistants/integrate/integratedlg.ui:77 +#, kde-format +msgid "definite integral" +msgstr "定積分" + +#. i18n: ectx: Menu (linear_algebra) +#: assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc:4 +#: assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc:4 +#: assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc:4 +#: assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc:4 +#, kde-format +msgid "&Linear Algebra" +msgstr "線性代數(&L)" + +#: assistants/linearalgebra/creatematrix/creatematrixassistant.cpp:26 +#, kde-format +msgid "Create Matrix" +msgstr "建立矩陣" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:19 +#, kde-format +msgid "Columns:" +msgstr "欄:" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/creatematrix/creatematrixdlg.ui:37 +#, kde-format +msgid "Rows:" +msgstr "列:" + +#: assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvalues" +msgstr "計算特徵值" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui:17 +#: assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui:17 +#: assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui:17 +#, kde-format +msgid "Matrix:" +msgstr "矩陣:" + +#: assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp:28 +#, kde-format +msgid "Compute Eigenvectors" +msgstr "計算特徵向量" + +#: assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp:28 +#, kde-format +msgid "Invert Matrix" +msgstr "逆矩陣" + +#: assistants/plot2d/plot2dassistant.cpp:28 +#, kde-format +msgid "Plot 2D" +msgstr "繪製平面圖" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot2d/plot2ddlg.ui:31 +#, kde-format +msgid "Variable" +msgstr "變數" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: assistants/plot2d/plot2ddlg.ui:43 assistants/plot3d/plot3ddlg.ui:41 +#: assistants/plot3d/plot3ddlg.ui:86 +#, kde-format +msgid "Name" +msgstr "名稱" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: assistants/plot2d/plot2ddlg.ui:53 assistants/plot3d/plot3ddlg.ui:51 +#: assistants/plot3d/plot3ddlg.ui:96 +#, kde-format +msgid "Minimum:" +msgstr "最小值:" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: assistants/plot2d/plot2ddlg.ui:63 assistants/plot3d/plot3ddlg.ui:61 +#: assistants/plot3d/plot3ddlg.ui:106 +#, kde-format +msgid "Maximum:" +msgstr "最大值:" + +#: assistants/plot3d/plot3dassistant.cpp:28 +#, kde-format +msgid "Plot 3D" +msgstr "繪製立體圖" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: assistants/plot3d/plot3ddlg.ui:29 +#, kde-format +msgid "1st Variable" +msgstr "第 1 個變數" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: assistants/plot3d/plot3ddlg.ui:74 +#, kde-format +msgid "2nd Variable" +msgstr "第 2 個變數" + +#: assistants/runscript/runscriptassistant.cpp:28 +#: scripteditor/scripteditorwidget.cpp:39 +#, kde-format +msgid "Run Script" +msgstr "執行文稿" + +#: assistants/solve/solveassistant.cpp:28 +#, kde-format +msgid "Solve equations" +msgstr "解決方程式" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: assistants/solve/solvedlg.ui:19 +#, kde-format +msgid "Equations:" +msgstr "方程式:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: assistants/solve/solvedlg.ui:33 +#, kde-format +msgid "Variables:" +msgstr "變數:" + +#: backendchoosedialog.cpp:64 +#, kde-format +msgid "Select the Backend" +msgstr "選擇後端" + +#: backendchoosedialog.cpp:110 +#, kde-format +msgid "

      %1

      Recommended version: %2
      " +msgstr "

      %1

      建議版本: %2
      " + +#: backendchoosedialog.cpp:113 +#, kde-format +msgid "" +"
      %1

      See %2 for more information." +msgstr "" +"
      %1

      顯示 %2 取得更多資訊。
      " + +#: backendchoosedialog.cpp:125 +#, fuzzy, kde-format +#| msgid "
      Some requirements are not fulfilled: %1
      " +msgid "" +"
      Some requirements are not fulfilled: %1
      " +msgstr "
      未滿足部份需求:%1
      " + +#. i18n: ectx: property (text), widget (QCheckBox, makeDefault) +#: backendchooser.ui:37 +#, kde-format +msgid "Make this the default backend" +msgstr "將此後端程式設為預設" + +#: backends/julia/juliabackend.cpp:57 +#, kde-format +msgid "" +"Julia is a high-level, high-performance dynamic programming language " +"for technical computing, with syntax that is familiar to users of other " +"technical computing environments. It provides a sophisticated compiler, " +"distributed parallel execution, numerical accuracy, and an extensive " +"mathematical function library." +msgstr "" +"Julia 是一個高階、高效能的動態程式,其可用於科學計算,而語法則對其他科" +"學計算環境的使用者來說相當友善。它提供了精密的編譯器、分散且平行的執行、精準" +"的數據以及一份可擴充的數學函數的函式庫。" + +#: backends/julia/juliabackend.cpp:70 +#, kde-format +msgctxt "" +"The url to the documentation of Julia, please check if there is a translated " +"version and use the correct url" +msgid "https://docs.julialang.org/en/latest/" +msgstr "https://docs.julialang.org/en/latest/" + +#: backends/julia/juliabackend.cpp:86 +#, kde-format +msgid "" +"The path to Julia specified in the application settings must point directly " +"to the executable. Symlinks are not allowed. Please provide the correct path " +"in the application settings and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:101 backends/julia/juliabackend.cpp:113 +#, kde-format +msgid "" +"Сantor couldn’t determine the version of Julia for %1. Please specify the " +"correct path to Julia executable (no symlinks allowed) and try again." +msgstr "" + +#: backends/julia/juliabackend.cpp:126 +#, kde-format +msgid "" +"You are trying to use Cantor with Julia v%1.%2.%3. This version of Cantor " +"was compiled with the support of Julia v%4.%5.%6. Please point to this " +"version of Julia or recompile Cantor using the version %1.%2.%3." +msgstr "" + +#. i18n: ectx: label, entry (replPath), group (JuliaBackend) +#: backends/julia/juliabackend.kcfg:10 +#, kde-format +msgid "Path to the Julia native REPL" +msgstr "Julia 原生 REPL 的路徑" + +#. i18n: ectx: label, entry (variableManagement), group (JuliaBackend) +#. i18n: ectx: label, entry (variableManagement), group (PythonBackend) +#. i18n: ectx: label, entry (variableManagement), group (RBackend) +#. i18n: ectx: label, entry (variableManagement), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:16 backends/maxima/maximabackend.kcfg:26 +#: backends/python/pythonbackend.kcfg:14 backends/R/rserver/rserver.kcfg:16 +#, kde-format +msgid "Enable Variable Management" +msgstr "開啟變數管理" + +#. i18n: ectx: label, entry (integratePlots), group (JuliaBackend) +#. i18n: ectx: label, entry (integratePlots), group (PythonBackend) +#. i18n: ectx: label, entry (integratePlots), group (RBackend) +#. i18n: ectx: label, entry (integratePlots), group (ScilabBackend) +#. i18n: ectx: label, entry (integratePlots), group (MaximaBackend) +#: backends/julia/juliabackend.kcfg:20 backends/maxima/maximabackend.kcfg:22 +#: backends/python/pythonbackend.kcfg:10 backends/R/rserver/rserver.kcfg:12 +#: backends/scilab/scilabbackend.kcfg:22 +#, kde-format +msgid "Integrate Plots into the Worksheet" +msgstr "將 Plots 整合進工作表" + +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (JuliaBackend) +#. i18n: ectx: label, entry (plotExtenstionGraphicPackage), group (PythonBackend) +#: backends/julia/juliabackend.kcfg:37 backends/python/pythonbackend.kcfg:28 +#, kde-format +msgid "Graphical package for the Plot-Assistant" +msgstr "" + +#: backends/julia/juliaextensions.cpp:246 +#, kde-format +msgid "# Sorry, but Gadfly don't support 3d plots" +msgstr "" + +#: backends/julia/juliaextensions.cpp:263 +#, kde-format +msgid "Julia script file (*.jl)" +msgstr "Julia 指令碼檔案 (*.jl)" + +#: backends/julia/juliasession.cpp:111 backends/julia/juliasession.cpp:120 +#: backends/maxima/maximasession.cpp:265 cantor_part.cpp:946 +#: lib/session.cpp:311 lib/session.cpp:313 worksheet.cpp:1193 +#: worksheet.cpp:1221 worksheet.cpp:1236 worksheet.cpp:1252 worksheet.cpp:1296 +#: worksheet.cpp:1308 +#, kde-format +msgid "Error - Cantor" +msgstr "錯誤 - Cantor" + +#: backends/julia/juliasession.cpp:111 +#, kde-format +msgid "" +"Julia session can't login due internal julia problem with missing internal " +"file - \"%1\"" +msgstr "" + +#: backends/julia/juliasession.cpp:120 +#, kde-format +msgid "Julia session can't login due unknown internal problem" +msgstr "" + +#: backends/julia/juliasession.cpp:246 +#, kde-format +msgid "Julia process stopped working." +msgstr "Julia 執行程序停止運作。" + +#: backends/julia/juliasession.cpp:249 +#, kde-format +msgid "Failed to start Julia process." +msgstr "無法啟動 Julia 執行程序。" + +#: backends/julia/juliasession.cpp:252 +#, kde-format +msgid "Communication with Julia process failed for unknown reasons." +msgstr "與 Julia 執行程序通訊失敗,原因不明。" + +#: backends/julia/juliasession.cpp:322 +#, kde-format +msgid "" +"For Julia only GR (https://gr-framework.org/), a framework for visualization " +"applications, is supported at the moment. This package has to be installed " +"first, if not done yet. For this, run Pkg.install(\"GR\") in Cantor or in " +"Julia REPL. Note, this operation can take some time and it's better to " +"perform it in Julia REPL that is able to show the current progress of the " +"package installation." +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabGeneral) +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: backends/julia/settings.ui:21 backends/lua/settings.ui:21 +#: backends/maxima/settings.ui:21 backends/octave/settings.ui:21 +#: backends/python/settings.ui:21 backends/qalculate/settings.ui:21 +#: backends/R/settings.ui:21 backends/sage/settings.ui:21 +#: backends/scilab/settings.ui:21 cantor.cpp:627 +#, kde-format +msgid "General" +msgstr "一般" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/julia/settings.ui:27 backends/maxima/settings.ui:61 +#: backends/octave/settings.ui:106 backends/sage/settings.ui:63 +#: backends/scilab/settings.ui:27 +#, kde-format +msgid "Executable:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPlotIntegration) +#: backends/julia/settings.ui:37 backends/maxima/settings.ui:37 +#: backends/octave/settings.ui:73 backends/python/settings.ui:47 +#: backends/R/settings.ui:53 backends/scilab/settings.ui:37 +#, fuzzy, kde-format +#| msgid "Integrate" +msgid "Plot Integration:" +msgstr "積分" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_integratePlots) +#: backends/julia/settings.ui:44 backends/maxima/settings.ui:27 +#: backends/octave/settings.ui:96 backends/python/settings.ui:64 +#: backends/R/settings.ui:33 backends/scilab/settings.ui:44 +#, fuzzy, kde-format +#| msgid "" +#| "If true, plots will be displayed inside the worksheet. If not they appear " +#| "in a separate window." +msgid "" +"If enabled, plots will be shown inside of the worksheet. Otherwise, plots " +"will be shown in an external window." +msgstr "若此選項為真,圖形會在工作表內顯示。反之會在分開的視窗中顯示。" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowLatex) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_integratePlots) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_variableManagement) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_indicateInfiniteSeries) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useAllPrefixes) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_negativeExponents) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_postConversion) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_inlinePlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_coloredPlot) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotGrid) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_plotBorder) +#: backends/julia/settings.ui:47 backends/julia/settings.ui:64 +#: backends/maxima/settings.ui:30 backends/maxima/settings.ui:47 +#: backends/octave/settings.ui:56 backends/octave/settings.ui:99 +#: backends/python/settings.ui:67 backends/python/settings.ui:77 +#: backends/qalculate/settings.ui:125 backends/qalculate/settings.ui:142 +#: backends/qalculate/settings.ui:159 backends/qalculate/settings.ui:202 +#: backends/qalculate/settings.ui:308 backends/qalculate/settings.ui:315 +#: backends/qalculate/settings.ui:322 backends/qalculate/settings.ui:339 +#: backends/R/settings.ui:36 backends/R/settings.ui:46 +#: backends/sage/settings.ui:37 backends/scilab/settings.ui:47 +#: commandentry.cpp:349 +#, kde-format +msgid "Enabled" +msgstr "已開啟" + +#. i18n: ectx: property (text), widget (QLabel, lVariableManagement) +#: backends/julia/settings.ui:54 backends/maxima/settings.ui:54 +#: backends/octave/settings.ui:66 backends/python/settings.ui:27 +#: backends/R/settings.ui:76 +#, fuzzy, kde-format +#| msgid "Enable Variable Management" +msgid "Variable Management:" +msgstr "開啟變數管理" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_variableManagement) +#: backends/julia/settings.ui:61 backends/maxima/settings.ui:44 +#: backends/octave/settings.ui:53 backends/python/settings.ui:74 +#: backends/R/settings.ui:43 +#, kde-format +msgid "" +"Monitor the creation and destruction of variables and show the existing " +"variables in the variable panel." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label2) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:71 backends/octave/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Integrate Plots in Worksheet" +msgid "Internal Plot Format:" +msgstr "在工作表中整合 Plots" + +#. i18n: ectx: property (toolTip), widget (QComboBox, kcfg_inlinePlotFormat) +#: backends/julia/settings.ui:78 +#, kde-format +msgid "Inner format of plots, if plots embedding is enabled." +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QLabel, label3) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#. i18n: ectx: property (toolTip), widget (QLabel, label4) +#: backends/julia/settings.ui:95 backends/julia/settings.ui:111 +#: backends/python/settings.ui:54 backends/python/settings.ui:90 +#, kde-format +msgid "Graphic package to be used in the Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label3) +#. i18n: ectx: property (text), widget (QLabel, label4) +#: backends/julia/settings.ui:98 backends/python/settings.ui:57 +#, kde-format +msgid "Package for Plot Assistant" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:115 backends/python/settings.ui:109 +#, kde-format +msgid "GR" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:120 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "Plots" +msgstr "繪製" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:125 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "PyPlot" +msgstr "繪製" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/julia/settings.ui:130 +#, kde-format +msgid "Gadfly" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, tabAutorun) +#. i18n: ectx: attribute (title), widget (QWidget, tabAutoran) +#: backends/julia/settings.ui:152 backends/lua/settings.ui:51 +#: backends/maxima/settings.ui:85 backends/octave/settings.ui:114 +#: backends/python/settings.ui:123 backends/qalculate/settings.ui:556 +#: backends/R/settings.ui:84 backends/sage/settings.ui:71 +#: backends/scilab/settings.ui:68 +#, kde-format +msgid "Autorun" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lAutorun) +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/julia/settings.ui:158 backends/kalgebra/settings.ui:20 +#: backends/lua/settings.ui:57 backends/maxima/settings.ui:91 +#: backends/octave/settings.ui:120 backends/python/settings.ui:129 +#: backends/qalculate/settings.ui:562 backends/R/settings.ui:90 +#: backends/sage/settings.ui:77 backends/scilab/settings.ui:74 +#, fuzzy, kde-format +#| msgid "Scripts to autorun" +msgid "Commands to autorun" +msgstr "要自動執行的文稿" + +#. i18n: ectx: attribute (title), widget (QWidget, tabDocumentation) +#: backends/julia/settings.ui:172 backends/lua/settings.ui:71 +#: backends/maxima/settings.ui:105 backends/octave/settings.ui:134 +#: backends/python/settings.ui:143 backends/qalculate/settings.ui:575 +#: backends/R/settings.ui:104 backends/sage/settings.ui:91 +#: backends/scilab/settings.ui:88 +#, fuzzy, kde-format +#| msgid "Documents to open." +msgid "Documentation" +msgstr "要開啟的文件。" + +#: backends/kalgebra/kalgebrabackend.cpp:56 +#, fuzzy, kde-format +#| msgctxt "" +#| "The url to the documentation of KAlgebra, please check if there is a " +#| "translated version and use the correct url" +#| msgid "https://docs.kde.org/stable/en/kdeedu/kalgebra/" +msgctxt "" +"The url to the documentation of KAlgebra, please check if there is a " +"translated version and use the correct url" +msgid "https://docs.kde.org/?application=kalgebra" +msgstr "https://docs.kde.org/stable/en/kdeedu/kalgebra/" + +#. i18n: ectx: label, entry (autorunScripts), group (SageBackend) +#. i18n: ectx: label, entry (autorunScripts), group (KAlgebraBackend) +#. i18n: ectx: label, entry (autorunScripts), group (PythonBackend) +#. i18n: ectx: label, entry (autorunScripts), group (RBackend) +#. i18n: ectx: label, entry (autorunScripts), group (LuaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (ScilabBackend) +#. i18n: ectx: label, entry (autorunScripts), group (MaximaBackend) +#. i18n: ectx: label, entry (autorunScripts), group (QalculateBackend) +#: backends/kalgebra/kalgebrabackend.kcfg:9 backends/lua/luabackend.kcfg:14 +#: backends/maxima/maximabackend.kcfg:30 backends/python/pythonbackend.kcfg:18 +#: backends/qalculate/qalculatebackend.kcfg:130 +#: backends/R/rserver/rserver.kcfg:20 backends/sage/sagebackend.kcfg:18 +#: backends/scilab/scilabbackend.kcfg:26 +#, kde-format +msgid "List of scripts to autorun at the beginning of session" +msgstr "在工作階段開始時要自動執行的文稿" + +#: backends/kalgebra/kalgebraexpression.cpp:44 +#, kde-format +msgid "Error: %1" +msgstr "錯誤:%1" + +#: backends/kalgebra/kalgebrasyntaxhelpobject.cpp:27 +#, kde-format +msgid "

      %1: %2

      " +msgstr "

      %1: %2

      " + +#. i18n: ectx: property (toolTip), widget (QGroupBox, groupBox) +#: backends/kalgebra/settings.ui:17 +#, kde-format +msgid "" +"This autorun commands, which will run on start new worksheet. They can be " +"useful for loading needed modules, changing environment, etc." +msgstr "" + +#: backends/lua/luabackend.cpp:52 +#, kde-format +msgctxt "Lua official documentation" +msgid "https://www.lua.org/docs.html" +msgstr "https://www.lua.org/docs.html" + +#: backends/lua/luabackend.cpp:57 +#, kde-format +msgid "" +"Lua is a fast and lightweight scripting language, with a simple " +"procedural syntax. There are several libraries in Lua aimed at math and " +"science." +msgstr "" +"Lua 是一套快且輕量的文稿語言,程序的語法較簡單。在 Lua 中有一些關於數" +"學與科學的函式庫。" + +#. i18n: ectx: label, entry (Path), group (LuaBackend) +#: backends/lua/luabackend.kcfg:10 +#, kde-format +msgid "Path to luajit command" +msgstr "luajit 指令位置" + +#: backends/lua/luaextensions.cpp:20 +#, kde-format +msgid "Lua script file (*.lua)" +msgstr "Lua 文稿檔 (*.lua)" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/lua/settings.ui:27 +#, fuzzy, kde-format +#| msgid "Path to luajit command:" +msgid "Path to luajit:" +msgstr "luajit 指令位置:" + +#: backends/maxima/maximabackend.cpp:72 +#, kde-format +msgctxt "" +"the url to the documentation of Maxima, please check if there is a " +"translated version and use the correct url" +msgid "http://maxima.sourceforge.net/docs/manual/en/maxima.html" +msgstr "http://maxima.sourceforge.net/docs/manual/en/maxima.html" + +#: backends/maxima/maximabackend.cpp:79 +#, kde-format +msgid "" +"

      Maxima's Help System

      Function apropos

      Searches for " +"Maxima names which have name appearing anywhere within them; name " +"must be a string or symbol. Thus, apropos(exp) returns a list of all " +"the flags and functions which have exp as part of their name, such as " +"expand, exp, and exponentialize. So, if you can only " +"remember part of the name of a Maxima command or variable, you can use this " +"command to find the rest of the name. Similarly, you can type " +"apropos(tr_) to find a list of many of the switches relating to the " +"translator, most of which begin with tr_.

      apropos(\"\") " +"returns a list with all Maxima names.

      apropos returns the " +"empty list [], if no name is found.

      Function describedescribe(string) is equivalent to describe(string, exact)." +"

      describe(string, exact) finds an item with title equal (case-" +"insensitive) to string, if there is any such item." +"

      describe(string, inexact) finds all documented items which " +"contain string in their titles. If there is more than one such item, Maxima " +"asks the user to select an item or items to display.

      ? foo " +"(with a space between ? and foo) is equivalent to " +"describe(\"foo\", exact), and ?? foo is equivalent to " +"describe(\"foo\", inexact).

      describe(, inexact) yields " +"a list of all topics documented in the on-line manual.

      describe quotes its argument. describe returns true if some " +"documentation is found, otherwise false.

      Function example

      example(topic) displays some examples of topic, which " +"is a symbol or a string. To get examples for operators like if, " +"do, or lambda the argument must be a string, e.g. " +"example(\"do\"). example is not case sensitive. Most topics " +"are function names.

      example() returns the list of all " +"recognized topics.

      The name of the file containing the examples is " +"given by the global option variable manual_demo, which defaults to " +"\"manual.demo\".

      example quotes its argument. example returns done unless no examples are found or there is no argument, " +"in which case example returns the list of all recognized topics." +msgstr "" + +#: backends/maxima/maximabackend.cpp:111 +#, kde-format +msgid "" +"Maxima is a system for the manipulation of symbolic and numerical " +"expressions, including differentiation, integration, Taylor series, Laplace " +"transforms, ordinary differential equations, systems of linear equations, " +"polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields " +"high precision numeric results by using exact fractions, arbitrary precision " +"integers, and variable precision floating point numbers. Maxima can plot " +"functions and data in two and three dimensions." +msgstr "" +"Maxima 是一套操作符號與數字表示式的系統,包括微分、積分、泰勒表示式、" +"拉普拉斯轉換(Laplace transform)、常微分方程式(ordinary differential " +"equations)、線性方程式系統、多項式與集合、列表、向量、矩陣、張量等等。" +"Maxima 用精確的分數、整數與浮點數提供高精確度的數字結果。Maxima 可以繪製二維" +"或三維的圖形。" + +#. i18n: ectx: label, entry (Path), group (MaximaBackend) +#: backends/maxima/maximabackend.kcfg:10 +#, kde-format +msgid "Path to the Maxima executable" +msgstr "Maxima 執行檔路徑" + +#: backends/maxima/maximaexpression.cpp:104 +#, kde-format +msgid "Error: Too many */" +msgstr "錯誤:太多的 */" + +#: backends/maxima/maximaexpression.cpp:117 +#, kde-format +msgid "Error: Too many /*" +msgstr "錯誤:太多的 /*" + +#: backends/maxima/maximaexpression.cpp:123 +#, kde-format +msgid "Error: expected \" before ;" +msgstr "錯誤:在 ; 之前應有 \"" + +#: backends/maxima/maximaexpression.cpp:406 +#, kde-format +msgid "Waiting for the plot result" +msgstr "等待策劃結果" + +#: backends/maxima/maximaextensions.cpp:31 +#, kde-format +msgid "Maxima batch file (*.mac)" +msgstr "Maxima 批次檔 (*.mac)" + +#: backends/maxima/maximasession.cpp:184 +#, kde-format +msgid "Failed to start Maxima" +msgstr "啟動 Maxima 失敗。" + +#: backends/maxima/maximasession.cpp:251 +#, kde-format +msgid "Maxima crashed. restarting..." +msgstr "Maxima 發生錯誤。重新啟動中..." + +#: backends/maxima/maximasession.cpp:265 +#, kde-format +msgid "Maxima crashed twice within a short time. Stopping to try starting" +msgstr "Maxima 在短時間內發生錯誤兩次。將停止再次嘗試啟動" + +#: backends/octave/octavebackend.cpp:62 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Octave, please check if there is a " +#| "translated version (currently Czech and Japanese) and use the correct url" +#| msgid "https://octave.org/doc/interpreter/" +msgctxt "" +"the url to the documentation of Octave, please check if there is a " +"translated version and use the correct url" +msgid "https://octave.org/doc/interpreter/" +msgstr "https://octave.org/doc/interpreter/" + +#: backends/octave/octavebackend.cpp:67 +#, kde-format +msgid "" +"GNU Octave is a high-level language, primarily intended for numerical " +"computations.
      It provides a convenient command line interface for " +"solving linear and nonlinear problems numerically, and for performing other " +"numerical experiments using a language that is mostly compatible with Matlab." +msgstr "" +"GNU Octave 是一種高階語言,主要是用於數學運算。
      它提供一個簡便的命" +"令列介面,可以解線性與非線性的問題,並且可以用一種與 Matlab 相容的語言執行一" +"些數學運算實驗。" + +#: backends/octave/octaveextensions.cpp:34 +#, kde-format +msgid "Octave script file (*.m)" +msgstr "Octave 文稿檔 (*.m)" + +#: backends/octave/octavesession.cpp:272 backends/sage/sageexpression.cpp:58 +#, kde-format +msgid "Syntax Error" +msgstr "語法錯誤" + +#: backends/octave/octavesession.cpp:409 +#, kde-format +msgid "Plot integration test failed." +msgstr "" + +#: backends/octave/octavesession.cpp:413 +#, kde-format +msgid "The integration of plots will be disabled." +msgstr "" + +#: backends/octave/octavesession.cpp:414 backends/sage/sagesession.cpp:238 +#: backends/sage/sagesession.cpp:271 backends/sage/sagesession.cpp:337 +#: backends/sage/sagesession.cpp:348 cantor.cpp:216 cantor.cpp:218 +#: cantor.cpp:337 cantor.cpp:344 lib/session.cpp:381 main.cpp:66 main.cpp:130 +#: markdownentry.cpp:797 textentry.cpp:553 worksheet.cpp:1275 +#, kde-format +msgid "Cantor" +msgstr "Cantor" + +#: backends/octave/octavesession.cpp:435 +#, kde-format +msgid "" +"The plot integration doesn't work because Cantor found, that Octave can't " +"create plots, because there are no graphical backends for it: this " +"conclusion was made on the basis of empty output from " +"available_graphics_toolkits() function. Looks like you should install some " +"additional OS packages, like gnuplot, fltk or qt for possibility to create " +"plots." +msgstr "" + +#: backends/python/pythonbackend.cpp:67 +#, fuzzy, kde-format +#| msgctxt "The url to the documentation Python 3" +#| msgid "https://docs.python.org/3/" +msgctxt "The url to the documentation Python" +msgid "https://docs.python.org/3/" +msgstr "https://docs.python.org/3/" + +#: backends/python/pythonbackend.cpp:72 +#, fuzzy, kde-format +#| msgid "" +#| "Python is a remarkably powerful dynamic programming language that " +#| "is used in a wide variety of application domains. There are several " +#| "Python packages to scientific programming. This backend supports Python 2." +msgid "" +"Python is a remarkably powerful dynamic programming language that is " +"used in a wide variety of application domains. There are several Python " +"packages to scientific programming." +msgstr "" +"Python 是一種強大的動態程式語言,用途非常廣泛。有一些科學程式使用的 " +"Python 套件。此後端介面支援 Python 2。" + +#: backends/python/pythonextensions.cpp:285 +#, kde-format +msgid "# Sorry, but Bokeh doesn't support 3d plotting" +msgstr "" + +#: backends/python/pythonextensions.cpp:301 +#, kde-format +msgid "Python script file (*.py)" +msgstr "Python 文稿檔 (*.py)" + +#: backends/python/pythonsession.cpp:274 +#, kde-format +msgid "Cantor Python server stopped working." +msgstr "Cantor Python 伺服器停止運作。" + +#: backends/python/pythonsession.cpp:278 +#, kde-format +msgid "Failed to start Cantor python server." +msgstr "無法啟動 Cantor Python 伺服器。" + +#: backends/python/pythonsession.cpp:282 +#, kde-format +msgid "Communication with Cantor python server failed for unknown reasons." +msgstr "與 Cantor Python 伺服器通訊失敗,原因不明。" + +#: backends/python/pythonsession.cpp:308 +#, kde-format +msgid "" +"For using integrated graphics with Matplotlib package, you need to install " +"\"matplotlib\" python package first." +msgstr "" + +#: backends/python/pythonsession.cpp:314 +#, kde-format +msgid "" +"For using integrated graphic with Plot.ly, you need to install \"plotly\" " +"python package and special Plot.ly-compatible \"orca\" executable. See " +"\"Static Image Export\" article in Plot.ly documentation for details." +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:94 +#, kde-format +msgid "matplotlib" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:99 +#, kde-format +msgid "pylab" +msgstr "" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:104 +#, fuzzy, kde-format +#| msgid "Plot" +msgid "plot.ly" +msgstr "繪製" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotExtenstionGraphicPackage) +#: backends/python/settings.ui:114 +#, kde-format +msgid "bokeh" +msgstr "" + +#. i18n: ectx: property (windowTitle), widget (QWidget, QalculatePlotAssistantBase) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:14 +#, kde-format +msgid "Cantor - Plot Dialog" +msgstr "Cantor ─ 繪圖對話框" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:24 +#, kde-format +msgid "Functions" +msgstr "函數" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:40 +#, kde-format +msgid "Title" +msgstr "標題" + +#. i18n: ectx: property (text), widget (QTableWidget, functionTable) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:45 +#, kde-format +msgid "Expression" +msgstr "表示式" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:72 +#, kde-format +msgid "Add" +msgstr "新增" + +#. i18n: ectx: property (text), widget (QPushButton, removeButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:82 +#: worksheetentry.cpp:437 +#, kde-format +msgid "Remove" +msgstr "移除" + +#. i18n: ectx: property (text), widget (QPushButton, clearButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:92 +#, kde-format +msgid "Clear List" +msgstr "清除清單" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:107 +#, kde-format +msgid "X variable" +msgstr "X 變數" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:134 +#, kde-format +msgid "Style" +msgstr "樣式" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:145 +#: backends/qalculate/settings.ui:420 +#, kde-format +msgid "Lines" +msgstr "線條" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:150 +#: backends/qalculate/settings.ui:425 +#, kde-format +msgid "Points" +msgstr "點" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:155 +#: backends/qalculate/settings.ui:430 +#, kde-format +msgid "Points and Lines" +msgstr "點與線" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:160 +#: backends/qalculate/settings.ui:435 +#, kde-format +msgid "Boxes" +msgstr "盒狀" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:165 +#: backends/qalculate/settings.ui:440 +#, kde-format +msgid "Histogram" +msgstr "直方圖" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:170 +#, kde-format +msgid "Steps" +msgstr "Steps" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:175 +#: backends/qalculate/settings.ui:450 +#, kde-format +msgid "Candlesticks" +msgstr "燭柱圖" + +#. i18n: ectx: property (text), item, widget (KComboBox, styleBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:180 +#: backends/qalculate/settings.ui:455 +#, kde-format +msgid "Dots" +msgstr "圓點圖" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:192 +#, kde-format +msgid "Smoothing" +msgstr "平滑度" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:203 +#: backends/qalculate/settings.ui:92 backends/qalculate/settings.ui:210 +#: backends/qalculate/settings.ui:244 backends/qalculate/settings.ui:391 +#, kde-format +msgid "None" +msgstr "無" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:208 +#: backends/qalculate/settings.ui:396 +#, kde-format +msgid "Monotonic" +msgstr "單調" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:213 +#, kde-format +msgid "Natural Cubic Splines" +msgstr "自然曲線樣條" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:218 +#: backends/qalculate/settings.ui:406 +#, kde-format +msgid "Bezier" +msgstr "貝茲曲線" + +#. i18n: ectx: property (text), item, widget (KComboBox, smoothingBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:223 +#: backends/qalculate/settings.ui:411 +#, kde-format +msgid "Bezier (monotonic)" +msgstr "貝茲曲線(單調)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:233 +#, kde-format +msgid "Function Range" +msgstr "函數範圍" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:239 +#, kde-format +msgid "X range" +msgstr "X 範圍" + +#. i18n: ectx: property (text), widget (KLineEdit, xMinEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:254 +#, kde-format +msgid "0" +msgstr "0" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:261 +#, kde-format +msgid "-" +msgstr "-" + +#. i18n: ectx: property (text), widget (KLineEdit, xMaxEdit) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:274 +#, kde-format +msgid "10" +msgstr "10" + +#. i18n: ectx: property (text), widget (QRadioButton, stepsButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:283 +#, kde-format +msgid "Sa&mpling rate" +msgstr "取樣頻率(&M)" + +#. i18n: ectx: property (text), widget (QRadioButton, stepButton) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:293 +#, kde-format +msgid "Step si&ze" +msgstr "梯度大小(&Z)" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:324 +#, kde-format +msgid "Options" +msgstr "選項" + +#. i18n: ectx: property (text), widget (QLabel, label_19) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:332 +#, kde-format +msgid "Plot title" +msgstr "繪製標題" + +#. i18n: ectx: property (text), widget (QLabel, label_20) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:353 +#, kde-format +msgid "X-axis label" +msgstr "X 軸標籤" + +#. i18n: ectx: property (text), widget (QLabel, label_21) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:374 +#, kde-format +msgid "Y-axis label" +msgstr "Y 軸標籤" + +#. i18n: ectx: property (text), widget (QLabel, label_22) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:395 +#, kde-format +msgid "Legend position" +msgstr "圖例位置" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:403 +#: backends/qalculate/settings.ui:474 +#, kde-format +msgid "Hide legend" +msgstr "隱藏圖例" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:408 +#: backends/qalculate/settings.ui:479 +#, kde-format +msgid "Top-left" +msgstr "左上" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:413 +#: backends/qalculate/settings.ui:484 +#, kde-format +msgid "Top-right" +msgstr "右上" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:418 +#: backends/qalculate/settings.ui:489 +#, kde-format +msgid "Bottom-left" +msgstr "左下方" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:423 +#: backends/qalculate/settings.ui:494 +#, kde-format +msgid "Bottom-right" +msgstr "右下" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:428 +#: backends/qalculate/settings.ui:499 +#, kde-format +msgid "Below" +msgstr "下方" + +#. i18n: ectx: property (text), item, widget (KComboBox, legendBox) +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotLegend) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:433 +#: backends/qalculate/settings.ui:504 +#, kde-format +msgid "Outside" +msgstr "外側" + +#. i18n: ectx: property (text), widget (QCheckBox, gridCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:445 +#, kde-format +msgid "Display Grid" +msgstr "顯示格線" + +#. i18n: ectx: property (text), widget (QCheckBox, borderCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:452 +#, kde-format +msgid "Display full border" +msgstr "顯示完整邊框" + +#. i18n: ectx: property (text), widget (QCheckBox, colorCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:463 +#, kde-format +msgid "Use Colors" +msgstr "使用顏色" + +#. i18n: ectx: property (text), widget (QCheckBox, inlineCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:470 +#, kde-format +msgid "Display inline" +msgstr "內含顯示" + +#. i18n: ectx: property (text), widget (QCheckBox, xLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:481 +#, kde-format +msgid "Logarithmic x scale" +msgstr "X 刻度為對數" + +#. i18n: ectx: property (text), widget (QCheckBox, yLogCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:502 +#, kde-format +msgid "Logarithmic y scale" +msgstr "Y 刻度為對數" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_3) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:521 +#, kde-format +msgid "File Options" +msgstr "檔案選項" + +#. i18n: ectx: property (text), widget (QCheckBox, saveCheckBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:527 +#, kde-format +msgid "Save plot to file" +msgstr "將圖形存到檔案" + +#. i18n: ectx: property (text), widget (QLabel, label_23) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:547 +#, kde-format +msgid "File type" +msgstr "檔案型態" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:555 +#, kde-format +msgid "Detect from filename" +msgstr "從檔名偵測" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:560 +#, kde-format +msgid "PNG" +msgstr "PNG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:565 +#, kde-format +msgid "PS" +msgstr "PS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:570 +#, kde-format +msgid "EPS" +msgstr "EPS" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:575 +#: worksheet.cpp:1820 worksheet.cpp:1846 worksheet.cpp:1866 worksheet.cpp:1884 +#, kde-format +msgid "LaTeX" +msgstr "LaTeX" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:580 +#, kde-format +msgid "SVG" +msgstr "SVG" + +#. i18n: ectx: property (text), item, widget (KComboBox, saveFileBox) +#: backends/qalculate/plotassistant/qalculateplotdialog.ui:585 +#, kde-format +msgid "FIG" +msgstr "FIG" + +#: backends/qalculate/qalculatebackend.cpp:51 +#, kde-format +msgid "" +"Qalculate! is not your regular software replication of the cheapest " +"available calculator. Qalculate! aims to make full use of the superior " +"interface, power and flexibility of modern computers. The center of " +"attention in Qalculate! is the expression entry. Instead of entering each " +"number in a mathematical expression separately, you can directly write the " +"whole expression and later modify it. The interpretation of expressions is " +"flexible and fault tolerant, and if you nevertheless do something wrong, " +"Qalculate! will tell you so. Not fully solvable expressions are however not " +"errors. Qalculate! will simplify as far as it can and answer with an " +"expression. In addition to numbers and arithmetic operators, an expression " +"may contain any combination of variables, units, and functions." +msgstr "" +"Qalculate! 不像您常用的那種最簡易的計算機軟體。它可以徹底利用現在最" +"新、最強大、最彈性化的電腦計算能力。Qalculate! 的表示式是重點。您可以直接寫入" +"整個表示式,稍後再修改,而不需要分開輸入每個數學表示式。表示式的解譯是有彈性" +"並且有強大的容錯能力。若是您做錯了某些事情,Qalculate! 會告訴您。不過,無解的" +"表示式不見得代表錯誤。Qalculate! 會盡可能簡化它並解答。除了數字與計算操作元" +"外,表示式中可以包含任何變數、單位與函數的組合。" + +#. i18n: ectx: label, entry (postConversion), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:9 +#, kde-format +msgid "" +"If and how units will be automatically converted. If true, convert to the " +"best suited SI units (the least amount of units)." +msgstr "" +"單位是否要轉換,以及如何轉換。若此選項為真,則會轉換為最適合的 SI 單位(數量" +"最小的單位)。" + +#. i18n: ectx: label, entry (angleUnit), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:13 +#, kde-format +msgid "Default angle unit for trigonometric functions." +msgstr "三角函數中的預設角度單位。" + +#. i18n: ectx: label, entry (base), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:23 +#, kde-format +msgid "Base of parsed and evaluated numbers." +msgstr "剖析與估計數字時的基底。" + +#. i18n: ectx: label, entry (structuring), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:32 +#, kde-format +msgid "If the evaluation result will be simplified or factorized." +msgstr "計算結果是否要簡化或分解。" + +#. i18n: ectx: label, entry (fractionFormat), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:42 +#, kde-format +msgid "" +"If rational numbers will be displayed with decimals, as a fraction, or " +"something in between." +msgstr "要用數字還是分數,或是混合方式來表示實數。" + +#. i18n: ectx: label, entry (indicateInfiniteSeries), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:46 +#, kde-format +msgid "" +"Show that the digit series of a number continues forever with three dots, " +"instead of rounding (ex. 2/3 displays as 0.666666... instead of 0.666667)." +msgstr "" +"循環數是否要進位,還是用三個點表示(如,2/3 是要表示為 0.666666... 還是 " +"0.666667)。" + +#. i18n: ectx: label, entry (useAllPrefixes), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:50 +#, kde-format +msgid "" +"Use all decimal SI prefixes. If false, prefixes which is not a multiple of " +"thousand (centi, deci, deca, hecto) will not be used automatically." +msgstr "" +"使用所有數值 SI 前置。若為假,就不會自動使育不是一千倍數的單位(百分之一,十" +"分之一,十倍,百倍等等)。" + +#. i18n: ectx: label, entry (negativeExponents), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:54 +#, kde-format +msgid "" +"If true, negative exponents will be used instead of division (ex. 5/x^2 " +"becomes 5*x^-2)." +msgstr "若此選項為真,會用負指數表示法(如 5/x^2 會表示成 5*x^-2)。" + +#. i18n: ectx: label, entry (minExp), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:64 +#, kde-format +msgid "Numerical display." +msgstr "數值顯示。" + +#. i18n: ectx: label, entry (inlinePlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:68 +#, kde-format +msgid "" +"If true, plots will be displayed inside the worksheet. If not they appear in " +"a separate window." +msgstr "若此選項為真,圖形會在工作表內顯示。反之會在分開的視窗中顯示。" + +#. i18n: ectx: label, entry (coloredPlot), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:72 +#, kde-format +msgid "Whether colors should be used in plots." +msgstr "圖形中是否要使用顏色。" + +#. i18n: ectx: label, entry (plotGrid), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:76 +#, kde-format +msgid "Whether a grid should be plotted." +msgstr "是否要繪製格線。" + +#. i18n: ectx: label, entry (plotBorder), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:80 +#, kde-format +msgid "Whether full borders should be drawn around the plot." +msgstr "是否要在圖形週圍畫上完整的邊框。" + +#. i18n: ectx: label, entry (plotLineWidth), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:84 +#, kde-format +msgid "Width of lines, in pixels." +msgstr "線條寬度,單位為像素。" + +#. i18n: ectx: label, entry (plotSteps), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:88 +#, kde-format +msgid "Number of interpolation steps to be used in plotting." +msgstr "繪圖中要使用的內插補點數量。" + +#. i18n: ectx: label, entry (plotSmoothing), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:99 +#, kde-format +msgid "Smoothing mode in plots." +msgstr "圖形中的平滑模式。" + +#. i18n: ectx: label, entry (plotStyle), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:113 +#, kde-format +msgid "Style of plots." +msgstr "圖形樣式。" + +#. i18n: ectx: label, entry (plotLegend), group (QalculateBackend) +#: backends/qalculate/qalculatebackend.kcfg:126 +#, kde-format +msgid "Legend position in plots." +msgstr "圖形中的圖例。" + +#: backends/qalculate/qalculateexpression.cpp:142 +#, kde-format +msgid "Qalculate reports it cannot print. Is gnuplot installed?" +msgstr "Qalculate 回報它無法列印。您安裝了 gnuplot 了嗎?" + +#: backends/qalculate/qalculateexpression.cpp:163 +#, kde-format +msgid "missing %1" +msgstr "缺少 %1" + +#: backends/qalculate/qalculateexpression.cpp:253 +#, kde-format +msgid "%1 must be a number." +msgstr "%1 必須是數字。" + +#: backends/qalculate/qalculateexpression.cpp:254 +#, kde-format +msgid "%1 must be a integer." +msgstr "%1 必須是整數。" + +#: backends/qalculate/qalculateexpression.cpp:255 +#, kde-format +msgid "%1 must be a boolean." +msgstr "%1 必須是布林值。" + +#: backends/qalculate/qalculateexpression.cpp:256 +#, kde-format +msgid "invalid option for %1: %2" +msgstr "%1 的選項不合法:%2" + +#: backends/qalculate/qalculateexpression.cpp:583 +#, kde-format +msgid "found multiple expressions in one plot command (%1 and %2)." +msgstr "在一個繪製指令中找到多個表示式(%1 與 %2)。" + +#: backends/qalculate/qalculateexpression.cpp:682 +#: backends/qalculate/qalculateexpression.cpp:790 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "ERROR" +msgstr "錯誤" + +#: backends/qalculate/qalculateexpression.cpp:684 +#: backends/qalculate/qalculateexpression.cpp:792 +#: backends/qalculate/qalculatehighlighter.cpp:29 +#, kde-format +msgid "WARNING" +msgstr "警告" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:46 +#, kde-format +msgid "No function, variable or unit with specified name exist." +msgstr "沒有此名稱的變數、函數或單位存在。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:53 +#, kde-format +msgid "Function: %1" +msgstr "函數:%1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:138 +#, kde-format +msgid "Plotting interface" +msgstr "繪製介面" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:139 +#, kde-format +msgid "Plots one or more functions either inline or in a separate window." +msgstr "在一個或多個視窗中繪製一個或多個函數。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:140 +#, kde-format +msgid "expression" +msgstr "表示式" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:141 +#, kde-format +msgid "option" +msgstr "選項" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:142 +#, kde-format +msgid "value" +msgstr "數值" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:146 +#, kde-format +msgid "integer" +msgstr "整數" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:147 +#, kde-format +msgid "boolean" +msgstr "布林值" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:148 +#, kde-format +msgid "number" +msgstr "數字" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:149 +#, kde-format +msgid "default: %1" +msgstr "預設:%1" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:209 +#, kde-format +msgid "The function's name" +msgstr "函數名稱" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:211 +#, kde-format +msgid "Title label" +msgstr "標題標籤" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:212 +#, kde-format +msgid "x-axis label" +msgstr "X 軸標籤" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:213 +#, kde-format +msgid "y-axis label" +msgstr "Y 軸標籤" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:214 +#, kde-format +msgid "" +"Image to save plot to. If empty shows plot in a window on the screen. If " +"inline=true the image is shown regardless of this option." +msgstr "" +"將圖形存成影像。如果是空的,那就會將圖形顯示在螢幕上的視窗。如果設為內含顯" +"示,則會忽略此選項。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:215 +#, kde-format +msgid "The image type to save as. One of auto, png, ps, eps, latex, svg, fig." +msgstr "要存成的影像格式。選項包括自動,png,ps,eps,latex,svg 與 fig。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:216 +#, kde-format +msgid "Set to true for colored plot, false for monochrome." +msgstr "若為彩色圖形則設為真,反之設為假。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:217 +#, kde-format +msgid "Minimum x-axis value." +msgstr "X 軸最小值。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:218 +#, kde-format +msgid "Maximum x-axis value." +msgstr "X 軸最大值。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:219 +#, kde-format +msgid "If a logarithmic scale shall be used for the x-axis." +msgstr "X 軸的刻度是否為對數。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:220 +#, kde-format +msgid "If a logarithmic scale shall be used for the y-axis." +msgstr "Y 軸的刻度是否為對數。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:221 +#, kde-format +msgid "Logarithmic base for the x-axis." +msgstr "X 軸刻度的對數基底。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:222 +#, kde-format +msgid "Logarithmic base for the y-axis." +msgstr "Y 軸刻度的對數基底。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:223 +#, kde-format +msgid "If a grid shall be shown in the plot." +msgstr "是否要繪製格線。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:224 +#, kde-format +msgid "" +"If the plot shall be surrounded by borders on all sides (not just axis)." +msgstr "是否要將圖形的所有邊緣加框(而不是只顯示軸線)。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:225 +#, kde-format +msgid "Width of lines." +msgstr "線條寬度。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:226 +#, kde-format +msgid "" +"Where the plot legend shall be placed. One of none, top_left, top_right, " +"bottom_left, bottom_right, below, outside" +msgstr "選項包括無,左上,右上,左下,右下,下方,外側。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:227 +#, kde-format +msgid "Plot smoothing. One of none, unique, csplines, bezier, sbezier" +msgstr "圖形平滑度。選項包括無,unique,csplines,bezier,sbezier" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:228 +#, kde-format +msgid "" +"Plot style. One of lines, points, points_lines, boxes, histogram, steps, " +"candlesticks, dots" +msgstr "" +"圖形樣式。選項包括線條,點,點與線,盒狀,直方圖,階梯圖,燭柱圖,圓點圖" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:229 +#, kde-format +msgid "Use scale on second x-axis." +msgstr "第二 X 軸線上顯示刻度。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:230 +#, kde-format +msgid "Use scale on second y-axis." +msgstr "第二 Y 軸線上顯示刻度。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:231 +#, kde-format +msgid "If the plot is to be drawn inline, instead of in a new window." +msgstr "是否要將圖形內含,而非畫在新視窗。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:232 +#, kde-format +msgid "Distance between two interpolation points. See also steps." +msgstr "兩個內插補點間的距離。請參考 steps 的說明。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:233 +#, kde-format +msgid "Number of interpolation points. See also step." +msgstr "內插點數量。請參考階梯圖的說明。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:234 +#, kde-format +msgid "The name of the x variable. This must be an unknown variable" +msgstr "X 變數名稱。必須是一個未知的變數" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:243 +#, kde-format +msgid "Save variables to a file" +msgstr "將變數存到檔案" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:244 +#, kde-format +msgid "" +"Save all currently defined variables to a file. They can be reloaded with %1." +msgstr "將所有目前定義的變數存到檔案。它可以用 %1 重新載入。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:245 +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:254 +#, kde-format +msgid "file" +msgstr "檔案" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:246 +#, kde-format +msgid "file: the file to save to" +msgstr "file: 要儲存的檔案" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:252 +#, kde-format +msgid "Load variables from a file" +msgstr "從檔案中載入變數" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:253 +#, kde-format +msgid "Load variables from a file that has previously been created by %1." +msgstr "從先前由 %1 儲存的檔案中載入變數。" + +#: backends/qalculate/qalculatesyntaxhelpobject.cpp:255 +#, kde-format +msgid "file: the file to load" +msgstr "file: 要載入的檔案" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qalculate/settings.ui:27 +#, kde-format +msgid "Number base:" +msgstr "基數:" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: backends/qalculate/settings.ui:47 +#, kde-format +msgid "Fraction format:" +msgstr "分數格式:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:58 +#, kde-format +msgid "Decimal" +msgstr "十進位" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:63 +#, kde-format +msgid "Exact" +msgstr "精準" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:68 +#, kde-format +msgid "Fractional" +msgstr "分數" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_fractionFormat) +#: backends/qalculate/settings.ui:73 +#, kde-format +msgid "Combined" +msgstr "組合" + +#. i18n: ectx: property (text), widget (QLabel, label_9) +#: backends/qalculate/settings.ui:81 +#, kde-format +msgid "Numerical display:" +msgstr "數值顯示:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:97 +#, kde-format +msgid "Pure" +msgstr "純" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:102 +#, kde-format +msgid "Scientific" +msgstr "科學表示法" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_minExp) +#: backends/qalculate/settings.ui:107 +#, kde-format +msgid "Precision" +msgstr "精確度" + +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: backends/qalculate/settings.ui:115 +#, kde-format +msgid "Indicate infinite series:" +msgstr "指示無限序列:" + +#. i18n: ectx: property (text), widget (QLabel, label_7) +#: backends/qalculate/settings.ui:132 +#, kde-format +msgid "Use all SI prefixes:" +msgstr "使用所有 SI 前置:" + +#. i18n: ectx: property (text), widget (QLabel, label_8) +#: backends/qalculate/settings.ui:149 +#, kde-format +msgid "Use negative exponents:" +msgstr "使用負指數:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: backends/qalculate/settings.ui:180 worksheetentry.cpp:414 +#, kde-format +msgid "Evaluate" +msgstr "估算" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/qalculate/settings.ui:186 +#, kde-format +msgid "Convert to best SI units:" +msgstr "轉換為最好的 SI 單位:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:215 +#, kde-format +msgid "Radians" +msgstr "弧度" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:220 +#, kde-format +msgid "Degrees" +msgstr "度" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_angleUnit) +#: backends/qalculate/settings.ui:225 +#, kde-format +msgid "Gradians" +msgstr "Gradians" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: backends/qalculate/settings.ui:233 +#, kde-format +msgid "Structuring Mode:" +msgstr "結構模式:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:249 +#, kde-format +msgid "Simplify" +msgstr "簡化" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_structuring) +#: backends/qalculate/settings.ui:254 +#, kde-format +msgid "Factorize" +msgstr "因數分解" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: backends/qalculate/settings.ui:275 +#, kde-format +msgid "Angle unit:" +msgstr "角度單位:" + +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: backends/qalculate/settings.ui:286 +#, kde-format +msgid "Plotting" +msgstr "繪製" + +#. i18n: ectx: property (text), widget (QLabel, label_10) +#: backends/qalculate/settings.ui:292 +#, kde-format +msgid "Display plots inline:" +msgstr "圖形用內含顯示:" + +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: backends/qalculate/settings.ui:329 +#, kde-format +msgid "Show full borders:" +msgstr "顯示完整邊框:" + +#. i18n: ectx: property (text), widget (QLabel, label_17) +#: backends/qalculate/settings.ui:346 +#, kde-format +msgid "Width of lines:" +msgstr "線條寬度:" + +#. i18n: ectx: property (text), widget (QLabel, label_18) +#: backends/qalculate/settings.ui:363 +#, kde-format +msgid "Sampling rate:" +msgstr "取樣頻率:" + +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: backends/qalculate/settings.ui:380 +#, kde-format +msgid "Smoothing Mode:" +msgstr "平滑模式:" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotSmoothing) +#: backends/qalculate/settings.ui:401 +#, kde-format +msgid "Natural cubic Splines" +msgstr "自然曲線樣條(Spline)" + +#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_plotStyle) +#: backends/qalculate/settings.ui:445 +#, kde-format +msgctxt "Plot Style" +msgid "Steps" +msgstr "Steps" + +#. i18n: ectx: property (text), widget (QLabel, label_16) +#: backends/qalculate/settings.ui:463 +#, kde-format +msgid "Legend Position:" +msgstr "圖例位置:" + +#. i18n: ectx: property (text), widget (QLabel, label_15) +#: backends/qalculate/settings.ui:525 +#, kde-format +msgid "Colored Plots:" +msgstr "彩色圖形:" + +#. i18n: ectx: property (text), widget (QLabel, label_11) +#: backends/qalculate/settings.ui:535 +#, kde-format +msgid "Show grid:" +msgstr "顯示格線:" + +#. i18n: ectx: property (text), widget (QLabel, label_14) +#: backends/qalculate/settings.ui:545 +#, kde-format +msgid "Plot Style:" +msgstr "繪圖樣式:" + +#: backends/qthelpconfig.cpp:45 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgctxt "@title:window" +msgid "Modify Entry" +msgstr "指令項目" + +#: backends/qthelpconfig.cpp:47 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgctxt "@title:window" +msgid "Add New Entry" +msgstr "新增變數" + +#: backends/qthelpconfig.cpp:64 +#, kde-format +msgid "Name cannot be empty." +msgstr "" + +#: backends/qthelpconfig.cpp:84 +#, fuzzy, kde-format +#| msgid "Path to local documentation:" +msgid "Add local documentation" +msgstr "本機文件路徑:" + +#: backends/qthelpconfig.cpp:100 +#, fuzzy, kde-format +#| msgid "Documents to open." +msgctxt "@action:button Allow user to get some API documentation with GHNS" +msgid "Get New Documentation" +msgstr "要開啟的文件。" + +#: backends/qthelpconfig.cpp:103 +#, fuzzy, kde-format +#| msgid "Path to local documentation:" +msgid "Download additional documentations" +msgstr "本機文件路徑:" + +#: backends/qthelpconfig.cpp:171 +#, kde-format +msgid "Qt Compressed Help file is not valid." +msgstr "" + +#: backends/qthelpconfig.cpp:180 +#, kde-format +msgid "Documentation already imported" +msgstr "" + +#: backends/qthelpconfig.cpp:270 +#, kde-format +msgctxt "@info:tooltip" +msgid "Modify" +msgstr "" + +#: backends/qthelpconfig.cpp:275 +#, kde-format +msgctxt "@info:tooltip" +msgid "Delete" +msgstr "" + +#: backends/qthelpconfig.cpp:283 +#, kde-format +msgctxt "@info:tooltip" +msgid "Please uninstall this via GHNS." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: backends/qthelpconfig.ui:20 +#, kde-format +msgid "Install Additional Documentation Files" +msgstr "" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:49 lib/defaultvariablemodel.cpp:67 +#, kde-format +msgctxt "@title:column" +msgid "Name" +msgstr "名稱" + +#. i18n: ectx: property (text), widget (QTreeWidget, qchTable) +#: backends/qthelpconfig.ui:54 +#, kde-format +msgctxt "@title:column" +msgid "Path" +msgstr "" + +#. i18n: ectx: property (text), widget (QPushButton, addButton) +#: backends/qthelpconfig.ui:79 +#, fuzzy, kde-format +#| msgid "Add" +msgctxt "@action:button" +msgid "Add" +msgstr "新增" + +#. i18n: ectx: property (text), widget (QLabel, lIcon) +#: backends/qthelpconfigeditdialog.ui:17 +#, kde-format +msgctxt "@label:chooser" +msgid "Icon:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KIconButton, qchIcon) +#: backends/qthelpconfigeditdialog.ui:24 +#, fuzzy, kde-format +#| msgid "Select the Backend" +msgctxt "@info:tooltip" +msgid "Select an icon" +msgstr "選擇後端" + +#. i18n: ectx: property (text), widget (QLabel, lName) +#: backends/qthelpconfigeditdialog.ui:37 +#, fuzzy, kde-format +#| msgid "Name:" +msgctxt "@label:textbox" +msgid "Name:" +msgstr "名稱:" + +#. i18n: ectx: property (toolTip), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:44 +#, kde-format +msgctxt "@info:tooltip" +msgid "Enter a name" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (QLineEdit, qchName) +#: backends/qthelpconfigeditdialog.ui:47 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a name..." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, lPath) +#: backends/qthelpconfigeditdialog.ui:54 +#, kde-format +msgctxt "@label:textbox" +msgid "Path:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:67 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a Qt Help file..." +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KUrlRequester, qchRequester) +#: backends/qthelpconfigeditdialog.ui:73 +#, kde-format +msgctxt "@info:placeholder" +msgid "Select a Qt Help file..." +msgstr "" + +#: backends/R/rbackend.cpp:81 +#, kde-format +msgctxt "" +"the url to the documentation of R, please check if there is a translated " +"version and use the correct url" +msgid "https://cran.r-project.org/manuals.html" +msgstr "https://cran.r-project.org/manuals.html" + +#: backends/R/rbackend.cpp:88 +#, kde-format +msgid "" +"

      R' Help System: help() and ?:


      The help() " +"function and ? help operator in R provide access to the documentation " +"pages for R functions, data sets, and other objects, both for packages in " +"the standard R distribution and for contributed packages.

      To access " +"documentation for the standard lm (linear model) function, for " +"example, enter the command help(lm) or help(\"lm\"), or " +"?lm or ?\"lm\" (i.e., the quotes are optional).

      To " +"access help for a function in a package that’s not currently loaded, specify " +"in addition the name of the package: For example, to obtain documentation " +"for the rlm() (robust linear model) function in the MASS package, " +"help(rlm, package=\"MASS\").

      Standard names in R consist of " +"upper- and lower-case letters, numerals (0-9), underscores (_), and periods " +"(.), and must begin with a letter or a period. To obtain help for an object " +"with a non-standard name (such as the help operator ?), the name must " +"be quoted: for example, help('?') or ?\"?\".

      You may " +"also use the help() function to access information about a package in " +"your library — for example, help(package=\"MASS\") — which displays " +"an index of available help pages for the package along with some other " +"information.

      Help pages for functions usually include a section with " +"executable examples illustrating how the functions work. You can execute " +"these examples in the current R session via the example() command: e." +"g., example(lm)." +msgstr "" + +#: backends/R/rbackend.cpp:99 +#, kde-format +msgid "" +"R is a language and environment for statistical computing and " +"graphics, similar to the S language and environment.
      It provides a wide " +"variety of statistical (linear and nonlinear modelling, classical " +"statistical tests, time-series analysis, classification, clustering, ...) " +"and graphical techniques, and is highly extensible. The S language is often " +"the vehicle of choice for research in statistical methodology, and R " +"provides an Open Source route to participation in that activity." +msgstr "" +"R 是一種程式語言與環境,用於統計計算與圖表製作,類似 S 的語言與環境。" +"
      它提供多種統計(包含線性與非線性模組(linear and nonlinear modelling)," +"傳統統計測試(classical statistical tests),時間序列分析(time-series " +"analysis),分類(classification),叢集(clustering)等)與繪圖技術,並且有很高的" +"延伸性。S 語言通常用於研究統計方法,R 則提供一個開放源碼的選擇。" + +#: backends/R/rexpression.cpp:107 backends/R/rexpression.cpp:108 +#, kde-format +msgid "Error opening file %1" +msgstr "開啟檔案 %1 時發生錯誤" + +#: backends/R/rextensions.cpp:22 +#, kde-format +msgid "R script file (*.R)" +msgstr "R 文稿檔 (*.R)" + +#: backends/R/rserver/rserver.cpp:362 +#, kde-format +msgid "Error Parsing Command" +msgstr "剖析指令時發生錯誤" + +#. i18n: ectx: label, entry (localDoc), group (RBackend) +#: backends/R/rserver/rserver.kcfg:9 +#, kde-format +msgid "Url to the local R documentation" +msgstr "本機 R 文件的 URL" + +#: backends/R/rsettingswidget.cpp:24 +#, kde-format +msgid "Double click to open file selection dialog" +msgstr "雙擊以開啟檔案選擇對話框" + +#: backends/R/rsettingswidget.cpp:44 +#, kde-format +msgid "*.R *.r|R source files (*.R, *.r)" +msgstr "*.R *.r|R 語言源碼檔 (*.R, *.r)" + +#: backends/sage/sagebackend.cpp:79 +#, fuzzy, kde-format +#| msgctxt "" +#| "the url to the documentation of Sage, please check if there is a " +#| "translated version and use the correct url" +#| msgid "http://doc.sagemath.org/html/en/reference/index.html" +msgctxt "" +"the url to the documentation of Sage, please check if there is a translated " +"version and use the correct url" +msgid "https://doc.sagemath.org/html/en/reference/index.html" +msgstr "http://doc.sagemath.org/html/en/reference/index.html" + +#: backends/sage/sagebackend.cpp:84 +#, kde-format +msgid "" +"Sage is a free open-source mathematics software system licensed under " +"the GPL.
      It combines the power of many existing open-source packages " +"into a common Python-based interface." +msgstr "" +"Sage 是一個 GPL 授權,自由、開放源碼的數學軟體系統。
      它結合了許多" +"現有的開放源碼軟體的力量,並提供一個 Python 的介面。" + +#. i18n: ectx: label, entry (Path), group (SageBackend) +#: backends/sage/sagebackend.kcfg:10 +#, kde-format +msgid "Path to the Sage executable" +msgstr "Sage 執行檔路徑" + +#. i18n: ectx: label, entry (allowLatex), group (SageBackend) +#: backends/sage/sagebackend.kcfg:14 +#, kde-format +msgid "Enable LaTeX typesetting for Sage backend" +msgstr "" + +#: backends/sage/sageexpression.cpp:233 backends/sage/sageexpression.cpp:235 +#, kde-format +msgid "Result of %1" +msgstr "%1 的結果" + +#: backends/sage/sageexpression.cpp:242 +#, kde-format +msgid "" +"%1\n" +"The last output was: \n" +" %2" +msgstr "" +"%1\n" +"最後的輸出為:\n" +"%2" + +#: backends/sage/sageextensions.cpp:32 +#, kde-format +msgid "Python script file (*.py);;Sage script file (*.sage)" +msgstr "Python 文稿檔 (*.py);; Sage 文稿檔 (*.sage)" + +#: backends/sage/sagesession.cpp:236 +#, kde-format +msgid "" +"Sage version %1.%2 is unsupported. Please update your installation to the " +"supported versions to make it work with Cantor." +msgstr "" +"已不支援 Sage 版本 %1.%2。請更新您的 Sage 安裝至支援的版本,以讓其能與 " +"Cantor 搭配使用。" + +#: backends/sage/sagesession.cpp:270 +#, kde-format +msgid "" +"Failed to determine the version of Sage. Please check your installation and " +"the output of 'sage -v'." +msgstr "" +"無法確定 Sage 的版本,請檢查您的 Sage 是否安裝正確和「sage -v」所輸出的版本。" + +#: backends/sage/sagesession.cpp:333 +#, kde-format +msgid "The Sage process crashed while evaluating this expression" +msgstr "Sage 行程在計算此表示式時發生錯誤。" + +#: backends/sage/sagesession.cpp:337 +#, kde-format +msgid "The Sage process crashed" +msgstr "Sage 行程發生錯誤" + +#: backends/sage/sagesession.cpp:344 +#, kde-format +msgid "The Sage process exited while evaluating this expression" +msgstr "Sage 行程在計算此表示式時結束" + +#: backends/sage/sagesession.cpp:348 +#, kde-format +msgid "The Sage process exited" +msgstr "Sage 行程已結束" + +#: backends/sage/sagesession.cpp:358 +#, kde-format +msgid "Failed to start Sage" +msgstr "啟動 Sage 失敗" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: backends/sage/settings.ui:27 +#, kde-format +msgid "LaTeX typesetting:" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_allowLatex) +#: backends/sage/settings.ui:34 +#, kde-format +msgid "" +"Sage LaTeX output not always correct, so latex typesetting can be disabled " +"for better experience" +msgstr "" + +#: backends/scilab/scilabbackend.cpp:68 +#, kde-format +msgctxt "" +"The url to the documentation of Scilab, please check if there is a " +"translated version and use the correct url" +msgid "https://www.scilab.org/support/documentation" +msgstr "https://www.scilab.org/support/documentation" + +#: backends/scilab/scilabbackend.cpp:73 +#, kde-format +msgid "" +"Scilab is a free software, cross-platform numerical computational " +"package and a high-level, numerically oriented programming language.Scilab " +"is distributed under CeCILL license (GPL compatible)." +msgstr "" +"Scilab 是一套自由軟體,它提供跨平台的數值計算套件與一套高階、數值導向" +"程式語言。Scilab 是以 CeCILL 授權(與 GPL 相容)發布。" + +#. i18n: ectx: label, entry (Path), group (ScilabBackend) +#: backends/scilab/scilabbackend.kcfg:10 +#, fuzzy, kde-format +#| msgid "Path to the Sage executable" +msgid "Path to the Scilab executable" +msgstr "Sage 執行檔路徑" + +#: backends/scilab/scilabextensions.cpp:23 +#, kde-format +msgid ";;Scilab script file (*.sce);;Scilab function file (*.sci)" +msgstr ";;Scilab 文稿檔 (*.sce);; Scilab 函式檔 (*.sci)" + +#: cantor.cpp:104 +#, kde-format +msgid "The file %1 is already opened." +msgstr "" + +#: cantor.cpp:104 cantor.cpp:228 +#, kde-format +msgid "Open file" +msgstr "開啟檔案" + +#: cantor.cpp:146 +#, fuzzy, kde-format +#| msgid "Download Example Worksheets" +msgid "Download Examples" +msgstr "下載範例工作表" + +#: cantor.cpp:149 +#, kde-format +msgid "&Open Example" +msgstr "開啟範例(&O)" + +#: cantor.cpp:154 +#, kde-format +msgid "Go to previous worksheet" +msgstr "前往上個工作表格" + +#: cantor.cpp:166 +#, kde-format +msgid "Go to next worksheet" +msgstr "前往下個工作表格" + +#: cantor.cpp:227 +#, kde-format +msgid "" +"All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter " +"Notebook (*.ipynb)" +msgstr "" + +#: cantor.cpp:295 +#, kde-format +msgid "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for the following program:
      • %2
      " +msgid_plural "" +"

      No Backend Found

      \n" +"
      You could try:\n" +"
      • Changing the settings in the config dialog;
      • " +"
      • Installing packages for one of the following programs:
      • %2
      " +msgstr[0] "" +"

      找不到後端介面

      \n" +"
      您可以嘗試:\n" +"
      • 變更設定對話框中的設定;
      • 安裝以下程式軟體包之一:
      • %2
      " + +#: cantor.cpp:315 +#, kde-format +msgid "Error" +msgstr "錯誤" + +#: cantor.cpp:337 +#, kde-format +msgid "Backend %1 is not installed" +msgstr "後端介面 %1 未安裝" + +#: cantor.cpp:344 +#, kde-format +msgid "" +"%1 backend installed, but inactive. Please check installation and Cantor " +"settings" +msgstr "已安裝 %1 後端但未啟用。請檢查您的後端安裝和 Cantor 設定" + +#: cantor.cpp:373 +#, kde-format +msgid "Session %1" +msgstr "作業階段 %1" + +#: cantor.cpp:386 +#, kde-format +msgid "Failed to find the Cantor Part with error %1" +msgstr "找不到 Cantor 元件,錯誤碼為 %1" + +#: cantor.cpp:433 cantor_part.cpp:621 +#, kde-format +msgid "Calculating..." +msgstr "計算中..." + +#: cantor.cpp:436 cantor_part.cpp:632 cantor_part.cpp:695 +#, kde-format +msgid "Ready" +msgstr "已就緒" + +#: cantor.cpp:480 +#, fuzzy, kde-format +#| msgid "Orange" +msgid "Changed" +msgstr "橘色" + +#: cantor.cpp:564 +#, kde-format +msgid "Multiple unsaved Worksheets are opened. Do you want to close them?" +msgstr "有多個未儲存的工作表開啟中。是否要將它們關閉?" + +#: cantor.cpp:565 +#, kde-format +msgid "Close Cantor" +msgstr "關閉 Cantor" + +#: cantor.cpp:581 +#, kde-format +msgid "The current project has been modified. Do you want to save it?" +msgstr "專案已修改,您是否要儲存?" + +#: cantor.cpp:582 +#, kde-format +msgid "Save Project" +msgstr "儲存專案" + +#: cantor.cpp:628 +#, fuzzy, kde-format +#| msgid "Plotting" +msgid "Formatting" +msgstr "繪製" + +#. i18n: ectx: label, entry (DefaultBackend), group (Cantor) +#: cantor.kcfg:12 +#, kde-format +msgid "The Backend that is used by default" +msgstr "預設使用的後端介面" + +#. i18n: ectx: label, entry (TypesetDefault), group (Cantor) +#: cantor.kcfg:16 +#, kde-format +msgid "Do Typesetting by default" +msgstr "預設執行排版" + +#. i18n: ectx: label, entry (HighlightDefault), group (Cantor) +#: cantor.kcfg:20 +#, kde-format +msgid "Do Syntax Highlighting by default" +msgstr "預設執行語法突顯功能" + +#. i18n: ectx: label, entry (CompletionDefault), group (Cantor) +#: cantor.kcfg:24 +#, kde-format +msgid "Enable Completions by default" +msgstr "預設開啟補完功能" + +#. i18n: ectx: label, entry (ExpressionNumberingDefault), group (Cantor) +#: cantor.kcfg:28 +#, kde-format +msgid "Enable Numbering of Expressions by default" +msgstr "預設開啟表示式編號" + +#. i18n: ectx: label, entry (AnimationDefault), group (Cantor) +#: cantor.kcfg:32 +#, kde-format +msgid "Animate changes in the Worksheet by default" +msgstr "預設動畫顯示工作表中的變更" + +#. i18n: ectx: label, entry (EmbeddedMathDefault), group (Cantor) +#: cantor.kcfg:36 +#, kde-format +msgid "" +"Enable rendering math expressions inside $$..$$ in Text and Markdown entries " +"by default (needs pdflatex installed)" +msgstr "" + +#. i18n: ectx: label, entry (AutoEval), group (Cantor) +#: cantor.kcfg:40 +#, kde-format +msgid "Automatically reevaluate the entries below the current" +msgstr "自動重新計算目前底下的項目" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#. i18n: ectx: label, entry (WarnAboutSessionRestart), group (Cantor) +#: cantor.kcfg:44 settings.ui:181 +#, kde-format +msgid "Ask for confirmation when restarting the backend" +msgstr "當重新啟動後端時詢問確認" + +#. i18n: ectx: label, entry (StoreTextEntryFormatting), group (Cantor) +#: cantor.kcfg:48 +#, kde-format +msgid "" +"Save rich text formatting of TextEntry, when save Worksheet in Jupyter " +"notebook format" +msgstr "" + +#. i18n: ectx: label, entry (UseOldCantorEntriesIndent), group (Cantor) +#: cantor.kcfg:52 +#, kde-format +msgid "Use old style Cantor entries placement style" +msgstr "" + +#. i18n: ectx: label, entry (ShowMathRenderError), group (Cantor) +#: cantor.kcfg:56 +#, kde-format +msgid "Show embedded math render error" +msgstr "顯示內嵌數學式時發生繪製錯誤" + +#. i18n: ectx: label, entry (VisibleLinesLimit), group (Cantor) +#: cantor.kcfg:60 +#, kde-format +msgid "Limit of visible lines for text result" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontFamily), group (Cantor) +#: cantor.kcfg:64 +#, kde-format +msgid "Hierarchy font for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontSize), group (Cantor) +#: cantor.kcfg:68 +#, kde-format +msgid "Hierarchy font size for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontItalic), group (Cantor) +#: cantor.kcfg:72 +#, kde-format +msgid "Hierarchy font italic for chapter" +msgstr "" + +#. i18n: ectx: label, entry (ChapterFontBold), group (Cantor) +#: cantor.kcfg:76 +#, kde-format +msgid "Hierarchy font bold for chapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontFamily), group (Cantor) +#: cantor.kcfg:80 +#, kde-format +msgid "Hierarchy font for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontSize), group (Cantor) +#: cantor.kcfg:84 +#, kde-format +msgid "Hierarchy font size for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontItalic), group (Cantor) +#: cantor.kcfg:88 +#, kde-format +msgid "Hierarchy font italic for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SubchapterFontBold), group (Cantor) +#: cantor.kcfg:92 +#, kde-format +msgid "Hierarchy font bold for subchapter" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SectionFontSize), group (Cantor) +#: cantor.kcfg:96 cantor.kcfg:100 +#, kde-format +msgid "Hierarchy font for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontItalic), group (Cantor) +#: cantor.kcfg:104 +#, kde-format +msgid "Hierarchy font italic for section" +msgstr "" + +#. i18n: ectx: label, entry (SectionFontBold), group (Cantor) +#: cantor.kcfg:108 +#, kde-format +msgid "Hierarchy font bold for section" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubsectionFontSize), group (Cantor) +#: cantor.kcfg:112 cantor.kcfg:116 +#, kde-format +msgid "Hierarchy font for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontItalic), group (Cantor) +#: cantor.kcfg:120 +#, kde-format +msgid "Hierarchy font italic for subsection" +msgstr "" + +#. i18n: ectx: label, entry (SubsectionFontBold), group (Cantor) +#: cantor.kcfg:124 +#, kde-format +msgid "Hierarchy font bold for subsection" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (ParagraphFontSize), group (Cantor) +#: cantor.kcfg:128 cantor.kcfg:132 +#, kde-format +msgid "Hierarchy font for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontItalic), group (Cantor) +#: cantor.kcfg:136 +#, kde-format +msgid "Hierarchy font italic for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (ParagraphFontBold), group (Cantor) +#: cantor.kcfg:140 +#, kde-format +msgid "Hierarchy font bold for paragraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontFamily), group (Cantor) +#. i18n: ectx: label, entry (SubparagraphFontSize), group (Cantor) +#: cantor.kcfg:144 cantor.kcfg:148 +#, kde-format +msgid "Hierarchy font for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontItalic), group (Cantor) +#: cantor.kcfg:152 +#, kde-format +msgid "Hierarchy font italic for subparagraph" +msgstr "" + +#. i18n: ectx: label, entry (SubparagraphFontBold), group (Cantor) +#: cantor.kcfg:156 +#, kde-format +msgid "Hierarchy font bold for subparagraph" +msgstr "" + +#: cantor_part.cpp:139 +#, kde-format +msgid "Save Plain Text" +msgstr "存成純文字檔" + +#: cantor_part.cpp:181 cantor_part.cpp:532 +#, kde-format +msgid "Export to LaTeX" +msgstr "匯出到 Latex" + +#: cantor_part.cpp:197 cantor_part.cpp:628 worksheet.cpp:1904 +#, kde-format +msgid "Evaluate Worksheet" +msgstr "計算工作表" + +#: cantor_part.cpp:205 worksheet.cpp:1912 +#, kde-format +msgid "Zoom" +msgstr "" + +#: cantor_part.cpp:220 +#, kde-format +msgid "Typeset using LaTeX" +msgstr "使用 LaTex 排版" + +#: cantor_part.cpp:225 +#, kde-format +msgid "Syntax Highlighting" +msgstr "語法突顯" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_CompletionDefault) +#: cantor_part.cpp:230 settings.ui:105 +#, kde-format +msgid "Completion" +msgstr "補齊" + +#: cantor_part.cpp:235 +#, kde-format +msgid "Line Numbers" +msgstr "行號" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AnimationDefault) +#: cantor_part.cpp:240 settings.ui:125 +#, fuzzy, kde-format +#| msgid "Functions" +msgid "Animations" +msgstr "函數" + +#: cantor_part.cpp:247 +#, kde-format +msgid "Embedded Math" +msgstr "內嵌數學式" + +#: cantor_part.cpp:253 +#, kde-format +msgid "Restart Backend" +msgstr "重新啟動後端介面" + +#: cantor_part.cpp:260 worksheetentry.cpp:854 +#, kde-format +msgid "Evaluate Entry" +msgstr "計算項目" + +#: cantor_part.cpp:266 +#, kde-format +msgid "Insert Command Entry" +msgstr "插入指令項目" + +#: cantor_part.cpp:272 +#, kde-format +msgid "Insert Text Entry" +msgstr "插入文字項目" + +#: cantor_part.cpp:278 +#, kde-format +msgid "Insert Markdown Entry" +msgstr "插入 Markdown 項目" + +#: cantor_part.cpp:285 +#, kde-format +msgid "Insert LaTeX Entry" +msgstr "插入 Latex 項目" + +#: cantor_part.cpp:291 +#, kde-format +msgid "Insert Page Break" +msgstr "插入頁面中斷標記" + +#: cantor_part.cpp:296 markdownentry.cpp:63 +#, kde-format +msgid "Insert Image" +msgstr "插入影像" + +#: cantor_part.cpp:301 +#, kde-format +msgid "Collapse All Results" +msgstr "" + +#: cantor_part.cpp:306 +#, fuzzy, kde-format +#| msgid "Hide Results" +msgid "Expand All Results" +msgstr "隱藏結果" + +#: cantor_part.cpp:311 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove All Results" +msgstr "移除結果" + +#: cantor_part.cpp:316 +#, kde-format +msgid "Remove current Entry" +msgstr "移除目前的項目" + +#. i18n("Publish Worksheet"), collection); +#. publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); +#. collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); +#. connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); +#. +#: cantor_part.cpp:332 +#, kde-format +msgid "Show Script Editor" +msgstr "顯示文稿編輯器" + +#: cantor_part.cpp:337 +#, kde-format +msgid "Show Completion" +msgstr "顯示補完" + +#: cantor_part.cpp:404 +#, kde-format +msgid "CantorPart" +msgstr "Cantor 部件" + +#: cantor_part.cpp:406 +#, kde-format +msgid "(C) 2009-2015 Alexander Rieder" +msgstr "(C) 2009-2015 Alexander Rieder" + +#: cantor_part.cpp:410 main.cpp:81 +#, kde-format +msgid "Alexander Rieder" +msgstr "Alexander Rieder" + +#: cantor_part.cpp:462 +#, kde-format +msgid "Cantor Worksheet (*.cws)" +msgstr "Cantor 工作表 (*.cws)" + +#: cantor_part.cpp:463 +#, kde-format +msgid "Jupyter Notebook (*.ipynb)" +msgstr "Jupyter Notebook (*.ipynb)" + +#: cantor_part.cpp:479 +#, kde-format +msgid "Save as" +msgstr "另存新檔" + +#: cantor_part.cpp:525 panelplugins/variablemgr/variablemanagerwidget.cpp:168 +#, kde-format +msgid "Save" +msgstr "儲存" + +#: cantor_part.cpp:577 +#, kde-format +msgid "" +"All the available calculation results will be lost. Do you really want to " +"restart %1?" +msgstr "所有可用的計算結果將會遺失。仍然重新啟動 %1?" + +#: cantor_part.cpp:578 +#, kde-format +msgid "Restart %1?" +msgstr "是否重新啟動 %1?" + +#: cantor_part.cpp:618 worksheet.cpp:1907 +#, kde-format +msgid "Interrupt" +msgstr "中斷" + +#: cantor_part.cpp:644 +#, kde-format +msgid "Session Error: %1" +msgstr "工作階段錯誤: %1" + +#: cantor_part.cpp:685 +#, kde-format +msgid "Initialization complete" +msgstr "初始化完成" + +#: cantor_part.cpp:690 +#, kde-format +msgid "Initializing..." +msgstr "初始化中..." + +#: cantor_part.cpp:748 +#, kde-format +msgid "[read-only]" +msgstr "[唯讀]" + +#: cantor_part.cpp:866 +#, kde-format +msgid "Do you want to upload current Worksheet to public web server?" +msgstr "您要上傳目前的工作表到公開的網頁伺服器上嗎?" + +#: cantor_part.cpp:867 +#, kde-format +msgid "Question - Cantor" +msgstr "問題 - Cantor" + +#: cantor_part.cpp:873 +#, kde-format +msgid "The Worksheet is not saved. You should save it before uploading." +msgstr "工作表未儲存。請在上傳前先儲存。" + +#: cantor_part.cpp:874 +#, kde-format +msgid "Warning - Cantor" +msgstr "警告 - Cantor" + +#: cantor_part.cpp:946 +#, kde-format +msgid "This backend does not support scripts." +msgstr "後端介面未支援文稿。" + +#. i18n: ectx: Menu (edit) +#: cantor_part.rc:14 cantor_shell.rc:19 +#, kde-format +msgid "&Edit" +msgstr "編輯(&E)" + +#. i18n: ectx: Menu (view) +#: cantor_part.rc:27 cantor_shell.rc:22 +#, kde-format +msgid "&View" +msgstr "檢視(&V)" + +#. i18n: ectx: Menu (worksheet) +#: cantor_part.rc:33 +#, kde-format +msgid "&Worksheet" +msgstr "工作表(&W)" + +#. i18n: ectx: Menu (settings) +#: cantor_part.rc:50 +#, fuzzy, kde-format +#| msgid "&Settings" +msgid "Settings" +msgstr "設定(&S)" + +#. i18n: ectx: Menu (file) +#: cantor_shell.rc:4 +#, kde-format +msgid "&File" +msgstr "檔案(&F)" + +#. i18n: ectx: Menu (file_new_menu) +#: cantor_shell.rc:6 +#, kde-format +msgid "&New" +msgstr "新增(&N)" + +#. i18n: ectx: Menu (panels) +#: cantor_shell.rc:24 +#, kde-format +msgid "Panels" +msgstr "面板" + +#. i18n: ectx: Menu (settings) +#: cantor_shell.rc:29 +#, kde-format +msgid "&Settings" +msgstr "設定(&S)" + +#: commandentry.cpp:120 +#, kde-format +msgid "Background Color" +msgstr "背景顏色" + +#: commandentry.cpp:129 commandentry.cpp:156 horizontalruleentry.cpp:328 +#, fuzzy, kde-format +#| msgid "Defaults" +msgid "Default" +msgstr "預設值" + +#: commandentry.cpp:151 +#, kde-format +msgid "Text Color" +msgstr "文字顏色" + +#: commandentry.cpp:176 +#, kde-format +msgid "Font" +msgstr "字型" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontBold) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontBold) +#: commandentry.cpp:179 formating.ui:81 formating.ui:140 formating.ui:199 +#: formating.ui:258 formating.ui:317 formating.ui:376 +#, kde-format +msgid "Bold" +msgstr "粗體" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ChapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubchapterFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubsectionFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ParagraphFontItalic) +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_SubparagraphFontItalic) +#: commandentry.cpp:186 formating.ui:88 formating.ui:147 formating.ui:206 +#: formating.ui:265 formating.ui:324 formating.ui:383 +#, kde-format +msgid "Italic" +msgstr "斜體" + +#: commandentry.cpp:194 +#, kde-format +msgid "Increase Size" +msgstr "增加尺寸" + +#: commandentry.cpp:198 +#, kde-format +msgid "Decrease Size" +msgstr "減少尺寸" + +#: commandentry.cpp:203 +#, kde-format +msgid "Select" +msgstr "選擇" + +#: commandentry.cpp:207 +#, kde-format +msgid "Reset to Default" +msgstr "" + +#: commandentry.cpp:336 +#, kde-format +msgid "Show Results" +msgstr "顯示結果" + +#: commandentry.cpp:338 +#, kde-format +msgid "Hide Results" +msgstr "隱藏結果" + +#: commandentry.cpp:343 worksheet.cpp:1897 +#, fuzzy, kde-format +#| msgid "Show %1 Help" +msgid "Show Help" +msgstr "顯示 %1 說明" + +#: commandentry.cpp:356 +#, kde-format +msgid "Appearance" +msgstr "" + +#: commandentry.cpp:597 commandentry.cpp:992 +#, kde-format +msgid "Interrupted" +msgstr "已中斷" + +#. i18n: ectx: property (windowTitle), widget (QWidget, StandardSearchBar) +#. i18n: ectx: property (windowTitle), widget (QWidget, ExtendedSearchBar) +#: extendedsearchbar.ui:14 standardsearchbar.ui:14 +#, kde-format +msgid "SearchBar" +msgstr "搜尋列" + +#. i18n: ectx: property (text), widget (QToolButton, close) +#. i18n: ectx: property (text), widget (QToolButton, openExtended) +#. i18n: ectx: property (text), widget (QToolButton, openStandard) +#. i18n: ectx: property (text), widget (QToolButton, addFlag) +#. i18n: ectx: property (text), widget (QToolButton, removeFlag) +#: extendedsearchbar.ui:22 extendedsearchbar.ui:77 extendedsearchbar.ui:159 +#: extendedsearchbar.ui:166 standardsearchbar.ui:22 standardsearchbar.ui:85 +#, kde-format +msgid "..." +msgstr "..." + +#. i18n: ectx: property (text), widget (QLabel, label) +#: extendedsearchbar.ui:47 +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:126 +#, kde-format +msgid "Find:" +msgstr "尋找:" + +#. i18n: ectx: property (text), widget (QPushButton, next) +#: extendedsearchbar.ui:61 standardsearchbar.ui:48 +#, kde-format +msgid "&Next" +msgstr "下一個(&N)" + +#. i18n: ectx: property (text), widget (QPushButton, previous) +#: extendedsearchbar.ui:68 standardsearchbar.ui:55 +#, kde-format +msgid "&Previous" +msgstr "前一個(&P)" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: extendedsearchbar.ui:102 +#, kde-format +msgid "Replace:" +msgstr "取代:" + +#. i18n: ectx: property (text), widget (QPushButton, replace) +#: extendedsearchbar.ui:116 +#, kde-format +msgid "&Replace" +msgstr "取代(&R)" + +#. i18n: ectx: property (text), widget (QPushButton, replaceAll) +#: extendedsearchbar.ui:123 +#, kde-format +msgid "Replace &All" +msgstr "全部取代(&A)" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: extendedsearchbar.ui:139 +#, kde-format +msgid "Search in:" +msgstr "搜尋於:" + +#. i18n: ectx: property (text), widget (QToolButton, matchCase) +#. i18n: ectx: property (text), widget (QCheckBox, matchCase) +#: extendedsearchbar.ui:173 standardsearchbar.ui:62 +#, kde-format +msgid "&Match case" +msgstr "符合大小寫(&M)" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: formating.ui:27 +#, kde-format +msgid "Hierarchy Fonts" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ChapterTab) +#: formating.ui:37 +#, kde-format +msgid "Chapter Font" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_4) +#. i18n: ectx: property (text), widget (QLabel, label_7) +#. i18n: ectx: property (text), widget (QLabel, label_8) +#. i18n: ectx: property (text), widget (QLabel, label_11) +#. i18n: ectx: property (text), widget (QLabel, label_13) +#: formating.ui:45 formating.ui:104 formating.ui:163 formating.ui:222 +#: formating.ui:281 formating.ui:340 +#, kde-format +msgid "Font Family:" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#. i18n: ectx: property (text), widget (QLabel, label_9) +#. i18n: ectx: property (text), widget (QLabel, label_10) +#. i18n: ectx: property (text), widget (QLabel, label_12) +#: formating.ui:59 formating.ui:118 formating.ui:177 formating.ui:236 +#: formating.ui:295 formating.ui:354 +#, fuzzy, kde-format +#| msgctxt "@action" +#| msgid "Font &Size" +msgid "Font Size:" +msgstr "字型大小(&S)" + +#. i18n: ectx: attribute (title), widget (QWidget, SubchapterTab) +#: formating.ui:96 +#, kde-format +msgid "Subchapter Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SectionTab) +#: formating.ui:155 +#, kde-format +msgid "Section Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubsectionTab) +#: formating.ui:214 +#, kde-format +msgid "Subsection Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, ParagraphTab) +#: formating.ui:273 +#, kde-format +msgid "Paragraph Font" +msgstr "" + +#. i18n: ectx: attribute (title), widget (QWidget, SubparagraphTab) +#: formating.ui:332 +#, kde-format +msgid "Subparagraph Font" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Chapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subchapter" +msgstr "" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "Functions" +msgid "Section" +msgstr "函數" + +#: hierarchyentry.cpp:22 +#, fuzzy, kde-format +#| msgid "Functions" +msgid "Subsection" +msgstr "函數" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Paragraph" +msgstr "" + +#: hierarchyentry.cpp:22 +#, kde-format +msgid "Subparagraph" +msgstr "" + +#: hierarchyentry.cpp:48 +#, kde-format +msgid "Set Hierarchy Level" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Solid Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, fuzzy, kde-format +#| msgid "Plot Style:" +msgid "Dot Line Style" +msgstr "繪圖樣式:" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:20 +#, kde-format +msgid "Dash Dot Dot Line Style" +msgstr "" + +#: horizontalruleentry.cpp:297 +#, kde-format +msgid "Line Thickness" +msgstr "" + +#: horizontalruleentry.cpp:299 +#, kde-format +msgid "Thin" +msgstr "" + +#: horizontalruleentry.cpp:303 +#, kde-format +msgid "Medium" +msgstr "" + +#: horizontalruleentry.cpp:307 +#, kde-format +msgid "Thick" +msgstr "" + +#: horizontalruleentry.cpp:320 +#, fuzzy, kde-format +#| msgid "Use Colors" +msgid "Line Color" +msgstr "使用顏色" + +#: horizontalruleentry.cpp:351 +#, fuzzy, kde-format +#| msgid "Style" +msgid "Line Style" +msgstr "樣式" + +#: imageentry.cpp:47 imageentry.cpp:371 +#, kde-format +msgid "Configure Image" +msgstr "設定影像" + +#: imageentry.cpp:256 +#, fuzzy, kde-format +#| msgid "Double click to open file selection dialog" +msgid "Double click here to configure image settings" +msgstr "雙擊以開啟檔案選擇對話框" + +#: imageentry.cpp:288 +#, kde-format +msgid "Cannot load image %1" +msgstr "無法載入影像 %1" + +#: imageresultitem.cpp:97 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save image result" +msgstr "儲存結果" + +#: imageresultitem.cpp:99 imagesettingsdialog.cpp:153 markdownentry.cpp:775 +#, fuzzy, kde-format +#| msgid "Image" +msgid "Images (%1)" +msgstr "影像" + +#. i18n: ectx: property (windowTitle), widget (QWidget, ImageSettingsBase) +#: imagesettings.ui:14 +#, kde-format +msgid "Image Settings" +msgstr "影像設定" + +#. i18n: ectx: property (text), widget (QPushButton, openDialogButton) +#: imagesettings.ui:29 +#, kde-format +msgid "Open" +msgstr "開啟" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: imagesettings.ui:38 +#, kde-format +msgid "Display Size" +msgstr "顯示大小" + +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: imagesettings.ui:47 imagesettings.ui:101 +#, kde-format +msgid "Width" +msgstr "寬度" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#. i18n: ectx: property (text), widget (QLabel, label_6) +#: imagesettings.ui:60 imagesettings.ui:114 +#, kde-format +msgid "Height" +msgstr "高度" + +#. i18n: ectx: property (title), widget (QGroupBox, gbPreview) +#: imagesettings.ui:76 +#, kde-format +msgid "Preview" +msgstr "預覽" + +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: imagesettings.ui:88 +#, kde-format +msgid "Print Size" +msgstr "列印大小" + +#. i18n: ectx: property (text), widget (QCheckBox, useDisplaySize) +#: imagesettings.ui:94 +#, kde-format +msgid "Use Display Size" +msgstr "使用顯示大小" + +#: imagesettingsdialog.cpp:23 +#, fuzzy, kde-format +#| msgid "Image Settings" +msgctxt "@title:window" +msgid "Image Settings" +msgstr "影像設定" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "(auto)" +msgstr "(自動)" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "px" +msgstr "px" + +#: imagesettingsdialog.cpp:40 +#, kde-format +msgid "%" +msgstr "%" + +#: imagesettingsdialog.cpp:151 markdownentry.cpp:773 +#, kde-format +msgid "Open image file" +msgstr "開啟影像檔" + +#: latexentry.cpp:61 textentry.cpp:111 +#, kde-format +msgid "Show LaTeX code" +msgstr "顯示 LaTeX 程式碼" + +#: lib/backend.cpp:162 +#, kde-format +msgid "" +"No path for the %1 executable specified. Please provide the correct path in " +"the application settings and try again." +msgstr "" + +#: lib/backend.cpp:172 +#, kde-format +msgid "" +"The specified file '%1' for the %2 executable doesn't exist. Please provide " +"the correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:181 +#, kde-format +msgid "" +"The specified file '%1' doesn't point to an executable. Please provide the " +"correct path in the application settings and try again." +msgstr "" + +#: lib/backend.cpp:200 +#, kde-format +msgid "" +"The program %1 didn't finish the execution after %2 milliseconds during the " +"plot integration test." +msgstr "" + +#: lib/backend.cpp:209 +#, kde-format +msgid "Failed to open the file %1 during the plot integration test." +msgstr "" + +#: lib/backend.cpp:217 +#, kde-format +msgid "Failed to parse the result during the plot integration test." +msgstr "" + +#. i18n: ectx: label, entry (latexCommand), group (Cantor) +#: lib/cantor_libs.kcfg:10 +#, kde-format +msgid "Path to the latex executable" +msgstr "latex 執行檔路徑" + +#. i18n: ectx: label, entry (dvipsCommand), group (Cantor) +#: lib/cantor_libs.kcfg:14 +#, kde-format +msgid "Path to the dvips executable" +msgstr "dvips 執行檔路徑" + +#: lib/defaultvariablemodel.cpp:70 +#, kde-format +msgctxt "@title:column" +msgid "Value" +msgstr "數值" + +#: lib/defaultvariablemodel.cpp:102 +#, kde-format +msgid "<%1 bytes>" +msgstr "" + +#: lib/defaultvariablemodel.cpp:104 +#, fuzzy, kde-format +#| msgid "X variable" +msgid "" +msgstr "X 變數" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/axisrange.ui:19 +#, kde-format +msgid "From:" +msgstr "從:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: lib/directives/axisrange.ui:40 +#, kde-format +msgid "To:" +msgstr "到:" + +#: lib/directives/plotdirectives.cpp:19 +#, kde-format +msgid "Main title" +msgstr "主標題" + +#: lib/directives/plotdirectives.cpp:30 +#, kde-format +msgid "Abscissa scale" +msgstr "橫座標調整大小" + +#: lib/directives/plotdirectives.cpp:41 +#, kde-format +msgid "Ordinate scale" +msgstr "縱座標調整大小" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: lib/directives/plottitle.ui:19 +#, kde-format +msgid "Plot title:" +msgstr "繪製標題:" + +#: lib/mimeresult.cpp:33 +#, kde-format +msgid "This is unsupported Jupyter content of types ('%1')" +msgstr "" + +#: lib/session.cpp:311 +#, kde-format +msgid "%1 process has died unexpectedly. All calculation results are lost." +msgstr "%1 個執行程序非預期地被中止。將遺失所有計算結果。" + +#: lib/session.cpp:313 +#, fuzzy, kde-format +msgid "" +"%1 process has died unexpectedly with message \"%2\". All calculation " +"results are lost." +msgstr "%1 個執行程序非預期地被中止,中止訊息為「%2」。將遺失所有計算結果。" + +#: lib/session.cpp:379 +#, kde-format +msgid "" +"You choose support for %1 graphic package, but the support can't be " +"activated due to the missing requirements, so integration for this package " +"will be disabled. %2" +msgstr "" + +#: main.cpp:72 +#, kde-format +msgid "KDE Frontend to mathematical applications" +msgstr "Mathematical 應用程式的 KDE 前端介面" + +#: main.cpp:74 +#, kde-format +msgid "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" +msgstr "(C) 2016 Filipe Saraiva
      (C) 2009-2015 Alexander Rieder" + +#: main.cpp:78 +#, kde-format +msgid "Filipe Saraiva" +msgstr "Filipe Saraiva" + +#: main.cpp:78 +#, kde-format +msgid "Maintainer
      Qt5/KF5 port, Scilab and Python backends" +msgstr "維護者
      Qt5/KF5 移植,Scilab 與 Python 後端介面" + +#: main.cpp:79 +#, kde-format +msgid "Nikita Sirgienko" +msgstr "Nikita Sirgienko" + +#: main.cpp:79 main.cpp:80 +#, kde-format +msgctxt "@info:credit" +msgid "Developer" +msgstr "開發者" + +#: main.cpp:80 +#, kde-format +msgid "Alexander Semke" +msgstr "Alexander Semke" + +#: main.cpp:81 +#, kde-format +msgid "Original author
      Maintainer (2009 - 2015)" +msgstr "原始作者
      維護者 (2009 - 2015)" + +#: main.cpp:82 +#, kde-format +msgid "Aleix Pol Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:82 +#, kde-format +msgid "KAlgebra backend" +msgstr "KAlgebra 的後端介面" + +#: main.cpp:83 +#, kde-format +msgid "Miha Čančula" +msgstr "Miha Čančula" + +#: main.cpp:83 +#, kde-format +msgid "Octave backend" +msgstr "Octave 後端介面" + +#: main.cpp:84 +#, kde-format +msgid "Martin Küttler" +msgstr "Martin Küttler" + +#: main.cpp:84 +#, kde-format +msgid "Interface" +msgstr "介面" + +#: main.cpp:86 main.cpp:87 +#, kde-format +msgid "Cantor icon" +msgstr "Cantor 圖示" + +#: main.cpp:92 +#, kde-format +msgid "Use backend " +msgstr "使用後端介面 " + +#: main.cpp:95 +#, kde-format +msgid "Documents to open." +msgstr "要開啟的文件。" + +#: main.cpp:130 +#, kde-format +msgid "Couldn't open the file %1" +msgstr "無法開啟檔案 %1" + +#: markdownentry.cpp:70 +#, kde-format +msgid "Enter Edit Mode" +msgstr "" + +#: markdownentry.cpp:78 +#, kde-format +msgid "Clear Attachments" +msgstr "清除附件" + +#: markdownentry.cpp:587 +#, kde-format +msgid "Cantor Math Error" +msgstr "Cantor 數學錯誤" + +#: markdownentry.cpp:796 +#, fuzzy, kde-format +#| msgid "Cantor failed to read image with error \"%1\"" +msgid "Failed to read the image \"%1\". Error \"%2\"" +msgstr "Cantor 無法讀取影像,錯誤為「%1」" + +#: pagebreakentry.cpp:28 +#, kde-format +msgid "--- Page Break ---" +msgstr "--- 頁面中斷 ---" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:51 +#, kde-format +msgctxt "@button go to contents page" +msgid "Go to the contents" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:58 +#, kde-format +msgctxt "@info:placeholder" +msgid "Search through keywords..." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:69 +#, kde-format +msgctxt "@info:tooltip" +msgid "Find in text of current documentation page" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:75 +#, kde-format +msgctxt "@info:tooltip" +msgid "Reset zoom level to 100%" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:123 +#, kde-format +msgctxt "@info:tooltip" +msgid "Close" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:133 +#, kde-format +msgctxt "@info:tooltip" +msgid "Jump to next match" +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:137 +#, fuzzy, kde-format +#| msgid "Go to previous worksheet" +msgctxt "@info:tooltip" +msgid "Jump to previous match" +msgstr "前往上個工作表格" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:141 +#, fuzzy, kde-format +#| msgid "&Match case" +msgctxt "@info:tooltip" +msgid "Match case sensitively" +msgstr "符合大小寫(&M)" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "The file has been downloaded successfully at Downloads." +msgstr "" + +#: panelplugins/documentationpanel/documentationpanelwidget.cpp:408 +#, kde-format +msgid "Download Successful" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:137 +#, fuzzy, kde-format +#| msgid "Cantor icon" +msgid "Cantor files" +msgstr "Cantor 圖示" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:138 +#, fuzzy, kde-format +#| msgid "Jupyter" +msgid "Jupyter files" +msgstr "Jupyter" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:139 +#, kde-format +msgid "All supported files" +msgstr "" + +#: panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp:140 +#, fuzzy, kde-format +#| msgid "file" +msgid "All files" +msgstr "檔案" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: panelplugins/variablemgr/newvardlg.ui:17 +#, kde-format +msgid "Name:" +msgstr "名稱:" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: panelplugins/variablemgr/newvardlg.ui:27 +#, kde-format +msgid "Value:" +msgstr "值:" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:45 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:197 +#, fuzzy, kde-format +#| msgid "Add new variable" +msgid "Add New Variable" +msgstr "新增變數" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:51 +#, kde-format +msgid "Load Variables" +msgstr "載入變數" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:57 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Save Variables" +msgstr "儲存變數" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:63 +#: panelplugins/variablemgr/variablemanagerwidget.cpp:140 +#, fuzzy, kde-format +#| msgid "Store Variables" +msgid "Remove Variables" +msgstr "儲存變數" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:73 +#, fuzzy, kde-format +#| msgid "SearchBar" +msgid "Search/Filter" +msgstr "搜尋列" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:84 +#, kde-format +msgid "Case Sensitive" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:88 +#, kde-format +msgid "Match Complete Word" +msgstr "" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:139 +#, kde-format +msgid "Are you sure you want to remove all variables?" +msgstr "您確定要移除所有的變數嗎?" + +#: panelplugins/variablemgr/variablemanagerwidget.cpp:182 +#, kde-format +msgid "Load file" +msgstr "載入檔案" + +#: resultitem.cpp:59 +#, kde-format +msgid "Save result" +msgstr "儲存結果" + +#: resultitem.cpp:60 +#, kde-format +msgid "Remove result" +msgstr "移除結果" + +#: scripteditor/scripteditorwidget.cpp:44 +#, kde-format +msgid "" +"A KDE text-editor component could not be found;\n" +"please check your KDE installation." +msgstr "" +"找不到 KDE 文字編輯器元件;\n" +"請檢查您的 KDE 安裝。" + +#: scripteditor/scripteditorwidget.cpp:139 +#, kde-format +msgid "Script Editor" +msgstr "文稿編輯器" + +#: scripteditor/scripteditorwidget.cpp:142 +#, kde-format +msgid "Script Editor - %1" +msgstr "文稿編輯器 - %1" + +#: searchbar.cpp:130 searchbar.cpp:178 +#, kde-format +msgid "Not found" +msgstr "找不到" + +#: searchbar.cpp:133 +#, kde-format +msgid "Reached beginning" +msgstr "到達頂端" + +#: searchbar.cpp:181 +#, kde-format +msgid "Reached end" +msgstr "到達底端" + +#: searchbar.cpp:238 +#, kde-format +msgid "Replaced %1 instance" +msgid_plural "Replaced %1 instances" +msgstr[0] "取代了 %1 個項目" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Commands" +msgstr "指令" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Results" +msgstr "結果" + +#: searchbar.cpp:333 searchbar.cpp:362 +#, kde-format +msgid "Errors" +msgstr "錯誤" + +#: searchbar.cpp:334 searchbar.cpp:363 worksheet.cpp:1812 worksheet.cpp:1841 +#: worksheet.cpp:1861 worksheet.cpp:1879 +#, kde-format +msgid "Text" +msgstr "文字" + +#: searchbar.cpp:334 searchbar.cpp:363 +#, kde-format +msgid "LaTeX Code" +msgstr "LaTeX 碼" + +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: settings.ui:23 +#, fuzzy, kde-format +#| msgid "Start" +msgid "Startup:" +msgstr "開始" + +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#. i18n: ectx: property (toolTip), widget (KComboBox, kcfg_DefaultBackend) +#: settings.ui:30 settings.ui:293 +#, kde-format +msgid "" +"Create a new worksheet for the selected backend system. If none is selected, " +"the user is asked about which system to use on startup." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label) +#: settings.ui:33 +#, kde-format +msgid "Default Backend:" +msgstr "預設後端介面:" + +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: settings.ui:75 +#, fuzzy, kde-format +#| msgid "&Worksheet" +msgid "Worksheet:" +msgstr "工作表(&W)" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:82 +#, kde-format +msgid "" +"Enable LaTeX typesetting for the results of the calculations, if supported " +"by the backend system" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_TypesetDefault) +#: settings.ui:85 +#, kde-format +msgid "LaTeX typesetting" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:92 +#, fuzzy, kde-format +#| msgid "Enable Syntax Highlighting" +msgid "Enable syntax highlighting" +msgstr "開啟語法突顯功能" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_HighlightDefault) +#: settings.ui:95 +#, fuzzy, kde-format +#| msgid "Syntax Highlighting" +msgid "Syntax highlighting" +msgstr "語法突顯" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_CompletionDefault) +#: settings.ui:102 +#, fuzzy, kde-format +#| msgid "Enable Completion" +msgid "Enable syntax completion" +msgstr "開啟補完功能" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:112 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Show line numbers" +msgstr "行號" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ExpressionNumberingDefault) +#: settings.ui:115 +#, fuzzy, kde-format +#| msgid "Line Numbers" +msgid "Line numbers" +msgstr "行號" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AnimationDefault) +#: settings.ui:122 +#, fuzzy, kde-format +#| msgid "Integrate Plots into the Worksheet" +msgid "Enable animation effects in the worksheet" +msgstr "將 Plots 整合進工作表" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:132 +#, kde-format +msgid "" +"If enabled, text entries are aligned at the worksheet border and not at the " +"prompt border" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_UseOldCantorEntriesIndent) +#: settings.ui:135 +#, kde-format +msgid "Don't indent text entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_StoreTextEntryFormatting) +#: settings.ui:142 +#, kde-format +msgid "" +"Use rich text format for text entries when saving in Jupyter Notebook Format" +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: settings.ui:171 +#, fuzzy, kde-format +#| msgid "Equations:" +msgid "Evaluation:" +msgstr "方程式:" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_WarnAboutSessionRestart) +#: settings.ui:178 +#, fuzzy, kde-format +#| msgid "Ask for confirmation when restarting the backend" +msgid "" +"If enabled, the user will be asked for confirmation prior to restarting the " +"backend system" +msgstr "當重新啟動後端時詢問確認" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:188 +#, kde-format +msgid "" +"If enabled, all entries below the current one will be evaluated automatically" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_AutoEval) +#: settings.ui:191 +#, fuzzy, kde-format +#| msgid "Reevaluate Entries automatically" +msgid "Reevaluate entries automatically" +msgstr "自動重新計算項目" + +#. i18n: ectx: property (text), widget (QLabel, VisibleLinesLimit_label) +#: settings.ui:201 +#, kde-format +msgid "Number of rows in the result (0 for unlimited):" +msgstr "" + +#. i18n: ectx: property (toolTip), widget (QSpinBox, kcfg_VisibleLinesLimit) +#: settings.ui:221 +#, kde-format +msgid "" +"Maximal number of visible rows in the result of a command entry. Use 0 to " +"work without limitations." +msgstr "" + +#. i18n: ectx: property (text), widget (QLabel, label_5) +#: settings.ui:256 +#, fuzzy, kde-format +#| msgid "Markdown Entry" +msgid "Markdown:" +msgstr "Markdown 項目" + +#. i18n: ectx: property (toolTip), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:263 +#, kde-format +msgid "" +"Enable LaTeX typesetting for mathematical expressions in Markdown entries" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_EmbeddedMathDefault) +#: settings.ui:266 +#, kde-format +msgid "Mathematical expressions via LaTeX" +msgstr "" + +#. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowMathRenderError) +#: settings.ui:273 +#, kde-format +msgid "Notify about render failures for mathematical expressions" +msgstr "" + +#. i18n: ectx: property (placeholderText), widget (KLineEdit, pattern) +#: standardsearchbar.ui:35 +#, kde-format +msgid "Find…" +msgstr "尋找…" + +#: textentry.cpp:55 +#, kde-format +msgid "Raw Cell Targets" +msgstr "" + +#: textentry.cpp:62 +#, kde-format +msgid "Add custom target" +msgstr "新增自訂目標" + +#: textentry.cpp:76 +#, kde-format +msgid "Convert to Text Entry" +msgstr "轉換成文字項目" + +#: textentry.cpp:81 +#, kde-format +msgid "Convert to Raw Cell" +msgstr "" + +#: textentry.cpp:553 +#, kde-format +msgid "Target MIME type:" +msgstr "目標 MIME 類型:" + +#: textresultitem.cpp:59 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Copy result" +msgstr "移除結果" + +#: textresultitem.cpp:68 +#, kde-format +msgid "Show Rendered" +msgstr "顯示成像" + +#: textresultitem.cpp:70 +#, kde-format +msgid "Show Code" +msgstr "顯示程式碼" + +#: textresultitem.cpp:78 textresultitem.cpp:91 +#, kde-format +msgid "Show HTML Code" +msgstr "顯示 HTML 程式碼" + +#: textresultitem.cpp:80 textresultitem.cpp:86 +#, kde-format +msgid "Show Plain Alternative" +msgstr "" + +#: textresultitem.cpp:84 +#, kde-format +msgid "Show Html" +msgstr "顯示 HTML" + +#: textresultitem.cpp:90 +#, kde-format +msgid "Show HTML" +msgstr "顯示 HTML" + +#: textresultitem.cpp:161 +#, kde-format +msgid "Cannot render Eps file. You may need additional packages" +msgstr "無法繪製 Eps 檔。您可能需要額外的套件" + +#: textresultitem.cpp:213 +#, fuzzy, kde-format +#| msgid "Save result" +msgid "Save text result" +msgstr "儲存結果" + +#: textresultitem.cpp:213 +#, kde-format +msgid "Text Files (*.txt)" +msgstr "" + +#: worksheet.cpp:1192 +#, kde-format +msgid "Cannot write file %1." +msgstr "無法寫入檔案 %1。" + +#: worksheet.cpp:1220 worksheet.cpp:1235 +#, kde-format +msgid "Cannot write file." +msgstr "無法寫入檔案。" + +#: worksheet.cpp:1252 worksheet.cpp:1296 +#, kde-format +msgid "Error saving file %1" +msgstr "儲存檔案 %1 時發生錯誤" + +#: worksheet.cpp:1275 +#, kde-format +msgid "" +"In read-only mode Cantor couldn't guarantee, that the export will be valid " +"for %1" +msgstr "在唯讀模式中 Cantor 不能確保輸出對 %1 合法。" + +#: worksheet.cpp:1308 +#, kde-format +msgid "Error loading latex.xsl stylesheet" +msgstr "載入 latex.xsl 樣式表時發生錯誤" + +#: worksheet.cpp:1327 +#, kde-format +msgid "Couldn't open the file %1." +msgstr "無法開啟檔案 %1。" + +#: worksheet.cpp:1327 worksheet.cpp:1350 worksheet.cpp:1370 worksheet.cpp:1387 +#: worksheet.cpp:1419 worksheet.cpp:1430 worksheet.cpp:1539 worksheet.cpp:1554 +#: worksheet.cpp:1596 worksheet.cpp:1607 worksheet.cpp:1727 worksheet.cpp:1729 +#, kde-format +msgid "Open File" +msgstr "開啟檔案" + +#: worksheet.cpp:1350 +#, kde-format +msgid "Couldn't open the selected file for reading." +msgstr "無法開啟選取檔案供讀取。" + +#: worksheet.cpp:1370 +#, kde-format +msgid "The selected file is not a valid Cantor or Jupyter project file." +msgstr "選擇的檔案不是有效的 Cantor 或 Jupyter 專案檔案。" + +#: worksheet.cpp:1387 +#, kde-format +msgid "The selected file is not a valid Cantor project file." +msgstr "選擇的檔案不是有效的 Cantor 專案檔案。" + +#: worksheet.cpp:1409 +#, kde-format +msgid "" +"This worksheet was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1410 worksheet.cpp:1578 +#, kde-format +msgid "Python2 not supported anymore" +msgstr "" + +#: worksheet.cpp:1419 worksheet.cpp:1595 +#, kde-format +msgid "" +"%1 backend was not found. Editing and executing entries is not possible." +msgstr "找不到 %1 後端,將無法編輯和執行項目。" + +#: worksheet.cpp:1428 worksheet.cpp:1605 +#, kde-format +msgid "" +"There are some problems with the %1 backend,\n" +"please check your configuration or install the needed packages.\n" +"You will only be able to view this worksheet." +msgstr "" +"後端介面 %1 發生一些問題。\n" +"請檢查您的設定,或看看是否安裝了必須的套件。\n" +"您將只能檢視此工作表。" + +#: worksheet.cpp:1538 +#, kde-format +msgid "" +"Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "不支援 Jupyter notebooks 低於 4.5 的版本(偵測到 %1.%2 版)。" + +#: worksheet.cpp:1553 +#, kde-format +msgid "" +"Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are " +"not supported." +msgstr "不支援 Jupyter notebooks 高於 4.5 的版本(偵測到 %1.%2 版)。" + +#: worksheet.cpp:1577 +#, kde-format +msgid "" +"This notebook was created using Python2 which is not supported anymore. " +"Python3 will be used." +msgstr "" + +#: worksheet.cpp:1645 +#, kde-format +msgid "an object with keys: %1" +msgstr "" + +#: worksheet.cpp:1647 +#, kde-format +msgid "non object JSON value" +msgstr "非物件 JSON 值" + +#: worksheet.cpp:1650 +#, kde-format +msgid "found incorrect data (%1) that is not Jupyter cell" +msgstr "" + +#: worksheet.cpp:1727 +#, kde-format +msgid "The file is not valid Jupyter notebook" +msgstr "這個檔案並不是有效的 Jupyter notebook 格式" + +#: worksheet.cpp:1729 +#, kde-format +msgid "Invalid Jupyter notebook scheme: %1" +msgstr "" + +#: worksheet.cpp:1804 +#, fuzzy, kde-format +#| msgid "Convert to Text Entry" +msgid "Convert To" +msgstr "轉換成文字項目" + +#: worksheet.cpp:1809 worksheet.cpp:1840 worksheet.cpp:1860 worksheet.cpp:1878 +#, fuzzy, kde-format +#| msgid "Commands" +msgid "Command" +msgstr "指令" + +#: worksheet.cpp:1816 worksheet.cpp:1843 worksheet.cpp:1863 worksheet.cpp:1881 +#, fuzzy, kde-format +#| msgid "Markdown Entry" +msgid "Markdown" +msgstr "Markdown 項目" + +#: worksheet.cpp:1823 worksheet.cpp:1848 worksheet.cpp:1868 worksheet.cpp:1886 +#, kde-format +msgid "Image" +msgstr "影像" + +#: worksheet.cpp:1826 worksheet.cpp:1851 worksheet.cpp:1871 worksheet.cpp:1889 +#, kde-format +msgid "Page Break" +msgstr "頁面中斷" + +#: worksheet.cpp:1829 worksheet.cpp:1850 worksheet.cpp:1870 worksheet.cpp:1888 +#, fuzzy, kde-format +#| msgid "Points and Lines" +msgid "Horizontal Line" +msgstr "點與線" + +#: worksheet.cpp:1832 worksheet.cpp:1853 worksheet.cpp:1873 worksheet.cpp:1891 +#, fuzzy, kde-format +#| msgid "Drag Entry" +msgid "Hierarchy Entry" +msgstr "拖曳項目" + +#: worksheet.cpp:1835 +#, fuzzy, kde-format +#| msgid "Insert Entry After" +msgid "Insert After" +msgstr "插入項目於以下項目之後" + +#: worksheet.cpp:1856 +#, fuzzy, kde-format +#| msgid "Insert Entry Before" +msgid "Insert Before" +msgstr "插入項目於以下項目之前" + +#: worksheet.cpp:1875 +#, fuzzy, kde-format +#| msgid "Insert Image" +msgid "Insert" +msgstr "插入影像" + +#: worksheet.cpp:1916 +#, kde-format +msgid "Zoom In" +msgstr "" + +#: worksheet.cpp:1919 +#, kde-format +msgid "Zoom Out" +msgstr "" + +#: worksheet.cpp:1923 +#, fuzzy, kde-format +#| msgid "Print Size" +msgid "Original Size" +msgstr "列印大小" + +#: worksheet.cpp:1931 +#, kde-format +msgid "Move Entries Up" +msgstr "" + +#: worksheet.cpp:1932 +#, fuzzy, kde-format +#| msgid "Convert to Text Entry" +msgid "Move Entries Down" +msgstr "轉換成文字項目" + +#: worksheet.cpp:1933 +#, fuzzy, kde-format +#| msgid "Evaluate Entry" +msgid "Evaluate Entries" +msgstr "計算項目" + +#: worksheet.cpp:1934 +#, fuzzy, kde-format +#| msgid "Remove Entry" +msgid "Remove Entries" +msgstr "移除項目" + +#: worksheet.cpp:1947 +#, fuzzy, kde-format +#| msgid "Insert Command Entry" +msgid "Collapse Command Entry Results" +msgstr "插入指令項目" + +#: worksheet.cpp:1948 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Expand Command Entry Results" +msgstr "指令項目" + +#: worksheet.cpp:1949 +#, fuzzy, kde-format +#| msgid "Command Entry" +msgid "Remove Command Entry Results" +msgstr "指令項目" + +#: worksheet.cpp:1950 +#, kde-format +msgid "Exclude Command Entry From Execution" +msgstr "" + +#: worksheet.cpp:1951 +#, fuzzy, kde-format +#| msgid "Scripts to autorun" +msgid "Add Command Entry To Execution" +msgstr "要自動執行的文稿" + +#: worksheet.cpp:2059 +#, kde-format +msgctxt "@action" +msgid "Text &Color..." +msgstr "文字顏色(&C)..." + +#: worksheet.cpp:2060 +#, kde-format +msgctxt "@label text color" +msgid "Color" +msgstr "顏色" + +#: worksheet.cpp:2067 +#, kde-format +msgctxt "@action" +msgid "Text &Highlight..." +msgstr "文字突顯(&H)..." + +#: worksheet.cpp:2073 +#, kde-format +msgctxt "@action" +msgid "&Font" +msgstr "字型(&F)" + +#: worksheet.cpp:2082 +#, kde-format +msgctxt "@action" +msgid "Font &Size" +msgstr "字型大小(&S)" + +#: worksheet.cpp:2088 +#, kde-format +msgctxt "@action boldify selected text" +msgid "&Bold" +msgstr "粗體(&B)" + +#: worksheet.cpp:2099 +#, kde-format +msgctxt "@action italicize selected text" +msgid "&Italic" +msgstr "斜體(&I)" + +#: worksheet.cpp:2111 +#, kde-format +msgctxt "@action underline selected text" +msgid "&Underline" +msgstr "底線(&U)" + +#: worksheet.cpp:2122 +#, kde-format +msgctxt "@action" +msgid "&Strike Out" +msgstr "刪除線(&S)" + +#: worksheet.cpp:2133 +#, kde-format +msgctxt "@action" +msgid "Align &Left" +msgstr "置左(&L)" + +#: worksheet.cpp:2136 +#, kde-format +msgctxt "@label left justify" +msgid "Left" +msgstr "置左" + +#: worksheet.cpp:2143 +#, kde-format +msgctxt "@action" +msgid "Align &Center" +msgstr "置中(&C)" + +#: worksheet.cpp:2146 +#, kde-format +msgctxt "@label center justify" +msgid "Center" +msgstr "置中" + +#: worksheet.cpp:2153 +#, kde-format +msgctxt "@action" +msgid "Align &Right" +msgstr "置右(&R)" + +#: worksheet.cpp:2156 +#, kde-format +msgctxt "@label right justify" +msgid "Right" +msgstr "置右" + +#: worksheet.cpp:2163 +#, kde-format +msgctxt "@action" +msgid "&Justify" +msgstr "兩邊對齊(&J)" + +#: worksheet.cpp:2166 +#, kde-format +msgctxt "@label justify fill" +msgid "Justify" +msgstr "兩邊對齊" + +#: worksheet.cpp:2860 +#, kde-format +msgid "" +"This action will remove all results without the possibility of cancellation. " +"Are you sure?" +msgstr "" + +#: worksheet.cpp:2861 +#, fuzzy, kde-format +#| msgid "Remove result" +msgid "Remove all results" +msgstr "移除結果" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "White" +msgstr "白色" + +#: worksheetentry.cpp:67 +#, kde-format +msgid "Black" +msgstr "黑色" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Dark Red" +msgstr "暗紅色" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Red" +msgstr "紅色" + +#: worksheetentry.cpp:68 +#, kde-format +msgid "Light Red" +msgstr "亮紅色" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Dark Green" +msgstr "暗綠色" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Green" +msgstr "綠色" + +#: worksheetentry.cpp:69 +#, kde-format +msgid "Light Green" +msgstr "亮綠色" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Dark Blue" +msgstr "暗藍色" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Blue" +msgstr "藍色" + +#: worksheetentry.cpp:70 +#, kde-format +msgid "Light Blue" +msgstr "亮藍色" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Dark Yellow" +msgstr "暗黃色" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Yellow" +msgstr "黃色" + +#: worksheetentry.cpp:71 +#, kde-format +msgid "Light Yellow" +msgstr "亮黃色" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Dark Cyan" +msgstr "暗青色" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Cyan" +msgstr "青色" + +#: worksheetentry.cpp:72 +#, kde-format +msgid "Light Cyan" +msgstr "亮青色" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Dark Magenta" +msgstr "暗洋紅" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Magenta" +msgstr "洋紅色" + +#: worksheetentry.cpp:73 +#, kde-format +msgid "Light Magenta" +msgstr "亮洋紅" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Dark Orange" +msgstr "深橘色" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Orange" +msgstr "橘色" + +#: worksheetentry.cpp:74 +#, kde-format +msgid "Light Orange" +msgstr "亮橘色" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Dark Grey" +msgstr "暗灰色" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Grey" +msgstr "灰色" + +#: worksheetentry.cpp:75 +#, kde-format +msgid "Light Grey" +msgstr "亮灰色" + +#: worksheetentry.cpp:421 +#, kde-format +msgid "Move Up" +msgstr "" + +#: worksheetentry.cpp:429 +#, kde-format +msgid "Move Down" +msgstr "" + +#: worksheetentry.cpp:717 +#, fuzzy, kde-format +#| msgid "Are you sure you want to remove all variables?" +msgid "Do you really want to remove this entry?" +msgstr "您確定要移除所有的變數嗎?" + +#: worksheetentry.cpp:717 worksheetentry.cpp:845 +#, kde-format +msgid "Remove Entry" +msgstr "移除項目" + +#: worksheetentry.cpp:850 +#, kde-format +msgid "Drag Entry" +msgstr "拖曳項目" + +#~ msgid "Animate Worksheet" +#~ msgstr "動畫化工作表" + +#~ msgid "" +#~ "When enabled, Cantor will automatically evaluate every entry below the " +#~ "current one." +#~ msgstr "開啟時,Cantor 會自動重新計算在目前項目下的每個項目。" + +#~ msgid "Defaults" +#~ msgstr "預設值" + +#~ msgid "Enable Line Numbers" +#~ msgstr "開啟行號功能" + +#~ msgid "Enable Worksheet Animations" +#~ msgstr "開啟工作表動畫" + +#~ msgid "Enable Embedded Math (works only if pdflatex is installed)" +#~ msgstr "啟用內嵌數學式(僅在安裝 pdflatex 時能夠運作)" + +#~ msgid "Jupyter" +#~ msgstr "Jupyter" + +#, fuzzy +#~| msgid "Plot" +#~ msgid "Plot.ly" +#~ msgstr "繪製" + +#, fuzzy +#~| msgid "Package:" +#~ msgid "Graphic Package: " +#~ msgstr "套件:" + +#~ msgid "

      Cantor

      The KDE way to do Mathematics" +#~ msgstr "

      Cantor

      在 KDE 上跑 Mathematics" + +#~ msgid "Url to the local Maxima documentation" +#~ msgstr "本機 Maxima 文件的 URL" + +#, fuzzy +#~| msgid "Documents to open." +#~ msgid "Documentation:" +#~ msgstr "要開啟的文件。" + +#~ msgid "Url to the local Python documentation" +#~ msgstr "本機 Python 文件的 URL" + +#~ msgid "Url to the local Octave documentation" +#~ msgstr "本機 Octave 文件的 URL" + +#~ msgid "Show %1 Help" +#~ msgstr "顯示 %1 說明" + +#~ msgid "Path to Julia:" +#~ msgstr "Julia 的路徑:" + +#~ msgid "Integrate Plots in Worksheet" +#~ msgstr "在工作表中整合 Plots" + +#~ msgid "Clear Variables" +#~ msgstr "清除變數" + +#~ msgid "Right click here to insert image" +#~ msgstr "點擊右鍵以插入影像" + +#~ msgid "Choose Image" +#~ msgstr "選擇影像" + +#~ msgid "Images (*.png *.bmp *.jpg *.svg)" +#~ msgstr "影像 (*.png *.bmp *.jpg *.svg)" + +#~ msgid "Confirmation - Cantor" +#~ msgstr "確認 - Cantor" + +#~ msgid "Text Entry" +#~ msgstr "文字項目" + +#~ msgid "LaTeX Entry" +#~ msgstr "LaTeX 項目" + +#, fuzzy +#~| msgid "Insert Text Entry" +#~ msgid "Insert Hierarchy Entry" +#~ msgstr "插入文字項目" + +#~ msgid "" +#~ "Path to scilab-adv-cli command (Warning: Scilab version must better or " +#~ "equal than 5.4 version)" +#~ msgstr "scilab-adv-cli 執行檔路徑(警告:Scilab 版本必須大於或等於 5.4 版)" + +#~ msgid "Insert Image Attachment" +#~ msgstr "插入影像附件" + +#~ msgid "Insert Latex Entry" +#~ msgstr "插入 Latex 項目" + +#, fuzzy +#~| msgid "Path to the Octave executable" +#~ msgid "Path to Cantor python server executable" +#~ msgstr "Octave 執行檔路徑" + +#~ msgid "Inline Plots Intermediate Format:" +#~ msgstr "內聯 Plots 中間格式:" + +#~ msgid "Path to Maxima:" +#~ msgstr "Maxima 的路徑:" + +#, fuzzy +#~| msgid "Failed to start Cantor python server." +#~ msgid "Path to Cantor Python Server:" +#~ msgstr "無法啟動 Cantor Python 伺服器。" + +#~ msgid "Path to Sage:" +#~ msgstr "Sage 的路徑:" + +#~ msgid "Path to scilab-adv-cli command:" +#~ msgstr "scilab-adv-cli 指令位置:" + +#~ msgid "Let Cantor follow the creation/destruction of variables" +#~ msgstr "讓 Cantor 跟隨變數的建構/解構" + +#~ msgid "Integrate Plots in Worksheet (start a new session when changed)" +#~ msgstr "在工作表中整合 Plots(當變更時啟動一個新的工作階段)" + +#~ msgid "Path to the Octave executable" +#~ msgstr "Octave 執行檔路徑" + +#~ msgid "Path to Octave:" +#~ msgstr "Octave 的路徑:" + +#~ msgid "Unnamed" +#~ msgstr "未命名" + +#~ msgctxt "The url to the documentation Python 2" +#~ msgid "https://docs.python.org/2/" +#~ msgstr "https://docs.python.org/2/" + +#~ msgid "" +#~ "Python is a remarkably powerful dynamic programming language that " +#~ "is used in a wide variety of application domains. There are several " +#~ "Python packages to scientific programming. This backend supports Python 3." +#~ msgstr "" +#~ "Python 是一種強大的動態程式語言,用途非常廣泛。有一些科學程式使用" +#~ "的 Python 套件。此後端介面支援 Python 3。-" diff --git a/src/.emacs-dirvars b/src/.emacs-dirvars new file mode 100644 index 0000000..c8b2d09 --- /dev/null +++ b/src/.emacs-dirvars @@ -0,0 +1,74 @@ +;; -*- emacs-lisp -*- +;; +;; This file is processed by the dirvars emacs package. Each variable +;; setting below is performed when this dirvars file is loaded. +;; +kde-emacs-after-parent-string: "" +;evaluate: (c-set-offset 'access-label '0) +;evaluate: (c-set-offset 'topmost-intro '+) +;evaluate: (c-set-offset 'inline-open '+) +;evaluate: (setq 'innamespace '--) +evaluate: (setq c-offsets-alist '((string . c-lineup-dont-change) + (c . c-lineup-C-comments) + (defun-open . 0) + (defun-close . 0) + (defun-block-intro . +) + (class-open . 0) + (class-close . 0) + (inline-close . 0) + (func-decl-cont . +) + (knr-argdecl . 0) + (topmost-intro . 0) + (topmost-intro-cont . 0) + (member-init-intro . +) + (member-init-cont . c-lineup-multi-inher) + (inher-intro . +) + (inher-cont . c-lineup-multi-inher) + (block-open . 0) + (block-close . 0) + (brace-list-close . 0) + (brace-list-intro . +) + (brace-list-entry . 0) + (brace-entry-open . 0) + (statement . 0) + (statement-case-intro . +) + (substatement . +) + (case-label . +) + (access-label . -) + (do-while-closure . 0) + (else-clause . 0) + (catch-clause . 0) + (comment-intro . c-lineup-comment) + (arglist-cont . 0) + (arglist-cont-nonempty . c-lineup-arglist) + (stream-op . c-lineup-streamop) + (inclass . ++) + (cpp-macro . + [0]) + (cpp-macro-cont . c-lineup-dont-change) + (friend . 0) + (objc-method-intro . + [0]) + (objc-method-args-cont . c-lineup-ObjC-method-args) + (objc-method-call-cont . c-lineup-ObjC-method-call) + (extern-lang-open . 0) + (extern-lang-close . 0) + (inextern-lang . +) + (namespace-open . 0) + (namespace-close . 0) + (innamespace . 0) + (template-args-cont c-lineup-template-args +) + (inlambda . c-lineup-inexpr-block) + (lambda-intro-cont . +) + (inexpr-statement . 0) + (inexpr-class . +) + (statement-block-intro . +) + (knr-argdecl-intro . +) + (substatement-open . 0) + (label . 2) + (statement-case-open . 0) + (statement-cont . +) + (arglist-intro . +) + (arglist-close . +) + (inline-open . 0) + (brace-list-open . 0))) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..02e2d26 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,115 @@ +######################################################################### +# Subdirectories +######################################################################### +add_subdirectory(lib) +add_subdirectory(scripteditor) + +include_directories( lib ${CMAKE_CURRENT_BINARY_DIR}/lib) +if(BUILD_TESTING) + include(ECMMarkAsTest) + include_directories( lib/test ) +endif(BUILD_TESTING) + +add_subdirectory(backends) +add_subdirectory(assistants) +add_subdirectory(xslt) +add_subdirectory(panelplugins) + + +#build the config object in a separate library, shared between shell and part +kconfig_add_kcfg_files(config_SRCS settings.kcfgc) +add_library( cantor_config SHARED ${config_SRCS} ) +target_link_libraries( cantor_config KF5::Parts KF5::NewStuff ) +install( TARGETS cantor_config ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} ) + +set(cantor_SRCS + main.cpp + cantor.cpp + backendchoosedialog.cpp +) + +install(FILES cantor.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) + +ki18n_wrap_ui(cantor_SRCS settings.ui) +ki18n_wrap_ui(cantor_SRCS formating.ui) +ki18n_wrap_ui(cantor_SRCS backendchooser.ui) + +file(GLOB ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/../icons/*-apps-cantor.png") +ecm_add_app_icon(cantor_SRCS ICONS ${ICONS_SRCS}) +add_executable(cantor ${cantor_SRCS}) + +target_link_libraries(cantor KF5::Parts KF5::NewStuffWidgets KF5::ConfigCore KF5::CoreAddons KF5::ConfigGui + KF5::Crash KF5::XmlGui Qt5::WebEngine cantorlibs cantor_config) + +########### install files ############### +install(TARGETS cantor ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} ) +install( PROGRAMS org.kde.cantor.desktop DESTINATION ${KDE_INSTALL_APPDIR} ) +install( FILES cantor_shell.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/cantor ) +install( FILES cantor.knsrc cantor-documentation.knsrc DESTINATION ${KDE_INSTALL_KNSRCDIR} ) +install( FILES cantor.xml DESTINATION ${KDE_INSTALL_MIMEDIR} ) +update_xdg_mimetypes(${KDE_INSTALL_MIMEDIR}) + +######################################################################### +# KPART SECTION +######################################################################### + +set(cantor_PART_SRCS + cantor_part.cpp + worksheet.cpp + worksheetview.cpp + worksheetentry.cpp + worksheettextitem.cpp + worksheetimageitem.cpp + commandentry.cpp + textentry.cpp + markdownentry.cpp + pagebreakentry.cpp + imageentry.cpp + latexentry.cpp + placeholderentry.cpp + horizontalruleentry.cpp + hierarchyentry.cpp + worksheetcursor.cpp + searchbar.cpp + actionbar.cpp + worksheettoolbutton.cpp + imagesettingsdialog.cpp + scripteditor/scripteditorwidget.cpp + resultitem.cpp + textresultitem.cpp + imageresultitem.cpp + animationresultitem.cpp + loadedexpression.cpp + animation.cpp + mathrender.cpp + mathrendertask.cpp + worksheetcontrolitem.cpp + ) + +ki18n_wrap_ui(cantor_PART_SRCS imagesettings.ui) +ki18n_wrap_ui(cantor_PART_SRCS standardsearchbar.ui) +ki18n_wrap_ui(cantor_PART_SRCS extendedsearchbar.ui) + +set(PATH_TO_CANTOR_BACKENDS "${KDE_INSTALL_FULL_PLUGINDIR}") + +configure_file (config-cantor.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-cantor.h ) + +kcoreaddons_add_plugin(cantorpart + SOURCES ${cantor_PART_SRCS} + INSTALL_NAMESPACE "kf5/parts") + +target_link_libraries(cantorpart KF5::Parts KF5::NewStuff + KF5::TextEditor ${Qt5XmlPatterns_LIBRARIES} + KF5::KIOCore KF5::KIOFileWidgets KF5::KIOWidgets + Qt5::PrintSupport cantorlibs cantor_config ) + +# if(Discount_FOUND) + target_link_libraries(cantorpart Discount::Lib) +# endif(Discount_FOUND) + +if(BUILD_TESTING) + add_subdirectory(test) +endif(BUILD_TESTING) + +install( FILES cantor_part.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/cantor ) +install( FILES cantor_scripteditor.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/cantor ) diff --git a/src/Messages.sh b/src/Messages.sh new file mode 100644 index 0000000..f66e3d3 --- /dev/null +++ b/src/Messages.sh @@ -0,0 +1,6 @@ +#! /usr/bin/env bash +$EXTRACTRC `find . -name \*.rc` >> rc.cpp || exit 11 +$EXTRACTRC `find . -name \*.ui` >> rc.cpp || exit 12 +$EXTRACTRC `find . -name \*.kcfg` >> rc.cpp || exit 13 +$XGETTEXT `find . -name \*.cpp | grep -v '/test/'` -o $podir/cantor.pot +rm -f rc.cpp diff --git a/src/XmlMessages.sh b/src/XmlMessages.sh new file mode 100644 index 0000000..b3cd1fe --- /dev/null +++ b/src/XmlMessages.sh @@ -0,0 +1,22 @@ +function get_files +{ + echo cantor.xml +} + +function po_for_file +{ + case "$1" in + cantor.xml) + echo cantor_xml_mimetypes.po + ;; + esac +} + +function tags_for_file +{ + case "$1" in + cantor.xml) + echo comment + ;; + esac +} diff --git a/src/actionbar.cpp b/src/actionbar.cpp new file mode 100644 index 0000000..73d64a8 --- /dev/null +++ b/src/actionbar.cpp @@ -0,0 +1,79 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#include "actionbar.h" +#include "worksheet.h" +#include "worksheetentry.h" +#include "worksheettoolbutton.h" +#include "worksheetview.h" + +#include + +ActionBar::ActionBar(WorksheetEntry* parent) + : QGraphicsObject(parent) +{ + m_pos = 0; + m_height = 0; + QPointF p = worksheet()->worksheetView()->viewRect().topRight(); + qreal w = qMin(parent->size().width() - WorksheetEntry::RightMargin, + parent->mapFromScene(p).x()); + setPos(w, 0); + connect(worksheet()->worksheetView(), SIGNAL(viewRectChanged(QRectF)), + this, SLOT(updatePosition())); +} + +WorksheetToolButton* ActionBar::addButton(const QIcon& icon, const QString& toolTip, + QObject* receiver, const char* method ) +{ + WorksheetToolButton* button = new WorksheetToolButton(this); + button->setIcon(icon); + button->setIconScale(worksheet()->renderer()->scale()); + button->setToolTip(toolTip); + if (receiver && method) + connect(button, SIGNAL(clicked()), receiver, method); + m_pos -= button->width() + 2; + m_height = (m_height > button->height()) ? m_height : button->height(); + button->setPos(m_pos, 4); + m_buttons.append(button); + return button; +} + +void ActionBar::addSpace() +{ + m_pos -= 8; +} + +void ActionBar::updatePosition() +{ + if (!parentEntry()) + return; + QPointF p = worksheet()->worksheetView()->viewRect().topRight(); + qreal w = qMin(parentEntry()->size().width() - WorksheetEntry::RightMargin, + parentEntry()->mapFromScene(p).x()); + setPos(w, 0); + const qreal scale = worksheet()->renderer()->scale(); + foreach(WorksheetToolButton* button, m_buttons) { + button->setIconScale(scale); + } +} + +WorksheetEntry* ActionBar::parentEntry() +{ + return qobject_cast(parentObject()); +} + +QRectF ActionBar::boundingRect() const +{ + return QRectF(m_pos, 0, -m_pos, m_height); +} + +void ActionBar::paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) +{ +} + +Worksheet* ActionBar::worksheet() +{ + return qobject_cast(scene()); +} diff --git a/src/actionbar.h b/src/actionbar.h new file mode 100644 index 0000000..057121f --- /dev/null +++ b/src/actionbar.h @@ -0,0 +1,47 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#ifndef ACTIONBAR_H +#define ACTIONBAR_H + +#include + +#include + +class Worksheet; +class WorksheetEntry; +class WorksheetToolButton; + +class ActionBar : public QGraphicsObject +{ + Q_OBJECT + public: + explicit ActionBar(WorksheetEntry* parent); + ~ActionBar() override = default; + + WorksheetToolButton* addButton(const QIcon& icon, const QString& toolTip, + QObject* receiver = nullptr, + const char* method = nullptr); + void addSpace(); + + WorksheetEntry* parentEntry(); + + QRectF boundingRect() const override; + void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; + + public Q_SLOTS: + void updatePosition(); + + private: + Worksheet* worksheet(); + + private: + Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity) + QList m_buttons; + qreal m_pos; + qreal m_height; +}; + +#endif // ACTIONBAR_H diff --git a/src/animation.cpp b/src/animation.cpp new file mode 100644 index 0000000..e084f53 --- /dev/null +++ b/src/animation.cpp @@ -0,0 +1,94 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "animation.h" + +#include +#include + +Animation::Animation(QObject* parent) : QObject(parent) +{ + +} + +Animation::~Animation() +{ + if(m_movie) + m_movie->stop(); +} + +void Animation::setMovie(QMovie* movie) +{ + disconnect(nullptr, nullptr, this, SLOT(movieFrameChanged())); + m_movie=movie; + connect(movie, SIGNAL(frameChanged(int)), this, SLOT(movieFrameChanged())); +} + +QMovie* Animation::movie() +{ + return m_movie; +} + +void Animation::setPosition(const QTextCursor& cursor) +{ + m_position=cursor; +} + +QTextCursor Animation::position() +{ + return m_position; +} + +void Animation::movieFrameChanged() +{ + QTextCursor cursor = m_position; + cursor.setPosition(m_position.position()+1, QTextCursor::KeepAnchor); + + const QString& text=cursor.selectedText(); + + if (text==QString(QChar::ObjectReplacementCharacter)) { + // update a bogus property, which will trigger a paint + QTextCharFormat format2; + format2.setProperty(QTextFormat::UserFormat + 2, m_movie->currentFrameNumber()); + cursor.mergeCharFormat(format2); + } else { + // we got removed from the document + qDebug()<<"animation got removed"; + disconnect(m_movie.data(), &QMovie::frameChanged, this, &Animation::movieFrameChanged); + } +} + + + +AnimationHelperItem::AnimationHelperItem( ) : m_animation(new Animation()) +{ +} + +AnimationHelperItem::AnimationHelperItem(const AnimationHelperItem& other) +{ + m_animation=other.m_animation; +} + +void AnimationHelperItem::setPosition(const QTextCursor& cursor) +{ + m_animation->setPosition(cursor); +} + +QTextCursor AnimationHelperItem::position() const +{ + return m_animation->position(); +} + +void AnimationHelperItem::setMovie(QMovie* movie) +{ + m_animation->setMovie(movie); +} + +QMovie* AnimationHelperItem::movie() const +{ + return m_animation->movie(); +} + + diff --git a/src/animation.h b/src/animation.h new file mode 100644 index 0000000..1d1bd70 --- /dev/null +++ b/src/animation.h @@ -0,0 +1,60 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _ANIMATION_H +#define _ANIMATION_H + +#include +#include +#include +#include + +class QMovie; + +//Represents an animation placed in a QTextDocument +class Animation : public QObject +{ + Q_OBJECT + public: + explicit Animation( QObject* parent=nullptr); + ~Animation() override; + + void setMovie(QMovie* movie); + QMovie* movie(); + + void setPosition(const QTextCursor& cursor); + QTextCursor position(); + + public Q_SLOTS: + void movieFrameChanged(); + + private: + QPointer m_movie; + QTextCursor m_position; +}; + + +//Helper Object used for storing Animations in the TextCharFormat +class AnimationHelperItem +{ + public: + AnimationHelperItem( ); + AnimationHelperItem( const AnimationHelperItem& other); + ~AnimationHelperItem() = default; + + QTextCursor position() const; + void setPosition(const QTextCursor& cursor); + + void setMovie(QMovie* movie); + QMovie* movie() const; + + private: + QSharedPointer m_animation; +}; + + +Q_DECLARE_METATYPE(AnimationHelperItem) + +#endif /* _ANIMATION_H */ diff --git a/src/animationresultitem.cpp b/src/animationresultitem.cpp new file mode 100644 index 0000000..13fe15d --- /dev/null +++ b/src/animationresultitem.cpp @@ -0,0 +1,135 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#include "animationresultitem.h" +#include "commandentry.h" +#include "worksheetview.h" +#include "lib/result.h" +#include "lib/animationresult.h" + +#include +#include + +#include + +AnimationResultItem::AnimationResultItem(QGraphicsObject* parent, Cantor::Result* result) + : WorksheetImageItem(parent), ResultItem(result) +{ + update(); +} + +double AnimationResultItem::setGeometry(double x, double y, double w) +{ + Q_UNUSED(w); + setPos(x,y); + + return m_height; +} + +void AnimationResultItem::populateMenu(QMenu* menu, QPointF pos) +{ + ResultItem::addCommonActions(this, menu); + + menu->addSeparator(); + if (m_movie) { + if (m_movie->state() == QMovie::Running) + menu->addAction(QIcon::fromTheme(QLatin1String("media-playback-pause")), i18n("Pause"), + this, SLOT(pauseMovie())); + else + menu->addAction(QIcon::fromTheme(QLatin1String("media-playback-start")), i18n("Start"), + m_movie, SLOT(start())); + if (m_movie->state() == QMovie::Running || + m_movie->state() == QMovie::Paused) + menu->addAction(QIcon::fromTheme(QLatin1String("media-playback-stop")), i18n("Stop"), + this, SLOT(stopMovie())); + } + + emit menuCreated(menu, mapToParent(pos)); +} + +void AnimationResultItem::update() +{ + Q_ASSERT(m_result->type() == Cantor::AnimationResult::Type); + QMovie* mov; + switch(m_result->type()) { + case Cantor::AnimationResult::Type: + mov = static_cast(m_result->data().value()); + setMovie(mov); + break; + default: + break; + } +} + +QRectF AnimationResultItem::boundingRect() const +{ + return QRectF(0, 0, width(), height()); +} + +double AnimationResultItem::width() const +{ + return WorksheetImageItem::width(); +} + +double AnimationResultItem::height() const +{ + return WorksheetImageItem::height(); +} + + +void AnimationResultItem::setMovie(QMovie* movie) +{ + if (m_movie) { + m_movie->disconnect(this, SLOT(updateFrame())); + m_movie->disconnect(this, SLOT(updateSize())); + } + m_movie = movie; + m_height = 0; + if (m_movie) { + connect(m_movie, &QMovie::frameChanged, this, &AnimationResultItem::updateFrame); + connect(m_movie, &QMovie::resized, this, &AnimationResultItem::updateSize); + m_movie->start(); + } +} + +void AnimationResultItem::updateFrame() +{ + setImage(m_movie->currentImage()); + worksheet()->update(mapRectToScene(boundingRect())); +} + +void AnimationResultItem::updateSize(QSize size) +{ + if (m_height != size.height()) { + m_height = size.height(); + emit sizeChanged(); + } +} + +void AnimationResultItem::saveResult() +{ + const QString& filename = QFileDialog::getSaveFileName(worksheet()->worksheetView(), i18n("Save animation result"), QString(), i18n("Animations (*.gif)")); + result()->save(filename); +} + +void AnimationResultItem::stopMovie() +{ + if (m_movie) { + m_movie->stop(); + m_movie->jumpToFrame(0); + worksheet()->update(mapRectToScene(boundingRect())); + } +} + +void AnimationResultItem::pauseMovie() +{ + if (m_movie) + m_movie->setPaused(true); +} + +void AnimationResultItem::deleteLater() +{ + WorksheetImageItem::deleteLater(); +} diff --git a/src/animationresultitem.h b/src/animationresultitem.h new file mode 100644 index 0000000..a9c1f49 --- /dev/null +++ b/src/animationresultitem.h @@ -0,0 +1,55 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#ifndef ANIMATIONRESULTITEM_H +#define ANIMATIONRESULTITEM_H + +#include "resultitem.h" +#include "worksheetimageitem.h" + +class QMovie; + +class CommandEntry; +class WorksheetEntry; + +class AnimationResultItem : public WorksheetImageItem, public ResultItem +{ + Q_OBJECT + + public: + explicit AnimationResultItem(QGraphicsObject*, Cantor::Result*); + ~AnimationResultItem() override = default; + + using WorksheetImageItem::setGeometry; + double setGeometry(double x, double y, double w) override; + void populateMenu(QMenu*, QPointF) override; + + void update() override; + + void deleteLater() override; + + QRectF boundingRect() const override; + double width() const override; + double height() const override; + + protected Q_SLOTS: + void saveResult(); + void stopMovie(); + void pauseMovie(); + + private: + void setMovie(QMovie*); + + private Q_SLOTS: + void updateFrame(); + void updateSize(QSize); + + private: + double m_height{0.}; + QMovie* m_movie{nullptr}; +}; + +#endif //ANIMATIONRESULTITEM_H + diff --git a/src/assistants/CMakeLists.txt b/src/assistants/CMakeLists.txt new file mode 100644 index 0000000..faa02e5 --- /dev/null +++ b/src/assistants/CMakeLists.txt @@ -0,0 +1,21 @@ +function(add_assistant name) + + kcoreaddons_add_plugin("cantor_${name}" + SOURCES ${ARGN} + INSTALL_NAMESPACE "cantor/assistants") + + target_link_libraries("cantor_${name}" + cantorlibs) + +endfunction() + + +add_subdirectory(solve) +add_subdirectory(integrate) +add_subdirectory(differentiate) +add_subdirectory(linearalgebra) +add_subdirectory(runscript) +add_subdirectory(plot2d) +add_subdirectory(plot3d) +add_subdirectory(advancedplot) +add_subdirectory(importpackage) diff --git a/src/assistants/advancedplot/CMakeLists.txt b/src/assistants/advancedplot/CMakeLists.txt new file mode 100644 index 0000000..fbd9dc9 --- /dev/null +++ b/src/assistants/advancedplot/CMakeLists.txt @@ -0,0 +1,9 @@ +set( AdvancedPlotAssistant_SRCS + advancedplotassistant.cpp +) + +ki18n_wrap_ui(AdvancedPlotAssistant_SRCS advancedplotdialog.ui directivecontainer.ui) + +add_assistant(advancedplotassistant ${AdvancedPlotAssistant_SRCS}) + +install(FILES cantor_advancedplot_assistant.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/cantor) diff --git a/src/assistants/advancedplot/advancedplotassistant.cpp b/src/assistants/advancedplot/advancedplotassistant.cpp new file mode 100644 index 0000000..b9eeb56 --- /dev/null +++ b/src/assistants/advancedplot/advancedplotassistant.cpp @@ -0,0 +1,100 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "advancedplotassistant.h" + +#include +#include +#include +#include +#include + +#include +#include +#include "ui_advancedplotdialog.h" +#include "ui_directivecontainer.h" +#include "cantor_macros.h" +#include "backend.h" +#include "extension.h" + +AdvancedPlotAssistant::AdvancedPlotAssistant(QObject* parent, QList args) : Assistant(parent) +{ + Q_UNUSED(args) +} + +void AdvancedPlotAssistant::initActions() +{ + setXMLFile(QLatin1String("cantor_advancedplot_assistant.rc")); + QAction* advplot=new QAction(i18n("Advanced Plotting"), actionCollection()); + actionCollection()->addAction(QLatin1String("advancedplot_assistant"), advplot); + connect(advplot, &QAction::triggered, this, &AdvancedPlotAssistant::requested); +} + +QStringList AdvancedPlotAssistant::run(QWidget* parent) +{ + QPointer dlg=new QDialog(parent); + QWidget *widget=new QWidget(dlg); + Ui::AdvancedPlotAssistantBase base; + base.setupUi(widget); + QVBoxLayout *mainLayout = new QVBoxLayout; + dlg->setLayout(mainLayout); + mainLayout->addWidget(widget); + + base.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + base.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + connect(base.buttonBox, SIGNAL(accepted()), dlg, SLOT(accept())); + connect(base.buttonBox, SIGNAL(rejected()), dlg, SLOT(reject())); + + //Casting the extension to correct type and checking it + Cantor::AdvancedPlotExtension * plotter=dynamic_cast + (backend()->extension(QLatin1String("AdvancedPlotExtension"))); + if (plotter==nullptr) + { + qDebug()<<"Advanced plotting extension is messed up, that's a bug."; + delete dlg; + return QStringList(); + } + + //Filling up the form accordingly + Cantor::AdvancedPlotExtension::AcceptorBase *acceptor=dynamic_cast(plotter); + QVector controls; + if (acceptor!=nullptr) + { + foreach (const Cantor::AdvancedPlotExtension::AcceptorBase::widgetProc& wProc, acceptor->widgets()) + { + QGroupBox *container=new QGroupBox(nullptr); + Cantor::AdvancedPlotExtension::DirectiveProducer *cargo=wProc(nullptr); + Ui::directiveContainer uicont; + uicont.setupUi(container); + QVBoxLayout *layout=new QVBoxLayout; + layout->addWidget(cargo); + container->setLayout(layout); + base.directivesTabs->addTab(container,cargo->windowTitle()); + controls.push_back(cargo); + } + } + + QStringList result; + if( dlg->exec()) + { + QVector list; + //FIXME lots of dynamic casts :( + for (int i=0;icount();i++) + { + QGroupBox *group=dynamic_cast(base.directivesTabs->widget(i)); + if (group!=nullptr) + if (group->isChecked()) + list.push_back(controls[i]->produceDirective()); + } + result<plotFunction2d(base.expressionEdit->text(),list); + qDeleteAll(list); + } + + delete dlg; + return result; +} + +K_PLUGIN_FACTORY_WITH_JSON(advancedplotassistant, "advancedplotassistant.json", registerPlugin();) +#include "advancedplotassistant.moc" diff --git a/src/assistants/advancedplot/advancedplotassistant.h b/src/assistants/advancedplot/advancedplotassistant.h new file mode 100644 index 0000000..1e55206 --- /dev/null +++ b/src/assistants/advancedplot/advancedplotassistant.h @@ -0,0 +1,28 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2009 Oleksiy Protas +*/ + +#ifndef _ADVANCED_PLOTASSISTANT_H +#define _ADVANCED_PLOTASSISTANT_H + +#include "assistant.h" + +// WARNING: this assistant serves as a stub to implement the rich plotting features of R. +// therefore, when finished it is to be backported and merged with plot2d + +class AdvancedPlotAssistant : public Cantor::Assistant +{ + Q_OBJECT + public: + AdvancedPlotAssistant( QObject* parent, QList args ); + ~AdvancedPlotAssistant() override = default; + + void initActions() override; + + QStringList run(QWidget* parentt) override; + +}; + +#endif /* _RPLOTASSISTANT_H */ diff --git a/src/assistants/advancedplot/advancedplotassistant.json b/src/assistants/advancedplot/advancedplotassistant.json new file mode 100644 index 0000000..f65a938 --- /dev/null +++ b/src/assistants/advancedplot/advancedplotassistant.json @@ -0,0 +1,37 @@ +{ + "KPlugin": { + "Id": "AdvancedPlot", + "License": "GPL", + "Name": "AdvancedPlot", + "Name[ca@valencia]": "GràficAvançat", + "Name[ca]": "GràficAvançat", + "Name[cs]": "Pokročilý graf", + "Name[de]": "Erweitertes Plotten", + "Name[el]": "Προηγμένη απεικόνιση", + "Name[en_GB]": "AdvancedPlot", + "Name[es]": "Gráficos avanzados", + "Name[et]": "Täiustatud joonis", + "Name[fi]": "AdvancedPlot", + "Name[fr]": "Graphe avancé", + "Name[gl]": "AdvancedPlot", + "Name[ia]": "AdvancedPlot(Traciar Avantiate)", + "Name[it]": "Grafico avanzato", + "Name[ka]": "ხაზვა", + "Name[ko]": "고급 플롯", + "Name[nl]": "AdvancedPlot", + "Name[nn]": "AvansertPlott", + "Name[pl]": "Rozbudowane wykresy", + "Name[pt]": "Gráfico Avançado", + "Name[pt_BR]": "Gráfico avançado", + "Name[ru]": "Настраиваемый график", + "Name[sk]": "AdvancedPlot", + "Name[sl]": "Napredni Graf", + "Name[sv]": "Avancerat diagram", + "Name[tr]": "GelişmişGrafik", + "Name[uk]": "Складне креслення", + "Name[x-test]": "xxAdvancedPlotxx", + "Name[zh_CN]": "高级绘图", + "Name[zh_TW]": "進階繪製" + }, + "RequiredExtensions": "AdvancedPlotExtension" +} diff --git a/src/assistants/advancedplot/advancedplotdialog.ui b/src/assistants/advancedplot/advancedplotdialog.ui new file mode 100644 index 0000000..d618093 --- /dev/null +++ b/src/assistants/advancedplot/advancedplotdialog.ui @@ -0,0 +1,63 @@ + + + AdvancedPlotAssistantBase + + + + 0 + 0 + 537 + 215 + + + + + + + + 10 + 75 + true + + + + Plot + + + + + + + + + Expression: + + + + + + + + + + + + Additional options: + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + diff --git a/src/assistants/advancedplot/cantor_advancedplot_assistant.rc b/src/assistants/advancedplot/cantor_advancedplot_assistant.rc new file mode 100644 index 0000000..8601f1d --- /dev/null +++ b/src/assistants/advancedplot/cantor_advancedplot_assistant.rc @@ -0,0 +1,8 @@ + + + + &Plot + + + + diff --git a/src/assistants/advancedplot/directivecontainer.ui b/src/assistants/advancedplot/directivecontainer.ui new file mode 100644 index 0000000..2e8c5cd --- /dev/null +++ b/src/assistants/advancedplot/directivecontainer.ui @@ -0,0 +1,22 @@ + + + directiveContainer + + + + 0 + 0 + 400 + 300 + + + + Option active + + + true + + + + + diff --git a/src/assistants/differentiate/CMakeLists.txt b/src/assistants/differentiate/CMakeLists.txt new file mode 100644 index 0000000..f209f6e --- /dev/null +++ b/src/assistants/differentiate/CMakeLists.txt @@ -0,0 +1,9 @@ +set( DifferentiateAssistant_SRCS + differentiateassistant.cpp +) + +ki18n_wrap_ui(DifferentiateAssistant_SRCS differentiatedlg.ui) + +add_assistant(differentiateassistant ${DifferentiateAssistant_SRCS}) + +install( FILES cantor_differentiate_assistant.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/cantor ) diff --git a/src/assistants/differentiate/cantor_differentiate_assistant.rc b/src/assistants/differentiate/cantor_differentiate_assistant.rc new file mode 100644 index 0000000..d930a43 --- /dev/null +++ b/src/assistants/differentiate/cantor_differentiate_assistant.rc @@ -0,0 +1,8 @@ + + + + &Calculate + + + + diff --git a/src/assistants/differentiate/differentiateassistant.cpp b/src/assistants/differentiate/differentiateassistant.cpp new file mode 100644 index 0000000..aca5cdd --- /dev/null +++ b/src/assistants/differentiate/differentiateassistant.cpp @@ -0,0 +1,68 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "differentiateassistant.h" + +#include +#include +#include +#include +#include + +#include +#include +#include "ui_differentiatedlg.h" +#include "cantor_macros.h" +#include "backend.h" +#include "extension.h" + +DifferentiateAssistant::DifferentiateAssistant(QObject* parent, QList args) : Assistant(parent) +{ + Q_UNUSED(args) +} + +void DifferentiateAssistant::initActions() +{ + setXMLFile(QLatin1String("cantor_differentiate_assistant.rc")); + QAction* differentiate=new QAction(i18n("Differentiate"), actionCollection()); + differentiate->setIcon(QIcon::fromTheme(icon())); + actionCollection()->addAction(QLatin1String("differentiate_assistant"), differentiate); + connect(differentiate, &QAction::triggered, this, &DifferentiateAssistant::requested); +} + +QStringList DifferentiateAssistant::run(QWidget* parent) +{ + QPointer dlg=new QDialog(parent); + QWidget* widget=new QWidget(dlg); + Ui::DifferentiateAssistantBase base; + base.setupUi(widget); + QVBoxLayout *mainLayout = new QVBoxLayout; + dlg->setLayout(mainLayout); + mainLayout->addWidget(widget); + + base.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + base.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + connect(base.buttonBox, SIGNAL(accepted()), dlg, SLOT(accept())); + connect(base.buttonBox, SIGNAL(rejected()), dlg, SLOT(reject())); + + QStringList result; + if( dlg->exec()) + { + QString expression=base.expression->text(); + QString variable=base.variable->text(); + int times=base.times->value(); + + Cantor::CalculusExtension* ext= + dynamic_cast(backend()->extension(QLatin1String("CalculusExtension"))); + + result<differentiate(expression, variable, times); + } + + delete dlg; + return result; +} + +K_PLUGIN_FACTORY_WITH_JSON(differentiateassistant, "differentiateassistant.json", registerPlugin();) +#include "differentiateassistant.moc" diff --git a/src/assistants/differentiate/differentiateassistant.h b/src/assistants/differentiate/differentiateassistant.h new file mode 100644 index 0000000..ee8bea1 --- /dev/null +++ b/src/assistants/differentiate/differentiateassistant.h @@ -0,0 +1,23 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _DIFFERENTIATEASSISTANT_H +#define _DIFFERENTIATEASSISTANT_H + +#include "assistant.h" + +class DifferentiateAssistant : public Cantor::Assistant +{ + public: + DifferentiateAssistant( QObject* parent, QList args ); + ~DifferentiateAssistant() override = default; + + void initActions() override; + + QStringList run(QWidget* parentt) override; + +}; + +#endif /* _DIFFERENTIATEASSISTANT_H */ diff --git a/src/assistants/differentiate/differentiateassistant.json b/src/assistants/differentiate/differentiateassistant.json new file mode 100644 index 0000000..2d5988b --- /dev/null +++ b/src/assistants/differentiate/differentiateassistant.json @@ -0,0 +1,69 @@ +{ + "KPlugin": { + "Description": "An Assistant dialog to simplify calculating derivatives of expressions", + "Description[ca@valencia]": "Un diàleg assistent per a simplificar els càlculs de derivades d'expressions", + "Description[ca]": "Un diàleg assistent per a simplificar els càlculs de derivades d'expressions", + "Description[cs]": "Pomocný dialog pro zjednodušení derivace výrazů", + "Description[de]": "Ein Assistent, um die Berechnung von Ableitungen von Ausdrücken zu vereinfachen", + "Description[el]": "Βοηθητικός διάλογος για απλούστευση του υπολογισμού παραγώγων εκφράσεων", + "Description[en_GB]": "An Assistant dialogue to simplify calculating derivatives of expressions", + "Description[es]": "Un diálogo de asistente para simplificar el cálculo de derivadas de expresiones", + "Description[et]": "Avaldiste tuletiste arvutamist lihtsustav abiline", + "Description[fi]": "Apuikkuna helpottamaan lausekkeiden derivaattojen laskemista", + "Description[fr]": "Une boîte de dialogue d'assistant simplifiant le calcul de dérivées d'expressions", + "Description[gl]": "Un diálogo auxiliar para simplificar o cálculo das derivadas de expresións", + "Description[ia]": "Un dialogo Assistente per simplificar calcular derivates de expressiones", + "Description[it]": "Un assistente che semplifica il calcolo delle derivate di espressioni", + "Description[ka]": "დამხმარე ფანჯარა გამოსახულებების გამოთვლისა გასამარტივებლად", + "Description[ko]": "수식의 미분을 간단하게 계산할 수 있도록 해 주는 도우미 대화 상자", + "Description[nl]": "Een assistentdialoog voor het vereenvoudigen van het berekenen van afgeleiden van expressies", + "Description[nn]": "Eit hjelpevindauge for utrekning av den deriverte av uttrykk", + "Description[pl]": "Pomocnik upraszczający obliczanie pochodnych wyrażeń", + "Description[pt]": "Uma janela assistente para simplificar o cálculo de derivadas das expressões", + "Description[pt_BR]": "Um assistente para simplificar o cálculo de derivadas das expressões", + "Description[ru]": "Диалоговое окно, упрощающее вычисление производных", + "Description[sk]": "Asistenčný dialóg na uľahčenie výpočtu derivácií alebo výrazov", + "Description[sl]": "Pomočnik, ki poenostavi izračunavanje odvodov izrazov", + "Description[sv]": "En dialogruta med en guide för att förenkla beräkning av derivator för uttryck", + "Description[tr]": "İfadelerin türevlerini hesaplamayı kolaylaştırmak için kullanılan yardımcı penceresi", + "Description[uk]": "Діалогове вікно помічника у обчисленні похідних від виразів", + "Description[x-test]": "xxAn Assistant dialog to simplify calculating derivatives of expressionsxx", + "Description[zh_CN]": "用于简化微分表达式计算的助手对话框", + "Description[zh_TW]": "簡化多項式導數計算的小助手對話框", + "Icon": "office-chart-area", + "Id": "Differentiate", + "License": "GPL", + "Name": "Differentiate", + "Name[ca@valencia]": "Deriva", + "Name[ca]": "Deriva", + "Name[cs]": "Derivovat", + "Name[da]": "Differentiér", + "Name[de]": "Differenzieren", + "Name[el]": "Διαφόρισε", + "Name[en_GB]": "Differentiate", + "Name[es]": "Diferenciar", + "Name[et]": "Diferentsiaalarvutus", + "Name[fi]": "Derivoi", + "Name[fr]": "Différencier", + "Name[gl]": "Diferenciar", + "Name[ia]": "Differentiar", + "Name[it]": "Funzione differenziabile", + "Name[ka]": "განსხვავება", + "Name[ko]": "미분", + "Name[nl]": "Differentiëren", + "Name[nn]": "Deriver", + "Name[pl]": "Różniczkowanie", + "Name[pt]": "Derivação", + "Name[pt_BR]": "Derivada", + "Name[ru]": "Дифференцирование", + "Name[sk]": "Diferencovať", + "Name[sl]": "Odvajaj", + "Name[sv]": "Derivera", + "Name[tr]": "Farklılaştır", + "Name[uk]": "Продиференціювати", + "Name[x-test]": "xxDifferentiatexx", + "Name[zh_CN]": "微分", + "Name[zh_TW]": "微分" + }, + "RequiredExtensions": "CalculusExtension" +} diff --git a/src/assistants/differentiate/differentiatedlg.ui b/src/assistants/differentiate/differentiatedlg.ui new file mode 100644 index 0000000..6b313a0 --- /dev/null +++ b/src/assistants/differentiate/differentiatedlg.ui @@ -0,0 +1,78 @@ + + + DifferentiateAssistantBase + + + + 0 + 0 + 400 + 300 + + + + + + + + + Expression: + + + + + + + + + + Variable: + + + + + + + x + + + + + + + + + + + Times: + + + + + + + 1 + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + KLineEdit + QLineEdit +
      klineedit.h
      +
      +
      + + +
      diff --git a/src/assistants/importpackage/CMakeLists.txt b/src/assistants/importpackage/CMakeLists.txt new file mode 100644 index 0000000..d0a9b23 --- /dev/null +++ b/src/assistants/importpackage/CMakeLists.txt @@ -0,0 +1,9 @@ +set( ImportPackageAssistant_SRCS + importpackageassistant.cpp +) + +ki18n_wrap_ui(ImportPackageAssistant_SRCS importpackagedlg.ui) + +add_assistant(importpackageassistant ${ImportPackageAssistant_SRCS}) + +install(FILES cantor_import_package_assistant.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/cantor) diff --git a/src/assistants/importpackage/cantor_import_package_assistant.rc b/src/assistants/importpackage/cantor_import_package_assistant.rc new file mode 100644 index 0000000..5fbea25 --- /dev/null +++ b/src/assistants/importpackage/cantor_import_package_assistant.rc @@ -0,0 +1,8 @@ + + + + &Package + + + + diff --git a/src/assistants/importpackage/importpackageassistant.cpp b/src/assistants/importpackage/importpackageassistant.cpp new file mode 100644 index 0000000..96dccef --- /dev/null +++ b/src/assistants/importpackage/importpackageassistant.cpp @@ -0,0 +1,67 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2013 Filipe Saraiva +*/ + +#include "importpackageassistant.h" + +#include +#include +#include +#include + +#include +#include +#include "cantor_macros.h" +#include "backend.h" +#include "extension.h" +#include "ui_importpackagedlg.h" + +ImportPackageAssistant::ImportPackageAssistant(QObject* parent, QList args) : Assistant(parent) +{ + Q_UNUSED(args) +} + +void ImportPackageAssistant::initActions() +{ + setXMLFile(QLatin1String("cantor_import_package_assistant.rc")); + + QAction* importpackage = new QAction(i18n("Import Package"), actionCollection()); + actionCollection()->addAction(QLatin1String("importpackage_assistant"), importpackage); + connect(importpackage, &QAction::triggered, this, &ImportPackageAssistant::requested); +} + +QStringList ImportPackageAssistant::run(QWidget* parent) +{ + QPointer dlg=new QDialog(parent); + + QWidget* widget=new QWidget(dlg); + + Ui::ImportPackageAssistantBase base; + base.setupUi(widget); + + base.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + base.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + connect(base.buttonBox, SIGNAL(accepted()), dlg, SLOT(accept())); + connect(base.buttonBox, SIGNAL(rejected()), dlg, SLOT(reject())); + + QVBoxLayout *mainLayout = new QVBoxLayout; + dlg->setLayout(mainLayout); + mainLayout->addWidget(widget); + + QStringList result; + if( dlg->exec()) + { + const QString& m = base.package->text(); + + Cantor::PackagingExtension* ext = + dynamic_cast(backend()->extension(QLatin1String("PackagingExtension"))); + result << ext->importPackage(m); + } + + delete dlg; + return result; +} + +K_PLUGIN_FACTORY_WITH_JSON(importpackageassistant, "importpackageassistant.json", registerPlugin();) +#include "importpackageassistant.moc" diff --git a/src/assistants/importpackage/importpackageassistant.h b/src/assistants/importpackage/importpackageassistant.h new file mode 100644 index 0000000..bf673e5 --- /dev/null +++ b/src/assistants/importpackage/importpackageassistant.h @@ -0,0 +1,23 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2013 Filipe Saraiva +*/ + +#ifndef _IMPORTPACKAGEASSISTANT_H +#define _IMPORTPACKAGEASSISTANT_H + +#include "assistant.h" + +class ImportPackageAssistant : public Cantor::Assistant +{ + public: + ImportPackageAssistant( QObject* parent, QList args ); + ~ImportPackageAssistant() override = default; + + void initActions() override; + + QStringList run(QWidget* parentt) override; + +}; + +#endif /* _IMPORTPACKAGEASSISTANT_H */ diff --git a/src/assistants/importpackage/importpackageassistant.json b/src/assistants/importpackage/importpackageassistant.json new file mode 100644 index 0000000..f9dc055 --- /dev/null +++ b/src/assistants/importpackage/importpackageassistant.json @@ -0,0 +1,66 @@ +{ + "KPlugin": { + "Description": "An Assistant dialog to import a specific package (or library or module) to Cantor workspace", + "Description[ca@valencia]": "Un diàleg d'assistència per a importar un paquet específic (o biblioteca o mòdul) a l'espai de treball de Cantor", + "Description[ca]": "Un diàleg d'assistència per a importar un paquet específic (o biblioteca o mòdul) a l'espai de treball del Cantor", + "Description[de]": "Ein Assistent, um ein angegebenes Paket, Bibliothek oder Modul in den Arbeitsbereich von Cantor zu importieren", + "Description[el]": "Βοηθητικός διάλογος για την εισαγωγή πακέτου (ή βιβλιοθήκης ή αρθρώματος) στο χώρο εργασίας Cantor", + "Description[en_GB]": "An Assistant dialogue to import a specific package (or library or module) to Cantor workspace", + "Description[es]": "Un diálogo de asistente para importar un paquete específico (también una biblioteca o un módulo) en el espacio de trabajo de Cantor", + "Description[et]": "Nõuandja konkreetse paketi (või teegi või mooduli) importimiseks Cantorisse.", + "Description[fi]": "Apuikkuna paketin (tai kirjaston tai mobuulin) tuomiseen Cantor-työtilaan", + "Description[fr]": "Boîte de dialogue de l'assistant pour importer un paquet spécifique (ou une bibliothèque ou un module) dans l'espace de travail Cantor", + "Description[gl]": "Un asistente para importar un paquete específico (ou unha biblioteca ou un módulo) no espazo de traballo de Cantor.", + "Description[ia]": "Un dialogo assistente per importar un pacchetto specific (o bibliotheca o modulo) in le spatio de labor de Cantor", + "Description[it]": "Un assistente che importa un pacchetto specifico (oppure una libreria o un modulo) nel foglio di lavoro di Cantor", + "Description[ka]": "დამხმარე ფანჯარა მითითებული პაკეტის (ან ბიბლიოთეკის ან მოდულის) Cantor-ის სამუშაო სივრცეში შემოსატანად", + "Description[ko]": "Cantor 작업 공간으로 패키지(또는 라이브러리나 모듈)를 가져올 수 있도록 해 주는 도우미 대화 상자", + "Description[nl]": "Een assistentdialoog voor het importeren van een pakket (of bibliotheek (library) of module) in Cantor", + "Description[nn]": "Eit hjelpevindauge for importering av pakkar (eller bibliotek eller modular) til Cantor-arbeidsområdet", + "Description[pl]": "Pomocnik do importowania danych pakietów (lub bibliotek, lub modułów) do przestrzeni pracy Cantora", + "Description[pt]": "Um janela assistente que lhe permite importar um pacote (biblioteca ou módulo) específico para a área de trabalho do Cantor", + "Description[pt_BR]": "Um assistente para importar um pacote específico (biblioteca ou módulo) para o espaço de trabalho do Cantor", + "Description[ru]": "Диалоговое окно импорта определённого пакета (либо библиотеки или модуля) для использования в документе", + "Description[sk]": "Dialóg asistenta na import špecifického balíka (alebo knižnice alebo modulu) do pracovnej plochy Cantor", + "Description[sl]": "Pogovorno okno pomočnika za uvoz določenega paketa (ali knjižnice ali modula) v delovni prostor Cantor-ja", + "Description[sv]": "En dialogruta med en guide för att importera ett specifikt paket (eller bibliotek eller modul) till en Cantor arbetsrymd", + "Description[tr]": "Cantor çalışma alanına özel bir paket (veya kitaplık/modül) içe aktarmak için bir yardımcı penceresi", + "Description[uk]": "Допоміжне діалогове вікно для імпортування певного пакунка (бібліотеки або модуля) до робочого простору Cantor", + "Description[x-test]": "xxAn Assistant dialog to import a specific package (or library or module) to Cantor workspacexx", + "Description[zh_CN]": "用于导入指定包 (或者库和模块) 到 Cantor 工作空间的助手对话框", + "Description[zh_TW]": "匯入特定套件(或是函式庫與模組)到 Cantor 工作空間的小助手對話框", + "Id": "Import package", + "License": "GPL", + "Name": "Import Package", + "Name[ca@valencia]": "Importació de paquet", + "Name[ca]": "Importació de paquet", + "Name[cs]": "Importovat balíček", + "Name[de]": "Paket importieren", + "Name[el]": "Εισαγωγή πακέτου", + "Name[en_GB]": "Import Package", + "Name[es]": "Importar paquete", + "Name[et]": "Paketi import", + "Name[fi]": "Tuo paketti", + "Name[fr]": "Importer un paquet", + "Name[gl]": "Importar un paquete", + "Name[ia]": "Importa paccetto", + "Name[it]": "Importa pacchetto", + "Name[ka]": "პაკეტის შემოტანა", + "Name[ko]": "패키지 가져오기", + "Name[nl]": "Pakket importeren", + "Name[nn]": "Importer pakke", + "Name[pl]": "Importowanie pakietów", + "Name[pt]": "Importação de Pacotes", + "Name[pt_BR]": "Importar pacote", + "Name[ru]": "Импорт пакета", + "Name[sk]": "Importovať balík", + "Name[sl]": "Uvozi paket", + "Name[sv]": "Importera paket", + "Name[tr]": "Paketi İçe Aktar", + "Name[uk]": "Імпортування пакунка", + "Name[x-test]": "xxImport Packagexx", + "Name[zh_CN]": "导入包", + "Name[zh_TW]": "匯入套件" + }, + "RequiredExtensions": "PackagingExtension" +} diff --git a/src/assistants/importpackage/importpackagedlg.ui b/src/assistants/importpackage/importpackagedlg.ui new file mode 100644 index 0000000..96a1478 --- /dev/null +++ b/src/assistants/importpackage/importpackagedlg.ui @@ -0,0 +1,42 @@ + + + ImportPackageAssistantBase + + + + 0 + 0 + 303 + 102 + + + + + + + Package: + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + KLineEdit + QLineEdit +
      klineedit.h
      +
      +
      + + +
      diff --git a/src/assistants/integrate/CMakeLists.txt b/src/assistants/integrate/CMakeLists.txt new file mode 100644 index 0000000..d6d3a1f --- /dev/null +++ b/src/assistants/integrate/CMakeLists.txt @@ -0,0 +1,9 @@ +set( IntegrateAssistant_SRCS + integrateassistant.cpp +) + +ki18n_wrap_ui(IntegrateAssistant_SRCS integratedlg.ui) + +add_assistant(integrateassistant ${IntegrateAssistant_SRCS}) + +install( FILES cantor_integrate_assistant.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/cantor ) diff --git a/src/assistants/integrate/cantor_integrate_assistant.rc b/src/assistants/integrate/cantor_integrate_assistant.rc new file mode 100644 index 0000000..30c775b --- /dev/null +++ b/src/assistants/integrate/cantor_integrate_assistant.rc @@ -0,0 +1,8 @@ + + + + &Calculate + + + + diff --git a/src/assistants/integrate/integrateassistant.cpp b/src/assistants/integrate/integrateassistant.cpp new file mode 100644 index 0000000..4aab383 --- /dev/null +++ b/src/assistants/integrate/integrateassistant.cpp @@ -0,0 +1,75 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "integrateassistant.h" + +#include +#include +#include +#include +#include + +#include +#include +#include "ui_integratedlg.h" +#include "cantor_macros.h" +#include "backend.h" +#include "extension.h" + +IntegrateAssistant::IntegrateAssistant(QObject* parent, QList args) : Assistant(parent) +{ + Q_UNUSED(args) +} + +void IntegrateAssistant::initActions() +{ + setXMLFile(QLatin1String("cantor_integrate_assistant.rc")); + QAction* integrate=new QAction(i18n("Integrate"), actionCollection()); + integrate->setIcon(QIcon::fromTheme(icon())); + actionCollection()->addAction(QLatin1String("integrate_assistant"), integrate); + connect(integrate, &QAction::triggered, this, &IntegrateAssistant::requested); +} + +QStringList IntegrateAssistant::run(QWidget* parent) +{ + QPointer dlg=new QDialog(parent); + QWidget* widget=new QWidget(dlg); + Ui::IntegrateAssistantBase base; + base.setupUi(widget); + QVBoxLayout *mainLayout = new QVBoxLayout; + dlg->setLayout(mainLayout); + mainLayout->addWidget(widget); + + base.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + base.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + connect(base.buttonBox, SIGNAL(accepted()), dlg, SLOT(accept())); + connect(base.buttonBox, SIGNAL(rejected()), dlg, SLOT(reject())); + + QStringList result; + if( dlg->exec()) + { + QString expression=base.expression->text(); + QString variable=base.variable->text(); + + Cantor::CalculusExtension* ext= + dynamic_cast(backend()->extension(QLatin1String("CalculusExtension"))); + if (base.isDefinite->isChecked()) + { + QString lower=base.lowerLimit->text(); + QString upper=base.upperLimit->text(); + + result<integrate(expression, variable, lower, upper); + }else + { + result<integrate(expression, variable); + } + } + + delete dlg; + return result; +} + +K_PLUGIN_FACTORY_WITH_JSON(integrateassistant, "integrateassistant.json", registerPlugin();) +#include "integrateassistant.moc" diff --git a/src/assistants/integrate/integrateassistant.h b/src/assistants/integrate/integrateassistant.h new file mode 100644 index 0000000..93cd141 --- /dev/null +++ b/src/assistants/integrate/integrateassistant.h @@ -0,0 +1,23 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _INTEGRATEASSISTANT_H +#define _INTEGRATEASSISTANT_H + +#include "assistant.h" + +class IntegrateAssistant : public Cantor::Assistant +{ + public: + IntegrateAssistant( QObject* parent, QList args ); + ~IntegrateAssistant() override = default; + + void initActions() override; + + QStringList run(QWidget* parentt) override; + +}; + +#endif /* _INTEGRATEASSISTANT_H */ diff --git a/src/assistants/integrate/integrateassistant.json b/src/assistants/integrate/integrateassistant.json new file mode 100644 index 0000000..51a0e2c --- /dev/null +++ b/src/assistants/integrate/integrateassistant.json @@ -0,0 +1,69 @@ +{ + "KPlugin": { + "Description": "An Assistant dialog to simplify calculation of integrals", + "Description[ca@valencia]": "Un diàleg assistent per a simplificar els càlculs d'integrals", + "Description[ca]": "Un diàleg assistent per a simplificar els càlculs d'integrals", + "Description[cs]": "Pomocný dialog pro zjednodušení výpočtu integrálů", + "Description[de]": "Ein Assistent, um die Berechnung von Integralen zu vereinfachen", + "Description[el]": "Βοηθητικός διάλογος για απλούστευση του υπολογισμού ολοκληρωμάτων", + "Description[en_GB]": "An Assistant dialogue to simplify calculation of integrals", + "Description[es]": "Un diálogo de asistente para simplificar el cálculo de integrales", + "Description[et]": "Integraalide arvutamist lihtsustav abiline", + "Description[fi]": "Apuikkuna helpottamaan integraalien laskemista", + "Description[fr]": "Une boîte de dialogue d'assistant simplifiant le calcul d'intégrales", + "Description[gl]": "Un diálogo auxiliar para simplificar o cálculo de integrais", + "Description[ia]": "Un dialogo Assistente per simplificar calcular integrales", + "Description[it]": "Un assistente che semplifica il calcolo di integrali", + "Description[ka]": "დამხმარე ფანჯარა ინტეგრალების გამოთვლის გასამარტივებლად", + "Description[ko]": "적분 계산을 간단하게 할 수 있도록 해 주는 도우미 대화 상자", + "Description[nl]": "Een assistentdialoog voor het vereenvoudigen van het berekenen van integralen", + "Description[nn]": "Eit hjelpevindauge for utrekning av integral av uttrykk", + "Description[pl]": "Pomocnik upraszczający obliczanie całek", + "Description[pt]": "Uma janela assistente para simplificar o cálculo de integrais", + "Description[pt_BR]": "Um assistente para simplificar o cálculo de integrais", + "Description[ru]": "Диалоговое окно, упрощающее вычисление интегралов", + "Description[sk]": "Asistenčný dialóg na uľahčenie výpočtu integrálov", + "Description[sl]": "Pomočnik, ki poenostavi izračunavanje integralov", + "Description[sv]": "En dialogruta med en guide för att förenkla beräkning av integraler", + "Description[tr]": "İfadelerin integrallerini hesaplamayı kolaylaştıran yardımcı penceresi", + "Description[uk]": "Діалогове вікно помічника у обчисленні інтегралів", + "Description[x-test]": "xxAn Assistant dialog to simplify calculation of integralsxx", + "Description[zh_CN]": "用于简化积分运算的助手对话框", + "Description[zh_TW]": "簡化積分計算的小助手對話框", + "Icon": "office-chart-area", + "Id": "Integrate", + "License": "GPL", + "Name": "Integrate", + "Name[ca@valencia]": "Integra", + "Name[ca]": "Integra", + "Name[cs]": "Integrovat", + "Name[da]": "Intregrér", + "Name[de]": "Integrieren", + "Name[el]": "Ολοκλήρωση", + "Name[en_GB]": "Integrate", + "Name[es]": "Integrar", + "Name[et]": "Integraalarvutus", + "Name[fi]": "Integroi", + "Name[fr]": "Intégrer", + "Name[gl]": "Integrar", + "Name[ia]": "Integrar", + "Name[it]": "Integrazione", + "Name[ka]": "ინტეგრირება", + "Name[ko]": "적분", + "Name[nl]": "Integreren", + "Name[nn]": "Integrer", + "Name[pl]": "Całkowanie", + "Name[pt]": "Integração", + "Name[pt_BR]": "Integral", + "Name[ru]": "Интегрирование", + "Name[sk]": "Integrovať", + "Name[sl]": "Integriraj", + "Name[sv]": "Integrera", + "Name[tr]": "Bütünleştir", + "Name[uk]": "Проінтегрувати", + "Name[x-test]": "xxIntegratexx", + "Name[zh_CN]": "积分", + "Name[zh_TW]": "積分" + }, + "RequiredExtensions": "CalculusExtension" +} diff --git a/src/assistants/integrate/integratedlg.ui b/src/assistants/integrate/integratedlg.ui new file mode 100644 index 0000000..de285e3 --- /dev/null +++ b/src/assistants/integrate/integratedlg.ui @@ -0,0 +1,136 @@ + + + IntegrateAssistantBase + + + + 0 + 0 + 400 + 300 + + + + + + + + + Expression: + + + + + + + + + + Variable: + + + + + + + x + + + + + + + + + + + + + Lower limit: + + + + + + + false + + + + + + + Upper limit: + + + + + + + false + + + + + + + definite integral + + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + KLineEdit + QLineEdit +
      klineedit.h
      +
      +
      + + + + isDefinite + toggled(bool) + lowerLimit + setEnabled(bool) + + + 75 + 177 + + + 271 + 219 + + + + + isDefinite + toggled(bool) + upperLimit + setEnabled(bool) + + + 75 + 177 + + + 271 + 264 + + + + +
      diff --git a/src/assistants/linearalgebra/CMakeLists.txt b/src/assistants/linearalgebra/CMakeLists.txt new file mode 100644 index 0000000..62f0914 --- /dev/null +++ b/src/assistants/linearalgebra/CMakeLists.txt @@ -0,0 +1,4 @@ +add_subdirectory(creatematrix) +add_subdirectory(invertmatrix) +add_subdirectory(eigenvectors) +add_subdirectory(eigenvalues) diff --git a/src/assistants/linearalgebra/creatematrix/CMakeLists.txt b/src/assistants/linearalgebra/creatematrix/CMakeLists.txt new file mode 100644 index 0000000..bb95d69 --- /dev/null +++ b/src/assistants/linearalgebra/creatematrix/CMakeLists.txt @@ -0,0 +1,10 @@ +set( CreateMatrixAssistant_SRCS + creatematrixassistant.cpp + creatematrixdlg.cpp +) + +ki18n_wrap_ui(CreateMatrixAssistant_SRCS creatematrixdlg.ui) + +add_assistant(creatematrixassistant ${CreateMatrixAssistant_SRCS}) + +install( FILES cantor_create_matrix_assistant.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/cantor ) diff --git a/src/assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc b/src/assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc new file mode 100644 index 0000000..46424e2 --- /dev/null +++ b/src/assistants/linearalgebra/creatematrix/cantor_create_matrix_assistant.rc @@ -0,0 +1,8 @@ + + + + &Linear Algebra + + + + diff --git a/src/assistants/linearalgebra/creatematrix/creatematrixassistant.cpp b/src/assistants/linearalgebra/creatematrix/creatematrixassistant.cpp new file mode 100644 index 0000000..2f75998 --- /dev/null +++ b/src/assistants/linearalgebra/creatematrix/creatematrixassistant.cpp @@ -0,0 +1,58 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "creatematrixassistant.h" + +#include + +#include +#include +#include +#include "cantor_macros.h" +#include "backend.h" +#include "extension.h" +#include "creatematrixdlg.h" + +CreateMatrixAssistant::CreateMatrixAssistant(QObject* parent, QList args) : Assistant(parent) +{ + Q_UNUSED(args) +} + +void CreateMatrixAssistant::initActions() +{ + setXMLFile(QLatin1String("cantor_create_matrix_assistant.rc")); + QAction* creatematrix=new QAction(i18n("Create Matrix"), actionCollection()); + actionCollection()->addAction(QLatin1String("creatematrix_assistant"), creatematrix); + connect(creatematrix, &QAction::triggered, this, &CreateMatrixAssistant::requested); +} + +QStringList CreateMatrixAssistant::run(QWidget* parent) +{ + QPointer dlg=new CreateMatrixDlg(parent); + + QStringList result; + if( dlg->exec()) + { + Cantor::LinearAlgebraExtension::Matrix m; + for (int i=0;inumRows();i++) + { + QStringList row; + for(int j=0;jnumCols();j++) + row<value(i, j); + m<(backend()->extension(QLatin1String("LinearAlgebraExtension"))); + result<createMatrix(m); + } + + + delete dlg; + return result; +} + +K_PLUGIN_FACTORY_WITH_JSON(creatematrixassistant, "creatematrixassistant.json", registerPlugin();) +#include "creatematrixassistant.moc" diff --git a/src/assistants/linearalgebra/creatematrix/creatematrixassistant.h b/src/assistants/linearalgebra/creatematrix/creatematrixassistant.h new file mode 100644 index 0000000..c5931ab --- /dev/null +++ b/src/assistants/linearalgebra/creatematrix/creatematrixassistant.h @@ -0,0 +1,23 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _CREATEMATRIXASSISTANT_H +#define _CREATEMATRIXASSISTANT_H + +#include "assistant.h" + +class CreateMatrixAssistant : public Cantor::Assistant +{ + public: + CreateMatrixAssistant( QObject* parent, QList args ); + ~CreateMatrixAssistant() override = default; + + void initActions() override; + + QStringList run(QWidget* parentt) override; + +}; + +#endif /* _CREATEMATRIXASSISTANT_H */ diff --git a/src/assistants/linearalgebra/creatematrix/creatematrixassistant.json b/src/assistants/linearalgebra/creatematrix/creatematrixassistant.json new file mode 100644 index 0000000..487bea9 --- /dev/null +++ b/src/assistants/linearalgebra/creatematrix/creatematrixassistant.json @@ -0,0 +1,67 @@ +{ + "KPlugin": { + "Description": "An Assistant dialog to simplify entering of matrices", + "Description[ca@valencia]": "Un diàleg assistent per a simplificar la introducció de matrius", + "Description[ca]": "Un diàleg assistent per a simplificar la introducció de matrius", + "Description[cs]": "Pomocný dialog pro zjednodušení zadávání matic", + "Description[de]": "Ein Assistent, um die Eingabe von Matrizen zu vereinfachen", + "Description[el]": "Βοηθητικός διάλογος για απλούστευση εισαγωγής δεδομένων σε πίνακες", + "Description[en_GB]": "An Assistant dialogue to simplify entering of matrices", + "Description[es]": "Un diálogo de asistente para simplificar la introducción de matrices", + "Description[et]": "Maatriksite sisestamist lihtsustav abiline", + "Description[fi]": "Apuikkuna helpottamaan matriisin arvojen antamista", + "Description[fr]": "Une boîte de dialogue d'assistant simplifiant la saisie de matrices", + "Description[gl]": "Un diálogo auxiliar para simplificar a inserción de matrices", + "Description[ia]": "Un dialogo Assistente per simplificar insertar matrices", + "Description[it]": "Un assistente che semplifica l'inserimento di matrici", + "Description[ka]": "დამხმარე ფანჯარა მატრიცების შეყვანის გასამარტივებლად", + "Description[ko]": "행렬 입력을 간단하게 할 수 있도록 해 주는 도우미 대화 상자", + "Description[nl]": "Een assistentdialoog voor het vereenvoudigen van het invoeren van matrices", + "Description[nn]": "Eit hjelpevindauge for innskriving av matriser", + "Description[pl]": "Pomocnik upraszczający wpisywanie macierzy", + "Description[pt]": "Uma janela assistente para simplificar a introdução de matrizes", + "Description[pt_BR]": "Um assistente para simplificar a digitação de matrizes", + "Description[ru]": "Диалоговое окно, упрощающее ввод матриц", + "Description[sk]": "Asistenčný dialóg na uľahčenie zadávania matíc", + "Description[sl]": "Pomočnik, ki poenostavi vnašanje matrik", + "Description[sv]": "En dialogruta med en guide för att förenkla inmatning av matriser", + "Description[tr]": "Matris girişini kolaylaştıran yardımcı penceresi", + "Description[uk]": "Діалогове вікно помічника введення матриць", + "Description[x-test]": "xxAn Assistant dialog to simplify entering of matricesxx", + "Description[zh_CN]": "用于简化矩阵输入的助手对话框", + "Description[zh_TW]": "簡化輸入矩陣的小助手對話框", + "Id": "Create Matrix", + "License": "GPL", + "Name": "Create Matrix", + "Name[ca@valencia]": "Crea una matriu", + "Name[ca]": "Crea una matriu", + "Name[cs]": "Vytvořit matici", + "Name[de]": "Matrix erstellen", + "Name[el]": "Δημιουργία πίνακα", + "Name[en_GB]": "Create Matrix", + "Name[es]": "Crear matriz", + "Name[et]": "Maatriksi loomine", + "Name[fi]": "Luo matriisi", + "Name[fr]": "Créer une matrice", + "Name[gl]": "Crear unha matriz", + "Name[ia]": "Crea Matrice", + "Name[it]": "Crea matrice", + "Name[ka]": "მატრიცის შექმნა", + "Name[ko]": "행렬 생성", + "Name[nl]": "Matrix aanmaken", + "Name[nn]": "Lag matrise", + "Name[pl]": "Tworzenie macierzy", + "Name[pt]": "Criação de Matriz", + "Name[pt_BR]": "Criar matriz", + "Name[ru]": "Создание матрицы", + "Name[sk]": "Vytvoriť maticu", + "Name[sl]": "Ustvari matriko", + "Name[sv]": "Skapa matris", + "Name[tr]": "Matris Oluştur", + "Name[uk]": "Створити матрицю", + "Name[x-test]": "xxCreate Matrixxx", + "Name[zh_CN]": "创建矩阵", + "Name[zh_TW]": "建立矩陣" + }, + "RequiredExtensions": "LinearAlgebraExtension" +} diff --git a/src/assistants/linearalgebra/creatematrix/creatematrixdlg.cpp b/src/assistants/linearalgebra/creatematrix/creatematrixdlg.cpp new file mode 100644 index 0000000..9f11213 --- /dev/null +++ b/src/assistants/linearalgebra/creatematrix/creatematrixdlg.cpp @@ -0,0 +1,62 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "creatematrixdlg.h" +#include + +CreateMatrixDlg::CreateMatrixDlg(QWidget* parent) : QDialog(parent) +{ + m_base=new Ui::CreateMatrixAssistantBase; + QWidget* mainW=new QWidget(this); + m_base->setupUi(mainW); + + QVBoxLayout *layout = new QVBoxLayout; + setLayout(layout); + layout->addWidget(mainW); + + m_base->buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + m_base->buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + connect(m_base->buttonBox, SIGNAL(accepted()), this, SLOT(accept())); + connect(m_base->buttonBox, SIGNAL(rejected()), this, SLOT(reject())); + + connect(m_base->rows, static_cast(&QSpinBox::valueChanged), this, &CreateMatrixDlg::changeNumRows); + connect(m_base->columns, static_cast(&QSpinBox::valueChanged), this, &CreateMatrixDlg::changeNumCols); +} + +CreateMatrixDlg::~CreateMatrixDlg() +{ + delete m_base; +} + +void CreateMatrixDlg::changeNumRows(int rows) +{ + m_base->values->setRowCount(rows); +} + +void CreateMatrixDlg::changeNumCols(int cols) +{ + m_base->values->setColumnCount(cols); +} + +int CreateMatrixDlg::numRows() +{ + return m_base->rows->value(); +} + +int CreateMatrixDlg::numCols() +{ + return m_base->columns->value(); +} + +QString CreateMatrixDlg::value(int i, int j) +{ + const QTableWidgetItem* item=m_base->values->item(i, j); + if(item) + return item->text(); + else + return QLatin1String("0"); +} + + diff --git a/src/assistants/linearalgebra/creatematrix/creatematrixdlg.h b/src/assistants/linearalgebra/creatematrix/creatematrixdlg.h new file mode 100644 index 0000000..a245953 --- /dev/null +++ b/src/assistants/linearalgebra/creatematrix/creatematrixdlg.h @@ -0,0 +1,32 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _CREATEMATRIXDLG_H +#define _CREATEMATRIXDLG_H + +#include +#include "ui_creatematrixdlg.h" + +class CreateMatrixDlg : public QDialog +{ + Q_OBJECT + public: + explicit CreateMatrixDlg( QWidget* parent); + ~CreateMatrixDlg() override; + + int numRows(); + int numCols(); + + QString value(int i,int j); + + public Q_SLOTS: + void changeNumRows(int rows); + void changeNumCols(int cols); + + private: + Ui::CreateMatrixAssistantBase *m_base; +}; + +#endif /* _CREATEMATRIXDLG_H */ diff --git a/src/assistants/linearalgebra/creatematrix/creatematrixdlg.ui b/src/assistants/linearalgebra/creatematrix/creatematrixdlg.ui new file mode 100644 index 0000000..6aa2316 --- /dev/null +++ b/src/assistants/linearalgebra/creatematrix/creatematrixdlg.ui @@ -0,0 +1,77 @@ + + + CreateMatrixAssistantBase + + + + 0 + 0 + 451 + 210 + + + + + + + + + Columns: + + + + + + + 3 + + + + + + + + + + + Rows: + + + + + + + 3 + + + + + + + + + 3 + + + 3 + + + + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + diff --git a/src/assistants/linearalgebra/eigenvalues/CMakeLists.txt b/src/assistants/linearalgebra/eigenvalues/CMakeLists.txt new file mode 100644 index 0000000..d41a030 --- /dev/null +++ b/src/assistants/linearalgebra/eigenvalues/CMakeLists.txt @@ -0,0 +1,9 @@ +set( EigenValuesAssistant_SRCS + eigenvaluesassistant.cpp +) + +ki18n_wrap_ui(EigenValuesAssistant_SRCS eigenvaluesdlg.ui) + +add_assistant(eigenvaluesassistant ${EigenValuesAssistant_SRCS}) + +install( FILES cantor_eigenvalues_assistant.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/cantor ) diff --git a/src/assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc b/src/assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc new file mode 100644 index 0000000..c4eda8c --- /dev/null +++ b/src/assistants/linearalgebra/eigenvalues/cantor_eigenvalues_assistant.rc @@ -0,0 +1,8 @@ + + + + &Linear Algebra + + + + diff --git a/src/assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp b/src/assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp new file mode 100644 index 0000000..4de9bb9 --- /dev/null +++ b/src/assistants/linearalgebra/eigenvalues/eigenvaluesassistant.cpp @@ -0,0 +1,66 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "eigenvaluesassistant.h" + +#include +#include +#include +#include + +#include +#include +#include "cantor_macros.h" +#include "backend.h" +#include "extension.h" +#include "ui_eigenvaluesdlg.h" + +EigenValuesAssistant::EigenValuesAssistant(QObject* parent, QList args) : Assistant(parent) +{ + Q_UNUSED(args) +} + +void EigenValuesAssistant::initActions() +{ + setXMLFile(QLatin1String("cantor_eigenvalues_assistant.rc")); + QAction* eigenvalues=new QAction(i18n("Compute Eigenvalues"), actionCollection()); + actionCollection()->addAction(QLatin1String("eigenvalues_assistant"), eigenvalues); + connect(eigenvalues, &QAction::triggered, this, &EigenValuesAssistant::requested); +} + +QStringList EigenValuesAssistant::run(QWidget* parent) +{ + QPointer dlg=new QDialog(parent); + QWidget* widget=new QWidget(dlg); + Ui::EigenValuesAssistantBase base; + base.setupUi(widget); + QVBoxLayout *mainLayout = new QVBoxLayout; + dlg->setLayout(mainLayout); + mainLayout->addWidget(widget); + + base.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + base.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + connect(base.buttonBox, SIGNAL(accepted()), dlg, SLOT(accept())); + connect(base.buttonBox, SIGNAL(rejected()), dlg, SLOT(reject())); + + Cantor::HistoryExtension* hist= + dynamic_cast(backend()->extension(QLatin1String("HistoryExtension"))); + base.matrix->setText(hist->lastResult()); + + QStringList result; + if( dlg->exec()) + { + const QString& m=base.matrix->text(); + Cantor::LinearAlgebraExtension* ext= + dynamic_cast(backend()->extension(QLatin1String("LinearAlgebraExtension"))); + result<eigenValues(m); + } + + delete dlg; + return result; +} + +K_PLUGIN_FACTORY_WITH_JSON(eigenvaluesassistant, "eigenvaluesassistant.json", registerPlugin();) +#include "eigenvaluesassistant.moc" diff --git a/src/assistants/linearalgebra/eigenvalues/eigenvaluesassistant.h b/src/assistants/linearalgebra/eigenvalues/eigenvaluesassistant.h new file mode 100644 index 0000000..0e766ef --- /dev/null +++ b/src/assistants/linearalgebra/eigenvalues/eigenvaluesassistant.h @@ -0,0 +1,23 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _EIGENVALUESASSISTANT_H +#define _EIGENVALUESASSISTANT_H + +#include "assistant.h" + +class EigenValuesAssistant : public Cantor::Assistant +{ + public: + EigenValuesAssistant( QObject* parent, QList args ); + ~EigenValuesAssistant() override = default; + + void initActions() override; + + QStringList run(QWidget* parentt) override; + +}; + +#endif /* _EIGENVALUESASSISTANT_H */ diff --git a/src/assistants/linearalgebra/eigenvalues/eigenvaluesassistant.json b/src/assistants/linearalgebra/eigenvalues/eigenvaluesassistant.json new file mode 100644 index 0000000..52a1909 --- /dev/null +++ b/src/assistants/linearalgebra/eigenvalues/eigenvaluesassistant.json @@ -0,0 +1,67 @@ +{ + "KPlugin": { + "Description": "An Assistant dialog to simplify calculating of Eigenvalues", + "Description[ca@valencia]": "Un diàleg assistent per a simplificar el càlcul d'autovalors", + "Description[ca]": "Un diàleg assistent per a simplificar el càlcul d'autovalors", + "Description[cs]": "Pomocný dialog pro zjednodušení výpočtu vlastních čísel", + "Description[de]": "Ein Assistent, um das Berechnen von „Eigen“-Werten zu vereinfachen.", + "Description[el]": "Βοηθητικός διάλογος για απλούστευση του υπολογισμού ιδιοτιμών", + "Description[en_GB]": "An Assistant dialogue to simplify calculating of eigenvalues", + "Description[es]": "Un diálogo de asistente para simplificar el cálculo de eigenvalores", + "Description[et]": "Omaväärtuste arvutamist lihtsustav abiline", + "Description[fi]": "Apuikkuna helpottamaan ominaisarvojen laskemista", + "Description[fr]": "Une boîte de dialogue d'assistant simplifiant le calcul de valeurs propres", + "Description[gl]": "Un diálogo auxiliar para simplificar o cálculo de valores de Eigen", + "Description[ia]": "Un dialogo Assistente per simplificar calcular autovalores (Eigen)", + "Description[it]": "Un assistente che semplifica il calcolo degli autovalori", + "Description[ka]": "დამხმარე ფანჯარა Eigenvalues-ის გამოთვლის გასამარტივებლად", + "Description[ko]": "고윳값을 간단하게 계산할 수 있도록 해 주는 도우미 대화 상자", + "Description[nl]": "Een assistentdialoog voor het vereenvoudigen van het berekenen van eigenwaarden", + "Description[nn]": "Eit hjelpevindauge for utrekning av eigenverdiar", + "Description[pl]": "Pomocnik upraszczający obliczanie wyróżnika macierzy", + "Description[pt]": "Uma janela assistente para simplificar o cálculo dos valores de Eigen", + "Description[pt_BR]": "Um assistente para simplificar o cálculo dos valores de Eigen", + "Description[ru]": "Диалоговое окно, упрощающее вычисление собственных значений", + "Description[sk]": "Asistenčný dialóg na uľahčenie výpočtu vlastných hodnôt", + "Description[sl]": "Pomočnik, ki poenostavi izračunavanje lastnih vrednosti", + "Description[sv]": "En dialogruta med en guide för att förenkla beräkning av egenvärden", + "Description[tr]": "Eigen Değerleri hesaplamayı kolaylaştıran yardımcı penceresi", + "Description[uk]": "Діалогове вікно помічника у обчисленні власних значень", + "Description[x-test]": "xxAn Assistant dialog to simplify calculating of Eigenvaluesxx", + "Description[zh_CN]": "用于简化特征值计算的助手对话框", + "Description[zh_TW]": "簡化特徵值計算的小助手對話框", + "Id": "Create Matrix", + "License": "GPL", + "Name": "Eigenvalues", + "Name[ca@valencia]": "Valors propis (autovalors)", + "Name[ca]": "Valors propis (autovalors)", + "Name[cs]": "Vlastní čísla", + "Name[de]": "Eigenwerte", + "Name[el]": "Ιδιοτιμές", + "Name[en_GB]": "Eigenvalues", + "Name[es]": "Eigenvalores", + "Name[et]": "Omaväärtused", + "Name[fi]": "Ominaisarvot", + "Name[fr]": "Valeurs propres", + "Name[gl]": "Valores de Eigen", + "Name[ia]": "Autovalores (Eigen)", + "Name[it]": "Autovalori", + "Name[ka]": "საკუთრივი მნიშვნელობები", + "Name[ko]": "고윳값", + "Name[nl]": "Eigenwaarden", + "Name[nn]": "Eigenverdiar", + "Name[pl]": "Wartości macierzy", + "Name[pt]": "Valores de Eigen", + "Name[pt_BR]": "Valores de Eigen", + "Name[ru]": "Собственные значения", + "Name[sk]": "Vlastné hodnoty", + "Name[sl]": "Lastne vrednosti", + "Name[sv]": "Egenvärden", + "Name[tr]": "Eigen değerleri", + "Name[uk]": "Власні значення", + "Name[x-test]": "xxEigenvaluesxx", + "Name[zh_CN]": "特征值", + "Name[zh_TW]": "特徵值" + }, + "RequiredExtensions": "LinearAlgebraExtension,HistoryExtension" +} diff --git a/src/assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui b/src/assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui new file mode 100644 index 0000000..a4658d9 --- /dev/null +++ b/src/assistants/linearalgebra/eigenvalues/eigenvaluesdlg.ui @@ -0,0 +1,42 @@ + + + EigenValuesAssistantBase + + + + 0 + 0 + 256 + 96 + + + + + + + Matrix: + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + KLineEdit + QLineEdit +
      klineedit.h
      +
      +
      + + +
      diff --git a/src/assistants/linearalgebra/eigenvectors/CMakeLists.txt b/src/assistants/linearalgebra/eigenvectors/CMakeLists.txt new file mode 100644 index 0000000..c3ddaa1 --- /dev/null +++ b/src/assistants/linearalgebra/eigenvectors/CMakeLists.txt @@ -0,0 +1,9 @@ +set( EigenVectorsAssistant_SRCS + eigenvectorsassistant.cpp +) + +ki18n_wrap_ui(EigenVectorsAssistant_SRCS eigenvectorsdlg.ui) + +add_assistant(eigenvectorsassistant ${EigenVectorsAssistant_SRCS}) + +install( FILES cantor_eigenvectors_assistant.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/cantor ) diff --git a/src/assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc b/src/assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc new file mode 100644 index 0000000..99b141b --- /dev/null +++ b/src/assistants/linearalgebra/eigenvectors/cantor_eigenvectors_assistant.rc @@ -0,0 +1,8 @@ + + + + &Linear Algebra + + + + diff --git a/src/assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp b/src/assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp new file mode 100644 index 0000000..2f64e81 --- /dev/null +++ b/src/assistants/linearalgebra/eigenvectors/eigenvectorsassistant.cpp @@ -0,0 +1,66 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "eigenvectorsassistant.h" + +#include +#include +#include +#include + +#include +#include +#include "cantor_macros.h" +#include "backend.h" +#include "extension.h" +#include "ui_eigenvectorsdlg.h" + +EigenVectorsAssistant::EigenVectorsAssistant(QObject* parent, QList args) : Assistant(parent) +{ + Q_UNUSED(args) +} + +void EigenVectorsAssistant::initActions() +{ + setXMLFile(QLatin1String("cantor_eigenvectors_assistant.rc")); + QAction* eigenvectors=new QAction(i18n("Compute Eigenvectors"), actionCollection()); + actionCollection()->addAction(QLatin1String("eigenvectors_assistant"), eigenvectors); + connect(eigenvectors, &QAction::triggered, this, &EigenVectorsAssistant::requested); +} + +QStringList EigenVectorsAssistant::run(QWidget* parent) +{ + QPointer dlg=new QDialog(parent); + QWidget* widget=new QWidget(dlg); + Ui::EigenVectorsAssistantBase base; + base.setupUi(widget); + QVBoxLayout *mainLayout = new QVBoxLayout; + dlg->setLayout(mainLayout); + mainLayout->addWidget(widget); + + base.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + base.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + connect(base.buttonBox, SIGNAL(accepted()), dlg, SLOT(accept())); + connect(base.buttonBox, SIGNAL(rejected()), dlg, SLOT(reject())); + + Cantor::HistoryExtension* hist= + dynamic_cast(backend()->extension(QLatin1String("HistoryExtension"))); + base.matrix->setText(hist->lastResult()); + + QStringList result; + if( dlg->exec()) + { + const QString& m=base.matrix->text(); + Cantor::LinearAlgebraExtension* ext= + dynamic_cast(backend()->extension(QLatin1String("LinearAlgebraExtension"))); + result<eigenVectors(m); + } + + delete dlg; + return result; +} + +K_PLUGIN_FACTORY_WITH_JSON(eigenvectorsassistant, "eigenvectorsassistant.json", registerPlugin();) +#include "eigenvectorsassistant.moc" diff --git a/src/assistants/linearalgebra/eigenvectors/eigenvectorsassistant.h b/src/assistants/linearalgebra/eigenvectors/eigenvectorsassistant.h new file mode 100644 index 0000000..b1a96bb --- /dev/null +++ b/src/assistants/linearalgebra/eigenvectors/eigenvectorsassistant.h @@ -0,0 +1,23 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _EIGENVECTORSASSISTANT_H +#define _EIGENVECTORSASSISTANT_H + +#include "assistant.h" + +class EigenVectorsAssistant : public Cantor::Assistant +{ + public: + EigenVectorsAssistant( QObject* parent, QList args ); + ~EigenVectorsAssistant() override = default; + + void initActions() override; + + QStringList run(QWidget* parentt) override; + +}; + +#endif /* _EIGENVECTORSASSISTANT_H */ diff --git a/src/assistants/linearalgebra/eigenvectors/eigenvectorsassistant.json b/src/assistants/linearalgebra/eigenvectors/eigenvectorsassistant.json new file mode 100644 index 0000000..d6e8d0e --- /dev/null +++ b/src/assistants/linearalgebra/eigenvectors/eigenvectorsassistant.json @@ -0,0 +1,67 @@ +{ + "KPlugin": { + "Description": "An Assistant dialog to simplify calculating of EigenVectors", + "Description[ca@valencia]": "Un diàleg assistent per a simplificar el càlcul d'autovectors", + "Description[ca]": "Un diàleg assistent per a simplificar el càlcul d'autovectors", + "Description[cs]": "Pomocný dialog pro zjednodušení výpočtu vlastních vektorů", + "Description[de]": "Ein Assistent, um das Berechnen von „Eigen“-Vektoren zu vereinfachen.", + "Description[el]": "Βοηθητικός διάλογος για απλούστευση του υπολογισμού ιδιοδιανυσμάτων", + "Description[en_GB]": "An Assistant dialogue to simplify calculating of eigenvectors", + "Description[es]": "Un diálogo de asistente para simplificar el cálculo de eigenvectores", + "Description[et]": "Omavektorite arvutamist lihtsustav abiline", + "Description[fi]": "Apuikkuna helpottamaan ominaisvektoreiden laskemista", + "Description[fr]": "Une boîte de dialogue d'assistant simplifiant le calcul de vecteurs propres", + "Description[gl]": "Un diálogo auxiliar para simplificar o cálculo de vectores de Eigen", + "Description[ia]": "Un dialogo Assistente per simplificar calcular autovectores (Eigen)", + "Description[it]": "Un assistente che semplifica il calcolo degli autovettori", + "Description[ka]": "დამხმარე ფანჯარა EigenVectors-ის გამოთვლის გასამარტივებლად", + "Description[ko]": "고유벡터를 간단하게 계산할 수 있도록 해 주는 도우미 대화 상자", + "Description[nl]": "Een assistentdialoog voor het vereenvoudigen van het berekenen van eigenvectoren", + "Description[nn]": "Eit hjelpevindauge for utrekning av eigenvektorar", + "Description[pl]": "Pomocnik upraszczający obliczanie wektora macierzy", + "Description[pt]": "Uma janela assistente para simplificar o cálculo dos vectores de Eigen", + "Description[pt_BR]": "Um assistente para simplificar o cálculo dos vetores de Eigen", + "Description[ru]": "Диалоговое окно, упрощающее вычисление собственных векторов", + "Description[sk]": "Asistenčný dialóg na uľahčenie výpočtu vlastných vektorov", + "Description[sl]": "Pomočnik, ki poenostavi izračunavanje lastnih vektorjev", + "Description[sv]": "En dialogruta med en guide för att förenkla beräkning av egenvektorer", + "Description[tr]": "Eigen Vektörleri hesaplamayı kolaylaştıran yardımcı penceresi", + "Description[uk]": "Діалогове вікно помічника у обчисленні власних векторів", + "Description[x-test]": "xxAn Assistant dialog to simplify calculating of EigenVectorsxx", + "Description[zh_CN]": "用于简化特征向量计算的助手对话框", + "Description[zh_TW]": "簡化特徵向量計算的小助手對話框", + "Id": "Create Matrix", + "License": "GPL", + "Name": "Eigenvectors", + "Name[ca@valencia]": "Vectors propis (autovectors)", + "Name[ca]": "Vectors propis (autovectors)", + "Name[cs]": "Vlastní vektory", + "Name[de]": "Eigenvektoren", + "Name[el]": "Ιδιοδιανύσματα", + "Name[en_GB]": "Eigenvectors", + "Name[es]": "Eigenvectores", + "Name[et]": "Omavektorid", + "Name[fi]": "Ominaisvektorit", + "Name[fr]": "Vecteurs propres", + "Name[gl]": "Vectores de Eigen", + "Name[ia]": "Autovectores (Eigen)", + "Name[it]": "Autovettori", + "Name[ka]": "საკუთრივი ვექტორები", + "Name[ko]": "고유벡터", + "Name[nl]": "Eigenvectoren", + "Name[nn]": "Eigenvektorar", + "Name[pl]": "Wektory macierzy", + "Name[pt]": "Vectores de Eigen", + "Name[pt_BR]": "Vetores de Eigen", + "Name[ru]": "Собственные векторы", + "Name[sk]": "Vlastné vektory", + "Name[sl]": "Lastni vektorji", + "Name[sv]": "Egenvektorer", + "Name[tr]": "Eigen Vektörleri", + "Name[uk]": "Власні вектори", + "Name[x-test]": "xxEigenvectorsxx", + "Name[zh_CN]": "特征向量", + "Name[zh_TW]": "特徵向量" + }, + "RequiredExtensions": "LinearAlgebraExtension,HistoryExtension" +} diff --git a/src/assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui b/src/assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui new file mode 100644 index 0000000..1c91856 --- /dev/null +++ b/src/assistants/linearalgebra/eigenvectors/eigenvectorsdlg.ui @@ -0,0 +1,42 @@ + + + EigenVectorsAssistantBase + + + + 0 + 0 + 302 + 98 + + + + + + + Matrix: + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + KLineEdit + QLineEdit +
      klineedit.h
      +
      +
      + + +
      diff --git a/src/assistants/linearalgebra/invertmatrix/CMakeLists.txt b/src/assistants/linearalgebra/invertmatrix/CMakeLists.txt new file mode 100644 index 0000000..9811066 --- /dev/null +++ b/src/assistants/linearalgebra/invertmatrix/CMakeLists.txt @@ -0,0 +1,9 @@ +set( InvertMatrixAssistant_SRCS + invertmatrixassistant.cpp +) + +ki18n_wrap_ui(InvertMatrixAssistant_SRCS invertmatrixdlg.ui) + +add_assistant(invertmatrixassistant ${InvertMatrixAssistant_SRCS}) + +install( FILES cantor_invert_matrix_assistant.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/cantor ) diff --git a/src/assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc b/src/assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc new file mode 100644 index 0000000..1d93088 --- /dev/null +++ b/src/assistants/linearalgebra/invertmatrix/cantor_invert_matrix_assistant.rc @@ -0,0 +1,8 @@ + + + + &Linear Algebra + + + + diff --git a/src/assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp b/src/assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp new file mode 100644 index 0000000..be759f4 --- /dev/null +++ b/src/assistants/linearalgebra/invertmatrix/invertmatrixassistant.cpp @@ -0,0 +1,66 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "invertmatrixassistant.h" + +#include +#include +#include +#include + +#include +#include +#include "cantor_macros.h" +#include "backend.h" +#include "extension.h" +#include "ui_invertmatrixdlg.h" + +InvertMatrixAssistant::InvertMatrixAssistant(QObject* parent, QList args) : Assistant(parent) +{ + Q_UNUSED(args) +} + +void InvertMatrixAssistant::initActions() +{ + setXMLFile(QLatin1String("cantor_invert_matrix_assistant.rc")); + QAction* invertmatrix=new QAction(i18n("Invert Matrix"), actionCollection()); + actionCollection()->addAction(QLatin1String("invertmatrix_assistant"), invertmatrix); + connect(invertmatrix, &QAction::triggered, this, &InvertMatrixAssistant::requested); +} + +QStringList InvertMatrixAssistant::run(QWidget* parent) +{ + QPointer dlg=new QDialog(parent); + QWidget* widget=new QWidget(dlg); + Ui::InvertMatrixAssistantBase base; + base.setupUi(widget); + QVBoxLayout *mainLayout = new QVBoxLayout; + dlg->setLayout(mainLayout); + mainLayout->addWidget(widget); + + base.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + base.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + connect(base.buttonBox, SIGNAL(accepted()), dlg, SLOT(accept())); + connect(base.buttonBox, SIGNAL(rejected()), dlg, SLOT(reject())); + + Cantor::HistoryExtension* hist= + dynamic_cast(backend()->extension(QLatin1String("HistoryExtension"))); + base.matrix->setText(hist->lastResult()); + + QStringList result; + if( dlg->exec()) + { + const QString& m=base.matrix->text(); + Cantor::LinearAlgebraExtension* ext= + dynamic_cast(backend()->extension(QLatin1String("LinearAlgebraExtension"))); + result<invertMatrix(m); + } + + delete dlg; + return result; +} + +K_PLUGIN_FACTORY_WITH_JSON(invertmatrixassistant, "invertmatrixassistant.json", registerPlugin();) +#include "invertmatrixassistant.moc" diff --git a/src/assistants/linearalgebra/invertmatrix/invertmatrixassistant.h b/src/assistants/linearalgebra/invertmatrix/invertmatrixassistant.h new file mode 100644 index 0000000..03c5171 --- /dev/null +++ b/src/assistants/linearalgebra/invertmatrix/invertmatrixassistant.h @@ -0,0 +1,23 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _INVERTMATRIXASSISTANT_H +#define _INVERTMATRIXASSISTANT_H + +#include "assistant.h" + +class InvertMatrixAssistant : public Cantor::Assistant +{ + public: + InvertMatrixAssistant( QObject* parent, QList args ); + ~InvertMatrixAssistant() override = default; + + void initActions() override; + + QStringList run(QWidget* parentt) override; + +}; + +#endif /* _INVERTMATRIXASSISTANT_H */ diff --git a/src/assistants/linearalgebra/invertmatrix/invertmatrixassistant.json b/src/assistants/linearalgebra/invertmatrix/invertmatrixassistant.json new file mode 100644 index 0000000..1e0ae28 --- /dev/null +++ b/src/assistants/linearalgebra/invertmatrix/invertmatrixassistant.json @@ -0,0 +1,67 @@ +{ + "KPlugin": { + "Description": "An Assistant dialog to simplify inverting of matrices", + "Description[ca@valencia]": "Un diàleg assistent per a simplificar la inversió de matrius", + "Description[ca]": "Un diàleg assistent per a simplificar la inversió de matrius", + "Description[cs]": "Pomocný dialog pro zjednodušení invertování matice", + "Description[de]": "Ein Assistent, um das Invertieren von Matrizen zu vereinfachen", + "Description[el]": "Βοηθητικός διάλογος για απλούστευση της αντιστροφής πινάκων", + "Description[en_GB]": "An Assistant dialogue to simplify inverting of matrices", + "Description[es]": "Un diálogo de asistente para simplificar la inversión de matrices", + "Description[et]": "Maatriksite inverteerimist lihtsustav abiline", + "Description[fi]": "Apuikkuna helpottamaan matriisien kääntämistä", + "Description[fr]": "Une boîte de dialogue d'assistant simplifiant l'inversion de matrices", + "Description[gl]": "Un diálogo auxiliar para simplificar a inversión de matrices", + "Description[ia]": "Un dialogo Assistente per simplificar inverter matrices", + "Description[it]": "Un assistente che semplifica l'inversione di matrici", + "Description[ka]": "დამხმარე ფანჯარა მატრიცების ინვერსიის გასამარტივებლად", + "Description[ko]": "역행렬 계산을 간단하게 할 수 있도록 해 주는 도우미 대화 상자", + "Description[nl]": "Een assistentdialoog voor het vereenvoudigen van het inverteren van matrices", + "Description[nn]": "Eit hjelpevindauge for invertering av matriser", + "Description[pl]": "Pomocnik upraszczający odwracanie macierzy", + "Description[pt]": "Uma janela assistente para simplificar a inversão de matrizes", + "Description[pt_BR]": "Um assistente para simplificar a inversão de matrizes", + "Description[ru]": "Диалоговое окно, упрощающее обращение матрицы", + "Description[sk]": "Asistenčný dialóg na uľahčenie invertovania matíc", + "Description[sl]": "Pomočnik, ki poenostavi obračanje matrik", + "Description[sv]": "En dialogruta med en guide för att förenkla invertering av matriser", + "Description[tr]": "Ters matris almayı kolaylaştıran yardımcı penceresi", + "Description[uk]": "Діалогове вікно помічника обчислення оберненої матриці", + "Description[x-test]": "xxAn Assistant dialog to simplify inverting of matricesxx", + "Description[zh_CN]": "用于简化逆矩阵计算的助手对话框", + "Description[zh_TW]": "簡化逆變換矩陣的小助手對話框", + "Id": "Create Matrix", + "License": "GPL", + "Name": "Invert Matrix", + "Name[ca@valencia]": "Invertix la matriu", + "Name[ca]": "Inverteix la matriu", + "Name[cs]": "Invertovat matici", + "Name[de]": "Matrix invertieren", + "Name[el]": "Αντιστροφή πίνακα", + "Name[en_GB]": "Invert Matrix", + "Name[es]": "Invertir matriz", + "Name[et]": "Pöördmaatriks", + "Name[fi]": "Käännä matriisi", + "Name[fr]": "Inverser la matrice", + "Name[gl]": "Inverter matriz", + "Name[ia]": "Inverte Matrice", + "Name[it]": "Matrice inversa", + "Name[ka]": "მატრიცის ინვერსია", + "Name[ko]": "역행렬 계산", + "Name[nl]": "Matrix inverteren", + "Name[nn]": "Inverter matrise", + "Name[pl]": "Odwracanie macierzy", + "Name[pt]": "Inversão de Matriz", + "Name[pt_BR]": "Inverter matriz", + "Name[ru]": "Обращение матрицы", + "Name[sk]": "Invertovať maticu", + "Name[sl]": "Obrni matriko", + "Name[sv]": "Invertera matris", + "Name[tr]": "Matrisi Tersine Çevir", + "Name[uk]": "Знайти обернену матрицю", + "Name[x-test]": "xxInvert Matrixxx", + "Name[zh_CN]": "逆矩阵", + "Name[zh_TW]": "逆矩陣" + }, + "RequiredExtensions": "LinearAlgebraExtension,HistoryExtension" +} diff --git a/src/assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui b/src/assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui new file mode 100644 index 0000000..d2adbe2 --- /dev/null +++ b/src/assistants/linearalgebra/invertmatrix/invertmatrixdlg.ui @@ -0,0 +1,42 @@ + + + InvertMatrixAssistantBase + + + + 0 + 0 + 266 + 68 + + + + + + + Matrix: + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + KLineEdit + QLineEdit +
      klineedit.h
      +
      +
      + + +
      diff --git a/src/assistants/plot2d/CMakeLists.txt b/src/assistants/plot2d/CMakeLists.txt new file mode 100644 index 0000000..1b22a8a --- /dev/null +++ b/src/assistants/plot2d/CMakeLists.txt @@ -0,0 +1,9 @@ +set( Plot2dAssistant_SRCS + plot2dassistant.cpp +) + +ki18n_wrap_ui(Plot2dAssistant_SRCS plot2ddlg.ui) + +add_assistant(plot2dassistant ${Plot2dAssistant_SRCS}) + +install( FILES cantor_plot2d_assistant.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/cantor ) diff --git a/src/assistants/plot2d/cantor_plot2d_assistant.rc b/src/assistants/plot2d/cantor_plot2d_assistant.rc new file mode 100644 index 0000000..6e080fe --- /dev/null +++ b/src/assistants/plot2d/cantor_plot2d_assistant.rc @@ -0,0 +1,8 @@ + + + + &Plot + + + + diff --git a/src/assistants/plot2d/plot2dassistant.cpp b/src/assistants/plot2d/plot2dassistant.cpp new file mode 100644 index 0000000..c4ae9c9 --- /dev/null +++ b/src/assistants/plot2d/plot2dassistant.cpp @@ -0,0 +1,67 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "plot2dassistant.h" + +#include +#include +#include +#include + +#include +#include +#include "ui_plot2ddlg.h" +#include "cantor_macros.h" +#include "backend.h" +#include "extension.h" + +Plot2dAssistant::Plot2dAssistant(QObject* parent, QList args) : Assistant(parent) +{ + Q_UNUSED(args) +} + +void Plot2dAssistant::initActions() +{ + setXMLFile(QLatin1String("cantor_plot2d_assistant.rc")); + QAction* plot2d=new QAction(i18n("Plot 2D"), actionCollection()); + actionCollection()->addAction(QLatin1String("plot2d_assistant"), plot2d); + connect(plot2d, &QAction::triggered, this, &Plot2dAssistant::requested); +} + +QStringList Plot2dAssistant::run(QWidget* parent) +{ + QPointer dlg=new QDialog(parent); + QWidget *widget=new QWidget(dlg); + Ui::Plot2dAssistantBase base; + base.setupUi(widget); + QVBoxLayout *mainLayout = new QVBoxLayout; + dlg->setLayout(mainLayout); + mainLayout->addWidget(widget); + + base.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + base.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + connect(base.buttonBox, SIGNAL(accepted()), dlg, SLOT(accept())); + connect(base.buttonBox, SIGNAL(rejected()), dlg, SLOT(reject())); + + QStringList result; + if( dlg->exec()) + { + const QString expression=base.expression->text(); + const QString variable=base.variable->text(); + const QString min=base.min->text(); + const QString max=base.max->text(); + + Cantor::PlotExtension* ext= + dynamic_cast(backend()->extension(QLatin1String("PlotExtension"))); + + result<plotFunction2d(expression, variable, min, max); + } + + delete dlg; + return result; +} + +K_PLUGIN_FACTORY_WITH_JSON(plot2dassistant, "plot2dassistant.json", registerPlugin();) +#include "plot2dassistant.moc" diff --git a/src/assistants/plot2d/plot2dassistant.h b/src/assistants/plot2d/plot2dassistant.h new file mode 100644 index 0000000..8ee3f41 --- /dev/null +++ b/src/assistants/plot2d/plot2dassistant.h @@ -0,0 +1,22 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _PLOT2DASSISTANT_H +#define _PLOT2DASSISTANT_H + +#include "assistant.h" + +class Plot2dAssistant : public Cantor::Assistant +{ + Q_OBJECT + public: + Plot2dAssistant( QObject* parent, QList args ); + ~Plot2dAssistant() override = default; + + void initActions() override; + QStringList run(QWidget* parentt) override; +}; + +#endif /* _PLOT2DASSISTANT_H */ diff --git a/src/assistants/plot2d/plot2dassistant.json b/src/assistants/plot2d/plot2dassistant.json new file mode 100644 index 0000000..cc8f10b --- /dev/null +++ b/src/assistants/plot2d/plot2dassistant.json @@ -0,0 +1,68 @@ +{ + "KPlugin": { + "Description": "An Assistant dialog to simplify plotting of 2D functions", + "Description[ca@valencia]": "Un diàleg assistent per a simplificar la representació gràfica de funcions en 2D", + "Description[ca]": "Un diàleg assistent per a simplificar la representació gràfica de funcions en 2D", + "Description[cs]": "Pomocný dialog pro zjednodušení vytvoření grafu dvourozměrných funkcí", + "Description[de]": "Ein Assistent, um das Zeichnen von 2D-Funktionen zu vereinfachen", + "Description[el]": "Βοηθητικός διάλογος για απλούστευση της σχεδίασης δισδιάστατων συναρτήσεων", + "Description[en_GB]": "An Assistant dialogue to simplify plotting of 2D functions", + "Description[es]": "Un diálogo de asistente para simplificar el dibujo de funciones gráficas en 2D", + "Description[et]": "2D jooniste loomist lihtsustav abiline", + "Description[fi]": "Apuikkuna helpottamaan kaksiulotteisten funktioiden piirtämistä", + "Description[fr]": "Une boîte de dialogue d'assistant simplifiant le tracé de fonctions 2D", + "Description[gl]": "Un diálogo auxiliar para simplificar a representación de funcións 2D", + "Description[ia]": "Un dialogo Assistente per simplificar traciar (plot) functiones 2D", + "Description[it]": "Un assistente che semplifica la creazione di grafici di funzioni 2D", + "Description[ka]": "დამხმარე ფანჯარა 2D ფუნქციების დახაზვის გასამარტივებლად", + "Description[ko]": "2차원 함수 플롯을 간단하게 할 수 있도록 해 주는 도우미 대화 상자", + "Description[nl]": "Een assistentdialoog voor het vereenvoudigd tekenen van 2D-functies", + "Description[nn]": "Eit hjelpevindauge for plotting av 2D-funksjonar", + "Description[pl]": "Pomocnik upraszczający rysowanie funkcji 2D", + "Description[pt]": "Uma janela assistente para simplificar os gráficos de funções 2D", + "Description[pt_BR]": "Um assistente para simplificar o desenho de gráficos de funções em 2D", + "Description[ru]": "Диалоговое окно, упрощающее построение графиков функций", + "Description[sk]": "Asistenčný dialóg na uľahčenie kreslenia 2D funkcií", + "Description[sl]": "Pomočnik, ki poenostavi risanje 2D funkcij", + "Description[sv]": "En dialogruta med guide för att förenkla uppritning av tvådimensionella funktioner", + "Description[tr]": "2 boyutlu işlevleri çizdirmeyi kolaylaştıran yardımcı penceresi", + "Description[uk]": "Діалогове вікно помічника спрощення побудови графіків на площині", + "Description[x-test]": "xxAn Assistant dialog to simplify plotting of 2D functionsxx", + "Description[zh_CN]": "用于简化二维函数图绘制的助手对话框", + "Description[zh_TW]": "簡化繪製二維函式小助手對話框", + "Id": "Plot2d", + "License": "GPL", + "Name": "Plot2d", + "Name[ca@valencia]": "Plot2d", + "Name[ca]": "Plot2d", + "Name[cs]": "Graf2d", + "Name[da]": "Plot2d", + "Name[de]": "Plot2d", + "Name[el]": "Plot2d", + "Name[en_GB]": "Plot2d", + "Name[es]": "Plot2d", + "Name[et]": "2Djoonis", + "Name[fi]": "Plot2d", + "Name[fr]": "Tracé 2D", + "Name[gl]": "Plot2d", + "Name[ia]": "Plot2d", + "Name[it]": "Grafico 2D", + "Name[ka]": "Plot2d", + "Name[ko]": "2차원 플롯", + "Name[nl]": "Plot2d", + "Name[nn]": "Plot2d", + "Name[pl]": "Wykres 2D", + "Name[pt]": "Gráfico 2d", + "Name[pt_BR]": "Gráfico em 2D", + "Name[ru]": "График функции", + "Name[sk]": "Plot2d", + "Name[sl]": "Izriši v 2D", + "Name[sv]": "Rita i två dimensioner", + "Name[tr]": "2B Çizim", + "Name[uk]": "Plot2d", + "Name[x-test]": "xxPlot2dxx", + "Name[zh_CN]": "Plot2d", + "Name[zh_TW]": "繪製平面圖" + }, + "RequiredExtensions": "PlotExtension" +} diff --git a/src/assistants/plot2d/plot2ddlg.ui b/src/assistants/plot2d/plot2ddlg.ui new file mode 100644 index 0000000..ca3a31b --- /dev/null +++ b/src/assistants/plot2d/plot2ddlg.ui @@ -0,0 +1,97 @@ + + + Plot2dAssistantBase + + + + 0 + 0 + 314 + 349 + + + + + + + + + Expression: + + + + + + + + + + + + Variable + + + true + + + false + + + + + + Name + + + + + + + + + + Minimum: + + + + + + + + + + Maximum: + + + + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + KLineEdit + QLineEdit +
      klineedit.h
      +
      +
      + + expression + variable + min + max + + + +
      diff --git a/src/assistants/plot3d/CMakeLists.txt b/src/assistants/plot3d/CMakeLists.txt new file mode 100644 index 0000000..bbb9f0e --- /dev/null +++ b/src/assistants/plot3d/CMakeLists.txt @@ -0,0 +1,9 @@ +set( Plot3dAssistant_SRCS + plot3dassistant.cpp +) + +ki18n_wrap_ui(Plot3dAssistant_SRCS plot3ddlg.ui) + +add_assistant(plot3dassistant ${Plot3dAssistant_SRCS}) + +install( FILES cantor_plot3d_assistant.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/cantor ) diff --git a/src/assistants/plot3d/cantor_plot3d_assistant.rc b/src/assistants/plot3d/cantor_plot3d_assistant.rc new file mode 100644 index 0000000..7d474ba --- /dev/null +++ b/src/assistants/plot3d/cantor_plot3d_assistant.rc @@ -0,0 +1,8 @@ + + + + &Plot + + + + diff --git a/src/assistants/plot3d/plot3dassistant.cpp b/src/assistants/plot3d/plot3dassistant.cpp new file mode 100644 index 0000000..2ff3e4a --- /dev/null +++ b/src/assistants/plot3d/plot3dassistant.cpp @@ -0,0 +1,77 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "plot3dassistant.h" + +#include +#include +#include +#include + +#include +#include +#include "ui_plot3ddlg.h" +#include "cantor_macros.h" +#include "backend.h" +#include "extension.h" + +Plot3dAssistant::Plot3dAssistant(QObject* parent, QList args) : Assistant(parent) +{ + Q_UNUSED(args) +} + +void Plot3dAssistant::initActions() +{ + setXMLFile(QLatin1String("cantor_plot3d_assistant.rc")); + QAction* plot3d=new QAction(i18n("Plot 3D"), actionCollection()); + actionCollection()->addAction(QLatin1String("plot3d_assistant"), plot3d); + connect(plot3d, &QAction::triggered, this, &Plot3dAssistant::requested); +} + +QStringList Plot3dAssistant::run(QWidget* parent) +{ + QPointer dlg=new QDialog(parent); + QWidget *widget=new QWidget(dlg); + Ui::Plot3dAssistantBase base; + base.setupUi(widget); + QVBoxLayout *mainLayout = new QVBoxLayout; + dlg->setLayout(mainLayout); + mainLayout->addWidget(widget); + + base.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + base.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + connect(base.buttonBox, SIGNAL(accepted()), dlg, SLOT(accept())); + connect(base.buttonBox, SIGNAL(rejected()), dlg, SLOT(reject())); + + QStringList result; + if( dlg->exec()) + { + const QString expression=base.expression->text(); + Cantor::PlotExtension::VariableParameter v1; + Cantor::PlotExtension::Interval i1; + v1.first=base.variable1->text(); + i1.first=base.min1->text(); + i1.second=base.max1->text(); + v1.second=i1; + + Cantor::PlotExtension::VariableParameter v2; + Cantor::PlotExtension::Interval i2; + v2.first=base.variable2->text(); + i2.first=base.min2->text(); + i2.second=base.max2->text(); + v2.second=i2; + + Cantor::PlotExtension* ext= + dynamic_cast(backend()->extension(QLatin1String("PlotExtension"))); + + result<plotFunction3d(expression, v1, v2); + } + + delete dlg; + return result; +} + +K_PLUGIN_FACTORY_WITH_JSON(plot3dassistant, "plot3dassistant.json", registerPlugin();) +#include "plot3dassistant.moc" diff --git a/src/assistants/plot3d/plot3dassistant.h b/src/assistants/plot3d/plot3dassistant.h new file mode 100644 index 0000000..bd87714 --- /dev/null +++ b/src/assistants/plot3d/plot3dassistant.h @@ -0,0 +1,22 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _PLOT3DASSISTANT_H +#define _PLOT3DASSISTANT_H + +#include "assistant.h" + +class Plot3dAssistant : public Cantor::Assistant +{ + Q_OBJECT + public: + Plot3dAssistant( QObject* parent, QList args ); + ~Plot3dAssistant() override = default; + + void initActions() override; + QStringList run(QWidget* parentt) override; +}; + +#endif /* _PLOT3DASSISTANT_H */ diff --git a/src/assistants/plot3d/plot3dassistant.json b/src/assistants/plot3d/plot3dassistant.json new file mode 100644 index 0000000..37db203 --- /dev/null +++ b/src/assistants/plot3d/plot3dassistant.json @@ -0,0 +1,68 @@ +{ + "KPlugin": { + "Description": "An Assistant dialog to simplify plotting of 3D functions", + "Description[ca@valencia]": "Un diàleg assistent per a simplificar la representació gràfica de funcions en 3D", + "Description[ca]": "Un diàleg assistent per a simplificar la representació gràfica de funcions en 3D", + "Description[cs]": "Pomocný dialog pro zjednodušení vytvoření grafu trojrozměrných funkcí", + "Description[de]": "Ein Assistent, um das Zeichnen von 3D-Funktionen zu vereinfachen", + "Description[el]": "Βοηθητικός διάλογος για απλούστευση της σχεδίασης τρισδιάστατων συναρτήσεων", + "Description[en_GB]": "An Assistant dialogue to simplify plotting of 3D functions", + "Description[es]": "Un diálogo de asistente para simplificar el dibujo de funciones gráficas en 3D", + "Description[et]": "3D jooniste loomist lihtsustav abiline", + "Description[fi]": "Apuikkuna helpottamaan kolmiulotteisten funktioiden piirtämistä", + "Description[fr]": "Une boîte de dialogue d'assistant simplifiant le tracé de fonctions 3D", + "Description[gl]": "Un diálogo auxiliar para simplificar a representación de funcións 3D", + "Description[ia]": "Un dialogo Assistente per simplificar traciar (plot) de functiones 3D ", + "Description[it]": "Un assistente che semplifica la creazione di grafici di funzioni 3D", + "Description[ka]": "დამხმარე ფანჯარა 3D ფუნქციების დახაზვის გასამარტივებლად", + "Description[ko]": "3차원 함수 플롯을 간단하게 할 수 있도록 해 주는 도우미 대화 상자", + "Description[nl]": "Een assistentdialoog voor het vereenvoudigd tekenen van 3D-functies", + "Description[nn]": "Eit hjelpevindauge for plotting av 3D-funksjonar", + "Description[pl]": "Pomocnik upraszczający rysowanie funkcji 3D", + "Description[pt]": "Uma janela assistente para simplificar os gráficos de funções 3D", + "Description[pt_BR]": "Um assistente para simplificar o desenho de gráficos de funções em 3D", + "Description[ru]": "Диалоговое окно, упрощающее построение объёмных графиков функций двух переменных", + "Description[sk]": "Asistenčný dialóg na uľahčenie kreslenia 3D funkcií", + "Description[sl]": "Pomočnik, ki poenostavi risanje 3D funkcij", + "Description[sv]": "En dialogruta med guide för att förenkla uppritning av tredimensionella funktioner", + "Description[tr]": "3 boyutlu işlevleri çizdirmeyi kolaylaştıran yardımcı penceresi", + "Description[uk]": "Діалогове вікно помічника спрощення побудови поверхонь", + "Description[x-test]": "xxAn Assistant dialog to simplify plotting of 3D functionsxx", + "Description[zh_CN]": "用于简化三维函数图绘制的助手对话框", + "Description[zh_TW]": "簡化繪製三維函式小助手對話框", + "Id": "Plot3d", + "License": "GPL", + "Name": "Plot3d", + "Name[ca@valencia]": "Plot3d", + "Name[ca]": "Plot3d", + "Name[cs]": "Graf3d", + "Name[da]": "Plot3d", + "Name[de]": "Plot3d", + "Name[el]": "Plot3d", + "Name[en_GB]": "Plot3d", + "Name[es]": "Plot3d", + "Name[et]": "3Djoonis", + "Name[fi]": "Plot3d", + "Name[fr]": "Tracé 3D", + "Name[gl]": "Plot3d", + "Name[ia]": "Plot3d", + "Name[it]": "Grafico 3D", + "Name[ka]": "Plot3d", + "Name[ko]": "3차원 플롯", + "Name[nl]": "Plot3d", + "Name[nn]": "Plot3d", + "Name[pl]": "Wykres 3D", + "Name[pt]": "Gráfico 3d", + "Name[pt_BR]": "Gráfico em 3D", + "Name[ru]": "Поверхность, задаваемая функцией", + "Name[sk]": "Plot3d", + "Name[sl]": "Izriši v 3D", + "Name[sv]": "Rita i tre dimensioner", + "Name[tr]": "3B Çizim", + "Name[uk]": "Plot3d", + "Name[x-test]": "xxPlot3dxx", + "Name[zh_CN]": "Plot3d", + "Name[zh_TW]": "繪製立體圖" + }, + "RequiredExtensions": "PlotExtension" +} diff --git a/src/assistants/plot3d/plot3ddlg.ui b/src/assistants/plot3d/plot3ddlg.ui new file mode 100644 index 0000000..2392fb0 --- /dev/null +++ b/src/assistants/plot3d/plot3ddlg.ui @@ -0,0 +1,142 @@ + + + Plot3dAssistantBase + + + + 0 + 0 + 459 + 263 + + + + + + + Expression: + + + + + + + + + + + + 1st Variable + + + true + + + false + + + + + + Name + + + + + + + + + + Minimum: + + + + + + + + + + Maximum: + + + + + + + + + + + + + 2nd Variable + + + true + + + false + + + + + + Name + + + + + + + + + + Minimum: + + + + + + + + + + Maximum: + + + + + + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + KLineEdit + QLineEdit +
      klineedit.h
      +
      +
      + + expression + variable1 + min1 + max1 + + + +
      diff --git a/src/assistants/runscript/CMakeLists.txt b/src/assistants/runscript/CMakeLists.txt new file mode 100644 index 0000000..687605e --- /dev/null +++ b/src/assistants/runscript/CMakeLists.txt @@ -0,0 +1,9 @@ +set( RunScriptAssistant_SRCS + runscriptassistant.cpp +) + +add_assistant(runscriptassistant ${RunScriptAssistant_SRCS}) + +target_link_libraries( cantor_runscriptassistant cantorlibs) + +install( FILES cantor_runscript_assistant.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/cantor ) diff --git a/src/assistants/runscript/cantor_runscript_assistant.rc b/src/assistants/runscript/cantor_runscript_assistant.rc new file mode 100644 index 0000000..154a9b8 --- /dev/null +++ b/src/assistants/runscript/cantor_runscript_assistant.rc @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assistants/runscript/runscriptassistant.cpp b/src/assistants/runscript/runscriptassistant.cpp new file mode 100644 index 0000000..f060324 --- /dev/null +++ b/src/assistants/runscript/runscriptassistant.cpp @@ -0,0 +1,51 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "runscriptassistant.h" + +#include +#include + +#include +#include +#include +#include +#include +#include "cantor_macros.h" +#include "backend.h" +#include "extension.h" + +RunScriptAssistant::RunScriptAssistant(QObject* parent, QList args) : Assistant(parent) +{ + Q_UNUSED(args) +} + +void RunScriptAssistant::initActions() +{ + setXMLFile(QLatin1String("cantor_runscript_assistant.rc")); + QAction* runscript=new QAction(i18n("Run Script"), actionCollection()); + runscript->setIcon(QIcon::fromTheme(icon())); + actionCollection()->addAction(QLatin1String("runscript_assistant"), runscript); + connect(runscript, &QAction::triggered, this, &RunScriptAssistant::requested); +} + +QStringList RunScriptAssistant::run(QWidget* parent) +{ + Cantor::ScriptExtension* ext= + dynamic_cast(backend()->extension(QLatin1String("ScriptExtension"))); + + QString file = QFileDialog::getOpenFileName(parent, QString(), QLatin1String("qfiledialog://cantor_script"), ext->scriptFileFilter()); + + if(file.isNull()) + { + return QStringList(); + }else + { + return QStringList()<runExternalScript(file); + } +} + +K_PLUGIN_FACTORY_WITH_JSON(runscriptassistant, "runscriptassistant.json", registerPlugin();) +#include "runscriptassistant.moc" diff --git a/src/assistants/runscript/runscriptassistant.h b/src/assistants/runscript/runscriptassistant.h new file mode 100644 index 0000000..87aee84 --- /dev/null +++ b/src/assistants/runscript/runscriptassistant.h @@ -0,0 +1,23 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _RUNSCRIPTASSISTANT_H +#define _RUNSCRIPTASSISTANT_H + +#include "assistant.h" + +class RunScriptAssistant : public Cantor::Assistant +{ + public: + RunScriptAssistant( QObject* parent, QList args ); + ~RunScriptAssistant() override = default; + + void initActions() override; + + QStringList run(QWidget* parentt) override; + +}; + +#endif /* _RUNSCRIPTASSISTANT_H */ diff --git a/src/assistants/runscript/runscriptassistant.json b/src/assistants/runscript/runscriptassistant.json new file mode 100644 index 0000000..2e22548 --- /dev/null +++ b/src/assistants/runscript/runscriptassistant.json @@ -0,0 +1,68 @@ +{ + "KPlugin": { + "Description": "An Assistant for running an external Script file", + "Description[ca@valencia]": "Un assistent per a executar un fitxer de script extern", + "Description[ca]": "Un assistent per a executar un fitxer de script extern", + "Description[cs]": "Pomocník pro spouštění externího skriptu", + "Description[de]": "Ein Assistent zum Ausführen externer Skriptdateien", + "Description[el]": "Βοηθητικός διάλογος για την εκτέλεση αρχείου εξωτερικού σεναρίου", + "Description[en_GB]": "An Assistant for running an external Script file", + "Description[es]": "Un asistente para ejecutar un archivo de script externo", + "Description[et]": "Välise skriptifaili käivitamise abiline", + "Description[fi]": "Opastettu toiminto ulkoisten skriptitiedostojen suorittamista varten", + "Description[fr]": "Un assistant permettant de lancer un fichier de script externe", + "Description[gl]": "Un asistente para executar un ficheiro de script externo", + "Description[ia]": "Un Assistente per executar un file de Script externe", + "Description[it]": "Un assistente che esegue file con script", + "Description[ka]": "დამხმარე ფანჯარა გარე სკრიპტის ფაილის გასაშვებად", + "Description[ko]": "외부 스크립트 파일을 실행하는 마법사", + "Description[nl]": "Een assistent voor het draaien van een extern scriptbestand", + "Description[nn]": "Eit hjelpevindauge for køyring av eksterne skriptfiler", + "Description[pl]": "Pomocnik do wykonywania zewnętrznych skryptów", + "Description[pt]": "Um assistente para executar um ficheiro de programa externo", + "Description[pt_BR]": "Um assistente para executar um arquivo de script externo", + "Description[ru]": "Мастер запуска сценариев", + "Description[sk]": "Asistent na spustenie externého súboru skriptu", + "Description[sl]": "Pomočnik za zaganjanje zunanjih skriptov", + "Description[sv]": "En guide för att köra en extern skriptfil", + "Description[tr]": "Harici betik çalıştırma penceresi", + "Description[uk]": "Помічник для запуску зовнішнього скриптового файла", + "Description[x-test]": "xxAn Assistant for running an external Script filexx", + "Description[zh_CN]": "用于运行外部脚本文件的助手", + "Description[zh_TW]": "執行外部文稿檔的小助手", + "Icon": "system-run", + "Id": "RunScript", + "License": "GPL", + "Name": "RunScript", + "Name[ca@valencia]": "ExecutaScript", + "Name[ca]": "ExecutaScript", + "Name[cs]": "Spustit skript", + "Name[de]": "Skript ausführen", + "Name[el]": "Εκτέλεση σεναρίου", + "Name[en_GB]": "RunScript", + "Name[es]": "RunScript", + "Name[et]": "Skriptikäivitaja", + "Name[fi]": "RunScript", + "Name[fr]": "Lancement de scripts", + "Name[gl]": "RunScript", + "Name[ia]": "RunScript (Script de execution)", + "Name[it]": "Esegui script", + "Name[ka]": "RunScript", + "Name[ko]": "스크립트 실행", + "Name[nl]": "RunScript", + "Name[nn]": "KøyrSkript", + "Name[pl]": "Uruchamianie skryptu", + "Name[pt]": "RunScript", + "Name[pt_BR]": "Execução de scripts", + "Name[ru]": "Запуск сценария", + "Name[sk]": "Spustiť skript", + "Name[sl]": "Zaženi skript", + "Name[sv]": "Kör skript", + "Name[tr]": "Betiği Çalıştır", + "Name[uk]": "Виконати скрипт", + "Name[x-test]": "xxRunScriptxx", + "Name[zh_CN]": "运行脚本", + "Name[zh_TW]": "執行文稿" + }, + "RequiredExtensions": "ScriptExtension" +} diff --git a/src/assistants/solve/CMakeLists.txt b/src/assistants/solve/CMakeLists.txt new file mode 100644 index 0000000..75dc420 --- /dev/null +++ b/src/assistants/solve/CMakeLists.txt @@ -0,0 +1,9 @@ +set( SolveAssistant_SRCS + solveassistant.cpp +) + +ki18n_wrap_ui(SolveAssistant_SRCS solvedlg.ui) + +add_assistant(solveassistant ${SolveAssistant_SRCS}) + +install( FILES cantor_solve_assistant.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/cantor ) diff --git a/src/assistants/solve/cantor_solve_assistant.rc b/src/assistants/solve/cantor_solve_assistant.rc new file mode 100644 index 0000000..acc8f6a --- /dev/null +++ b/src/assistants/solve/cantor_solve_assistant.rc @@ -0,0 +1,8 @@ + + + + &Calculate + + + + diff --git a/src/assistants/solve/solveassistant.cpp b/src/assistants/solve/solveassistant.cpp new file mode 100644 index 0000000..d691945 --- /dev/null +++ b/src/assistants/solve/solveassistant.cpp @@ -0,0 +1,67 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "solveassistant.h" + +#include +#include +#include +#include +#include +#include +#include +#include "ui_solvedlg.h" +#include "cantor_macros.h" +#include "backend.h" +#include "extension.h" + +SolveAssistant::SolveAssistant(QObject* parent, QList args) : Assistant(parent) +{ + Q_UNUSED(args) +} + +void SolveAssistant::initActions() +{ + setXMLFile(QLatin1String("cantor_solve_assistant.rc")); + QAction* solve=new QAction(i18n("Solve equations"), actionCollection()); + solve->setIcon(QIcon::fromTheme(icon())); + actionCollection()->addAction(QLatin1String("solve_assistant"), solve); + connect(solve, &QAction::triggered, this, &SolveAssistant::requested); +} + +QStringList SolveAssistant::run(QWidget* parent) +{ + QPointer dlg=new QDialog(parent); + QWidget *widget=new QWidget(dlg); + Ui::SolveAssistantBase base; + base.setupUi(widget); + QVBoxLayout *mainLayout = new QVBoxLayout; + dlg->setLayout(mainLayout); + mainLayout->addWidget(widget); + + base.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + base.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + + connect(base.buttonBox, SIGNAL(accepted()), dlg, SLOT(accept()) ); + connect(base.buttonBox, SIGNAL(rejected()), dlg, SLOT(reject()) ); + + QStringList result; + if( dlg->exec()) + { + QStringList equations=base.equations->toPlainText().split(QLatin1Char('\n')); + QStringList variables=base.variables->text().split(QLatin1String(", ")); + + Cantor::CASExtension* ext= + dynamic_cast(backend()->extension(QLatin1String("CASExtension"))); + + result<solve(equations, variables); + } + + delete dlg; + return result; +} + +K_PLUGIN_FACTORY_WITH_JSON(solveassistant, "solveassistant.json", registerPlugin();) +#include "solveassistant.moc" diff --git a/src/assistants/solve/solveassistant.h b/src/assistants/solve/solveassistant.h new file mode 100644 index 0000000..81c223a --- /dev/null +++ b/src/assistants/solve/solveassistant.h @@ -0,0 +1,23 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _SOLVEASSISTANT_H +#define _SOLVEASSISTANT_H + +#include "assistant.h" + +class SolveAssistant : public Cantor::Assistant +{ + public: + SolveAssistant( QObject* parent, QList args ); + ~SolveAssistant() override = default; + + void initActions() override; + + QStringList run(QWidget* parentt) override; + +}; + +#endif /* _SOLVEASSISTANT_H */ diff --git a/src/assistants/solve/solveassistant.json b/src/assistants/solve/solveassistant.json new file mode 100644 index 0000000..eefb997 --- /dev/null +++ b/src/assistants/solve/solveassistant.json @@ -0,0 +1,70 @@ +{ + "KPlugin": { + "Description": "An Assistant dialog to simplify solving of equations", + "Description[ca@valencia]": "Un diàleg assistent per a simplificar la resolució d'equacions", + "Description[ca]": "Un diàleg assistent per a simplificar la resolució d'equacions", + "Description[cs]": "Pomocný dialog pro zjednodušení řešení rovnic", + "Description[de]": "Ein Assistent, um das Lösen von Gleichungen zu vereinfachen", + "Description[el]": "Βοηθητικός διάλογος για απλούστευση της επίλυσης εξισώσεων", + "Description[en_GB]": "An Assistant dialogue to simplify solving of equations", + "Description[es]": "Un diálogo de asistente para simplificar la resolución de ecuaciones", + "Description[et]": "Võrrandite lahendamist lihtsustav abiline", + "Description[fi]": "Apuikkuna helpottamaan yhtälöiden ratkaisemista", + "Description[fr]": "Une boîte de dialogue d'assistant simplifiant la résolution d'équations", + "Description[gl]": "Un diálogo auxiliar para simplificar a resolución de ecuacións", + "Description[ia]": "Un dialogo Assistente per simplificar solver equationes", + "Description[it]": "Un assistente che semplifica la risoluzione di equazioni", + "Description[ka]": "დამხარე ფანჯარა ტოლობების ამოხსნის გასამარტივებლად", + "Description[ko]": "수식 풀이를 간단하게 할 수 있도록 해 주는 도우미 대화 상자", + "Description[nl]": "Een assistentdialoog voor het vereenvoudigen van het oplossen van vergelijkingen", + "Description[nn]": "Eit hjelpevindauge for løysing av likningar", + "Description[pl]": "Pomocnik upraszczający rozwiązywanie równań", + "Description[pt]": "Uma janela assistente para simplificar a resolução de equações", + "Description[pt_BR]": "Um assistente para simplificar a resolução de equações", + "Description[ru]": "Диалоговое окно, упрощающее процесс решения уравнений", + "Description[sk]": "Asistenčný dialóg na uľahčenie výpočtu rovníc", + "Description[sl]": "Pomočnik, ki poenostavi reševanje enačb", + "Description[sv]": "En dialogruta med en guide för att förenkla lösning av ekvationer", + "Description[tr]": "Eşitlikleri çözmeye yardımcı olan yardımcı penceresi", + "Description[uk]": "Діалогове вікно помічника у розв’язанні рівнянь", + "Description[x-test]": "xxAn Assistant dialog to simplify solving of equationsxx", + "Description[zh_CN]": "用于简化解方程式运算的助手对话框", + "Description[zh_TW]": "簡化解方程式的小助手對話框", + "Icon": "dialog-ok", + "Id": "Solve", + "License": "GPL", + "Name": "Solve", + "Name[ar]": "حل", + "Name[ca@valencia]": "Resol", + "Name[ca]": "Resol", + "Name[cs]": "Vyřešit", + "Name[da]": "Løs", + "Name[de]": "Lösen", + "Name[el]": "Επίλυση", + "Name[en_GB]": "Solve", + "Name[es]": "Resolver", + "Name[et]": "Lahendamine", + "Name[fi]": "Ratkaise", + "Name[fr]": "Résoudre", + "Name[gl]": "Resolver", + "Name[ia]": "Solve...", + "Name[it]": "Risolvi", + "Name[ka]": "ამოხსნა", + "Name[ko]": "풀기", + "Name[nl]": "Oplossen", + "Name[nn]": "Løys", + "Name[pl]": "Rozwiązywanie", + "Name[pt]": "Resolução", + "Name[pt_BR]": "Solucionar", + "Name[ru]": "Решение уравнений", + "Name[sk]": "Riešiť", + "Name[sl]": "Reši", + "Name[sv]": "Lös", + "Name[tr]": "Çözümle", + "Name[uk]": "Розв’язати", + "Name[x-test]": "xxSolvexx", + "Name[zh_CN]": "解答", + "Name[zh_TW]": "解決" + }, + "RequiredExtensions": "CASExtension" +} diff --git a/src/assistants/solve/solvedlg.ui b/src/assistants/solve/solvedlg.ui new file mode 100644 index 0000000..8c3b11c --- /dev/null +++ b/src/assistants/solve/solvedlg.ui @@ -0,0 +1,60 @@ + + + SolveAssistantBase + + + + 0 + 0 + 400 + 300 + + + + + + + + + Equations: + + + + + + + + + + + + + + Variables: + + + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + KLineEdit + QLineEdit +
      klineedit.h
      +
      +
      + + +
      diff --git a/src/backendchoosedialog.cpp b/src/backendchoosedialog.cpp new file mode 100644 index 0000000..2427a85 --- /dev/null +++ b/src/backendchoosedialog.cpp @@ -0,0 +1,137 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2019-2022 Alexander Semke +*/ + +#include "backendchoosedialog.h" +#include "lib/backend.h" +#include "settings.h" + +#include +#include +#include +#include + +#include +#include +#include +#include + +BackendChooseDialog::BackendChooseDialog(QWidget* parent) : QDialog(parent) +{ + QWidget* w = new QWidget(this); + m_ui.setupUi(w); + + QGridLayout* layout = new QGridLayout; + setLayout(layout); + layout->addWidget(w); + + m_ui.backendList->setIconSize(QSize(KIconLoader::SizeMedium, KIconLoader::SizeMedium)); + m_ui.backendList->setSortingEnabled(true); + connect(m_ui.backendList, &QListWidget::currentItemChanged, this, &BackendChooseDialog::updateContent); + connect(m_ui.backendList, &QListWidget::itemDoubleClicked, this, [=]() { + if (m_ui.buttonBox->button(QDialogButtonBox::Ok)->isEnabled()) + accept(); + }); + + m_ui.buttonBox->button(QDialogButtonBox::Ok); + m_ui.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + m_ui.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + + for (auto* backend : Cantor::Backend::availableBackends()) + { + qDebug() << backend->name() << backend->isEnabled() << backend->requirementsFullfilled(); + if(!backend->isEnabled()) + if (backend->requirementsFullfilled()) + continue; + + QListWidgetItem* item = new QListWidgetItem(m_ui.backendList); + item->setText(backend->name()); + item->setIcon(QIcon::fromTheme(backend->icon())); + m_ui.backendList->addItem(item); + if(m_ui.backendList->currentItem() == nullptr) + m_ui.backendList->setCurrentItem(item); + + if(backend->name()==Settings::self()->defaultBackend()) + m_ui.backendList->setCurrentItem(item); + } + + int height = m_ui.backendList->iconSize().height() * m_ui.backendList->count(); + m_ui.backendList->setMinimumSize(0, height); + + + setWindowTitle(i18n("Select the Backend")); + setWindowIcon(QIcon::fromTheme(QLatin1String("run-build"))); + + connect(m_ui.buttonBox, &QDialogButtonBox::accepted, this, &BackendChooseDialog::accept); + connect(m_ui.buttonBox, &QDialogButtonBox::rejected, this, &BackendChooseDialog::close); + connect(this, &BackendChooseDialog::accepted, this, &BackendChooseDialog::onAccept); + + // open URLs in the external browser + m_ui.descriptionView->setOpenLinks(false); + connect(m_ui.descriptionView, &QTextBrowser::anchorClicked, this, [=](const QUrl &link) + { + QDesktopServices::openUrl(QUrl(link)); + }); + + //restore saved settings if available + create(); // ensure there's a window created + KConfigGroup conf(KSharedConfig::openConfig(), "BackendChooseDialog"); + if (conf.exists()) { + KWindowConfig::restoreWindowSize(windowHandle(), conf); + resize(windowHandle()->size()); // workaround for QTBUG-40584 + } else + resize(QSize(500, 200).expandedTo(minimumSize())); +} + +BackendChooseDialog::~BackendChooseDialog() { + KConfigGroup conf(KSharedConfig::openConfig(), "BackendChooseDialog"); + KWindowConfig::saveWindowSize(windowHandle(), conf); +} + +void BackendChooseDialog::onAccept() +{ + m_backend = m_ui.backendList->currentItem()->text(); + if(m_ui.makeDefault->isChecked()) + { + Settings::self()->setDefaultBackend(m_backend); + Settings::self()->save(); + } +} + +void BackendChooseDialog::updateContent() +{ + auto* current = Cantor::Backend::getBackend( m_ui.backendList->currentItem()->text() ); + if (current) + { + QString desc; + QString reason; + QString header = i18n("

      %1

      " + "
      Recommended version: %2
      ", + current->name(), current->version()); + QString info = i18n("
      %1

      " + "
      See %2 for more information.
      ", + current->description(), current->url()); + + if (current->requirementsFullfilled(&reason)) + { + desc = header + info; + m_ui.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true); + m_ui.makeDefault->setEnabled(true); + } + else + { + QString reasonMsg = i18n("
      Some requirements are not fulfilled: %1
      ", reason); + desc = header + reasonMsg + info; + m_ui.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); + m_ui.makeDefault->setEnabled(false); + } + m_ui.descriptionView->setHtml(desc); + } +} + +QString BackendChooseDialog::backendName() +{ + return m_backend; +} diff --git a/src/backendchoosedialog.h b/src/backendchoosedialog.h new file mode 100644 index 0000000..4468ec4 --- /dev/null +++ b/src/backendchoosedialog.h @@ -0,0 +1,31 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _BACKENDCHOOSEDIALOG_H +#define _BACKENDCHOOSEDIALOG_H + +#include + +#include + +class BackendChooseDialog : public QDialog +{ + Q_OBJECT + public: + explicit BackendChooseDialog(QWidget* parent); + ~BackendChooseDialog() override; + + QString backendName(); + + protected Q_SLOTS: + void onAccept(); + void updateContent(); + + private: + Ui::BackendChooserBase m_ui; + QString m_backend; +}; + +#endif /* _BACKENDCHOOSEDIALOG_H */ diff --git a/src/backendchooser.ui b/src/backendchooser.ui new file mode 100644 index 0000000..db33475 --- /dev/null +++ b/src/backendchooser.ui @@ -0,0 +1,55 @@ + + + BackendChooserBase + + + + 0 + 0 + 620 + 461 + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + QListView::TopToBottom + + + QListView::Adjust + + + QListView::ListMode + + + + + + + Make this the default backend + + + + + + + + 2 + 1 + + + + + + + + + diff --git a/src/backends/CMakeLists.txt b/src/backends/CMakeLists.txt new file mode 100644 index 0000000..693fb87 --- /dev/null +++ b/src/backends/CMakeLists.txt @@ -0,0 +1,90 @@ +function(add_backend name) + + kcoreaddons_add_plugin("cantor_${name}" + SOURCES ${ARGN} + INSTALL_NAMESPACE "cantor/backends") + + target_link_libraries("cantor_${name}" + cantorlibs) + +endfunction() + +add_subdirectory(maxima) +add_subdirectory(octave) +add_subdirectory(scilab) + +set(cantor_HELP + qthelpconfig.cpp +) + +ki18n_wrap_ui(cantor_HELP qthelpconfig.ui) +ki18n_wrap_ui(cantor_HELP qthelpconfigeditdialog.ui) + +add_library(cantor_help STATIC ${cantor_HELP}) +target_link_libraries(cantor_help KF5::SyntaxHighlighting KF5::I18n KF5::IconThemes KF5::NewStuffWidgets KF5::KIOWidgets Qt5::Help) + +if(NOT WIN32) + add_subdirectory(sage) +endif(NOT WIN32) + +set_package_properties(Analitza5 PROPERTIES DESCRIPTION "A library provided by KAlgebra." + URL "https://edu.kde.org/kalgebra/" + TYPE OPTIONAL + PURPOSE "Backend to use KAlgebra with Cantor.") + +find_package(Analitza5) +if(Analitza5_FOUND) + add_subdirectory(kalgebra) +endif(Analitza5_FOUND) + +set_package_properties(R PROPERTIES DESCRIPTION "A free software environment for statistical computing and graphics." + URL "https://www.r-project.org/" + TYPE OPTIONAL + PURPOSE "Backend to use R with Cantor.") + +find_package(R) +if(R_FOUND) + add_subdirectory(R) +endif(R_FOUND) + +set_package_properties(Qalculate PROPERTIES DESCRIPTION "A multi-purpose desktop calculator with support for customizable functions, units and arbitrary precision." + URL "https://qalculate.github.io/" + TYPE OPTIONAL + PURPOSE "Backend to use Qalculate with Cantor.") + +# Due this bug (https://github.com/Qalculate/libqalculate/issues/171) +set(QALCULATE_MIN_VERSION 3.8.0) +find_package(Qalculate) +if(QALCULATE_FOUND) + add_subdirectory(qalculate) +endif(QALCULATE_FOUND) + +set_package_properties(Python3 PROPERTIES TYPE OPTIONAL + PURPOSE "Backend to use Python with Cantor.") + +find_package(Python3 COMPONENTS Development) +if(Python3_FOUND) + add_subdirectory(python) +endif() + +set_package_properties(LuaJIT PROPERTIES DESCRIPTION "A lightweight, extensible programming language (luajit implementation)." + URL "https://www.lua.org/" + TYPE OPTIONAL + PURPOSE "Backend to use Lua (luajit2) with Cantor.") + +find_package(LuaJIT) +if(LUAJIT_FOUND) + add_subdirectory(lua) +endif(LUAJIT_FOUND) + +set_package_properties( + Julia + PROPERTIES DESCRIPTION "A high-level, high-performance dynamic programming language for technical computing" + URL "https://julialang.org/" + TYPE OPTIONAL + PURPOSE "Backend to use Julia with Cantor.") + +find_package(Julia) +if(Julia_FOUND) + add_subdirectory(julia) +endif() diff --git a/src/backends/R/CMakeLists.txt b/src/backends/R/CMakeLists.txt new file mode 100644 index 0000000..0a66a29 --- /dev/null +++ b/src/backends/R/CMakeLists.txt @@ -0,0 +1,53 @@ +include_directories(${R_INCLUDEDIR}) +LINK_DIRECTORIES(${R_SHAREDLIBDIR}) + +if(NOT WIN32) +# rserver is using RInterface.h which is Unix only +# see https://colinfay.me/writing-r-extensions/linking-guis-and-other-front-ends-to-r.html +add_subdirectory(rserver) +endif() + +set( RBackend_SRCS + rbackend.cpp + rsession.cpp + rexpression.cpp + rextensions.cpp + rcompletionobject.cpp + rhighlighter.cpp + rkeywords.cpp + rsettingswidget.cpp + rvariablemodel.cpp + ../backendsettingswidget.cpp +) + +kconfig_add_kcfg_files(RBackend_SRCS rserver/settings.kcfgc) + +set(network_xml rserver/org.kde.Cantor.R.xml) +QT5_ADD_DBUS_INTERFACE(RBackend_SRCS ${network_xml} rserver_interface ) + +ki18n_wrap_ui(RBackend_SRCS settings.ui) + +add_backend(rbackend ${RBackend_SRCS}) + +set_target_properties( cantor_rbackend PROPERTIES INSTALL_RPATH_USE_LINK_PATH false) +target_link_libraries( cantor_rbackend cantor_help ${R_USED_LIBS} KF5::SyntaxHighlighting) +if(MSVC) +# When compiling with MSVC, we have to create a .lib file for R.dll, first +find_package(Python3 COMPONENTS Interpreter REQUIRED) +add_custom_target(R_lib COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/GenLibFile.py ${R_R_LIBRARY} ${CMAKE_BINARY_DIR} ${CMAKE_SYSTEM_PROCESSOR} + COMMENT "Generate .lib file for R.dll") +add_dependencies(cantor_rbackend R_lib) +endif(MSVC) + +if(BUILD_TESTING) + add_executable( testr testr.cpp) + add_test(NAME testr COMMAND testr) + ecm_mark_as_test(testr) + target_link_libraries( testr + Qt5::Test + cantorlibs + cantortest + ) +endif(BUILD_TESTING) + +install( FILES cantor_r.knsrc DESTINATION ${KDE_INSTALL_KNSRCDIR} ) diff --git a/src/backends/R/DESIGN b/src/backends/R/DESIGN new file mode 100644 index 0000000..eef3b8f --- /dev/null +++ b/src/backends/R/DESIGN @@ -0,0 +1,24 @@ +This backend integrates the R environment into Cantor. + +The design of the R backend is different from the other backends: +As R offers a C API, there is no necesity for parsing output. +As the R API is not thread-save and to not let the backend freeze +Cantors ui, the backend is implemented as 2 parts: + +- The RServer: + This is a separate application, that uses the R-API to run commands, + and exposes it's functionality over DBUS + +- The R backend: + This implements the Cantor interfaces, and starts the RServer. It delivers + the commands to the server over DBUS, and connects to it's signals to get + the result. + +To embed plots, the RServer creates a png paint device, and checks if it gets +changed while a computation is running. If so, the url of the png is delivered +as result, and a new png-device is created, with a new temporary file. +(NOTE: instead of png, eps should be used, but there were some problems when I first +tried) + +The Code to access the R-API is heavily based on the RInside library +by Dirk Eddelbuettel, see http://dirk.eddelbuettel.com/code/rinside.html diff --git a/src/backends/R/GenLibFile.py b/src/backends/R/GenLibFile.py new file mode 100644 index 0000000..1ab8764 --- /dev/null +++ b/src/backends/R/GenLibFile.py @@ -0,0 +1,28 @@ +import subprocess +import os +import sys + +# Generate a .lib file for a given .dll +# This assumed dumpbin and lib to be in the path, which they should be, when compiling with MSVC (and that's what this is needed for) +# +# Usage: python3 GenLibFile.py XYZ.dll output_directory architecture + +dllfile = sys.argv[1] +workdir = sys.argv[2] +arch = sys.argv[3] +base = os.path.basename(dllfile).replace(".dll", "") +deffile = base + ".def" +libfile = base + ".lib" + +dump = subprocess.check_output(["dumpbin", "/exports", dllfile]).decode("latin1").splitlines() +exports = [] +for line in dump: + fields = line.split() + if len(fields) != 4: + continue + exports.append(fields[3]) +os.chdir(workdir) +with open(os.path.join(workdir, deffile), "wt+") as outdef: + outdef.write("EXPORTS\n") + outdef.write("\n".join(exports)) +subprocess.call(["lib", f"/def:{deffile}", f"/out:{libfile}", f"/machine:{arch}"]) diff --git a/src/backends/R/cantor_r.knsrc b/src/backends/R/cantor_r.knsrc new file mode 100644 index 0000000..898bd6e --- /dev/null +++ b/src/backends/R/cantor_r.knsrc @@ -0,0 +1,7 @@ +[KNewStuff3] +ProvidersUrl=https://autoconfig.kde.org/ocs/providers.xml +Categories=Cantor (Maxima),Cantor (Sage),Cantor (KAlgebra),Cantor (Qalculate),Cantor (Python 2),Cantor (Python 3),Cantor (Scilab),Cantor (Octave),Cantor (R),Cantor (Lua) +UploadCategories=Cantor (R) +TargetDir=cantor/examples +Uncompress=never +CustomName=true diff --git a/src/backends/R/rbackend.cpp b/src/backends/R/rbackend.cpp new file mode 100644 index 0000000..a36f579 --- /dev/null +++ b/src/backends/R/rbackend.cpp @@ -0,0 +1,108 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2019 Alexander Semke +*/ + +#include "rbackend.h" +#include "rsession.h" +#include "rextensions.h" +#include "settings.h" +#include "rsettingswidget.h" + +#include + +RBackend::RBackend(QObject* parent,const QList& args) : Cantor::Backend(parent, args) +{ + new RScriptExtension(this); + new RPlotExtension(this); + new RVariableManagementExtension(this); +} + +RBackend::~RBackend() +{ + qDebug()<<"Destroying RBackend"; +} + +QString RBackend::id() const +{ + return QLatin1String("r"); +} + +QString RBackend::version() const +{ + return QLatin1String("Undefined"); +} + +Cantor::Session* RBackend::createSession() +{ + qDebug()<<"Spawning a new R session"; + + return new RSession(this); +} + +Cantor::Backend::Capabilities RBackend::capabilities() const +{ + qDebug()<<"Requesting capabilities of RSession"; + Cantor::Backend::Capabilities cap= + SyntaxHighlighting| + Completion | + InteractiveMode; + + if (RServerSettings::variableManagement()) + cap |= VariableManagement; + + return cap; +} + +bool RBackend::requirementsFullfilled(QString* const reason) const +{ +#ifdef Q_OS_WIN + const QString& path = QStandardPaths::findExecutable(QLatin1String("cantor_rserver.exe")); +#else + const QString& path = QStandardPaths::findExecutable(QLatin1String("cantor_rserver")); +#endif + return Cantor::Backend::checkExecutable(QLatin1String("Cantor RServer"), path, reason); +} + +QWidget* RBackend::settingsWidget(QWidget* parent) const +{ + return new RSettingsWidget(parent, id()); +} + +KConfigSkeleton* RBackend::config() const +{ + return RServerSettings::self(); +} + +QUrl RBackend::helpUrl() const +{ + return QUrl(i18nc("the url to the documentation of R, please check if there is a translated version and use the correct url", + "https://cran.r-project.org/manuals.html")); +} + +QString RBackend::defaultHelp() const +{ + //description of R's help system taken from https://www.r-project.org/help.html + //@tranlators: don't tranlate R's keywords here ("help", etc.) which are put inside + return i18n("

      R' Help System: help() and ?:


      " + "The help() function and ? help operator in R provide access to the documentation pages for R functions, data sets, and other objects, both for packages in the standard R distribution and for contributed packages.

      " + "To access documentation for the standard lm (linear model) function, for example, enter the command help(lm) or help(\"lm\"), or ?lm or ?\"lm\" (i.e., the quotes are optional).

      " + "To access help for a function in a package that’s not currently loaded, specify in addition the name of the package: For example, to obtain documentation for the rlm() (robust linear model) function in the MASS package, help(rlm, package=\"MASS\").

      " + "Standard names in R consist of upper- and lower-case letters, numerals (0-9), underscores (_), and periods (.), and must begin with a letter or a period. To obtain help for an object with a non-standard name (such as the help operator ?), the name must be quoted: for example, help('?') or ?\"?\".

      " + "You may also use the help() function to access information about a package in your library — for example, help(package=\"MASS\") — which displays an index of available help pages for the package along with some other information.

      " + "Help pages for functions usually include a section with executable examples illustrating how the functions work. You can execute these examples in the current R session via the example() command: e.g., example(lm)."); +} + +QString RBackend::description() const +{ + return i18n("R is a language and environment for statistical computing and graphics, similar to the S language and environment.
      "\ + "It provides a wide variety of statistical (linear and nonlinear modelling, "\ + "classical statistical tests, time-series analysis, classification, clustering, ...) "\ + "and graphical techniques, and is highly extensible. The S language is often the "\ + "vehicle of choice for research in statistical methodology, "\ + "and R provides an Open Source route to participation in that activity."); +} + +K_PLUGIN_FACTORY_WITH_JSON(rbackend, "rbackend.json", registerPlugin();) +#include "rbackend.moc" diff --git a/src/backends/R/rbackend.h b/src/backends/R/rbackend.h new file mode 100644 index 0000000..14c77e7 --- /dev/null +++ b/src/backends/R/rbackend.h @@ -0,0 +1,33 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _RBACKEND_H +#define _RBACKEND_H + +#include "backend.h" + +class RBackend : public Cantor::Backend +{ + Q_OBJECT + public: + explicit RBackend(QObject* parent = nullptr, const QList& args = QList()); + ~RBackend() override; + + QString id() const override; + QString version() const override; + Cantor::Session* createSession() override; + Cantor::Backend::Capabilities capabilities() const override; + bool requirementsFullfilled(QString* const reason = nullptr) const override; + + QWidget* settingsWidget(QWidget* parent) const override; + KConfigSkeleton* config() const override; + + QUrl helpUrl() const override; + QString defaultHelp() const override; + QString description() const override; +}; + + +#endif /* _RBACKEND_H */ diff --git a/src/backends/R/rbackend.json b/src/backends/R/rbackend.json new file mode 100644 index 0000000..f1ee3ad --- /dev/null +++ b/src/backends/R/rbackend.json @@ -0,0 +1,69 @@ +{ + "KPlugin": { + "Description": "Backend for The R Project for Statistical Computing", + "Description[ca@valencia]": "Dorsal per al projecte R, paquet d'estadística per ordinador", + "Description[ca]": "Dorsal per al projecte R, paquet d'estadística per ordinador", + "Description[cs]": "Podpůrná vrstva pro projekt R pro statistické výpočty", + "Description[de]": "„The R Project for Statistical Computing“-Modul für Cantor", + "Description[el]": "Σύστημα υποστήριξης για το έργο στατιστικών υπολογισμών R", + "Description[en_GB]": "Backend for The R Project for Statistical Computing", + "Description[es]": "Motor para el Proyecto R para cálculos estadísticos", + "Description[et]": "Statistikaarvutuste projekti R taustaprogramm", + "Description[fi]": "R-projektin tilastolaskentaohjelmiston taustajärjestelmä", + "Description[fr]": "Moteur pour le projet « R » pour le calcul de statistiques", + "Description[gl]": "Infraestrutura do Proxecto R de estatística computacional", + "Description[ia]": "Retroadministration per le Projecto R per Computar Statistic", + "Description[it]": "Motore per il progetto R per l'analisi statistica", + "Description[ka]": "R -ს უკანაბოლო სტატისტიკური გამოთვლებისთვის", + "Description[ko]": "통계 컴퓨팅용 R 백엔드", + "Description[nl]": "Backend voor het R Project voor statistische berekeningen", + "Description[nn]": "Motor for statistikkprogramvara R", + "Description[pl]": "Silnik dla środowiska \"The R Projekt\" do obliczeń statystycznych", + "Description[pt]": "Infra-estrutura do Projecto R de Cálculo Estatístico", + "Description[pt_BR]": "Infraestrutura para computação estatística do projeto R", + "Description[ru]": "Модуль поддержки пакета для статистических вычислений R", + "Description[sk]": "Backend pre R Project pre štatistické výpočty", + "Description[sl]": "Zaledje za projekt R za statistično računanje", + "Description[sv]": "Bakgrundsprogram för R-projektet i statistisk datorberäkning", + "Description[tr]": "İstatistiksel hesaplama için R Project arka ucu", + "Description[uk]": "Модуль проєкту R для статистичних обчислень", + "Description[x-test]": "xxBackend for The R Project for Statistical Computingxx", + "Description[zh_CN]": "R 计算器统计工程的后端", + "Description[zh_TW]": "R 統計計算專案的後端介面", + "Icon": "rbackend", + "Id": "R", + "License": "GPL", + "Name": "R", + "Name[ca@valencia]": "R", + "Name[ca]": "R", + "Name[cs]": "R", + "Name[da]": "R", + "Name[de]": "R", + "Name[el]": "R", + "Name[en_GB]": "R", + "Name[es]": "R", + "Name[et]": "R", + "Name[fi]": "R", + "Name[fr]": "R", + "Name[gl]": "R", + "Name[ia]": "R", + "Name[it]": "R", + "Name[ka]": "R", + "Name[ko]": "R", + "Name[nl]": "R", + "Name[nn]": "R", + "Name[pl]": "R", + "Name[pt]": "R", + "Name[pt_BR]": "R", + "Name[ru]": "R", + "Name[sk]": "R", + "Name[sl]": "R", + "Name[sv]": "R", + "Name[tr]": "R", + "Name[uk]": "R", + "Name[x-test]": "xxRxx", + "Name[zh_CN]": "R", + "Name[zh_TW]": "R", + "Website": "https://www.r-project.org/" + } +} diff --git a/src/backends/R/rcompletionobject.cpp b/src/backends/R/rcompletionobject.cpp new file mode 100644 index 0000000..af3309a --- /dev/null +++ b/src/backends/R/rcompletionobject.cpp @@ -0,0 +1,95 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Oleksiy Protas +*/ + +#include "rcompletionobject.h" +#include "rkeywords.h" +#include "rsession.h" +#include "result.h" + +using namespace Cantor; + +RCompletionObject::RCompletionObject(const QString& command, int index, RSession* session): + CompletionObject(session), + m_expression(nullptr) +{ + setLine(command, index); +} + +RCompletionObject::~RCompletionObject() +{ + if (m_expression) + m_expression->setFinishingBehavior(Expression::FinishingBehavior::DeleteOnFinish); +} + +void RCompletionObject::fetchCompletions() +{ + if (session()->status() != Session::Done) + { + QStringList allCompletions; + + allCompletions << RKeywords::instance()->keywords(); + + setCompletions(allCompletions); + emit fetchingDone(); + } + else + { + if (m_expression) + return; + + const QString cmd = QLatin1String("%completion ")+command(); + m_expression = session()->evaluateExpression(cmd, Expression::FinishingBehavior::DoNotDelete, true); + connect(m_expression, &Expression::statusChanged, this, &RCompletionObject::receiveCompletions); + } +} + +void RCompletionObject::receiveCompletions(Cantor::Expression::Status status) +{ + switch(status) + { + case Expression::Status::Done: + { + if (!m_expression->result()) + break; + + const QChar recordSep(30); + const QChar unitSep(31); + + const QString output = m_expression->result()->data().toString(); + + const QString& token = output.section(unitSep, 0, 0); + const QStringList& options = output.section(unitSep, 1, 1).split(recordSep, QString::SkipEmptyParts); + + // TODO: investigate the empty token problem + /* Not so fast, evidently KCompletion requires a nonempty token, hence this stub */ + if (token.length()==0 && command().length()!=0) + { + /* Adding previous symbol to token, ugly but effective */ + QString lastchar(command().at(command().length()-1)); + setCommand(lastchar); + setCompletions(QStringList(options).replaceInStrings(QRegExp(QLatin1String("^")), lastchar)); + } + else + { + setCommand(token); + setCompletions(options); + } + break; + } + case Expression::Status::Error: + qWarning() << "R code for completion command finishs with error message: " << m_expression->errorMessage(); + break; + + case Expression::Status::Interrupted: + break; + + default: + return; + } + + m_expression->deleteLater(); + m_expression = nullptr; + emit fetchingDone(); +} diff --git a/src/backends/R/rcompletionobject.h b/src/backends/R/rcompletionobject.h new file mode 100644 index 0000000..393dd93 --- /dev/null +++ b/src/backends/R/rcompletionobject.h @@ -0,0 +1,29 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Oleksiy Protas +*/ + +#ifndef _RCOMPLETIONOBJECT_H +#define _RCOMPLETIONOBJECT_H + +#include "completionobject.h" +#include + +class RSession; + +class RCompletionObject : public Cantor::CompletionObject +{ + Q_OBJECT + public: + RCompletionObject( const QString& cmd, int index, RSession* session ); + ~RCompletionObject() override; + + protected Q_SLOTS: + void fetchCompletions() override; + void receiveCompletions(Cantor::Expression::Status status); + + private: + Cantor::Expression* m_expression; +}; + +#endif /* _RCOMPLETIONOBJECT_H */ diff --git a/src/backends/R/rexpression.cpp b/src/backends/R/rexpression.cpp new file mode 100644 index 0000000..e847dae --- /dev/null +++ b/src/backends/R/rexpression.cpp @@ -0,0 +1,142 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2018-2022 Alexander Semke +*/ + +#include "rexpression.h" + +#include "textresult.h" +#include "imageresult.h" +#include "helpresult.h" +#include "epsresult.h" +#include "rsession.h" + +#include +#include +#include +#include +#include + +RExpression::RExpression( Cantor::Session* session, bool internal ) : Cantor::Expression(session, internal) +{ + +} + +void RExpression::evaluate() +{ + const auto& cmd = command(); + + //check whether we need to interpret the current command as a help command. + //see https://www.r-project.org/help.html for the list of different ways to get help in R. + if(cmd.startsWith(QLatin1Char('?')) || cmd.startsWith(QStringLiteral("help(")) + || cmd.startsWith(QStringLiteral("apropos(")) + || cmd.startsWith(QStringLiteral("vignette(")) + || cmd == QStringLiteral("demos()") + || cmd.startsWith(QStringLiteral("help.search(")) ) + setIsHelpRequest(true); + + session()->enqueueExpression(this); +} + +void RExpression::interrupt() +{ + qDebug()<<"interrupting command"; + setStatus(Cantor::Expression::Interrupted); +} + +void RExpression::parseOutput(const QString& text) +{ + //qDebug() << "output text: " << text; + if (!text.trimmed().isEmpty()) + { + if(isHelpRequest()) + addResult(new Cantor::HelpResult(text)); + else + addResult(new Cantor::TextResult(text)); + } + setStatus(Cantor::Expression::Done); +} + +void RExpression::parseError(const QString& text) +{ + qDebug() << "error text: " << text; + setErrorMessage(text); + setStatus(Cantor::Expression::Error); +} + +void RExpression::addInformation(const QString& information) +{ + static_cast(session())->sendInputToServer(information); +} + +void RExpression::showFilesAsResult(const QStringList& files) +{ + qDebug()<<"showing files: "< + SPDX-FileCopyrightText: 2018-2022 Alexander Semke +*/ + +#ifndef _REXPRESSION_H +#define _REXPRESSION_H + +#include "expression.h" + +class RExpression : public Cantor::Expression +{ + Q_OBJECT + public: + enum ServerReturnCode{SuccessCode=0, ErrorCode, InterruptedCode}; + explicit RExpression( Cantor::Session*, bool internal = false); + ~RExpression() override = default; + + void evaluate() override; + void interrupt() override; + void parseOutput(const QString&) override; + void parseError(const QString&) override; + void showFilesAsResult(const QStringList&); + + void addInformation(const QString&) override; + + private: + bool m_isHelpRequest{false}; +}; + +#endif /* _REXPRESSION_H */ diff --git a/src/backends/R/rextensions.cpp b/src/backends/R/rextensions.cpp new file mode 100644 index 0000000..7ec8070 --- /dev/null +++ b/src/backends/R/rextensions.cpp @@ -0,0 +1,84 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "rextensions.h" + +#include + +RScriptExtension::RScriptExtension(QObject* parent) : Cantor::ScriptExtension(parent) +{ + +} + +QString RScriptExtension::runExternalScript(const QString& path) +{ + return QString::fromLatin1("source(\"%1\")").arg(path); +} + +QString RScriptExtension::scriptFileFilter() +{ + return i18n("R script file (*.R)"); +} + +QString RScriptExtension::highlightingMode() +{ + return QLatin1String("r script"); +} + +RPlotExtension::RPlotExtension(QObject* parent) : Cantor::AdvancedPlotExtension(parent) +{ +} +// TODO: injection prevention +QString RPlotExtension::accept(const Cantor::PlotTitleDirective& directive) const +{ + return QLatin1String("main=\"")+directive.title()+QLatin1String("\""); +} + +QString RPlotExtension::accept(const Cantor::OrdinateScaleDirective& directive) const +{ + return QLatin1String("ylim=range(")+QString::number(directive.min())+QLatin1String(",")+QString::number(directive.max())+QLatin1String(")"); +} + +QString RPlotExtension::accept(const Cantor::AbscissScaleDirective& directive) const +{ + return QLatin1String("xlim=range(")+QString::number(directive.min())+QLatin1String(",")+QString::number(directive.max())+QLatin1String(")"); +} + +RVariableManagementExtension::RVariableManagementExtension(QObject* parent) : Cantor::VariableManagementExtension(parent) +{ + +} + +QString RVariableManagementExtension::addVariable(const QString& name, const QString& value) +{ + return setValue(name, value); +} + +QString RVariableManagementExtension::setValue(const QString& name, const QString& value) +{ + return QString::fromLatin1("%1 = %2").arg(name, value); +} + +QString RVariableManagementExtension::removeVariable(const QString& name) +{ + return QString::fromLatin1("remove(%1)").arg(name); +} + +QString RVariableManagementExtension::saveVariables(const QString& fileName) +{ + Q_UNUSED(fileName); + return QString(); +} + +QString RVariableManagementExtension::loadVariables(const QString& fileName) +{ + Q_UNUSED(fileName); + return QString(); +} + +QString RVariableManagementExtension::clearVariables() +{ + return QLatin1String("rm(list=ls())"); +} diff --git a/src/backends/R/rextensions.h b/src/backends/R/rextensions.h new file mode 100644 index 0000000..7d89fac --- /dev/null +++ b/src/backends/R/rextensions.h @@ -0,0 +1,52 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _REXTENSIONS_H +#define _REXTENSIONS_H + +#include "extension.h" +#include "directives/plotdirectives.h" + +class RScriptExtension : public Cantor::ScriptExtension +{ + public: + explicit RScriptExtension(QObject* parent); + ~RScriptExtension() override = default; + public Q_SLOTS: + QString runExternalScript(const QString& path) override; + QString scriptFileFilter() override; + QString highlightingMode() override; +}; + +class RPlotExtension : public Cantor::AdvancedPlotExtension, + public Cantor::AdvancedPlotExtension::DirectiveAcceptor, + public Cantor::AdvancedPlotExtension::DirectiveAcceptor, + public Cantor::AdvancedPlotExtension::DirectiveAcceptor +{ + public: + explicit RPlotExtension(QObject* parent); + ~RPlotExtension() override = default; + QString accept(const Cantor::PlotTitleDirective&) const override; + QString accept(const Cantor::OrdinateScaleDirective&) const override; + QString accept(const Cantor::AbscissScaleDirective&) const override; + + protected: + QString plotCommand() const override { return QLatin1String("plot"); } +}; + +class RVariableManagementExtension : public Cantor::VariableManagementExtension +{ + public: + explicit RVariableManagementExtension(QObject* parent); + ~RVariableManagementExtension() override = default; + QString addVariable(const QString& name, const QString& value) override; + QString setValue(const QString& name, const QString& value) override; + QString removeVariable(const QString& name) override; + QString saveVariables(const QString& fileName) override; + QString loadVariables(const QString& fileName) override; + QString clearVariables() override; +}; + +#endif /* _REXTENSIONS_H */ diff --git a/src/backends/R/rhighlighter.cpp b/src/backends/R/rhighlighter.cpp new file mode 100644 index 0000000..20dcde6 --- /dev/null +++ b/src/backends/R/rhighlighter.cpp @@ -0,0 +1,64 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2010 Oleksiy Protas +*/ + +#include "rhighlighter.h" +#include "rkeywords.h" +#include "rsession.h" +#include "rvariablemodel.h" + +#include +#include + +const QStringList RHighlighter::operators_list=QStringList() + << QLatin1String("(\\+|\\-|\\*{1,2}|/|<=?|>=?|={1,2}|\\!=?|\\|{1,2}|&{1,2}|:{1,3}|\\^|@|\\$|~)") + << QLatin1String("%[^%]*%"); // Taken in r.xml syntax file from KSyntaxHighlighter + +const QStringList RHighlighter::specials_list=QStringList() + << QLatin1String("BUG") << QLatin1String("TODO") << QLatin1String("FIXME") << QLatin1String("NB") << QLatin1String("WARNING") << QLatin1String("ERROR"); + +RHighlighter::RHighlighter(QObject* parent, RSession* session) : Cantor::DefaultHighlighter(parent, session) +{ + Cantor::DefaultVariableModel* model = session->variableModel(); + if (model) + { + RVariableModel* RModel = static_cast(model); + connect(RModel, &RVariableModel::constantsAdded, this, &RHighlighter::addVariables); + connect(RModel, &RVariableModel::constantsRemoved, this, &RHighlighter::removeRules); + } + + addKeywords(RKeywords::instance()->keywords()); + + foreach (const QString& s, operators_list) + addRule(QRegularExpression(s), operatorFormat()); + foreach (const QString& s, specials_list) + addRule(QRegularExpression(QLatin1String("\\b")+s+QLatin1String("\\b")), commentFormat()); + + addRule(QRegularExpression(QStringLiteral("\"[^\"]*\"")), stringFormat()); + addRule(QRegularExpression(QStringLiteral("'[^']*'")), stringFormat()); + + addRule(QRegularExpression(QStringLiteral("#[^\n]*")), commentFormat()); +} + +QStringList RHighlighter::parseBlockTextToWords(const QString& originalText) +{ + QString text = originalText; + + static const QString replacer1 = QLatin1String("___CANTOR_R_REPLACER_1___"); + static const QString replacer2 = QLatin1String("___CANTOR_R_REPLACER_2___"); + + text.replace(QLatin1String("-"), replacer1); + text.replace(QLatin1String("."), replacer2); + + QStringList words = text.split(QRegularExpression(QStringLiteral("\\b")), QString::SkipEmptyParts); + + for (int i = 0; i < words.size(); i++) + { + words[i].replace(replacer1, QLatin1String("-")); + words[i].replace(replacer2, QLatin1String(".")); + } + + return words; +} diff --git a/src/backends/R/rhighlighter.h b/src/backends/R/rhighlighter.h new file mode 100644 index 0000000..4ff6f42 --- /dev/null +++ b/src/backends/R/rhighlighter.h @@ -0,0 +1,38 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Oleksiy Protas +*/ + +#ifndef _RHIGHLIGHTER_H +#define _RHIGHLIGHTER_H + +#include "defaulthighlighter.h" + +#include + +class RSession; + +class RHighlighter : public Cantor::DefaultHighlighter +{ + Q_OBJECT + + public: + explicit RHighlighter( QObject* parent, RSession* session); + ~RHighlighter() override = default; + + protected: + QStringList parseBlockTextToWords(const QString& text) override; + + private: + inline void formatRule(const QRegExp &p, const QTextCharFormat &fmt, const QString& text,bool shift=false); + inline void massFormat(const QVector& rules, const QTextCharFormat &fmt, const QString& text,bool shift=false); + + static const QStringList operators_list; + static const QStringList specials_list; + QVector operators; + QVector specials; + QVector functions; + QVector variables; +}; + +#endif /* _RHIGHLIGHTER_H */ diff --git a/src/backends/R/rkeywords.cpp b/src/backends/R/rkeywords.cpp new file mode 100644 index 0000000..19ad6cb --- /dev/null +++ b/src/backends/R/rkeywords.cpp @@ -0,0 +1,35 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Sirgienko Nikita +*/ + +#include "rkeywords.h" + +#include +#include + +RKeywords::RKeywords() +{ + KSyntaxHighlighting::Repository m_repository; + KSyntaxHighlighting::Definition definition = m_repository.definitionForName(QLatin1String("R Script")); + + m_keywords = definition.keywordList(QLatin1String("controls")); + m_keywords << definition.keywordList(QLatin1String("words")); +} + +RKeywords* RKeywords::instance() +{ + static RKeywords* inst = nullptr; + + if(inst == nullptr){ + inst = new RKeywords(); + std::sort(inst->m_keywords.begin(), inst->m_keywords.end()); + } + + return inst; +} + +const QStringList& RKeywords::keywords() const +{ + return m_keywords; +} diff --git a/src/backends/R/rkeywords.h b/src/backends/R/rkeywords.h new file mode 100644 index 0000000..f6cef57 --- /dev/null +++ b/src/backends/R/rkeywords.h @@ -0,0 +1,23 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Sirgienko Nikita +*/ + +#ifndef _RKEYWORDS_H +#define _RKEYWORDS_H + +#include + +class RKeywords +{ + public: + static RKeywords* instance(); + + const QStringList& keywords() const; + + private: + RKeywords(); + ~RKeywords() = default; + QStringList m_keywords; +}; +#endif /* _RKEYWORDS_H */ diff --git a/src/backends/R/rserver/CMakeLists.txt b/src/backends/R/rserver/CMakeLists.txt new file mode 100644 index 0000000..6f54f16 --- /dev/null +++ b/src/backends/R/rserver/CMakeLists.txt @@ -0,0 +1,27 @@ +include_directories(${R_INCLUDE_DIR}) + +set( RServer_SRCS + rserver.cpp + rcallbacks.cpp + main.cpp +) + +kconfig_add_kcfg_files(RServer_SRCS settings.kcfgc) +install(FILES rserver.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) + +QT5_ADD_DBUS_ADAPTOR(RServer_SRCS org.kde.Cantor.R.xml + rserver.h RServer) + + +add_custom_command(OUTPUT renvvars.h COMMAND ${R_EXECUTABLE} --slave --file=${CMAKE_CURRENT_SOURCE_DIR}/tools/envvars.r > ${CMAKE_CURRENT_BINARY_DIR}/renvvars.h) +add_custom_target(renvvars DEPENDS renvvars.h) + +add_custom_command(OUTPUT rautoloads.h COMMAND ${R_EXECUTABLE} --slave --file=${CMAKE_CURRENT_SOURCE_DIR}/tools/autoloads.r > ${CMAKE_CURRENT_BINARY_DIR}/rautoloads.h ) +add_custom_target(rautoloads DEPENDS rautoloads.h) + +add_executable( cantor_rserver ${RServer_SRCS} ) +set_target_properties( cantor_rserver PROPERTIES INSTALL_RPATH_USE_LINK_PATH false) +target_link_libraries( cantor_rserver cantorlibs ${R_LIBRARIES} KF5::KIOCore) +add_dependencies(cantor_rserver renvvars rautoloads) + +install(TARGETS cantor_rserver ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} ) diff --git a/src/backends/R/rserver/main.cpp b/src/backends/R/rserver/main.cpp new file mode 100644 index 0000000..9ad1b8f --- /dev/null +++ b/src/backends/R/rserver/main.cpp @@ -0,0 +1,40 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2018 Alexander Semke +*/ + +#include "rserver.h" + +#include +#include +#include +#include +#include + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + + if (!QDBusConnection::sessionBus().isConnected()) { + qWarning() << "Can't connect to the D-Bus session bus.\n" + "To start it, run: eval `dbus-launch --auto-syntax`"; + return 1; + } + + const QString &serviceName = + QString::fromLatin1("org.kde.Cantor.R-%1").arg(app.applicationPid()); + + if (!QDBusConnection::sessionBus().registerService(serviceName)) { + qWarning() << QDBusConnection::sessionBus().lastError().message(); + return 2; + } + + RServer server; + QDBusConnection::sessionBus().registerObject( + QLatin1String("/"), + &server + ); + + return app.exec(); +} diff --git a/src/backends/R/rserver/org.kde.Cantor.R.xml b/src/backends/R/rserver/org.kde.Cantor.R.xml new file mode 100644 index 0000000..4cdf539 --- /dev/null +++ b/src/backends/R/rserver/org.kde.Cantor.R.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/backends/R/rserver/rcallbacks.cpp b/src/backends/R/rserver/rcallbacks.cpp new file mode 100644 index 0000000..e2d390e --- /dev/null +++ b/src/backends/R/rserver/rcallbacks.cpp @@ -0,0 +1,127 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "rcallbacks.h" + +#include "rserver.h" + +#include +#include + +#include +#include +#include + +#ifdef Q_OS_WIN +#include +#include +#undef ERROR // clashes with R +#define Win32 // needed for R includes +#include +#include +#include + +structRstart RK_R_Params; + +extern "C" { + // why oh why isn't Rinterface.h available on Windows? + LibExtern void* R_GlobalContext; + LibExtern uintptr_t R_CStackLimit; + LibExtern void R_SaveGlobalEnvToFile(char*); +} +#else +#include +#endif + +#include + +RServer* server; +Expression* currentExpression; + +void setupCallbacks(RServer* r) +{ + qDebug()<<"RServer: "<<"setting up callbacks"; + + server=r; + currentExpression=nullptr; + + R_Outputfile=nullptr; + R_Consolefile=nullptr; + + ptr_R_WriteConsole=nullptr; + ptr_R_WriteConsoleEx=onWriteConsoleEx; + ptr_R_ShowMessage=onShowMessage; + ptr_R_Busy=onBusy; + ptr_R_ReadConsole=onReadConsole; + ptr_R_ShowFiles=onShowFiles; +} + +void setCurrentExpression(Expression* expr) +{ + currentExpression=expr; +} + + +enum OutputType { NormalOutput=0, ErrorOutput=1 }; + +void onWriteConsoleEx(const char* text, int size, int otype) +{ + const QString string=QString::fromUtf8(text, size); + if (otype==NormalOutput) + { + currentExpression->std_buffer+=string; + }else + { + currentExpression->err_buffer+=string; + } +} + +void onShowMessage(const char* text) +{ + const QString string=QString::fromUtf8(text); + currentExpression->std_buffer+=string; +} + +void onBusy(int which) +{ + qDebug()<<"RServer: "<<"onBusy: "<requestInput(QLatin1String(prompt)); + + if(input.size()>buflen) + input.truncate(buflen); + + strcpy( (char*) buf, input.toStdString().c_str()); + + return input.size(); +} + +int onShowFiles(int nfile, const char** file, const char** headers, const char* wtitle, Rboolean del, const char* pager) +{ + int i; + qDebug()<<"RServer: "<<"show files: "; + for (i=0;iaddFileToOutput(QString::fromLocal8Bit(file[i])); + + currentExpression->hasOtherResults=true; + + return 0; +} diff --git a/src/backends/R/rserver/rcallbacks.h b/src/backends/R/rserver/rcallbacks.h new file mode 100644 index 0000000..4501d25 --- /dev/null +++ b/src/backends/R/rserver/rcallbacks.h @@ -0,0 +1,32 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _RCALLBACKS_H +#define _RCALLBACKS_H + +class RServer; +class Expression; + +//R includes +#include +#include +#include +#include +#define R_INTERFACE_PTRS +#include + +//This File implements the necessary callbacks for R +//The information gathered will be pushed back to the RThread + +void setupCallbacks(RServer* server); +void setCurrentExpression(Expression* expression); + +void onWriteConsoleEx(const char* text, int size,int otype); +void onShowMessage(const char* text); +void onBusy(int which); +int onReadConsole(const char* prompt, unsigned char* buf, int buflen, int hist); +int onShowFiles(int nfile, const char** file, const char** headers, const char* wtitle, Rboolean del, const char* pager); + +#endif /* _RCALLBACKS_H */ diff --git a/src/backends/R/rserver/rserver.cpp b/src/backends/R/rserver/rserver.cpp new file mode 100644 index 0000000..04f6194 --- /dev/null +++ b/src/backends/R/rserver/rserver.cpp @@ -0,0 +1,552 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2010 Oleksiy Protas +*/ + +// TODO: setStatus in syntax and completions, to be or not to be? +// on the one hand comme il faut, on another, causes flickering in UI + +#include "rserver.h" +#include +#include "radaptor.h" +#include "rcallbacks.h" +#include "settings.h" + +#include +#include +#include +#include + +#ifdef Q_OS_WIN +#include +#else +#include +#endif + +//R includes +#include +#include +#include +#include +#define R_INTERFACE_PTRS +#include + +const QChar RServer::recordSep(30); +const QChar RServer::unitSep(31); + + +RServer::RServer() : m_isInitialized(false),m_isCompletionAvailable(false) +{ + new RAdaptor(this); + + m_tmpDir = QDir::tempPath() + QString::fromLatin1("/cantor_rserver-%1").arg(getpid()); + QDir dir; + dir.mkdir(m_tmpDir); + qDebug()<<"RServer: "<<"storing plots at "<integratePlots()) + { + qDebug()<<"RServer: "<<"integrating plots"; + newPlotDevice(); + } + + //Loading automatic run scripts + foreach (const QString& path, RServerSettings::self()->autorunScripts()) + { + int errorOccurred=0; + if (QFile::exists(path)) + R_tryEval(lang2(install("source"),mkString(path.toUtf8().data())),nullptr,&errorOccurred); + // TODO: error handling + else + { + qDebug()<<"RServer: "<<(QLatin1String("Script ")+path+QLatin1String(" not found")); // FIXME: or should we throw a messagebox + } + } + + qDebug()<<"RServer: "<<"done initializing"; +} + +//Code from the RInside library +void RServer::autoload() +{ + #include "rautoloads.h" + + /* Autoload default packages and names from autoloads.h + * + * This function behaves in almost every way like + * R's autoload: + * function (name, package, reset = FALSE, ...) + * { + * if (!reset && exists(name, envir = .GlobalEnv, inherits = FALSE)) + * stop("an object with that name already exists") + * m <- match.call() + * m[[1]] <- as.name("list") + * newcall <- eval(m, parent.frame()) + * newcall <- as.call(c(as.name("autoloader"), newcall)) + * newcall$reset <- NULL + * if (is.na(match(package, .Autoloaded))) + * assign(".Autoloaded", c(package, .Autoloaded), env = .AutoloadEnv) + * do.call("delayedAssign", list(name, newcall, .GlobalEnv, + * .AutoloadEnv)) + * invisible() + * } + * + * What's missing is the updating of the string vector .Autoloaded with + * the list of packages, which by my code analysis is useless and only + * for informational purposes. + * + */ + //void autoloads(void){ + + SEXP da, dacall, al, alcall, AutoloadEnv, name, package; + int i,j, idx=0, errorOccurred, ptct; + + /* delayedAssign call*/ + PROTECT(da = Rf_findFun(Rf_install("delayedAssign"), R_GlobalEnv)); + PROTECT(AutoloadEnv = Rf_findVar(Rf_install(".AutoloadEnv"), R_GlobalEnv)); + if (AutoloadEnv == R_NilValue){ + qDebug()<<"RServer: "<<"Cannot find .AutoloadEnv"; + //exit(1); + } + PROTECT(dacall = allocVector(LANGSXP,5)); + SETCAR(dacall,da); + /* SETCAR(CDR(dacall),name); */ /* arg1: assigned in loop */ + /* SETCAR(CDR(CDR(dacall)),alcall); */ /* arg2: assigned in loop */ + SETCAR(CDR(CDR(CDR(dacall))),R_GlobalEnv); /* arg3 */ + SETCAR(CDR(CDR(CDR(CDR(dacall)))),AutoloadEnv); /* arg3 */ + + /* autoloader call */ + PROTECT(al = Rf_findFun(Rf_install("autoloader"), R_GlobalEnv)); + PROTECT(alcall = allocVector(LANGSXP,3)); + SET_TAG(alcall, R_NilValue); /* just like do_ascall() does */ + SETCAR(alcall,al); + /* SETCAR(CDR(alcall),name); */ /* arg1: assigned in loop */ + /* SETCAR(CDR(CDR(alcall)),package); */ /* arg2: assigned in loop */ + + ptct = 5; + for(i = 0; i < packc; ++i){ + idx += (i != 0)? packobjc[i-1] : 0; + for (j = 0; j < packobjc[i]; ++j){ + /*printf("autload(%s,%s)\n",packobj[idx+j],pack[i]);*/ + + PROTECT(name = NEW_CHARACTER(1)); + PROTECT(package = NEW_CHARACTER(1)); + SET_STRING_ELT(name, 0, COPY_TO_USER_STRING(packobj[idx+j])); + SET_STRING_ELT(package, 0, COPY_TO_USER_STRING(pack[i])); + + /* Set up autoloader call */ + PROTECT(alcall = allocVector(LANGSXP,3)); + SET_TAG(alcall, R_NilValue); /* just like do_ascall() does */ + SETCAR(alcall,al); + SETCAR(CDR(alcall),name); + SETCAR(CDR(CDR(alcall)),package); + + /* Setup delayedAssign call */ + SETCAR(CDR(dacall),name); + SETCAR(CDR(CDR(dacall)),alcall); + + R_tryEval(dacall,R_GlobalEnv,&errorOccurred); + if (errorOccurred){ + qDebug()<<"RServer: "<<"Error calling delayedAssign!"; + //exit(1); + } + + ptct += 3; + } + } + UNPROTECT(ptct); + + /* Initialize the completion libraries if needed, adapted from sys-std.c of R */ + // TODO: should we do this or init on demand? + // if (completion is needed) // TODO: discuss how to pass parameter + { + /* First check if namespace is loaded */ + if (findVarInFrame(R_NamespaceRegistry,install("utils"))==R_UnboundValue) + { /* Then try to load it */ + SEXP cmdSexp, cmdexpr; + ParseStatus status; + int i; + const char *p="try(loadNamespace('rcompgen'), silent=TRUE)"; + + PROTECT(cmdSexp=mkString(p)); + cmdexpr=PROTECT(R_ParseVector(cmdSexp,-1,&status,R_NilValue)); + if(status==PARSE_OK) + { + for(i=0;icmd=cmd; + expr->hasOtherResults=false; + + setStatus(RServer::Busy); + + setCurrentExpression(expr); + + expr->std_buffer.clear(); + expr->err_buffer.clear(); + + ReturnCode returnCode=RServer::SuccessCode; + QString returnText; + QStringList neededFiles; + + //Code to evaluate an R function (taken from RInside library) + ParseStatus status; + SEXP cmdSexp, cmdexpr = R_NilValue; + SEXP result = nullptr; + int i, errorOccurred; + QByteArray memBuf; + + memBuf.append(cmd.toUtf8()); + + PROTECT(cmdSexp = allocVector(STRSXP, 1)); + SET_STRING_ELT(cmdSexp, 0, mkChar((char*)memBuf.data())); + + cmdexpr = PROTECT(R_ParseVector(cmdSexp, -1, &status, R_NilValue)); + switch (status) + { + case PARSE_OK: + qDebug()<<"RServer: "<<"PARSING "< 1 */ + for (i = 0; i < length(cmdexpr); ++i) { + + result = R_tryEval(VECTOR_ELT(cmdexpr, i), nullptr, &errorOccurred); + if (errorOccurred) + { + qDebug()<<"RServer: "<<"Error occurred."; + break; + } + // TODO: multiple results + } + memBuf.clear(); + break; + case PARSE_INCOMPLETE: + /* need to read another line */ + qDebug()<<"RServer: "<<"parse incomplete.."; + break; + case PARSE_NULL: + qDebug()<<"RServer: "<<"ParseStatus is null: "<std_buffer<<" err: "<err_buffer; + //if the command didn't print anything on its own, print the result + //but only, if result exists, because comment expression don't create result + + + //TODO: handle some known result types like lists, matrices separately + // to make the output look better, by using html (tables etc.) + if(result && expr->std_buffer.isEmpty()&&expr->err_buffer.isEmpty()) + { + qDebug()<<"RServer: "<<"printing result..."; + SEXP count=PROTECT(R_tryEval(lang2(install("length"),result),nullptr,&errorOccurred)); // TODO: error checks + if (*INTEGER(count)==0) + qDebug()<<"RServer: " << "no result, so show nothing"; + else + Rf_PrintValue(result); + UNPROTECT(1); + } + + + setCurrentExpression(nullptr); //is this save? + + if(!expr->err_buffer.isEmpty()) + { + returnCode=RServer::ErrorCode; + returnText=expr->err_buffer; + } + else + { + returnCode=RServer::SuccessCode; + returnText=expr->std_buffer; + + } + }else + { + returnCode=RServer::ErrorCode; + returnText=i18n("Error Parsing Command"); + } + + if(internal) + { + qDebug()<<"RServer: "<<"internal result: "<hasOtherResults=true; + newPlotDevice(); + neededFiles< +*/ + +#ifndef _RSERVER_H +#define _RSERVER_H + +#include +#include +#include +#include +#include + +class Expression +{ + public: + QString cmd; + int returnCode; + bool hasOtherResults; + QString err_buffer; + QString std_buffer; +}; + +class RServer : public QObject +{ + Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "org.kde.Cantor.R") + + public: + enum Status { Idle=0, Busy }; + enum ReturnCode { SuccessCode=0, ErrorCode, InterruptedCode}; + RServer( ); + ~RServer() override; + + void initR(); + void autoload(); + void endR(); + + QString requestInput(const QString& prompt); + void addFileToOutput(const QString& file); + + Q_SIGNALS: + void ready(); + void statusChanged(int status); + void expressionFinished(int returnCode, const QString& text, const QStringList& files); + void inputRequested(const QString& prompt); + + void requestAnswered(); + + public Q_SLOTS: + void runCommand(const QString& cmd, bool internal=false); + void answerRequest(const QString& answer); + + private: + struct CachedParsedNamespace { + QStringList functions; + QStringList constants; + }; + + private: + void setStatus(Status status); + void newPlotDevice(); + void completeCommand(const QString& cmd); // TODO: comment properly, only takes command from start to cursor + void listSymbols(); + + private: + const static QChar recordSep; + const static QChar unitSep; + + private: + bool m_isInitialized; + bool m_isCompletionAvailable; + Status m_status; + QString m_requestCache; + QString m_tmpDir; + QString m_curPlotFile; + QStringList m_expressionFiles; + QMap m_parsedNamespaces; +}; + +#endif /* _RSERVER_H */ diff --git a/src/backends/R/rserver/rserver.kcfg b/src/backends/R/rserver/rserver.kcfg new file mode 100644 index 0000000..0d80dd9 --- /dev/null +++ b/src/backends/R/rserver/rserver.kcfg @@ -0,0 +1,23 @@ + + + + + + + + + + true + + + + true + + + + + + diff --git a/src/backends/R/rserver/settings.kcfgc b/src/backends/R/rserver/settings.kcfgc new file mode 100644 index 0000000..b72ed9e --- /dev/null +++ b/src/backends/R/rserver/settings.kcfgc @@ -0,0 +1,3 @@ +File=rserver.kcfg +ClassName=RServerSettings +Singleton=true diff --git a/src/backends/R/rserver/tools/autoloads.r b/src/backends/R/rserver/tools/autoloads.r new file mode 100644 index 0000000..06d2e46 --- /dev/null +++ b/src/backends/R/rserver/tools/autoloads.r @@ -0,0 +1,29 @@ +#!/usr/bin/Rscript +# +# Script taken from RInside library +# +# This owes a lot to autoloads.R in the littler sources + +dp <- getOption("defaultPackages") +#dp <- dp[dp != 'datasets'] ## Rscript loads it too +#dp <- dp[dp != 'methods'] ## Rscript (in R 2.6.1) doesn't load methods either + +# Count of default packages +cat(" int packc = ",length(dp),";\n",sep='') + +# List of packages +cat(" const char *pack[] = {\n",paste(' "',dp,'"',sep='',collapse=",\n"),"\n };\n", sep="") + +packobjc <- array(0,dim=length(dp)) +packobj <- NULL +for (i in 1:length(dp)){ + obj = ls(paste("package:",dp[i],sep='')) + packobjc[i] = length(obj) + packobj = c(packobj,obj) +} + +# List of counts of objects per package +cat(" int packobjc[] = {\n ",paste(packobjc,sep='',collapse=",\n "),"\n };\n", sep="") + +# List of object names +cat(" const char *packobj[] = {\n ",paste('"',packobj,'"',sep='',collapse=",\n "),"\n };\n", sep="") diff --git a/src/backends/R/rserver/tools/envvars.r b/src/backends/R/rserver/tools/envvars.r new file mode 100755 index 0000000..8b830c5 --- /dev/null +++ b/src/backends/R/rserver/tools/envvars.r @@ -0,0 +1,17 @@ +#!/usr/bin/Rscript +# +# script taken from RInside library +# +# This owes a lot to littler.R in the littler sources + +ExcludeVars <- c("R_SESSION_TMPDIR","R_HISTFILE") +IncludeVars <- Sys.getenv() +IncludeVars <- IncludeVars[grep("^R_",names(IncludeVars),perl=TRUE)] +cat(" const char *R_VARS[] = {\n") +for (i in 1:length(IncludeVars)){ + if (names(IncludeVars)[i] %in% ExcludeVars) + next + IncludeVars[i] <- gsub("\\\\",'/',IncludeVars[i]) + cat(' "',names(IncludeVars)[i],'","',IncludeVars[i],'",\n',sep='') +} +cat(" nullptr\n };\n") diff --git a/src/backends/R/rsession.cpp b/src/backends/R/rsession.cpp new file mode 100644 index 0000000..d059f0f --- /dev/null +++ b/src/backends/R/rsession.cpp @@ -0,0 +1,187 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2018 Alexander Semke +*/ + +#include "rsession.h" +#include "rexpression.h" +#include "rcompletionobject.h" +#include "rhighlighter.h" +#include "rvariablemodel.h" +#include + +#include +#include +#include + +#ifndef Q_OS_WIN +#include +#endif + +RSession::RSession(Cantor::Backend* backend) : Session(backend), +m_process(nullptr), +m_rServer(nullptr) +{ + setVariableModel(new RVariableModel(this)); +} + +RSession::~RSession() +{ + if (m_process) + m_process->terminate(); +} + +void RSession::login() +{ + qDebug()<<"login"; + if (m_process) + return; + emit loginStarted(); + + m_process = new QProcess(this); + m_process->setProcessChannelMode(QProcess::ForwardedErrorChannel); +#ifdef Q_OS_WIN + m_process->start(QStandardPaths::findExecutable(QLatin1String("cantor_rserver.exe"))); +#else + m_process->start(QStandardPaths::findExecutable(QLatin1String("cantor_rserver"))); +#endif + + m_process->waitForStarted(); + m_process->waitForReadyRead(); + qDebug()<readAllStandardOutput(); + + m_rServer = new org::kde::Cantor::R(QString::fromLatin1("org.kde.Cantor.R-%1").arg(m_process->processId()), QLatin1String("/"), QDBusConnection::sessionBus(), this); + + connect(m_rServer, &org::kde::Cantor::R::statusChanged, this, &RSession::serverChangedStatus); + connect(m_rServer, &org::kde::Cantor::R::expressionFinished, this, &RSession::expressionFinished); + connect(m_rServer, &org::kde::Cantor::R::inputRequested, this, &RSession::inputRequested); + + changeStatus(Session::Done); + emit loginDone(); + qDebug()<<"login done"; +} + +void RSession::logout() +{ + qDebug()<<"logout"; + if (!m_process) + return; + + if(status() == Cantor::Session::Running) + interrupt(); + + m_process->kill(); + m_process->deleteLater(); + m_process = nullptr; + + Session::logout(); +} + +void RSession::interrupt() +{ + if(!expressionQueue().isEmpty()) + { + qDebug()<<"interrupting " << expressionQueue().first()->command(); + if(m_process && m_process->state() != QProcess::NotRunning) + { +#ifndef Q_OS_WIN + const int pid = m_process->processId(); + kill(pid, SIGINT); +#else + ; //TODO: interrupt the process on windows +#endif + } + for (auto* expression : expressionQueue()) + expression->setStatus(Cantor::Expression::Interrupted); + expressionQueue().clear(); + + qDebug()<<"done interrupting"; + } + + changeStatus(Cantor::Session::Done); +} + +Cantor::Expression* RSession::evaluateExpression(const QString& cmd, Cantor::Expression::FinishingBehavior behave, bool internal) +{ + qDebug()<<"evaluating: "<setFinishingBehavior(behave); + expr->setCommand(cmd); + + expr->evaluate(); + + return expr; +} + +Cantor::CompletionObject* RSession::completionFor(const QString& command, int index) +{ + auto* cmp = new RCompletionObject(command, index, this); + return cmp; +} + +QSyntaxHighlighter* RSession::syntaxHighlighter(QObject* parent) +{ + return new RHighlighter(parent, this); +} + +void RSession::serverChangedStatus(int status) +{ + qDebug()<<"changed status to "<status() == Cantor::Expression::Interrupted) + return; + + static_cast(expr)->showFilesAsResult(files); + + if(returnCode==RExpression::SuccessCode) + expr->parseOutput(text); + else if (returnCode==RExpression::ErrorCode) + expr->parseError(text); + + qDebug()<<"done running "<command(); + finishFirstExpression(); + } +} + +void RSession::runFirstExpression() +{ + if (expressionQueue().isEmpty()) + return; + + auto* expr = expressionQueue().first(); + qDebug()<<"running expression: "<command(); + + expr->setStatus(Cantor::Expression::Computing); + m_rServer->runCommand(expr->internalCommand(), expr->isInternal()); + changeStatus(Cantor::Session::Running); +} + +void RSession::sendInputToServer(const QString& input) +{ + QString s = input; + if(!input.endsWith(QLatin1Char('\n'))) + s += QLatin1Char('\n'); + m_rServer->answerRequest(s); +} + +void RSession::inputRequested(QString info) +{ + if (expressionQueue().isEmpty()) + return; + + emit expressionQueue().first()->needsAdditionalInformation(info); +} diff --git a/src/backends/R/rsession.h b/src/backends/R/rsession.h new file mode 100644 index 0000000..417f785 --- /dev/null +++ b/src/backends/R/rsession.h @@ -0,0 +1,51 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _RSESSION_H +#define _RSESSION_H + +#include +#include + +#include "session.h" +#include "rserver_interface.h" + +class RExpression; +class RVariableModel; +class QProcess; + +namespace Cantor { +class DefaultVariableModel; +} + +class RSession : public Cantor::Session +{ + Q_OBJECT + public: + explicit RSession( Cantor::Backend* backend); + ~RSession() override; + + void login() override; + void logout() override; + + void interrupt() override; + + Cantor::Expression* evaluateExpression(const QString& command, Cantor::Expression::FinishingBehavior behave = Cantor::Expression::FinishingBehavior::DoNotDelete, bool internal = false) override; + Cantor::CompletionObject* completionFor(const QString& command, int index=-1) override; + QSyntaxHighlighter* syntaxHighlighter(QObject* parent) override; + void runFirstExpression() override; + + void sendInputToServer(const QString& input); + protected Q_SLOTS: + void serverChangedStatus(int status); + void expressionFinished(int returnCode, const QString& text, const QStringList& files); + void inputRequested(QString info); + + private: + QProcess* m_process; + org::kde::Cantor::R* m_rServer; +}; + +#endif /* _RSESSION_H */ diff --git a/src/backends/R/rsettingswidget.cpp b/src/backends/R/rsettingswidget.cpp new file mode 100644 index 0000000..32ba60a --- /dev/null +++ b/src/backends/R/rsettingswidget.cpp @@ -0,0 +1,47 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Oleksiy Protas + SPDX-FileCopyrightText: 2020 Alexander Semke +*/ + +#include "rsettingswidget.h" + +#include +#include +#include +#include + +RSettingsWidget::RSettingsWidget(QWidget *parent, const QString& id) : BackendSettingsWidget(parent, id) +{ + setupUi(this); + + m_tabWidget = tabWidget; + m_tabDocumentation = tabDocumentation; + connect(tabWidget, &QTabWidget::currentChanged, this, &BackendSettingsWidget::tabChanged); + + kcfg_autorunScripts->lineEdit()->setReadOnly(true); + kcfg_autorunScripts->lineEdit()->installEventFilter(this); + kcfg_autorunScripts->lineEdit()->setToolTip(i18n("Double click to open file selection dialog")); +} + +bool RSettingsWidget::eventFilter(QObject *obj, QEvent *event) +{ + /* Intercepting the doubleclick events of LineEdit */ + if (obj == kcfg_autorunScripts->lineEdit() && event->type() == QEvent::MouseButtonDblClick) + { + QMouseEvent *ev=reinterpret_cast(event); + if (ev->button() == Qt::LeftButton) + { + displayFileSelectionDialog(); + return false; + } + } + return QObject::eventFilter(obj,event); +} + +void RSettingsWidget::displayFileSelectionDialog() +{ + QString path=QFileDialog::getOpenFileName(this,kcfg_autorunScripts->lineEdit()->text(),QLatin1String("/home"),i18n("*.R *.r|R source files (*.R, *.r)")); + if (path.length()>0) + kcfg_autorunScripts->lineEdit()->setText(path); +} diff --git a/src/backends/R/rsettingswidget.h b/src/backends/R/rsettingswidget.h new file mode 100644 index 0000000..8515887 --- /dev/null +++ b/src/backends/R/rsettingswidget.h @@ -0,0 +1,24 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Oleksiy Protas +*/ + +#ifndef _RSETTINGSWIDGET_H +#define _RSETTINGSWIDGET_H + +#include "ui_settings.h" +#include "../backendsettingswidget.h" + +class RSettingsWidget : public BackendSettingsWidget, public Ui::RSettingsBase +{ + Q_OBJECT + + public: + explicit RSettingsWidget(QWidget* parent = nullptr, const QString& id = QString()); + bool eventFilter(QObject*, QEvent*) override; + + public Q_SLOTS: + void displayFileSelectionDialog(); +}; + +#endif /* _RSETTINGSWIDGET_H */ diff --git a/src/backends/R/rvariablemodel.cpp b/src/backends/R/rvariablemodel.cpp new file mode 100644 index 0000000..e6aed40 --- /dev/null +++ b/src/backends/R/rvariablemodel.cpp @@ -0,0 +1,132 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Nikita Sirgienko +*/ + +#include "rvariablemodel.h" +#include "rkeywords.h" +#include "rsession.h" + +#include + +using namespace Cantor; + +RVariableModel::RVariableModel(RSession* session) : DefaultVariableModel(session) +{ +} + +RVariableModel::~RVariableModel() +{ + if (m_expression) + m_expression->setFinishingBehavior(Expression::FinishingBehavior::DeleteOnFinish); +} + +void RVariableModel::update() +{ + if (m_expression) + return; + + m_expression = session()->evaluateExpression(QLatin1String("%model update"), Expression::FinishingBehavior::DoNotDelete, true); + connect(m_expression, &Expression::statusChanged, this, &RVariableModel::parseResult); +} + +void RVariableModel::parseResult(Cantor::Expression::Status status) +{ + switch(status) + { + case Expression::Status::Done: + { + if (!m_expression->result()) + break; + + const QChar recordSep(30); + const QChar unitSep(31); + + const QString output = m_expression->result()->data().toString(); + + const QStringList& names = output.section(unitSep, 0, 0).split(recordSep, QString::SkipEmptyParts); + const QStringList& values = output.section(unitSep, 1, 1).split(recordSep, QString::SkipEmptyParts); + QStringList funcs = output.section(unitSep, 2, 2).split(recordSep, QString::SkipEmptyParts); + const QStringList& constants = output.section(unitSep, 3, 3).split(recordSep, QString::SkipEmptyParts); + + QList vars; + if (!values.isEmpty()) // Variables management disabled + for (int i = 0; i < names.size(); i++) + { + if (i < values.size()) + vars.append(Variable{names.at(i), values.at(i)}); + else + vars.append(Variable{names.at(i), QString()}); + } + else + for (int i = 0; i < names.size(); i++) + vars.append(Variable{names.at(i), QString()}); + + setVariables(vars); + + // Remove primitive function "(" because it not function for user calling (i guess) + // And the function with name like this make highlighting worse actually + funcs.removeOne(QLatin1String("(")); + + // Also removes syntax keywords from functions list, like "function" + for (const QString& keyword: RKeywords::instance()->keywords()) + funcs.removeOne(keyword); + + setFunctions(funcs); + setConstants(constants); + break; + } + case Expression::Status::Error: + qWarning() << "R code for update variable model finishs with error message: " << m_expression->errorMessage(); + break; + + case Expression::Status::Interrupted: + break; + + default: + return; + } + + m_expression->deleteLater(); + m_expression = nullptr; +} + +void RVariableModel::setConstants(QStringList newConstants) +{ + QStringList addedConstants; + QStringList removedConstants; + + //remove the old variables + int i = 0; + while (i < m_constants.size()) + { + //check if this var is present in the new variables + bool found = false; + for (const QString& constant : newConstants) + if(m_constants[i] == constant) + { + found=true; + break; + } + + if(!found) + { + removedConstants << m_constants[i]; + m_constants.removeAt(i); + } + else + i++; + } + + for (const QString& constant : newConstants) + { + if (!m_constants.contains(constant)) + { + addedConstants << constant; + m_constants.append(constant); + } + } + + emit constantsAdded(addedConstants); + emit constantsRemoved(removedConstants); +} diff --git a/src/backends/R/rvariablemodel.h b/src/backends/R/rvariablemodel.h new file mode 100644 index 0000000..ef08c28 --- /dev/null +++ b/src/backends/R/rvariablemodel.h @@ -0,0 +1,40 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Nikita Sirgienko +*/ + +#ifndef _RVARIABLEMODEL_H +#define _RVARIABLEMODEL_H + +#include "defaultvariablemodel.h" + +class RSession; + +class RVariableModel : public Cantor::DefaultVariableModel +{ + Q_OBJECT + public: + RVariableModel(RSession*); + ~RVariableModel() override; + + // List of virables from other R namespaces (packages), which can be treted as constants, like "pi" + //QStringList constants() const; + + void update() override; + + Q_SIGNALS: + void constantsAdded(QStringList); + void constantsRemoved(QStringList); + + public Q_SLOTS: + void parseResult(Cantor::Expression::Status); + + private: + void setConstants(QStringList); + + private: + QStringList m_constants; + Cantor::Expression* m_expression{nullptr}; +}; + +#endif /* _RVARIABLEMODEL_H */ diff --git a/src/backends/R/settings.ui b/src/backends/R/settings.ui new file mode 100644 index 0000000..f2aab6d --- /dev/null +++ b/src/backends/R/settings.ui @@ -0,0 +1,120 @@ + + + RSettingsBase + + + + 0 + 0 + 408 + 296 + + + + + + + 0 + + + + General + + + + + + + 0 + 0 + + + + If enabled, plots will be shown inside of the worksheet. Otherwise, plots will be shown in an external window. + + + Enabled + + + + + + + Monitor the creation and destruction of variables and show the existing variables in the variable panel. + + + Enabled + + + + + + + Plot Integration: + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 130 + + + + + + + + Variable Management: + + + + + + + + Autorun + + + + + + Commands to autorun + + + Qt::AlignCenter + + + + + + + + + + + Documentation + + + + + + + + + KEditListWidget + QWidget +
      keditlistwidget.h
      +
      +
      + + +
      diff --git a/src/backends/R/testr.cpp b/src/backends/R/testr.cpp new file mode 100644 index 0000000..e34397a --- /dev/null +++ b/src/backends/R/testr.cpp @@ -0,0 +1,332 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Sirgienko Nikita +*/ + +#include "testr.h" + +#include "session.h" +#include "backend.h" +#include "expression.h" +#include "result.h" +#include "imageresult.h" +#include "helpresult.h" +#include "syntaxhelpobject.h" +#include "completionobject.h" +#include "defaultvariablemodel.h" + +#include +#include +#include + +QString TestR::backendName() +{ + return QLatin1String("R"); +} + +void TestR::testSimpleCommand() +{ + Cantor::Expression* e=evalExp( QLatin1String("2+2") ); + + QVERIFY( e!=nullptr ); + QVERIFY( e->result()!=nullptr ); + + QCOMPARE( cleanOutput( e->result()->data().toString() ), QLatin1String("[1] 4") ); +} + +void TestR::testMultilineCommand() +{ + Cantor::Expression* e = evalExp(QLatin1String("print(2+2)\nprint(7*5)")); + + QVERIFY(e != nullptr); + QVERIFY(e->result() != nullptr); + QCOMPARE(cleanOutput( e->result()->data().toString() ), QLatin1String("[1] 4\n[1] 35")); +} + +void TestR::testCodeWithComments() +{ + Cantor::Expression* e=evalExp( QLatin1String("2+2 #comment") ); + + QVERIFY( e!=nullptr ); + QVERIFY( e->result()!=nullptr ); + + QCOMPARE( cleanOutput( e->result()->data().toString() ), QLatin1String("[1] 4") ); +} + +void TestR::testCommandQueue() +{ + Cantor::Expression* e1=session()->evaluateExpression(QLatin1String("0+1")); + Cantor::Expression* e2=session()->evaluateExpression(QLatin1String("1+1")); + Cantor::Expression* e3=evalExp(QLatin1String("1+2")); + + qDebug() << e1 << e1->command() << e1->status(); + qDebug() << e2 << e2->command() << e2->status(); + qDebug() << e3 << e3->command() << e3->status(); + + QVERIFY(e1!=nullptr); + QVERIFY(e2!=nullptr); + QVERIFY(e3!=nullptr); + + QVERIFY(e1->result()); + QVERIFY(e2->result()); + QVERIFY(e3->result()); + + QCOMPARE(cleanOutput(e1->result()->data().toString()), QLatin1String("[1] 1")); + QCOMPARE(cleanOutput(e2->result()->data().toString()), QLatin1String("[1] 2")); + QCOMPARE(cleanOutput(e3->result()->data().toString()), QLatin1String("[1] 3")); +} + +void TestR::testVariablesCreatingFromCode() +{ + QAbstractItemModel* model = session()->variableModel(); + QVERIFY(model != nullptr); + + Cantor::Expression* e=evalExp(QLatin1String("a1 = 15; b1 = 'S'; d1 = c(1,2,3)")); + + QVERIFY(e!=nullptr); + QVERIFY(e->result() != nullptr); + + while (session()->status() != Cantor::Session::Done) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + QCOMPARE(model->rowCount(), 3); + + QCOMPARE(model->index(0,0).data().toString(), QLatin1String("a1")); + QCOMPARE(model->index(0,1).data().toString(), QLatin1String("15")); + + QCOMPARE(model->index(1,0).data().toString(), QLatin1String("b1")); + QCOMPARE(model->index(1,1).data().toString(), QLatin1String("S")); + + QCOMPARE(model->index(2,0).data().toString(), QLatin1String("d1")); + QCOMPARE(model->index(2,1).data().toString(), QLatin1String("1, 2, 3")); + + evalExp(QLatin1String("rm(a1,b1,d1)")); +} + +void TestR::testVariableCleanupAfterRestart() +{ + QAbstractItemModel* model = session()->variableModel(); + QVERIFY(model != nullptr); + + while(session()->status() != Cantor::Session::Done) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + QCOMPARE(model->rowCount(), 0); + + Cantor::Expression* e=evalExp(QLatin1String("h1 = 15; h2 = 'S';")); + QVERIFY(e!=nullptr); + + while (session()->status() != Cantor::Session::Done) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + QCOMPARE(model->rowCount(), 2); + + session()->logout(); + session()->login(); + + QCOMPARE(model->rowCount(), 0); +} + +void TestR::testVariableDefinition() +{ + Cantor::Expression* e = evalExp(QLatin1String("testvar <- \"value\"; testvar")); + + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Done); + QVERIFY(e->result() != nullptr); + QCOMPARE(cleanOutput(e->result()->data().toString()), QLatin1String("[1] \"value\"")); + + evalExp(QLatin1String("rm(testvar)")); +} + +void TestR::testMatrixDefinition() +{ + Cantor::Expression* e = evalExp(QLatin1String("matrix(1:9, nrow = 3, ncol = 3)")); + + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Done); + QVERIFY(e->result() != nullptr); + QCOMPARE(e->result()->data().toString(), QLatin1String( + " [,1] [,2] [,3]\n" + "[1,] 1 4 7\n" + "[2,] 2 5 8\n" + "[3,] 3 6 9" + )); +} + +void TestR::testCommentExpression() +{ + Cantor::Expression* e = evalExp(QLatin1String("#only comment")); + + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Status::Done); + QCOMPARE(e->results().size(), 0); +} + +void TestR::testMultilineCommandWithComment() +{ + Cantor::Expression* e = evalExp(QLatin1String( + "print(2+2) \n" + "#comment in middle \n" + "print(7*5)")); + + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Status::Done); + QVERIFY(e->result() != nullptr); + QVERIFY(e->result()->data().toString() == QLatin1String("[1] 4\n[1] 35")); +} + +void TestR::testInvalidSyntax() +{ + Cantor::Expression* e=evalExp( QLatin1String("2+2*+?!<") ); + + QVERIFY( e!=nullptr ); + QCOMPARE( e->status(), Cantor::Expression::Error ); +} + +void TestR::testCompletion() +{ + // Actual completion needs session in Done state + while (session()->status() != Cantor::Session::Done) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + Cantor::CompletionObject* help = session()->completionFor(QLatin1String("pi"), 2); + waitForSignal(help, SIGNAL(fetchingDone())); + + // Checks all completions for this request + // This correct for R 3.4.4 + const QStringList& completions = help->completions(); + qDebug() << completions; + QCOMPARE(completions.size(), 5); + QVERIFY(completions.contains(QLatin1String("pi"))); + QVERIFY(completions.contains(QLatin1String("pico"))); + QVERIFY(completions.contains(QLatin1String("pictex"))); + QVERIFY(completions.contains(QLatin1String("pie"))); + QVERIFY(completions.contains(QLatin1String("pipe"))); +} + +void TestR::testSimplePlot() +{ + Cantor::Expression* e = evalExp(QLatin1String("plot(c(1, 4, 9, 16))")); + + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Status::Done); + QVERIFY(e->result() != nullptr); + QCOMPARE(e->result()->type(), (int)Cantor::ImageResult::Type); +} + +void TestR::testComplexPlot() +{ + const QLatin1String cmd( + "# Define 2 vectors\n" + "cars <- c(1, 3, 6, 4, 9)\n" + "trucks <- c(2, 5, 4, 5, 12)\n" + "\n" + "# Calculate range from 0 to max value of cars and trucks\n" + "g_range <- range(0, cars, trucks)\n" + "\n" + "# Graph autos using y axis that ranges from 0 to max \n" + "# value in cars or trucks vector. Turn off axes and \n" + "# annotations (axis labels) so we can specify them ourself\n" + "plot(cars, type=\"o\", col=\"blue\", ylim=g_range, \n" + " axes=FALSE, ann=FALSE)\n" + "\n" + "# Make x axis using Mon-Fri labels\n" + "axis(1, at=1:5, lab=c(\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\"))\n" + "\n" + "# Make y axis with horizontal labels that display ticks at \n" + "# every 4 marks. 4*0:g_range[2] is equivalent to c(0,4,8,12).\n" + "axis(2, las=1, at=4*0:g_range[2])\n" + "\n" + "# Create box around plot\n" + "box()\n" + "\n" + "# Graph trucks with red dashed line and square points\n" + "lines(trucks, type=\"o\", pch=22, lty=2, col=\"red\")\n" + "\n" + "# Create a title with a red, bold/italic font\n" + "title(main=\"Autos\", col.main=\"red\", font.main=4)\n" + "\n" + "# Label the x and y axes with dark green text\n" + "title(xlab=\"Days\", col.lab=rgb(0,0.5,0))\n" + "title(ylab=\"Total\", col.lab=rgb(0,0.5,0))\n" + "\n" + "# Create a legend at (1, g_range[2]) that is slightly smaller \n" + "# (cex) and uses the same line colors and points used by \n" + "# the actual plots \n" + "legend(1, g_range[2], c(\"cars\",\"trucks\"), cex=0.8, \n" + " col=c(\"blue\",\"red\"), pch=21:22, lty=1:2);\n" + ); + + Cantor::Expression* e = evalExp(cmd); + + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Status::Done); + QVERIFY(e->result() != nullptr); + QCOMPARE(e->result()->type(), (int)Cantor::ImageResult::Type); + evalExp(QLatin1String("rm(cars, trucks, g_range)")); +} + +void TestR::testHelpRequest() +{ + QSKIP("Skip, until moving R help to help panel insteadof scripteditor"); + Cantor::Expression* e = evalExp(QLatin1String("?print")); + + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Status::Done); + QVERIFY(e->result() != nullptr); + QCOMPARE(e->result()->type(), (int)Cantor::HelpResult::Type); +} + +void TestR::testSyntaxHelp() +{ + QSKIP("Skip, until adding this feature to R backend"); + Cantor::SyntaxHelpObject* help = session()->syntaxHelpFor(QLatin1String("filter")); + help->fetchSyntaxHelp(); + waitForSignal(help, SIGNAL(done())); + + QVERIFY(help->toHtml().contains(QLatin1String("filter"))); +} + +void TestR::testInformationRequest() +{ + Cantor::Expression* e=session()->evaluateExpression(QLatin1String("readline(prompt=\"Enter number: \")")); + QVERIFY(e!=nullptr); + waitForSignal(e, SIGNAL(needsAdditionalInformation(QString))); + e->addInformation(QLatin1String("12")); + + waitForSignal(e, SIGNAL(statusChanged(Cantor::Expression::Status))); + QVERIFY(e->result()!=nullptr); + + QCOMPARE(e->result()->data().toString(), QLatin1String("[1] \"12\"")); +} + +void TestR::testLoginLogout() +{ + // Logout from session twice and all must works fine + session()->logout(); + session()->logout(); + + // Login in session twice and all must works fine + session()->login(); + session()->login(); +} + +void TestR::testRestartWhileRunning() +{ + Cantor::Expression* e1=session()->evaluateExpression(QLatin1String("Sys.sleep(5)")); + + session()->logout(); + QCOMPARE(e1->status(), Cantor::Expression::Interrupted); + session()->login(); + + Cantor::Expression* e2=evalExp( QLatin1String("2+2") ); + + QVERIFY(e2 != nullptr); + QVERIFY(e2->result() != nullptr); + + QCOMPARE(cleanOutput(e2->result()->data().toString() ), QLatin1String("[1] 4")); +} + +QTEST_MAIN( TestR ) + diff --git a/src/backends/R/testr.h b/src/backends/R/testr.h new file mode 100644 index 0000000..9f8a0d9 --- /dev/null +++ b/src/backends/R/testr.h @@ -0,0 +1,46 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Sirgienko Nikita +*/ + +#ifndef _TESTR_H +#define _TESTR_H + +#include "backendtest.h" + +class TestR : public BackendTest +{ + Q_OBJECT +private Q_SLOTS: + void testSimpleCommand(); + void testMultilineCommand(); + void testCommandQueue(); + + void testVariableDefinition(); + void testMatrixDefinition(); + + void testCodeWithComments(); + void testCommentExpression(); + void testMultilineCommandWithComment(); + + void testInvalidSyntax(); + + void testCompletion(); + void testHelpRequest(); + void testSyntaxHelp(); + void testInformationRequest(); + + void testSimplePlot(); + void testComplexPlot(); + + //tests variable model + void testVariablesCreatingFromCode(); + void testVariableCleanupAfterRestart(); + + void testLoginLogout(); + void testRestartWhileRunning(); +private: + QString backendName() override; +}; + +#endif /* _TESTR_H */ diff --git a/src/backends/backendsettingswidget.cpp b/src/backends/backendsettingswidget.cpp new file mode 100644 index 0000000..4a4a612 --- /dev/null +++ b/src/backends/backendsettingswidget.cpp @@ -0,0 +1,65 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020-2022 Alexander Semke + */ + +#include "backendsettingswidget.h" +#include "qthelpconfig.h" + +#include +#include +#include + +#include + +BackendSettingsWidget::BackendSettingsWidget(QWidget* parent, const QString& id) : QWidget(parent), m_id(id) +{ + +} + +void BackendSettingsWidget::tabChanged(int index) { + if (!m_tabWidget || !m_tabDocumentation) + return; + + //if the documentation tab was selected and there is not doc widget available yet, create it + if (m_tabWidget->widget(index) == m_tabDocumentation) + { + if (!m_docWidget) + { + m_docWidget = new QtHelpConfig(m_id); + auto hboxLayout = new QHBoxLayout(m_tabDocumentation); + hboxLayout->addWidget(m_docWidget); + } + } +} + +void BackendSettingsWidget::fileNameChanged(const QString& fileName) { + if (!m_urlRequester) + return; + + bool invalid = (!fileName.isEmpty() && !QFile::exists(fileName)); + if (invalid) { + QPalette p; \ + if (qGray(p.color(QPalette::Base).rgb()) > 160) /* light */ \ + m_urlRequester->setStyleSheet(QLatin1String("background: rgb(255, 200, 200);")); \ + else /* dark */ \ + m_urlRequester->setStyleSheet(QLatin1String("background: rgb(128, 0, 0);")); + } + else + m_urlRequester->setStyleSheet(QString()); +} diff --git a/src/backends/backendsettingswidget.h b/src/backends/backendsettingswidget.h new file mode 100644 index 0000000..d2ebc0f --- /dev/null +++ b/src/backends/backendsettingswidget.h @@ -0,0 +1,51 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020-2022 Alexander Semke + */ + +#ifndef BACKENDSETTINGSWIDGET_H +#define BACKENDSETTINGSWIDGET_H + +#include + +class QTabWidget; +class QtHelpConfig; +class KUrlRequester; + +class BackendSettingsWidget : public QWidget +{ +Q_OBJECT + +public: + explicit BackendSettingsWidget(QWidget* parent = nullptr, const QString& id = QString()); + +private: + QtHelpConfig* m_docWidget = nullptr; + +protected: + QString m_id; + QTabWidget* m_tabWidget = nullptr; + QWidget* m_tabDocumentation = nullptr; + KUrlRequester* m_urlRequester = nullptr; + +public Q_SLOTS: + void tabChanged(int); + void fileNameChanged(const QString&); +}; + +#endif /* BACKENDSETTINGSWIDGET_H */ diff --git a/src/backends/julia/CMakeLists.txt b/src/backends/julia/CMakeLists.txt new file mode 100644 index 0000000..87e3134 --- /dev/null +++ b/src/backends/julia/CMakeLists.txt @@ -0,0 +1,46 @@ +include_directories(${JULIA_INCLUDE_DIRS}) + +add_subdirectory(juliaserver) + +set(JuliaBackend_SRCS + juliabackend.cpp + juliasession.cpp + juliaexpression.cpp + juliakeywords.cpp + juliavariablemodel.cpp + juliahighlighter.cpp + juliaextensions.cpp + juliacompletionobject.cpp + juliasettingswidget.cpp + ../backendsettingswidget.cpp +) + +kconfig_add_kcfg_files(JuliaBackend_SRCS settings.kcfgc) +ki18n_wrap_ui(JuliaBackend_SRCS settings.ui) + +add_backend(juliabackend ${JuliaBackend_SRCS}) + +target_link_libraries(cantor_juliabackend cantor_help + ${JULIA_LIBRARY} + Qt5::DBus + KF5::SyntaxHighlighting +) + +if(BUILD_TESTING) + add_executable(testjulia testjulia.cpp settings.cpp) + add_test(NAME testjulia COMMAND testjulia) + target_link_libraries(testjulia + Qt5::Test + cantorlibs + cantortest + ) +endif(BUILD_TESTING) + +install(FILES juliabackend.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) +file(GLOB scripts "${CMAKE_CURRENT_SOURCE_DIR}/scripts/*.jl") +install( + FILES ${scripts} + DESTINATION ${KDE_INSTALL_DATADIR}/cantor/juliabackend/scripts +) + +install(FILES graphic_packages.xml DESTINATION ${KDE_INSTALL_DATADIR}/cantor/julia) diff --git a/src/backends/julia/graphic_packages.xml b/src/backends/julia/graphic_packages.xml new file mode 100644 index 0000000..cb27de0 --- /dev/null +++ b/src/backends/julia/graphic_packages.xml @@ -0,0 +1,56 @@ + + + gr + Julia integrated + +try + import GR + println("1") +catch e + println("0") +end + + +if (haskey(ENV, "GKS_WSTYPE")) + __cantor_gr_gks_previous__ = ENV["GKS_WSTYPE"] + __cantor_gr_gks_need_restore__ = true +else + __cantor_gr_gks_need_restore__ = false +end +ENV["GKS_WSTYPE"] = "nul" +ENV["GKSwstype"] = "" +GR.emergencyclosegks() + + +if (__cantor_gr_gks_need_restore__) + ENV["GKS_WSTYPE"] = __cantor_gr_gks_previous__ +else + delete!(ENV, "GKS_WSTYPE") +end +ENV["GKSwstype"] = "" +GR.emergencyclosegks() + + +GR.savefig("%1%2.%3") + + + contour + contourf + grid + grid3d + histogram + imshow + plot + plot3 + polar + polyline + polyline3d + polymarker + polymarker3d + scatter + scatter3 + show + surface + + + diff --git a/src/backends/julia/juliabackend.cpp b/src/backends/julia/juliabackend.cpp new file mode 100644 index 0000000..ad24263 --- /dev/null +++ b/src/backends/julia/juliabackend.cpp @@ -0,0 +1,151 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov + SPDX-FileCopyrightText: 2019 Alexander Semke +*/ + +#include "juliabackend.h" +#include "juliaextensions.h" +#include "juliasession.h" +#include "juliasettingswidget.h" +#include "settings.h" + +#include + +#include + +JuliaBackend::JuliaBackend(QObject *parent, const QList &args) + : Cantor::Backend(parent, args) +{ + setEnabled(true); + + new JuliaVariableManagementExtension(this); + new JuliaPackagingExtension(this); + new JuliaPlotExtension(this); + new JuliaScriptExtension(this); + new JuliaLinearAlgebraExtension(this); +} + +QString JuliaBackend::id() const +{ + return QLatin1String("julia"); +} + +QString JuliaBackend::version() const +{ + return QLatin1String("1.0.0"); +} + +Cantor::Session *JuliaBackend::createSession() +{ + return new JuliaSession(this); +} + +Cantor::Backend::Capabilities JuliaBackend::capabilities() const +{ + Cantor::Backend::Capabilities cap = SyntaxHighlighting | Completion | IntegratedPlots; + + if (JuliaSettings::variableManagement()) + cap |= VariableManagement; + + return cap; +} + +QString JuliaBackend::description() const +{ + return i18n( + "Julia is a high-level, high-performance dynamic programming " + "language for technical computing, with syntax that is familiar to " + "users of other technical computing environments. It provides a " + "sophisticated compiler, distributed parallel execution, numerical " + "accuracy, and an extensive mathematical function library." + ); +} + +QUrl JuliaBackend::helpUrl() const +{ + return QUrl(i18nc( + "The url to the documentation of Julia, please check if there is a" + " translated version and use the correct url", + "https://docs.julialang.org/en/latest/" + )); +} + +bool JuliaBackend::requirementsFullfilled(QString* const reason) const +{ + const QString& path = JuliaSettings::self()->replPath().toLocalFile(); + bool valid = Cantor::Backend::checkExecutable(QLatin1String("julia"), path, reason); + + if (!valid) + return false; + + QFileInfo info(path); + if (info.isSymLink()) + { + if (reason) + *reason = i18n("The path to Julia specified in the application settings must point directly to the executable. Symlinks are not allowed. " + "Please provide the correct path in the application settings and try again."); + return false; + } + + // Julia because of C API can handle only MAJOR.MINOR.* versions corresponding to + // version, which used to build cantor_juliaserver + // So check it and print info about it to user, if versions don't match + QProcess getJuliaVersionProcess; + getJuliaVersionProcess.setProgram(path); + getJuliaVersionProcess.setArguments(QStringList() << QLatin1String("-v")); + getJuliaVersionProcess.start(); + if (getJuliaVersionProcess.waitForFinished(1000) == false) + { + if (reason) + *reason = i18n("Сantor couldn’t determine the version of Julia for %1. " + "Please specify the correct path to Julia executable (no symlinks allowed) and try again.", + path); + return false; + } + + QRegularExpression versionExp(QLatin1String("julia version (\\d+)\\.(\\d+).(\\d+)")); + QString versionString = QString::fromLocal8Bit(getJuliaVersionProcess.readLine()); + QRegularExpressionMatch match = versionExp.match(versionString); + if (getJuliaVersionProcess.state() != QProcess::NotRunning || !match.hasMatch()) + { + if (reason) + *reason = i18n("Сantor couldn’t determine the version of Julia for %1. " + "Please specify the correct path to Julia executable (no symlinks allowed) and try again.", + path); + return false; + } + + int juliaMajor = match.captured(1).toInt(); + int juliaMinor = match.captured(2).toInt(); + int juliaPatch = match.captured(3).toInt(); + + if (QT_VERSION_CHECK(juliaMajor, juliaMinor, juliaPatch) != QT_VERSION_CHECK(JULIA_VERSION_MAJOR, JULIA_VERSION_MINOR, JULIA_VERSION_PATCH)) + { + if (reason) + *reason = i18n("You are trying to use Cantor with Julia v%1.%2.%3. " + "This version of Cantor was compiled with the support of Julia v%4.%5.%6. " + "Please point to this version of Julia or recompile Cantor using the version %1.%2.%3.", + juliaMajor, juliaMinor, juliaPatch, JULIA_VERSION_MAJOR, JULIA_VERSION_MINOR, JULIA_VERSION_PATCH); + return false; + } + return true; +} + +QWidget* JuliaBackend::settingsWidget(QWidget *parent) const +{ + return new JuliaSettingsWidget(parent, id()); +} + +KConfigSkeleton* JuliaBackend::config() const +{ + return JuliaSettings::self(); +} + +K_PLUGIN_FACTORY_WITH_JSON( + juliabackend, + "juliabackend.json", + registerPlugin(); +) + +#include "juliabackend.moc" diff --git a/src/backends/julia/juliabackend.h b/src/backends/julia/juliabackend.h new file mode 100644 index 0000000..9b1be38 --- /dev/null +++ b/src/backends/julia/juliabackend.h @@ -0,0 +1,76 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ +#pragma once + +#include "backend.h" + +/** + * Backend for Julia language + * + * @see https://julialang.org/ + * @see JuliaServer + */ +class JuliaBackend: public Cantor::Backend +{ + Q_OBJECT +public: + /** + * Constructs julia backend + * + * @param parent QObject parent. Defaults to nullptr. + * @param args Additional arguments for the backend. + * Defaults to QList(). + */ + explicit JuliaBackend( + QObject *parent = nullptr, + const QList &args = QList()); + + ~JuliaBackend() override = default; + + /** + * @see Cantor::Backend::id + */ + QString id() const override; + + /** + * @see Cantor::Backend::version + */ + QString version() const override; + + /** + * @see Cantor::Backend::createSession + */ + Cantor::Session *createSession() override; + + /** + * @see Cantor::Backend::capabilities + */ + Cantor::Backend::Capabilities capabilities() const override; + + /** + * @see Cantor::Backend::description + */ + QString description() const override; + + /** + * @see Cantor::Backend::helpUrl + */ + QUrl helpUrl() const override; + + /** + * @see Cantor::Backend::requirementsFullfilled + */ + bool requirementsFullfilled(QString* const reason = nullptr) const override; + + /** + * @see Cantor::Backend::settingsWidget + */ + QWidget *settingsWidget(QWidget *parent) const override; + + /** + * @see Cantor::Backend::config + */ + KConfigSkeleton *config() const override; +}; diff --git a/src/backends/julia/juliabackend.json b/src/backends/julia/juliabackend.json new file mode 100644 index 0000000..a0e16c1 --- /dev/null +++ b/src/backends/julia/juliabackend.json @@ -0,0 +1,67 @@ +{ + "KPlugin": { + "Description": "Julia backend for Cantor", + "Description[ca@valencia]": "Dorsal de Julia per a Cantor", + "Description[ca]": "Dorsal del Julia per al Cantor", + "Description[cs]": "Podpůrná vrstva Cantoru Julia", + "Description[de]": "Julia-Modul für Cantor", + "Description[el]": "Σύστημα υποστήριξης Julia για το Cantor", + "Description[en_GB]": "Julia backend for Cantor", + "Description[es]": "Motor de Julia para Cantor", + "Description[et]": "Cantori Julia taustaprogramm", + "Description[fi]": "Cantorin Julia-taustaosa", + "Description[fr]": "Moteur Julia pour Cantor", + "Description[gl]": "Infraestrutura de Julia para Cantor.", + "Description[ia]": "Retroadministration de Julia per Cantor", + "Description[it]": "Motore per Julia di Cantor", + "Description[ka]": "Julia-ის უკანაბოლო Cantor-თვის", + "Description[ko]": "Cantor의 Julia 백엔드", + "Description[nl]": "Julia backend voor Cantor", + "Description[nn]": "Julia-motor for Cantor", + "Description[pl]": "Silnik Julii dla Cantora", + "Description[pt]": "Infra-estrutura do Julia para o Cantor", + "Description[pt_BR]": "Infraestrutura Julia para o Cantor", + "Description[ru]": "Модуль поддержки языка Julia", + "Description[sk]": "Julia backend pre Cantor", + "Description[sl]": "Zaledje Julia za Cantor", + "Description[sv]": "Julia bakgrundsprogram för Cantor", + "Description[tr]": "Cantor için Julia arka ucu", + "Description[uk]": "Модуль Julia для Cantor", + "Description[x-test]": "xxJulia backend for Cantorxx", + "Description[zh_CN]": "Cantor 的 Julia 后端", + "Description[zh_TW]": "Cantor 的 Julia 後端", + "Icon": "juliabackend", + "Id": "Julia", + "Name": "Julia", + "Name[ca@valencia]": "Julia", + "Name[ca]": "Julia", + "Name[cs]": "Julia", + "Name[de]": "Julia", + "Name[el]": "Julia", + "Name[en_GB]": "Julia", + "Name[es]": "Julia", + "Name[et]": "Julia", + "Name[fi]": "Julia", + "Name[fr]": "Julia", + "Name[gl]": "Julia", + "Name[ia]": "Julia", + "Name[it]": "Julia", + "Name[ka]": "Julia", + "Name[ko]": "Julia", + "Name[nl]": "Julia", + "Name[nn]": "Julia", + "Name[pl]": "Julia", + "Name[pt]": "Julia", + "Name[pt_BR]": "Julia", + "Name[ru]": "Julia", + "Name[sk]": "Julia", + "Name[sl]": "Julia", + "Name[sv]": "Julia", + "Name[tr]": "Julia", + "Name[uk]": "Julia", + "Name[x-test]": "xxJuliaxx", + "Name[zh_CN]": "Julia", + "Name[zh_TW]": "Julia", + "Website": "https://julialang.org/" + } +} diff --git a/src/backends/julia/juliabackend.kcfg b/src/backends/julia/juliabackend.kcfg new file mode 100644 index 0000000..16e994c --- /dev/null +++ b/src/backends/julia/juliabackend.kcfg @@ -0,0 +1,41 @@ + + + QStandardPaths + + + + + + QUrl::fromLocalFile(QStandardPaths::findExecutable(QLatin1String("julia"))) + + + + + true + + + + true + + + + + + + svg + + + + + + + + + + 0 + + + diff --git a/src/backends/julia/juliacompletionobject.cpp b/src/backends/julia/juliacompletionobject.cpp new file mode 100644 index 0000000..5e9a5e6 --- /dev/null +++ b/src/backends/julia/juliacompletionobject.cpp @@ -0,0 +1,106 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ + +#include "juliacompletionobject.h" + +#include "juliasession.h" +#include "juliakeywords.h" + +#include "result.h" + +#include + +JuliaCompletionObject::JuliaCompletionObject(const QString &command, int index, JuliaSession *session): + Cantor::CompletionObject(session), + m_expression(nullptr) +{ + setLine(command, index); +} + +JuliaCompletionObject::~JuliaCompletionObject() +{ + if (m_expression) + m_expression->setFinishingBehavior(Cantor::Expression::FinishingBehavior::DeleteOnFinish); +} + +void JuliaCompletionObject::fetchCompletions() +{ + if (session()->status() != Cantor::Session::Done) + { + QStringList allCompletions; + + allCompletions << JuliaKeywords::instance()->keywords(); + allCompletions << JuliaKeywords::instance()->variables(); + allCompletions << JuliaKeywords::instance()->functions(); + + setCompletions(allCompletions); + emit fetchingDone(); + } + else + { + if (m_expression) + return; + + const QString cmd = + QString::fromLatin1( + "using REPL; " + "join(" + "map(REPL.REPLCompletions.completion_text, REPL.REPLCompletions.completions(\"%1\", %2)[1])," + "\"__CANTOR_DELIM__\")" + ).arg(command()).arg(command().size()); + m_expression = session()->evaluateExpression(cmd, Cantor::Expression::FinishingBehavior::DoNotDelete, true); + connect(m_expression, &Cantor::Expression::statusChanged, this, &JuliaCompletionObject::extractCompletions); + } +} + +void JuliaCompletionObject::extractCompletions(Cantor::Expression::Status status) +{ + switch(status) + { + case Cantor::Expression::Done: + { + auto result = m_expression->result()->data().toString(); + result.chop(1); + result.remove(0, 1); + QStringList completions = result.split(QLatin1String("__CANTOR_DELIM__")); + if (command().contains(QLatin1Char('.'))) + for(QString& word : completions) + { + const int i = command().lastIndexOf(QLatin1Char('.')); + const QString& prefix = command().remove(i, command().size()-i) + QLatin1Char('.'); + if (!word.startsWith(prefix)) + word.prepend(prefix); + } + + setCompletions(completions); + break; + } + case Cantor::Expression::Interrupted: + case Cantor::Expression::Error: + { + qDebug() << "fetching expression finished with status" << (status == Cantor::Expression::Error? "Error" : "Interrupted"); + + break; + } + default: + return; + } + + m_expression->deleteLater(); + m_expression = nullptr; + emit fetchingDone(); +} + +bool JuliaCompletionObject::mayIdentifierContain(QChar c) const +{ + return c.isLetter() || c.isDigit() || c == QLatin1Char('_') || + c == QLatin1Char('%') || c == QLatin1Char('$') || c == QLatin1Char('.'); +} + +bool JuliaCompletionObject::mayIdentifierBeginWith(QChar c) const +{ + return c.isLetter() || c == QLatin1Char('_') || c == QLatin1Char('%') || + c == QLatin1Char('$'); +} diff --git a/src/backends/julia/juliacompletionobject.h b/src/backends/julia/juliacompletionobject.h new file mode 100644 index 0000000..bc0c9f3 --- /dev/null +++ b/src/backends/julia/juliacompletionobject.h @@ -0,0 +1,52 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ + +#pragma once + +#include "completionobject.h" +#include "expression.h" + +class JuliaSession; + +/** + * Implements code completion for Julia language + * + * Uses Julia's Base.REPL.REPLCompletions.completions command to get + * context-aware completions like in native Julia REPL + */ +class JuliaCompletionObject : public Cantor::CompletionObject +{ +public: + /** + * Constructs JuliaCompletionObject + * + * @param cmd command piece to generate completion + * @param index index of cursor in command + * @param session current session + */ + JuliaCompletionObject(const QString &cmd, int index, JuliaSession *session); + ~JuliaCompletionObject() override; + +protected: + /** + * @see Cantor::CompletionObject::mayIdentifierContain + */ + bool mayIdentifierContain(QChar c) const override; + bool mayIdentifierBeginWith(QChar c) const override; + + /** + * @see Cantor::CompletionObject::mayIdentifierBeginWith + */ + +protected Q_SLOTS: + /** + * @see Cantor::CompletionObject::fetchCompletions + */ + void fetchCompletions() override; + void extractCompletions(Cantor::Expression::Status status); + +private: + Cantor::Expression* m_expression; +}; diff --git a/src/backends/julia/juliaexpression.cpp b/src/backends/julia/juliaexpression.cpp new file mode 100644 index 0000000..02d2518 --- /dev/null +++ b/src/backends/julia/juliaexpression.cpp @@ -0,0 +1,88 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ +#include "juliaexpression.h" + +#include +#include + +#include "settings.h" +#include "juliasession.h" +#include "juliakeywords.h" +#include "textresult.h" +#include "imageresult.h" + +const QStringList JuliaExpression::plotExtensions({ + QLatin1String("svg"), + QLatin1String("png") +}); + +JuliaExpression::JuliaExpression(Cantor::Session *session, bool internal) + : Cantor::Expression(session, internal) +{ +} + +void JuliaExpression::evaluate() +{ + auto juliaSession = static_cast(session()); + + juliaSession->enqueueExpression(this); +} + +QString JuliaExpression::internalCommand() +{ + QString cmd = command(); + auto juliaSession = static_cast(session()); + + // Plots integration + m_plot_filename.clear(); + // Not sure about how this code will work with two graphic packages activated in the same time (they both will save to one file?)... + if (!session()->enabledGraphicPackages().isEmpty() && !isInternal()) + { + QStringList cmdWords = cmd.split(QRegularExpression(QStringLiteral("\\b")), QString::SkipEmptyParts); + for (const Cantor::GraphicPackage& package : session()->enabledGraphicPackages()) + { + for (const QString& plotCmd : package.plotCommandPrecentsKeywords()) + if (cmdWords.contains(plotCmd)) + { + if (package.isHavePlotCommand()) + { + m_plot_filename = juliaSession->plotFilePrefixPath() + QString::number(id()) + QLatin1String(".") + plotExtensions[JuliaSettings::inlinePlotFormat()]; + cmd.append(QLatin1String("\n")); + cmd.append(package.savePlotCommand(juliaSession->plotFilePrefixPath(), id(), plotExtensions[JuliaSettings::inlinePlotFormat()])); + } + break; + } + } + } + + qDebug() << "expression internal command:" << cmd; + + return cmd; +} + +void JuliaExpression::finalize(const QString& output, const QString& error, bool wasException) +{ + if (wasException) { + setErrorMessage(error); + if (!output.isEmpty()) + setResult(new Cantor::TextResult(output)); + setStatus(Cantor::Expression::Error); + } else { + if (!m_plot_filename.isEmpty() && QFileInfo(m_plot_filename).exists()) { + // If we have plot in result, show it + setResult(new Cantor::ImageResult(QUrl::fromLocalFile(m_plot_filename))); + } else { + if (!output.isEmpty()) + setResult(new Cantor::TextResult(output)); + } + setStatus(Cantor::Expression::Done); + } +} + +void JuliaExpression::interrupt() +{ + setStatus(Cantor::Expression::Interrupted); +} + diff --git a/src/backends/julia/juliaexpression.h b/src/backends/julia/juliaexpression.h new file mode 100644 index 0000000..7a97385 --- /dev/null +++ b/src/backends/julia/juliaexpression.h @@ -0,0 +1,54 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ +#pragma once + +#include "expression.h" + +/** + * Expression of Julia language + */ +class JuliaExpression: public Cantor::Expression +{ + Q_OBJECT +public: + /** + * Creates new JuliaExpression + * + * @param session session to bound expression to + * @param internal @see Cantor::Expression::Expression(Session*, bool) + */ + explicit JuliaExpression(Cantor::Session *session, bool internal = false); + ~JuliaExpression() override = default; + + /** + * @see Cantor::Expression::evaluate + */ + void evaluate() override; + + /** + * @see Cantor::Expression::interrupt + */ + void interrupt() override; + + QString internalCommand() override; + + void parseOutput(const QString&) override {}; + void parseError(const QString&) override {}; + + /** + * Call this function from session when JuliaServer ends evaluation of + * this expression. + * + * This checks inline plots, exceptions and set appropriate result + */ + void finalize(const QString& output, const QString& error, bool wasException); + +public: + static const QStringList plotExtensions; + +private: + /// If not empty, it's a filename of plot image file expression is awaiting to get + QString m_plot_filename; +}; diff --git a/src/backends/julia/juliaextensions.cpp b/src/backends/julia/juliaextensions.cpp new file mode 100644 index 0000000..7e31669 --- /dev/null +++ b/src/backends/julia/juliaextensions.cpp @@ -0,0 +1,313 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ +#include "juliaextensions.h" + +#include +#include + +#include "settings.h" + +#include "juliascriptloading.h" + +#define JULIA_EXT_CDTOR(name) Julia##name##Extension::Julia##name##Extension(QObject *parent) : name##Extension(parent) {} \ + Julia##name##Extension::~Julia##name##Extension() {} + + +JULIA_EXT_CDTOR(LinearAlgebra) + +QString JuliaLinearAlgebraExtension::createVector( + const QStringList &entries, + Cantor::LinearAlgebraExtension::VectorType type) +{ + QString command; + command += QLatin1String("["); + + QString separator = QLatin1String(type == ColumnVector ? ", " : " "); + + for (const QString &entry : entries) { + command += entry + separator; + } + + command.chop(separator.size()); + command += QLatin1String("]\n"); + + return command; +} + +QString JuliaLinearAlgebraExtension::createMatrix( + const Cantor::LinearAlgebraExtension::Matrix &matrix) +{ + QString command; + command += QLatin1String("["); + + for (const QStringList row : matrix) { + for (const QString entry : row) { + command += entry; + command += QLatin1String(" "); + } + command.chop(1); + command += QLatin1String("; "); + } + + command.chop(2); + command += QLatin1String("]"); + + return command; +} + +QString JuliaLinearAlgebraExtension::eigenValues(const QString &matrix) +{ + return QString::fromLatin1("eig(%1)[1]").arg(matrix); +} + +QString JuliaLinearAlgebraExtension::eigenVectors(const QString &matrix) +{ + return QString::fromLatin1("eig(%1)[2]").arg(matrix); +} + +QString JuliaLinearAlgebraExtension::identityMatrix(int size) +{ + return QString::fromLatin1("eye(%1)").arg(size); +} + +QString JuliaLinearAlgebraExtension::invertMatrix(const QString &matrix) +{ + return QString::fromLatin1("inv(%1)").arg(matrix); +} + +QString JuliaLinearAlgebraExtension::nullMatrix(int rows, int columns) +{ + return QString::fromLatin1("zeros(%1, %2)").arg(rows).arg(columns); +} + +QString JuliaLinearAlgebraExtension::nullVector( + int size, + Cantor::LinearAlgebraExtension::VectorType type) +{ + switch (type) { + case ColumnVector: + return QString::fromLatin1("zeros(%1)").arg(size); + case RowVector: + return QString::fromLatin1("zeros(%1, %2)").arg(1).arg(size); + default: + return Cantor::LinearAlgebraExtension::nullVector(size, type); + } +} + +QString JuliaLinearAlgebraExtension::rank(const QString &matrix) +{ + return QString::fromLatin1("rank(%1)").arg(matrix); +} + +QString JuliaLinearAlgebraExtension::charPoly(const QString &matrix) +{ + return QString::fromLatin1("poly(%1)").arg(matrix); +} + + +JULIA_EXT_CDTOR(Packaging) + +QString JuliaPackagingExtension::importPackage(const QString &package) +{ + return QString::fromLatin1("import %1").arg(package); +} + + +JULIA_EXT_CDTOR(Plot) + +QString JuliaPlotExtension::plotFunction2d( + const QString &function, + const QString &variable, + const QString &left, + const QString &right) +{ + QString command; + QString limits; + + switch(JuliaSettings::plotExtenstionGraphicPackage()) + { + case JuliaSettings::EnumPlotExtenstionGraphicPackage::gr: + { + if (!left.isEmpty() && !right.isEmpty()) + limits = QString::fromLatin1("GR.xlim((%1, %2))\n").arg(left).arg(right); + + command = QString::fromLatin1( + "import GR\n" + "\n" + "%3" + "GR.plot(%1, %2)" + ).arg(variable).arg(function).arg(limits); + break; + } + + case JuliaSettings::EnumPlotExtenstionGraphicPackage::plots: + if (!left.isEmpty() && !right.isEmpty()) + limits = QString::fromLatin1(", xlims = (%1, %2)").arg(left).arg(right); + + command = QString::fromLatin1( + "import Plots\n" + "\n" + "Plots.plot(%1, %2%3)" + ).arg(variable, function, limits); + break; + + case JuliaSettings::EnumPlotExtenstionGraphicPackage::pyplot: + if (!left.isEmpty() && !right.isEmpty()) + limits = QString::fromLatin1("PyPlot.xlim(%1, %2)\n").arg(left).arg(right); + + command = QString::fromLatin1( + "import PyPlot\n" + "\n" + "%3" + "PyPlot.plot(%1, %2)" + ).arg(variable, function, limits); + break; + + case JuliaSettings::EnumPlotExtenstionGraphicPackage::gadfly: + if (!left.isEmpty() && !right.isEmpty()) + limits = QString::fromLatin1(", Gadfly.Scale.x_continuous(minvalue=%1, maxvalue=%2)").arg(left).arg(right); + + command = QString::fromLatin1( + "import Gadfly\n" + "\n" + "Gadfly.plot(x=%1, y=%2%3)" + ).arg(variable, function, limits); + break; + } + + return command; +} + +QString JuliaPlotExtension::plotFunction3d( + const QString &function, + const VariableParameter& var1, + const VariableParameter& var2) +{ + QString command; + + const Interval& interval1 = var1.second; + const Interval& interval2 = var2.second; + + QString interval1Limits; + QString interval2Limits; + + switch(JuliaSettings::plotExtenstionGraphicPackage()) + { + case JuliaSettings::EnumPlotExtenstionGraphicPackage::gr: + { + if (!interval1.first.isEmpty() && !interval1.second.isEmpty()) + interval1Limits = QString::fromLatin1("GR.xlim((%1, %2))\n").arg(interval1.first).arg(interval1.second); + + if (!interval2.first.isEmpty() && !interval2.second.isEmpty()) + interval1Limits = QString::fromLatin1("GR.ylim((%1, %2))\n").arg(interval2.first).arg(interval2.second); + + command = QString::fromLatin1( + "import GR\n" + "\n" + "%4%5" + "GR.plot3(%1, %2, %3)" + ).arg(interval1.first, interval2.first, function, interval1Limits, interval2Limits); + break; + } + + case JuliaSettings::EnumPlotExtenstionGraphicPackage::plots: + if (!interval1.first.isEmpty() && !interval1.second.isEmpty()) + interval1Limits = QString::fromLatin1(", xlims = (%1, %2)").arg(interval1.first).arg(interval1.second); + + if (!interval2.first.isEmpty() && !interval2.second.isEmpty()) + interval1Limits = QString::fromLatin1(", ylims = (%1, %2)").arg(interval2.first).arg(interval2.second); + + command = QString::fromLatin1( + "import Plots\n" + "\n" + "%4%5" + "GR.plot3d(%1, %2, %3)" + ).arg(interval1.first, interval2.first, function, interval1Limits, interval2Limits); + break; + + case JuliaSettings::EnumPlotExtenstionGraphicPackage::pyplot: + if (!interval1.first.isEmpty() && !interval1.second.isEmpty()) + interval1Limits = QString::fromLatin1("GR.xlim((%1, %2))\n").arg(interval1.first).arg(interval1.second); + + if (!interval2.first.isEmpty() && !interval2.second.isEmpty()) + interval1Limits = QString::fromLatin1("GR.ylim((%1, %2))\n").arg(interval2.first).arg(interval2.second); + + command = QString::fromLatin1( + "import GR\n" + "\n" + "%4%5" + "PyPlot.plot3D(%1, %2, %3)" + ).arg(interval1.first, interval2.first, function, interval1Limits, interval2Limits); + break; + + case JuliaSettings::EnumPlotExtenstionGraphicPackage::gadfly: + command = i18n("# Sorry, but Gadfly don't support 3d plots"); + break; + } + + return command; +} + + +JULIA_EXT_CDTOR(Script) + +QString JuliaScriptExtension::runExternalScript(const QString &path) +{ + return QString::fromLatin1("include(\"%1\")").arg(path); +} + +QString JuliaScriptExtension::scriptFileFilter() +{ + return i18n("Julia script file (*.jl)"); +} + +QString JuliaScriptExtension::highlightingMode() +{ + return QLatin1String("julia"); +} + + +JULIA_EXT_CDTOR(VariableManagement) + +const QString JuliaVariableManagementExtension::REMOVED_VARIABLE_MARKER = + QLatin1String("__REM__"); + +QString JuliaVariableManagementExtension::addVariable( + const QString &name, + const QString &value) +{ + return setValue(name, value); +} + +QString JuliaVariableManagementExtension::setValue( + const QString &name, + const QString &value) +{ + return QString::fromLatin1("%1 = %2").arg(name).arg(value); +} + +QString JuliaVariableManagementExtension::removeVariable(const QString &name) +{ + // There is no way to completely delete object from scope: + // https://docs.julialang.org/en/v1/manual/faq/#How-do-I-delete-an-object-in-memory?-1 + return QString::fromLatin1("%1 = \"%2\"") + .arg(name).arg(REMOVED_VARIABLE_MARKER); +} + +QString JuliaVariableManagementExtension::clearVariables() +{ + return loadScript(QLatin1String("variables_cleaner")) + .arg(REMOVED_VARIABLE_MARKER); +} + +QString JuliaVariableManagementExtension::saveVariables(const QString &fileName) +{ + return loadScript(QLatin1String("variables_saver")).arg(fileName); +} + +QString JuliaVariableManagementExtension::loadVariables(const QString &fileName) +{ + return loadScript(QLatin1String("variables_loader")).arg(fileName); +} diff --git a/src/backends/julia/juliaextensions.h b/src/backends/julia/juliaextensions.h new file mode 100644 index 0000000..7193f7d --- /dev/null +++ b/src/backends/julia/juliaextensions.h @@ -0,0 +1,189 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ +#pragma once + +#include + +#define JULIA_EXT_CDTOR_DECL(name) Julia##name##Extension(QObject *parent); \ + ~Julia##name##Extension(); + + +/** + * Implementation of linear algebra wizards for Julia + */ +class JuliaLinearAlgebraExtension: public Cantor::LinearAlgebraExtension +{ +public: + JULIA_EXT_CDTOR_DECL(LinearAlgebra) + + /** + * @see Cantor::LinearAlgebraExtension::createVector + */ + QString createVector( + const QStringList &entries, + VectorType type) override; + + /** + * @see Cantor::LinearAlgebraExtension::nullVector + */ + QString nullVector(int size, VectorType type) override; + + /** + * @see Cantor::LinearAlgebraExtension::createMatrix + */ + QString createMatrix( + const Cantor::LinearAlgebraExtension::Matrix &matrix) override; + + /** + * @see Cantor::LinearAlgebraExtension::identityMatrix + */ + QString identityMatrix(int size) override; + + /** + * @see Cantor::LinearAlgebraExtension::nullMatrix + */ + QString nullMatrix(int rows, int columns) override; + + /** + * @see Cantor::LinearAlgebraExtension::rank + */ + QString rank(const QString &matrix) override; + + /** + * @see Cantor::LinearAlgebraExtension::invertMatrix + */ + QString invertMatrix(const QString &matrix) override; + + /** + * @see Cantor::LinearAlgebraExtension::charPoly + */ + QString charPoly(const QString &matrix) override; + + /** + * @see Cantor::LinearAlgebraExtension::eigenVectors + */ + QString eigenVectors(const QString &matrix) override; + + /** + * @see Cantor::LinearAlgebraExtension::eigenValues + */ + QString eigenValues(const QString &matrix) override; +}; + +/** + * Implementation of packaging wizards for Julia + */ +class JuliaPackagingExtension: public Cantor::PackagingExtension +{ +public: + JULIA_EXT_CDTOR_DECL(Packaging) + + /** + * @see Cantor::PackagingExtension::importPackage + */ + QString importPackage(const QString &module) override; +}; + +/** + * Implementation of plot wizards for Julia + * + * Plotting is based on GR package + */ +class JuliaPlotExtension: public Cantor::PlotExtension +{ +public: + JULIA_EXT_CDTOR_DECL(Plot) + + /** + * @see Cantor::PlotExtension::plotFunction2d + */ + QString plotFunction2d( + const QString &function, + const QString &variable, + const QString &left, + const QString &right) override; + + /** + * @see Cantor::PlotExtension::plotFunction3d + */ + QString plotFunction3d( + const QString &function, + const VariableParameter& var1, + const VariableParameter& var2) override; +}; + +/** + * Implementation of script wizard for Julia + */ +class JuliaScriptExtension: public Cantor::ScriptExtension +{ +public: + JULIA_EXT_CDTOR_DECL(Script) + + /** + * @see Cantor::ScriptExtension::scriptFileFilter + */ + QString scriptFileFilter() override; + + /** + * @see Cantor::ScriptExtension::highlightingMode + */ + QString highlightingMode() override; + + /** + * @see Cantor::ScriptExtension::runExternalScript + */ + QString runExternalScript(const QString &path) override; +}; + +/** + * Julia variable management extension + * + * Based on JLD package for loading/saving variables + */ +class JuliaVariableManagementExtension: public Cantor::VariableManagementExtension +{ +public: + JULIA_EXT_CDTOR_DECL(VariableManagement) + + // There is no way to completely delete object from scope: + // https://docs.julialang.org/en/v1/manual/faq/#How-do-I-delete-an-object-in-memory?-1 + // So we are saving special marker to variable to mark it as removed + static const QString REMOVED_VARIABLE_MARKER; + + /** + * @see Cantor::VariableManagementExtension::addVariable + */ + QString addVariable( + const QString &name, + const QString &value) override; + + /** + * @see Cantor::VariableManagementExtension::setValue + */ + QString setValue( + const QString &name, + const QString &value) override; + + /** + * @see Cantor::VariableManagementExtension::removeVariable + */ + QString removeVariable(const QString &name) override; + + /** + * @see Cantor::VariableManagementExtension::saveVariables + */ + QString saveVariables(const QString &fileName) override; + + /** + * @see Cantor::VariableManagementExtension::loadVariables + */ + QString loadVariables(const QString &fileName) override; + + /** + * @see Cantor::VariableManagementExtension::clearVariables + */ + QString clearVariables() override; +}; diff --git a/src/backends/julia/juliahighlighter.cpp b/src/backends/julia/juliahighlighter.cpp new file mode 100644 index 0000000..a0f9519 --- /dev/null +++ b/src/backends/julia/juliahighlighter.cpp @@ -0,0 +1,152 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ + +#include "juliahighlighter.h" +#include "juliakeywords.h" +#include "juliasession.h" + +#include +#include +#include + +JuliaHighlighter::JuliaHighlighter(QObject *parent, JuliaSession* session) + : Cantor::DefaultHighlighter(parent, session) +{ + addKeywords(JuliaKeywords::instance()->keywords()); + addVariables(JuliaKeywords::instance()->variables()); + addFunctions(JuliaKeywords::instance()->functions()); +} + +void JuliaHighlighter::highlightBlock(const QString &text) +{ + if (skipHighlighting(text)) { + return; + } + + // Do some backend independent highlighting (brackets etc.) + DefaultHighlighter::highlightBlock(text); + + // Now we are about to make correct strings and comments highlighting + // + // Main idea: as soon as string starts comment or anything else cant start + // until current string ends. The same with comment, except '#' comment + // that ends by newline + // + // To pass information to next block, we are using next states + const int IN_MULTILINE_COMMENT = 1; + const int IN_CHARACTER = 2; + const int IN_SINGLE_QUOTE_STRING = 4; + const int IN_TRIPLE_QUOTE_STRING = 8; + + // Markers of scopes start, ends + static const QRegularExpression multiLineCommentStart(QStringLiteral("#=")); + static const QRegularExpression multiLineCommentEnd(QStringLiteral("=#")); + static const QRegularExpression characterStartEnd(QStringLiteral("'")); + static const QRegularExpression singleQuoteStringStartEnd(QStringLiteral("\"")); + static const QRegularExpression tripleQuoteStringStartEnd(QStringLiteral("\"\"\"")); + static const QRegularExpression singleLineCommentStart(QStringLiteral("#(?!=)")); + + // Get current state + int state = previousBlockState(); + if (state == -1) { + state = 0; + } + + // This 4 arrays establish matching between state, start marker, end marker + // and format to apply + QList flags = { + IN_TRIPLE_QUOTE_STRING, + IN_SINGLE_QUOTE_STRING, + IN_CHARACTER, + IN_MULTILINE_COMMENT + }; + const QVector regexps_starts = { + tripleQuoteStringStartEnd, + singleQuoteStringStartEnd, + characterStartEnd, + multiLineCommentStart + }; + const QVector regexps_ends = { + tripleQuoteStringStartEnd, + singleQuoteStringStartEnd, + characterStartEnd, + multiLineCommentEnd + }; + QList formats = { + stringFormat(), + stringFormat(), + stringFormat(), + commentFormat() + }; + + int pos = 0; // current position in block + while (pos < text.length()) { + // Trying to close current environments + bool triggered = false; + for (int i = 0; i < flags.size() && !triggered; i++) { + int flag = flags[i]; + QTextCharFormat &format = formats[i]; + if (state & flag) { // Found current state + // find where end marker is + const QRegularExpressionMatch match = regexps_ends.at(i).match(text, pos); + const int new_pos = match.capturedStart(0); + int length; + if (new_pos == -1) { + // not in this block, highlight till the end + length = text.length() - pos; + } else { + // highlight untill the marker and modify state + length = new_pos - pos + match.capturedLength(0); + state -= flag; + } + // Apply format to the found area + setFormat(pos, length, format); + pos = pos + length; + triggered = true; + } + } + if (triggered) { // We have done something move to next iteration + continue; + } + + // Now we should found the scope that start the closest to current + // position + QRegularExpressionMatch match; // closest marker + int minPos = INT_MAX; // closest pos + int minIdx = -1; // closest scope index + for (int i = 0; i < regexps_starts.size(); i++) { + match = regexps_starts.at(i).match(text, pos); + const int newPos = match.capturedStart(0); + if (newPos != -1) { + minPos = qMin(minPos, newPos); + minIdx = i; + } + } + + // Check where single line comment starts + const int singleLineCommentStartPos = text.indexOf(singleLineCommentStart, pos); + + if (singleLineCommentStartPos != -1 + && singleLineCommentStartPos < minPos) { + // single line comment starts earlier + setFormat(singleLineCommentStartPos, text.length() - singleLineCommentStartPos, commentFormat()); + break; + } else if (match.hasMatch()) { + // We are going to another scope + state += flags[minIdx]; + pos = minPos + match.capturedLength(0); + setFormat(minPos, match.capturedLength(0), formats[minIdx]); + } else { // There is nothing to highlight + break; + } + } + + setCurrentBlockState(state); +} + +QString JuliaHighlighter::nonSeparatingCharacters() const +{ + return QLatin1String("[\\w¡-ﻼ!]"); +} diff --git a/src/backends/julia/juliahighlighter.h b/src/backends/julia/juliahighlighter.h new file mode 100644 index 0000000..6781f23 --- /dev/null +++ b/src/backends/julia/juliahighlighter.h @@ -0,0 +1,41 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ +#pragma once + +#include "defaulthighlighter.h" + +class JuliaSession; + +/** + * Implementation of JuliaHighlighter + * + * Takes into account loaded symbols from scope and predefined keywords. + * There is no common regexps that bound to fail with such syntax-overloaded + * languages as Julia + */ +class JuliaHighlighter: public Cantor::DefaultHighlighter +{ + Q_OBJECT + +public: + /** + * Constructs JuliaHighlighter + * + * @param parent QObject parent + */ + explicit JuliaHighlighter(QObject *parent, JuliaSession* session); + ~JuliaHighlighter() override = default; + +protected: + /** + * @see Cantor::DefaultHighlighter::highlightBlock + */ + void highlightBlock(const QString &text) override; + + /** + * @see Cantor::DefaultHighlighter::nonSeparatingCharacters + */ + QString nonSeparatingCharacters() const override; +}; diff --git a/src/backends/julia/juliakeywords.cpp b/src/backends/julia/juliakeywords.cpp new file mode 100644 index 0000000..20dbc2b --- /dev/null +++ b/src/backends/julia/juliakeywords.cpp @@ -0,0 +1,64 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ +#include "juliakeywords.h" + +#include +#include + +JuliaKeywords::JuliaKeywords() +{ + KSyntaxHighlighting::Repository m_repository; + KSyntaxHighlighting::Definition definition = m_repository.definitionForName(QLatin1String("Julia")); + + m_keywords = definition.keywordList(QLatin1String("block_begin")); + m_keywords << definition.keywordList(QLatin1String("block_eb")); + m_keywords << definition.keywordList(QLatin1String("block_end")); + m_keywords << definition.keywordList(QLatin1String("keywords")); + + //TODO: Upstream pull request to julia.xml from KSyntaxHighlighting? + // https://bugs.kde.org/show_bug.cgi?id=403901 + // Add new list to julia.syntax with constans? + m_variables << QLatin1String("false"); + m_variables << QLatin1String("Inf"); + m_variables << QLatin1String("NaN"); + m_variables << QLatin1String("nothing"); + m_variables << QLatin1String("true"); +} + +JuliaKeywords *JuliaKeywords::instance() +{ + static JuliaKeywords *inst = nullptr; + if (inst == nullptr) { + inst = new JuliaKeywords(); + } + + return inst; +} + +void JuliaKeywords::addVariable(const QString &variable) +{ + if (!m_variables.contains(variable)) { + m_variables << variable; + } +} + +void JuliaKeywords::clearVariables() +{ + m_removedVariables = m_variables; + m_variables.clear(); +} + +void JuliaKeywords::addFunction(const QString &function) +{ + if (!m_functions.contains(function)) { + m_functions << function; + } +} + +void JuliaKeywords::clearFunctions() +{ + m_removedFunctions = m_functions; + m_functions.clear(); +} diff --git a/src/backends/julia/juliakeywords.h b/src/backends/julia/juliakeywords.h new file mode 100644 index 0000000..a9b45e7 --- /dev/null +++ b/src/backends/julia/juliakeywords.h @@ -0,0 +1,81 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ +#pragma once + +#include + +/** + * Keywords storage for Julia session + * + * Class is implemented with singleton pattern + */ +class JuliaKeywords +{ +public: + /** + * @return singleton instance pointer + */ + static JuliaKeywords *instance(); + + /** + * @return list of Julia language predefined keywords + */ + const QStringList &keywords() const { return m_keywords; } + + /** + * @return list of known variable names + */ + const QStringList &variables() const { return m_variables; } + + /** + * @return list of variables removed during the last clearVariables() call + */ + const QStringList &removedVariables() const { return m_removedVariables; } + + /** + * Clears all known variables + */ + void clearVariables(); + + /** + * Add new variable to the known list + * + * @param variable name of the variable to add + */ + void addVariable(const QString &variable); + + /** + * @return list of known function names + */ + const QStringList &functions() const { return m_functions; } + + /** + * @return list of functions removed during the last clearFunctions() call + */ + const QStringList &removedFunctions() const { return m_removedFunctions; } + + /** + * Clears all known functions + */ + void clearFunctions(); + + /** + * Add new function to the known list + * + * @param function name of the function to add + */ + void addFunction(const QString &function); + +private: + QStringList m_keywords; //< list of predefined keywords + QStringList m_variables; //< list of variables known at the moment + QStringList m_removedVariables; //< list of variables removed during cleaning + QStringList m_functions; //< list of known function at the moment + QStringList m_removedFunctions; //< list of functions removed during cleaning + + // We are hiding constructor and destructor for singleton + JuliaKeywords(); + ~JuliaKeywords() = default; +}; diff --git a/src/backends/julia/juliascriptloading.h b/src/backends/julia/juliascriptloading.h new file mode 100644 index 0000000..2619194 --- /dev/null +++ b/src/backends/julia/juliascriptloading.h @@ -0,0 +1,32 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ +#pragma once + +#include +#include +#include + +inline QString loadScript(const QString &scriptName) +{ + QString file = QStandardPaths::locate( + QStandardPaths::AppDataLocation, + QString::fromLatin1("juliabackend/scripts/%1.jl").arg(scriptName) + ); + + if (file.isEmpty()) + file = QStandardPaths::locate( + QStandardPaths::GenericDataLocation, + QString::fromLatin1("cantor/juliabackend/scripts/%1.jl").arg(scriptName) + ); + + QFile text(file); + if (text.open(QIODevice::ReadOnly)) + return QString::fromUtf8(text.readAll()); + else + { + qWarning() << "Cantor Julia script" << scriptName+QLatin1String(".jl") << "not found - something wrong"; + return QString(); + } +} diff --git a/src/backends/julia/juliaserver/CMakeLists.txt b/src/backends/julia/juliaserver/CMakeLists.txt new file mode 100644 index 0000000..f12628e --- /dev/null +++ b/src/backends/julia/juliaserver/CMakeLists.txt @@ -0,0 +1,16 @@ +add_definitions(-DJULIA_ENABLE_THREADING=1) + +set(JuliaServer_SRCS + juliaserver.cpp + main.cpp +) +add_executable(cantor_juliaserver ${JuliaServer_SRCS}) + +target_link_libraries(cantor_juliaserver + ${JULIA_LIBRARY} + ${JULIA_INTERNAL_LIBRARY} + Qt5::Widgets + Qt5::DBus +) + +install(TARGETS cantor_juliaserver ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) diff --git a/src/backends/julia/juliaserver/juliaserver.cpp b/src/backends/julia/juliaserver/juliaserver.cpp new file mode 100644 index 0000000..2e60fa9 --- /dev/null +++ b/src/backends/julia/juliaserver/juliaserver.cpp @@ -0,0 +1,278 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ +#include "juliaserver.h" + +#include + +#include +#include +#include +#include +#include + +QStringList JuliaServer::INTERNAL_VARIABLES = + QStringList() << QLatin1String("__originalSTDOUT__") << QLatin1String("__originalSTDERR__"); + +JuliaServer::JuliaServer(QObject *parent) : QObject(parent), m_was_exception(false) +{ +} + +JuliaServer::~JuliaServer() +{ + jl_atexit_hook(0); +} + +int JuliaServer::login(const QString &path) +{ + static const QLatin1String possibileSysImgPath("../lib/julia/sys.so"); + + QString sysimg_path = QLatin1String(jl_get_default_sysimg_path()); + const QString& dir_path = QFileInfo(path).dir().absolutePath(); + QFileInfo sysimg_file_info = QFileInfo(dir_path + QLatin1String("/") + sysimg_path); + if (!sysimg_file_info.exists()) + { + // This is unexpected, but possible. For example, then used cantor-julia-backend from system packages, which compiled with system julia + // And `path` set to portable julia installation with same version, for example `/home/john_doe/julia` + // Like in https://bugs.kde.org/show_bug.cgi?id=425695 + + // Check another possible path + if (QFileInfo::exists(dir_path + QLatin1String("/") + possibileSysImgPath)) + { + qDebug() << "Change sysimg relative path from " << sysimg_path << "to " << possibileSysImgPath << "because original sysimg path from Julia C API is missing"; + sysimg_path = possibileSysImgPath; + sysimg_file_info = QFileInfo(dir_path + QLatin1String("/") + possibileSysImgPath); + } + else + { + // Well, we can't run jl_init due missing sys.so, so report about it to user + m_error = sysimg_file_info.absoluteFilePath(); + return 1; + } + } + + qDebug() << "pass sysimg path to jl_init function: " << sysimg_file_info.absoluteFilePath(); + jl_init_with_image(dir_path.toLatin1().constData(), sysimg_path.toLatin1().constData()); + + jl_eval_string("import REPL;"); + + return 0; +} + +void JuliaServer::runJuliaCommand(const QString &command) +{ + // Redirect stdout, stderr to temporary files + QTemporaryFile output, error; + if (!output.open() || !error.open()) { + qFatal("Unable to create temporary files for stdout/stderr"); + return; + } + jl_eval_string("const __originalSTDOUT__ = stdout"); + jl_eval_string("const __originalSTDERR__ = stderr"); + jl_eval_string( + QString::fromLatin1("redirect_stdout(open(\"%1\", \"w\"))") + .arg(output.fileName()).toLatin1().constData() + ); + jl_eval_string( + QString::fromLatin1("redirect_stderr(open(\"%1\", \"w\"))") + .arg(error.fileName()).toLatin1().constData() + ); + + jl_module_t* jl_repl_module = (jl_module_t*)(jl_eval_string("REPL")); + jl_function_t* jl_ends_func = jl_get_function(jl_repl_module, "ends_with_semicolon"); + bool isEndsWithSemicolon = jl_unbox_bool(jl_call1(jl_ends_func, jl_cstr_to_string(command.toStdString().c_str()))); + + // Run command + jl_value_t *val = static_cast( + jl_eval_string(command.toUtf8().constData()) + ); + + if (jl_exception_occurred()) { // If exception occurred + // Show it to user in stderr +#if QT_VERSION_CHECK(JULIA_VERSION_MAJOR, JULIA_VERSION_MINOR, 0) >= QT_VERSION_CHECK(1, 7, 0) + jl_value_t *ex = jl_current_task->ptls->previous_exception; +#elif QT_VERSION_CHECK(JULIA_VERSION_MAJOR, JULIA_VERSION_MINOR, 0) >= QT_VERSION_CHECK(1, 1, 0) + jl_value_t *ex = jl_get_ptls_states()->previous_exception; +#else + jl_value_t *ex = jl_exception_in_transit; +#endif + jl_printf(JL_STDERR, "error during run:\n"); + jl_function_t *showerror = + jl_get_function(jl_base_module, "showerror"); + jl_value_t *bt = static_cast( + jl_eval_string("catch_backtrace()") + ); + jl_value_t *err_stream = static_cast( + jl_eval_string("stderr") + ); + jl_call3(showerror, err_stream, ex, bt); + jl_exception_clear(); + m_was_exception = true; + } else if (val && !isEndsWithSemicolon) { // no exception occurred + // If last result is not nothing, show it + jl_function_t *equality = jl_get_function(jl_base_module, "=="); + jl_value_t *nothing = + static_cast(jl_eval_string("nothing")); + bool is_nothing = jl_unbox_bool( + static_cast(jl_call2(equality, nothing, val)) + ); + if (!is_nothing) { + jl_value_t *out_display = static_cast(jl_eval_string("TextDisplay(stdout)")); + jl_function_t *display = jl_get_function(jl_base_module, "display"); + jl_call2(display, out_display, val); + } + m_was_exception = false; + } + // Clean up streams and files + jl_eval_string("flush(stdout)"); + jl_eval_string("flush(stderr)"); + jl_eval_string("redirect_stdout(__originalSTDOUT__)"); + jl_eval_string("redirect_stderr(__originalSTDERR__)"); + + // Clean up variables + auto vars_to_remove = { + "__originalSTDOUT__", "__originalSTDERR__" + }; + for (const auto &var : vars_to_remove) { + jl_eval_string( + QString::fromLatin1("%1 = 0").arg(QLatin1String(var)) + .toLatin1().constData() + ); + } + + + m_output = QString::fromUtf8(output.readAll()); + m_error = QString::fromUtf8(error.readAll()); +} + +QString JuliaServer::getError() const +{ + return m_error; +} + +QString JuliaServer::getOutput() const +{ + return m_output; +} + +bool JuliaServer::getWasException() const +{ + return m_was_exception; +} + +#if QT_VERSION_CHECK(JULIA_VERSION_MAJOR, JULIA_VERSION_MINOR, 0) >= QT_VERSION_CHECK(1, 1, 0) +#define JL_MAIN_MODULE jl_main_module +#else +#define JL_MAIN_MODULE jl_internal_main_module +#endif + +void JuliaServer::parseModules(bool variableManagement) +{ + parseJlModule(JL_MAIN_MODULE, variableManagement); +} + +void JuliaServer::parseJlModule(jl_module_t* module, bool parseValue) +{ + jl_function_t* jl_string_function = jl_get_function(jl_base_module, "string"); + jl_function_t* jl_sizeof_function = jl_get_function(jl_base_module, "sizeof"); + + if (module != JL_MAIN_MODULE) + { + const QString& moduleName = fromJuliaString(jl_call1(jl_string_function, (jl_value_t*)(module->name))); + if (parsedModules.contains(moduleName)) + return; + else + parsedModules.append(moduleName); + } + + jl_function_t* jl_names_function = jl_get_function(jl_base_module, "names"); + jl_value_t* names = jl_call1(jl_names_function, (jl_value_t*)module); + jl_value_t **data = (jl_value_t**)jl_array_data(names); + for (size_t i = 0; i < jl_array_len(names); i++) + { + bool isBindingResolved = (bool)jl_binding_resolved_p(module, (jl_sym_t*)(data[i])); + if (isBindingResolved) + { + + const QString& name = fromJuliaString(jl_call1(jl_string_function, data[i])); + jl_value_t* value = jl_get_binding_or_error(module, (jl_sym_t*)(data[i]))->value; + jl_datatype_t* datetype = (jl_datatype_t*)jl_typeof(value); + QString type = QString::fromUtf8(jl_typeof_str(value)); + // Module + if (jl_is_module(value)) + { + if (module == JL_MAIN_MODULE && (jl_module_t*)value != JL_MAIN_MODULE) + parseJlModule((jl_module_t*)value, parseValue); + } + // Function + else if (type.startsWith(QLatin1String("#")) || type == QLatin1String("Function")) + { + if (!m_functions.contains(name)) + m_functions.append(name); + } + // Variable + else if (datetype != jl_datatype_type) // Not type + { + if (module == JL_MAIN_MODULE && !INTERNAL_VARIABLES.contains(name)) + { + const QString& size = fromJuliaString(jl_call1(jl_string_function, jl_call1(jl_sizeof_function, value))); + if (parseValue) + { + const QString& valueString = fromJuliaString(jl_call1(jl_string_function, value)); + if (m_variables.contains(name)) + { + int i = m_variables.indexOf(name); + m_variableValues[i] = valueString; + m_variableSize[i] = size; + } + else + { + m_variables.append(name); + m_variableValues.append(valueString); + m_variableSize.append(size); + } + } + else + { + if (m_variables.contains(name)) + { + int i = m_variables.indexOf(name); + m_variableSize[i] = size; + } + else + { + m_variables.append(name); + m_variableSize.append(size); + } + } + } + } + } + } +} + +QString JuliaServer::fromJuliaString(const jl_value_t* value) +{ + return QString::fromUtf8(jl_string_data(value)); +} + +QStringList JuliaServer::variablesList() +{ + return m_variables; +} + +QStringList JuliaServer::variableValuesList() +{ + return m_variableValues; +} + +QStringList JuliaServer::variableSizesList() +{ + return m_variableSize; +} + +QStringList JuliaServer::functionsList() +{ + return m_functions; +} diff --git a/src/backends/julia/juliaserver/juliaserver.h b/src/backends/julia/juliaserver/juliaserver.h new file mode 100644 index 0000000..a0ac5ee --- /dev/null +++ b/src/backends/julia/juliaserver/juliaserver.h @@ -0,0 +1,103 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +#include +#include +#include + +#include + +/** + * Implementation of command execution server with DBus interface for Julia + * language. + * + * Uses Julia embedding + * https://docs.julialang.org/en/v1/manual/embedding/ to get results. + */ +class JuliaServer: public QObject +{ + Q_OBJECT +public: + explicit JuliaServer(QObject *parent = nullptr); + + ~JuliaServer() override; + +public Q_SLOTS: + /** + * Initializer for JuliaServer. Call this first before using it + * + * @return 0 - if all OK, 1 - if sys.so file missing. For error 1 - the filename of the missing file can be requested via getError() + * @param path path to julia executable + */ + Q_SCRIPTABLE int login(const QString &path); + + /** + * Runs a piece of julia code. After this returns use getOutput, getError, + * getWasException methods to retrieve execution result. + * + * @param command maybe multiline piece of julia code to run + */ + Q_SCRIPTABLE void runJuliaCommand(const QString &command); + + /** + * @return stdout output of the last command execution + */ + Q_SCRIPTABLE QString getOutput() const; + + /** + * @return stderr output of the last command execution + */ + Q_SCRIPTABLE QString getError() const; + + /** + * @return indicator that exception was triggered during last command + * execution + */ + Q_SCRIPTABLE bool getWasException() const; + + /** + * Reparse internal julia module and update list of variables and functions + * + * @param variableManagement true, if Variable Management enabled for this session + */ + Q_SCRIPTABLE void parseModules(bool variableManagement); + + /** + * @return list of variables in internal Julia's module + */ + Q_SCRIPTABLE QStringList variablesList(); + + /** + * @return corresponding list of values for variables from variablesList. + */ + Q_SCRIPTABLE QStringList variableValuesList(); + + /** + * @return corresponding list of values for variables from variablesList. + */ + Q_SCRIPTABLE QStringList variableSizesList(); + + /** + * @return list of function in internal Julia's module + */ + Q_SCRIPTABLE QStringList functionsList(); + +private: + void parseJlModule(jl_module_t* module, bool parseValue); + + QString fromJuliaString(const jl_value_t* value); +private: + QString m_error; //< Stores last stderr output + QString m_output; //< Stores last stdout output + bool m_was_exception; //< Stores indicator of exception + QStringList parsedModules; + QStringList m_variables; + QStringList m_variableValues; + QStringList m_variableSize; + QStringList m_functions; + static QStringList INTERNAL_VARIABLES; +}; diff --git a/src/backends/julia/juliaserver/main.cpp b/src/backends/julia/juliaserver/main.cpp new file mode 100644 index 0000000..611b67b --- /dev/null +++ b/src/backends/julia/juliaserver/main.cpp @@ -0,0 +1,42 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ + +#include +#include +#include +#include +#include + +#include "juliaserver.h" + +int main(int argc, char *argv[]) +{ + QCoreApplication app(argc, argv); + + if (!QDBusConnection::sessionBus().isConnected()) { + qWarning() << "Can't connect to the D-Bus session bus.\n" + "To start it, run: eval `dbus-launch --auto-syntax`"; + return 1; + } + + const QString &serviceName = + QString::fromLatin1("org.kde.Cantor.Julia-%1").arg(app.applicationPid()); + + if (!QDBusConnection::sessionBus().registerService(serviceName)) { + qWarning() << QDBusConnection::sessionBus().lastError().message(); + return 2; + } + + JuliaServer server; + QDBusConnection::sessionBus().registerObject( + QLatin1String("/"), + &server, + QDBusConnection::ExportAllSlots + ); + + QTextStream(stdout) << "ready" << endl; + + return app.exec(); +} diff --git a/src/backends/julia/juliasession.cpp b/src/backends/julia/juliasession.cpp new file mode 100644 index 0000000..dc158ba --- /dev/null +++ b/src/backends/julia/juliasession.cpp @@ -0,0 +1,331 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ +#include "juliasession.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "defaultvariablemodel.h" + +#include "juliaexpression.h" +#include "settings.h" +#include "juliahighlighter.h" +#include "juliakeywords.h" +#include "juliavariablemodel.h" +#include "juliaextensions.h" +#include "juliabackend.h" +#include "juliacompletionobject.h" + +using namespace Cantor; + +JuliaSession::JuliaSession(Cantor::Backend* backend) : Session(backend) +{ + setVariableModel(new JuliaVariableModel(this)); +} + +JuliaSession::~JuliaSession() +{ + if (m_process) + { + m_process->kill(); + m_process->deleteLater(); + m_process = nullptr; + } +} + +void JuliaSession::login() +{ + if (m_process) + return; + emit loginStarted(); + + m_process = new KProcess(this); + m_process->setOutputChannelMode(KProcess::OnlyStdoutChannel); + +#ifdef Q_OS_WIN + (*m_process) + << QStandardPaths::findExecutable(QLatin1String("cantor_juliaserver.exe")); +#else + (*m_process) + << QStandardPaths::findExecutable(QLatin1String("cantor_juliaserver")); +#endif + + connect(m_process, &QProcess::errorOccurred, this, &JuliaSession::reportServerProcessError); + + m_process->start(); + + m_process->waitForStarted(); + m_process->waitForReadyRead(); + QTextStream stream(m_process->readAllStandardOutput()); + + QString readyStatus = QLatin1String("ready"); + while (m_process->state() == QProcess::Running) { + const QString &rl = stream.readLine(); + if (rl == readyStatus) { + break; + } + } + + if (!QDBusConnection::sessionBus().isConnected()) { + qWarning() << "Can't connect to the D-Bus session bus.\n" + "To start it, run: eval `dbus-launch --auto-syntax`"; + return; + } + + const QString &serviceName = + QString::fromLatin1("org.kde.Cantor.Julia-%1").arg(m_process->pid()); + + m_interface = new QDBusInterface( + serviceName, + QString::fromLatin1("/"), + QString(), + QDBusConnection::sessionBus() + ); + + if (!m_interface->isValid()) { + qWarning() << QDBusConnection::sessionBus().lastError().message(); + return; + } + + const QDBusReply &reply = m_interface->call(QLatin1String("login"), + JuliaSettings::self()->replPath().path() + ); + if (reply.isValid()) + { + int errorCode = reply.value(); + if (errorCode != 0) + { + if (errorCode == 1) + { + const QString& juliaSysimgMissingFilepath = getError(); + KMessageBox::error(nullptr, i18n("Julia session can't login due internal julia problem with missing internal file - \"%1\"", juliaSysimgMissingFilepath), i18n("Error - Cantor")); + return; + } + else // All error codes should be supported + assert(false); + } + } + else + { + KMessageBox::error(nullptr, i18n("Julia session can't login due unknown internal problem"), i18n("Error - Cantor")); + return; + } + + + static_cast(variableModel())->setJuliaServer(m_interface); + + std::random_device rd; + std::mt19937 mt(rd()); + std::uniform_int_distribution rand_dist(0, 999999999); + m_plotFilePrefixPath = + QDir::tempPath() + + QLatin1String("/cantor_octave_") + + QString::number(m_process->pid()) + + QLatin1String("_") + + QString::number(rand_dist(mt)) + + QLatin1String("_"); + + updateVariables(); + + changeStatus(Session::Done); + emit loginDone(); + qDebug() << "login to julia done"; +} + +void JuliaSession::logout() +{ + if(!m_process) + return; + + if(status() == Cantor::Session::Running) + { + if(m_process && m_process->state() == QProcess::Running) + { + disconnect(m_process, &QProcess::errorOccurred, this, &JuliaSession::reportServerProcessError); + m_process->kill(); + } + m_process->deleteLater(); + m_process = nullptr; + interrupt(); + } + + if (!m_plotFilePrefixPath.isEmpty()) + { + int i = 0; + const QString& extension = JuliaExpression::plotExtensions[JuliaSettings::inlinePlotFormat()]; + QString filename = m_plotFilePrefixPath + QString::number(i) + QLatin1String(".") + extension; + while (QFile::exists(filename)) + { + QFile::remove(filename); + i++; + filename = m_plotFilePrefixPath + QString::number(i) + QLatin1String(".") + extension; + } + } + m_isIntegratedPlotsEnabled = false; + m_isIntegratedPlotsSettingsEnabled = false; + + Session::logout(); +} + +void JuliaSession::interrupt() +{ + if (expressionQueue().isEmpty()) + return; + + if (m_process && m_process->pid()) + { + disconnect(m_process, &QProcess::errorOccurred, this, &JuliaSession::reportServerProcessError); + m_process->kill(); + } + + qDebug()<<"interrupting " << expressionQueue().first()->command(); + for(auto* expression : expressionQueue()) + expression->setStatus(Cantor::Expression::Interrupted); + + expressionQueue().clear(); + + changeStatus(Cantor::Session::Done); +} + +Cantor::Expression *JuliaSession::evaluateExpression(const QString& cmd, Cantor::Expression::FinishingBehavior behave, bool internal) +{ + auto* expr = new JuliaExpression(this, internal); + expr->setFinishingBehavior(behave); + expr->setCommand(cmd); + expr->evaluate(); + + return expr; +} + +Cantor::CompletionObject* JuliaSession::completionFor(const QString &command, int index) +{ + return new JuliaCompletionObject(command, index, this); +} + +QSyntaxHighlighter* JuliaSession::syntaxHighlighter(QObject *parent) +{ + return new JuliaHighlighter(parent, this); +} + +void JuliaSession::runJuliaCommand(const QString &command) const +{ + m_interface->call(QLatin1String("runJuliaCommand"), command); +} + +void JuliaSession::runJuliaCommandAsync(const QString &command) +{ + m_interface->callWithCallback( + QLatin1String("runJuliaCommand"), + {command}, + this, + SLOT(onResultReady()) + ); +} + +void JuliaSession::onResultReady() +{ + static_cast(expressionQueue().first())->finalize(getOutput(), getError(), getWasException()); + finishFirstExpression(true); +} + +void JuliaSession::reportServerProcessError(QProcess::ProcessError serverError) +{ + switch(serverError) + { + case QProcess::Crashed: + emit error(i18n("Julia process stopped working.")); + break; + case QProcess::FailedToStart: + emit error(i18n("Failed to start Julia process.")); + break; + default: + emit error(i18n("Communication with Julia process failed for unknown reasons.")); + break; + } + qDebug() << "reportSessionCrash" << serverError; + reportSessionCrash(); +} + +void JuliaSession::runFirstExpression() +{ + auto* expr = expressionQueue().first(); + expr->setStatus(Cantor::Expression::Computing); + + runJuliaCommandAsync(expr->internalCommand()); +} + +QString JuliaSession::getStringFromServer(const QString &method) +{ + const QDBusReply &reply = m_interface->call(method); + return (reply.isValid() ? reply.value() : reply.error().message()); +} + +QString JuliaSession::getOutput() +{ + return getStringFromServer(QLatin1String("getOutput")); +} + +QString JuliaSession::getError() +{ + return getStringFromServer(QLatin1String("getError")); +} + +bool JuliaSession::getWasException() +{ + const QDBusReply &reply = + m_interface->call(QLatin1String("getWasException")); + return reply.isValid() && reply.value(); +} + +QString JuliaSession::plotFilePrefixPath() const +{ + return m_plotFilePrefixPath; +} + +void JuliaSession::updateGraphicPackagesFromSettings() +{ + if (m_isIntegratedPlotsSettingsEnabled == JuliaSettings::integratePlots()) + return; + + if (m_isIntegratedPlotsEnabled && JuliaSettings::integratePlots() == false) + { + updateEnabledGraphicPackages(QList()); + m_isIntegratedPlotsEnabled = false; + m_isIntegratedPlotsSettingsEnabled = true; + return; + } + else if (!m_isIntegratedPlotsEnabled && JuliaSettings::integratePlots() == true) + { + m_isIntegratedPlotsEnabled = true; + m_isIntegratedPlotsSettingsEnabled = true; + + updateEnabledGraphicPackages(backend()->availableGraphicPackages()); + } +} + +QString JuliaSession::graphicPackageErrorMessage(QString packageId) const +{ + QString text; + + if (packageId == QLatin1String("gr")) { + return i18n( + "For Julia only GR (https://gr-framework.org/), a framework for visualization applications, is supported at the moment. " + "This package has to be installed first, if not done yet. " + "For this, run Pkg.install(\"GR\") in Cantor or in Julia REPL. " + "Note, this operation can take some time and it's better to perform it in Julia REPL that is able to show the current progress of the package installation." + ); + } + return text; +} + + diff --git a/src/backends/julia/juliasession.h b/src/backends/julia/juliasession.h new file mode 100644 index 0000000..a98c59f --- /dev/null +++ b/src/backends/julia/juliasession.h @@ -0,0 +1,140 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ +#pragma once + +#include +#include +#include + +#include "session.h" + +class JuliaExpression; +class JuliaCompletionObject; +class JuliaVariableModel; +class KProcess; +class QDBusInterface; +namespace Cantor { + class DefaultVariableModel; +} + +/** + * Implements a Cantor session for the Julia backend + * + * It communicates through DBus interface with JuliaServer + */ +class JuliaSession: public Cantor::Session +{ + Q_OBJECT +public: + /** + * Constructs session + * + * @param backend owning backend + */ + explicit JuliaSession(Cantor::Backend *backend); + ~JuliaSession() override; + + /** + * @see Cantor::Session::login + */ + void login() override; + + /** + * @see Cantor::Session::logout + */ + void logout() override; + + /** + * @see Cantor::Session::interrupt + */ + void interrupt() override; + + /** + * @see Cantor::Session::evaluateExpression + */ + Cantor::Expression *evaluateExpression( + const QString &command, + Cantor::Expression::FinishingBehavior behave = Cantor::Expression::FinishingBehavior::DoNotDelete, + bool internal = false) override; + + /** + * @see Cantor::Session::completionFor + */ + Cantor::CompletionObject *completionFor( + const QString &cmd, + int index = -1) override; + + /** + * @see Cantor::Session::syntaxHighlighter + */ + QSyntaxHighlighter *syntaxHighlighter(QObject *parent) override; + + QString plotFilePrefixPath() const; + +private Q_SLOTS: + /** + * Called when async call to JuliaServer is finished + */ + void onResultReady(); + + // Handler for cantor_juliaserver crashes + void reportServerProcessError(QProcess::ProcessError serverError); + +private: + KProcess* m_process{nullptr}; //< process to run JuliaServer inside + QDBusInterface* m_interface{nullptr}; //< interface to JuliaServer + + /// Cache to speedup modules whos calls + QMap m_whos_cache; + + /// Variables for handling plot integration: settings value and real state + QString m_plotFilePrefixPath; + bool m_isIntegratedPlotsEnabled{false}; + bool m_isIntegratedPlotsSettingsEnabled{false}; + + void runFirstExpression() override; + + /** + * Runs Julia piece of code in synchronous mode + * + * @param command command to execute + */ + void runJuliaCommand(const QString &command) const; + + /** + * Runs Julia piece of code in asynchronous mode. When finished + * onResultReady is called + * + * @param command command to execute + */ + void runJuliaCommandAsync(const QString &command); + + /** + * Helper method to get QString returning function result + * + * @param method DBus method to call + * @return result of the method + */ + QString getStringFromServer(const QString &method); + + /** + * @return stdout of the last executed command + */ + QString getOutput(); + + /** + * @return stderr of the last executed command + */ + QString getError(); + + /** + * @return indicator of exception occurred during the last command execution + */ + bool getWasException(); + + void updateGraphicPackagesFromSettings(); + + QString graphicPackageErrorMessage(QString packageId) const override; +}; diff --git a/src/backends/julia/juliasettingswidget.cpp b/src/backends/julia/juliasettingswidget.cpp new file mode 100644 index 0000000..3c0e9de --- /dev/null +++ b/src/backends/julia/juliasettingswidget.cpp @@ -0,0 +1,33 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020-2022 Alexander Semke + */ + +#include "juliasettingswidget.h" + +JuliaSettingsWidget::JuliaSettingsWidget(QWidget* parent, const QString& id) : BackendSettingsWidget(parent, id) +{ + setupUi(this); + + m_tabWidget = tabWidget; + m_tabDocumentation = tabDocumentation; + m_urlRequester = kcfg_replPath; + + connect(tabWidget, &QTabWidget::currentChanged, this, &BackendSettingsWidget::tabChanged); + connect(kcfg_replPath, &KUrlRequester::textChanged, this, &BackendSettingsWidget::fileNameChanged); +} diff --git a/src/backends/julia/juliasettingswidget.h b/src/backends/julia/juliasettingswidget.h new file mode 100644 index 0000000..42b98a7 --- /dev/null +++ b/src/backends/julia/juliasettingswidget.h @@ -0,0 +1,35 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020 Alexander Semke + */ + +#ifndef JULIASETTINGSWIDGET_H +#define JULIASETTINGSWIDGET_H + +#include "ui_settings.h" +#include "../backendsettingswidget.h" + +class JuliaSettingsWidget : public BackendSettingsWidget, public Ui::JuliaSettingsBase +{ + Q_OBJECT + + public: + explicit JuliaSettingsWidget(QWidget* parent = nullptr, const QString& id = QString()); +}; + +#endif /* JULIASETTINGSWIDGET_H */ diff --git a/src/backends/julia/juliavariablemodel.cpp b/src/backends/julia/juliavariablemodel.cpp new file mode 100644 index 0000000..0a1f730 --- /dev/null +++ b/src/backends/julia/juliavariablemodel.cpp @@ -0,0 +1,82 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Nikita Sirgienko +*/ + +#include "juliavariablemodel.h" +#include "juliaextensions.h" +#include "juliasession.h" + +#include +#include +#include +#include + +#include "settings.h" + +using namespace Cantor; + +const QRegularExpression JuliaVariableModel::typeVariableInfo = QRegularExpression(QLatin1String("\\w+\\[")); +const QStringList JuliaVariableModel::internalCantorJuliaVariables = {QLatin1String("__cantor_gr_gks_need_restore__")}; + +JuliaVariableModel::JuliaVariableModel(JuliaSession* session): + DefaultVariableModel(session), + m_interface(nullptr) +{ +} + +void JuliaVariableModel::setJuliaServer(QDBusInterface* interface) +{ + m_interface = interface; +} + +void JuliaVariableModel::update() +{ + if (!m_interface) + return; + + m_interface->call(QLatin1String("parseModules"), JuliaSettings::variableManagement()); + + const QStringList& variables = + static_cast>(m_interface->call(QLatin1String("variablesList"))).value(); + + QList vars; + if (JuliaSettings::variableManagement()) + { + const QStringList& values = + static_cast>(m_interface->call(QLatin1String("variableValuesList"))).value(); + const QStringList& variablesSizes = + static_cast>(m_interface->call(QLatin1String("variableSizesList"))).value(); + + for (int i = 0; i < variables.size(); i++) + { + if (i >= values.size()) + { + qWarning() << "Don't have value for variable from julia server response, something wrong!"; + continue; + } + + const QString& name = variables[i]; + QString value = values[i]; + size_t size = variablesSizes[i].toULongLong(); + if (!internalCantorJuliaVariables.contains(name) && value != JuliaVariableManagementExtension::REMOVED_VARIABLE_MARKER) + { + // Register variable + // We use replace here, because julia return data type for some variables, and we need + // remove it to make variable view more consistent with the other backends + // More info: https://bugs.kde.org/show_bug.cgi?id=377771 + vars << Variable(name, value.replace(typeVariableInfo, QLatin1String("[")), size); + } + } + } + else + { + for (int i = 0; i < variables.size(); i++) + vars << Variable(variables[i], QString()); + } + setVariables(vars); + + const QStringList& newFuncs = + static_cast>(m_interface->call(QLatin1String("functionsList"))).value(); + setFunctions(newFuncs); +} diff --git a/src/backends/julia/juliavariablemodel.h b/src/backends/julia/juliavariablemodel.h new file mode 100644 index 0000000..4ede8dd --- /dev/null +++ b/src/backends/julia/juliavariablemodel.h @@ -0,0 +1,36 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Nikita Sirgienko +*/ + +#ifndef _JULIAVARIABLEMODEL_H +#define _JULIAVARIABLEMODEL_H + +#include + +#include "defaultvariablemodel.h" + +class JuliaSession; +class QDBusInterface; + +class JuliaVariableModel : public Cantor::DefaultVariableModel +{ + Q_OBJECT + public: + JuliaVariableModel( JuliaSession* session); + ~JuliaVariableModel() override = default; + + void update() override; + + void setJuliaServer(QDBusInterface* interface); + + private: + static const QRegularExpression typeVariableInfo; + static const QStringList internalCantorJuliaVariables; + + private: + QDBusInterface* m_interface; + QStringList m_functions; +}; + +#endif /* _JULIAVARIABLEMODEL_H */ diff --git a/src/backends/julia/scripts/variables_cleaner.jl b/src/backends/julia/scripts/variables_cleaner.jl new file mode 100644 index 0000000..334001b --- /dev/null +++ b/src/backends/julia/scripts/variables_cleaner.jl @@ -0,0 +1,11 @@ +# Variable cleaning script +for name in names(Main)[4:end] + if name == :__originalSTDOUT__ || name == :__originalSTDERR__ + continue + end + var_info = summary(eval(name)) + if var_info == "Function" || var_info == "Module" + continue + end + @eval (($name) = "%1") +end diff --git a/src/backends/julia/scripts/variables_loader.jl b/src/backends/julia/scripts/variables_loader.jl new file mode 100644 index 0000000..6daf31e --- /dev/null +++ b/src/backends/julia/scripts/variables_loader.jl @@ -0,0 +1,8 @@ +# Variable loading script. +# +# Install JLD script with `Pkg.add(JLD)` to use it +import JLD +for (var_name, value) in JLD.load("%1") + s = symbol(var_name) + @eval (($s) = ($value)) +end diff --git a/src/backends/julia/scripts/variables_saver.jl b/src/backends/julia/scripts/variables_saver.jl new file mode 100644 index 0000000..a97143c --- /dev/null +++ b/src/backends/julia/scripts/variables_saver.jl @@ -0,0 +1,16 @@ +# Variable saving script +# +# Install JLD script with `Pkg.add(JLD)` to use it +import JLD +JLD.jldopen("%1", "w") do file + for name in names(Main)[4:end] + if name == :__originalSTDOUT__ || name == :__originalSTDERR__ + continue + end + var_info = summary(eval(name)) + if var_info == "Function" || var_info == "Module" + continue + end + JLD.write(file, repr(name)[2:end], eval(name)) + end +end diff --git a/src/backends/julia/settings.kcfgc b/src/backends/julia/settings.kcfgc new file mode 100644 index 0000000..493ddf5 --- /dev/null +++ b/src/backends/julia/settings.kcfgc @@ -0,0 +1,3 @@ +File=juliabackend.kcfg +ClassName=JuliaSettings +Singleton=true diff --git a/src/backends/julia/settings.ui b/src/backends/julia/settings.ui new file mode 100644 index 0000000..c56b8ba --- /dev/null +++ b/src/backends/julia/settings.ui @@ -0,0 +1,199 @@ + + + JuliaSettingsBase + + + + 0 + 0 + 485 + 302 + + + + + + + 0 + + + + General + + + + + + Executable: + + + + + + + + + + Plot Integration: + + + + + + + If enabled, plots will be shown inside of the worksheet. Otherwise, plots will be shown in an external window. + + + Enabled + + + + + + + Variable Management: + + + + + + + Monitor the creation and destruction of variables and show the existing variables in the variable panel. + + + Enabled + + + + + + + Internal Plot Format: + + + + + + + Inner format of plots, if plots embedding is enabled. + + + + svg + + + + + png + + + + + + + + Graphic package to be used in the Plot Assistant + + + Package for Plot Assistant + + + + + + + + 0 + 0 + + + + Graphic package to be used in the Plot Assistant + + + + GR + + + + + Plots + + + + + PyPlot + + + + + Gadfly + + + + + + + + Qt::Vertical + + + + 20 + 46 + + + + + + + + + Autorun + + + + + + Commands to autorun + + + Qt::AlignCenter + + + + + + + + + + + Documentation + + + + + + + + + KComboBox + QComboBox +
      kcombobox.h
      +
      + + KUrlRequester + QWidget +
      kurlrequester.h
      + 1 +
      + + KEditListWidget + QWidget +
      keditlistwidget.h
      +
      +
      + + +
      diff --git a/src/backends/julia/testjulia.cpp b/src/backends/julia/testjulia.cpp new file mode 100644 index 0000000..34cc9bd --- /dev/null +++ b/src/backends/julia/testjulia.cpp @@ -0,0 +1,354 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ +#include "testjulia.h" + +#include "session.h" +#include "backend.h" +#include "expression.h" +#include "result.h" +#include "textresult.h" +#include "helpresult.h" +#include "imageresult.h" +#include "defaultvariablemodel.h" +#include "completionobject.h" + +#include "settings.h" + +QString TestJulia::backendName() +{ + return QLatin1String("julia"); +} + +void TestJulia::testOneLine() +{ + Cantor::Expression *e = evalExp(QLatin1String("2 + 3")); + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Done); + QVERIFY(e->result()->type() == Cantor::TextResult::Type); + QCOMPARE(e->result()->data().toString(), QLatin1String("5")); + QVERIFY(e->errorMessage().isEmpty()); +} + +void TestJulia::testOneLineWithPrint() +{ + Cantor::Expression *e = evalExp(QLatin1String("print(2 + 3)")); + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Done); + QVERIFY(e->result()->type() == Cantor::TextResult::Type); + QCOMPARE(e->result()->data().toString(), QLatin1String("5")); + QVERIFY(e->errorMessage().isEmpty()); +} + +void TestJulia::testException() +{ + Cantor::Expression *e = evalExp(QLatin1String("sqrt(-1)")); + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Error); + QCOMPARE(e->results().size(), 0); + QVERIFY( + !e->errorMessage().isEmpty() + && e->errorMessage().contains(QLatin1String( + "sqrt will only return a complex result if called with a " + "complex argument." + )) + ); +} + +void TestJulia::testSyntaxError() +{ + Cantor::Expression *e = evalExp(QLatin1String("for i = 1:10\nprint(i)")); + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Error); + QCOMPARE(e->results().size(), 0); + QVERIFY( + !e->errorMessage().isEmpty() + && e->errorMessage().contains(QLatin1String( + "syntax: incomplete: \"for\" at none:1 requires end" + )) + ); +} + +void TestJulia::testMultilineCode() +{ + Cantor::Expression *e = evalExp(QLatin1String( + "q = 0; # comment\n" + "# sdfsdf\n" + "for i = 1:10\n" + " global q\n" + " q += i\n" + "end\n" + "print(q)" + )); + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Done); + QVERIFY(e->result()->type() == Cantor::TextResult::Type); + QCOMPARE(e->result()->data().toString(), QLatin1String("55")); + QVERIFY(e->errorMessage().isEmpty()); +} + +void TestJulia::testPartialResultOnException() +{ + Cantor::Expression *e = evalExp(QLatin1String( + "for i = 1:5\n" + " print(i)\n" + "end\n" + "sqrt(-1)\n" + )); + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Error); + QVERIFY(e->result()->type() == Cantor::TextResult::Type); + QCOMPARE(e->result()->data().toString(), QLatin1String("12345")); + QVERIFY( + !e->errorMessage().isEmpty() + && e->errorMessage().contains(QLatin1String( + "sqrt will only return a complex result if called with a " + "complex argument." + )) + ); +} + +void TestJulia::testInlinePlot() +{ + if (!JuliaSettings::integratePlots()) + QSKIP("This test needs enabled plots integration in Julia settings", SkipSingle); + + Cantor::Expression* testGR = evalExp(QLatin1String("import GR")); + if (testGR->status() == Cantor::Expression::Error) + QSKIP("GR module not found, so skip tests for graphic", SkipSingle); + + Cantor::Expression *e = evalExp(QLatin1String( + "import GR\n" + "GR.plot([-1, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, 1], sin)" + )); + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Done); + QVERIFY(e->result()->type() == Cantor::ImageResult::Type); +} + +void TestJulia::testInlinePlotWithExceptionAndPartialResult() +{ + if (!JuliaSettings::integratePlots()) + QSKIP("This test needs enabled plots integration in Julia settings", SkipSingle); + + Cantor::Expression* testGR = evalExp(QLatin1String("import GR")); + if (testGR->status() == Cantor::Expression::Error) + QSKIP("GR module not found, so skip tests for graphic", SkipSingle); + + Cantor::Expression *e = evalExp(QLatin1String( + "import GR\n" + "print(\"gonna plot\")\n" + "sqrt(-1)\n" + "GR.plot([-1, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, 1], sin)\n" + )); + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Error); + QVERIFY(e->result()); + QVERIFY(e->result()->type() == Cantor::TextResult::Type); + QCOMPARE(e->result()->data().toString(), QLatin1String("gonna plot")); + QVERIFY( + !e->errorMessage().isEmpty() + && e->errorMessage().contains(QLatin1String( + "sqrt will only return a complex result if called with a " + "complex argument." + )) + ); +} + +void TestJulia::testAddVariablesFromCode() +{ + evalExp(QLatin1String("a = 0; b = 1; c = 2; d = 3\n")); + + auto variableModel = session()->variableModel(); + QStringList variableNames = + QString::fromLatin1("a b c d").split(QLatin1String(" ")); + + for (int i = 0; i < variableNames.size(); i++) { + QModelIndexList matchedVariables = variableModel->match( + variableModel->index(0, 0), + Qt::DisplayRole, + QVariant::fromValue(variableNames[i]), + -1, + Qt::MatchExactly + ); + QCOMPARE(matchedVariables.size(), 1); + auto match = matchedVariables[0]; + auto valueIndex = + variableModel->index(match.row(), match.column() + 1); + QVERIFY( + valueIndex.data(Qt::DisplayRole) == + QVariant::fromValue(QString::number(i)) + ); + } +} + +void TestJulia::testAddVariablesFromManager() +{ + Cantor::DefaultVariableModel* variableModel = session()->variableModel(); + QStringList variableNames = + QString::fromLatin1("a b c d").split(QLatin1String(" ")); + + for (int i = 0; i < variableNames.size(); i++) { + variableModel->addVariable(variableNames[i], QString::number(i)); + + QModelIndexList matchedVariables = variableModel->match( + variableModel->index(0, 0), + Qt::DisplayRole, + QVariant::fromValue(variableNames[i]), + -1, + Qt::MatchExactly + ); + QCOMPARE(matchedVariables.size(), 1); + auto match = matchedVariables[0]; + auto valueIndex = + variableModel->index(match.row(), match.column() + 1); + QVERIFY( + valueIndex.data(Qt::DisplayRole) == + QVariant::fromValue(QString::number(i)) + ); + } +} + +void TestJulia::testRemoveVariables() +{ + Cantor::DefaultVariableModel* variableModel = session()->variableModel(); + QStringList variableNames = + QString::fromLatin1("a b c d").split(QLatin1String(" ")); + + for (int i = 0; i < variableNames.size(); i++) { + variableModel->addVariable(variableNames[i], QString::number(i)); + } + for (int i = 0; i < variableNames.size(); i += 2) { + variableModel->removeVariable(variableNames[i]); + } + + for (int i = 0; i < variableNames.size(); i++) { + QModelIndexList matchedVariables = variableModel->match( + variableModel->index(0, 0), + Qt::DisplayRole, + QVariant::fromValue(variableNames[i]), + -1, + Qt::MatchExactly + ); + if (i % 2 == 0) { + QVERIFY(matchedVariables.isEmpty()); + } else { + QCOMPARE(matchedVariables.size(), 1); + auto match = matchedVariables[0]; + auto valueIndex = + variableModel->index(match.row(), match.column() + 1); + QVERIFY( + valueIndex.data(Qt::DisplayRole) == + QVariant::fromValue(QString::number(i)) + ); + } + } +} + +void TestJulia::testAutoCompletion() +{ + auto prefix = QLatin1String("ex"); + auto completionObject = session()->completionFor(prefix); + waitForSignal(completionObject, SIGNAL(fetchingDone())); + auto completions = completionObject->completions(); + + QStringList completionsToCheck; + completionsToCheck << QLatin1String("exit"); + completionsToCheck << QLatin1String("exponent"); + completionsToCheck << QLatin1String("exp"); + + for (auto completion : completionsToCheck) { + QVERIFY(completions.contains(completion)); + } + + for (auto completion : completions) { + QVERIFY(completion.startsWith(prefix)); + } +} + +void TestJulia::testComplexAutocompletion() +{ + auto prefix = QLatin1String("Base.Ma"); + auto completionObject = session()->completionFor(prefix); + waitForSignal(completionObject, SIGNAL(fetchingDone())); + auto completions = completionObject->completions(); + + QStringList completionsToCheck; + completionsToCheck << QLatin1String("Base.MainInclude"); + completionsToCheck << QLatin1String("Base.Math"); + completionsToCheck << QLatin1String("Base.Matrix"); + + for (auto completion : completionsToCheck) { + QVERIFY(completions.contains(completion)); + } + + for (auto completion : completions) { + QVERIFY(completion.startsWith(prefix)); + } +} + +void TestJulia::testExpressionQueue() +{ + Cantor::Expression* e1=session()->evaluateExpression(QLatin1String("0+1")); + Cantor::Expression* e2=session()->evaluateExpression(QLatin1String("1+1")); + QVERIFY(session()->status() == Cantor::Session::Running); + Cantor::Expression* e3=evalExp(QLatin1String("1+2")); + + QVERIFY(e1!=nullptr); + QVERIFY(e2!=nullptr); + QVERIFY(e3!=nullptr); + + QVERIFY(e1->result()); + QVERIFY(e2->result()); + QVERIFY(e3->result()); + + QCOMPARE(cleanOutput(e1->result()->data().toString()), QLatin1String("1")); + QCOMPARE(cleanOutput(e2->result()->data().toString()), QLatin1String("2")); + QCOMPARE(cleanOutput(e3->result()->data().toString()), QLatin1String("3")); +} + +void TestJulia::testHelpRequest() +{ + QSKIP("Skip, until we add this functionality to Julia backend", SkipSingle); + Cantor::Expression* e = evalExp(QLatin1String("?print")); + + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Status::Done); + QVERIFY(e->result() != nullptr); + QCOMPARE(e->result()->type(), (int)Cantor::HelpResult::Type); + QString text = QString::fromLatin1("Write to io (or to the default output stream stdout").toHtmlEscaped(); + text.replace(QLatin1Char(' '), QLatin1String(" ")); + QVERIFY(e->result()->toHtml().contains(text)); +} + +void TestJulia::testLoginLogout() +{ + // Logout from session twice and all must works fine + session()->logout(); + session()->logout(); + + // Login in session twice and all must works fine + session()->login(); + session()->login(); +} + +void TestJulia::testRestartWhileRunning() +{ + Cantor::Expression* e1=session()->evaluateExpression(QLatin1String("sleep(5)")); + + session()->logout(); + QCOMPARE(session()->status(), Cantor::Session::Disable); + QCOMPARE(e1->status(), Cantor::Expression::Interrupted); + session()->login(); + + Cantor::Expression* e2=evalExp( QLatin1String("2+2") ); + + QVERIFY(e2 != nullptr); + QVERIFY(e2->result() != nullptr); + + QCOMPARE(cleanOutput(e2->result()->data().toString() ), QLatin1String("4")); +} + +QTEST_MAIN(TestJulia) + diff --git a/src/backends/julia/testjulia.h b/src/backends/julia/testjulia.h new file mode 100644 index 0000000..3c7a240 --- /dev/null +++ b/src/backends/julia/testjulia.h @@ -0,0 +1,50 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2016 Ivan Lakhtanov +*/ +#pragma once + +#include + +class TestJulia: public BackendTest +{ + Q_OBJECT +private Q_SLOTS: + /// Test simple one-line command. Check that last result is printed + void testOneLine(); + /// Test one-line command returning `nothing`. No result is printed, except what `print` does + void testOneLineWithPrint(); + /// Test command, that emits exception + void testException(); + /// Test command consisting of multiple lines, including comments. + void testMultilineCode(); + /// Test command with malformed syntax + void testSyntaxError(); + /// Test that results gathered before exception occurred are shown + void testPartialResultOnException(); + /// Test command queue with some simple expressions + void testExpressionQueue(); + + /// Tests that inline plot is shown + void testInlinePlot(); + /// Tests that when exception occurred and plotting is done, partial text results shown to user + void testInlinePlotWithExceptionAndPartialResult(); + + /// Test registering new variables, when added by command + void testAddVariablesFromCode(); + /// Test registering new variables, when added from variable manager + void testAddVariablesFromManager(); + /// Test that removing variable unregisters it + void testRemoveVariables(); + + /// Test that auto completion provides expected results + void testAutoCompletion(); + void testComplexAutocompletion(); + + void testHelpRequest(); + + void testLoginLogout(); + void testRestartWhileRunning(); +private: + QString backendName() override; +}; diff --git a/src/backends/kalgebra/CMakeLists.txt b/src/backends/kalgebra/CMakeLists.txt new file mode 100644 index 0000000..655442e --- /dev/null +++ b/src/backends/kalgebra/CMakeLists.txt @@ -0,0 +1,22 @@ +set( KAlgebraBackend_SRCS + kalgebrasyntaxhelpobject.cpp + kalgebrabackend.cpp + kalgebrasession.cpp + kalgebraexpression.cpp + kalgebracompletionobject.cpp + kalgebraextensions.cpp +) + +remove_definitions(-DQT_NO_CAST_TO_ASCII) +remove_definitions(-DQT_NO_CAST_FROM_ASCII) + +kconfig_add_kcfg_files(KAlgebraBackend_SRCS settings.kcfgc) +install(FILES kalgebrabackend.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) + +ki18n_wrap_ui(KAlgebraBackend_SRCS settings.ui) + +add_backend(kalgebrabackend ${KAlgebraBackend_SRCS}) + +target_link_libraries( cantor_kalgebrabackend KF5::Analitza KF5::AnalitzaGui ) + +install( FILES cantor_kalgebra.knsrc DESTINATION ${KDE_INSTALL_KNSRCDIR} ) diff --git a/src/backends/kalgebra/cantor_kalgebra.knsrc b/src/backends/kalgebra/cantor_kalgebra.knsrc new file mode 100644 index 0000000..e50d3cf --- /dev/null +++ b/src/backends/kalgebra/cantor_kalgebra.knsrc @@ -0,0 +1,7 @@ +[KNewStuff3] +ProvidersUrl=https://autoconfig.kde.org/ocs/providers.xml +Categories=Cantor (Maxima),Cantor (Sage),Cantor (KAlgebra),Cantor (Qalculate),Cantor (Python 2),Cantor (Python 3),Cantor (Scilab),Cantor (Octave),Cantor (R),Cantor (Lua) +UploadCategories=Cantor (KAlgebra) +TargetDir=cantor/examples +Uncompress=never +CustomName=true diff --git a/src/backends/kalgebra/kalgebrabackend.cpp b/src/backends/kalgebra/kalgebrabackend.cpp new file mode 100644 index 0000000..6be9ae8 --- /dev/null +++ b/src/backends/kalgebra/kalgebrabackend.cpp @@ -0,0 +1,66 @@ +/* + SPDX-FileCopyrightText: 2009 Aleix Pol + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "kalgebrabackend.h" +#include "kalgebrasession.h" +#include "kalgebraextensions.h" +#include "settings.h" +#include "ui_settings.h" + +KAlgebraBackend::KAlgebraBackend(QObject* parent,const QList args) + : Cantor::Backend(parent, args) +{ + new KAlgebraVariableManagementExtension(this); +} + +QString KAlgebraBackend::id() const +{ + return QLatin1String("kalgebra"); +} + +QString KAlgebraBackend::version() const +{ + return QLatin1String("Analitza version 5.0"); +} + +Cantor::Session* KAlgebraBackend::createSession() +{ + return new KAlgebraSession(this); +} + +Cantor::Backend::Capabilities KAlgebraBackend::capabilities() const +{ + return Cantor::Backend::Completion | Cantor::Backend::SyntaxHighlighting + | Cantor::Backend::SyntaxHelp | Cantor::Backend::VariableManagement; +} + +QWidget* KAlgebraBackend::settingsWidget(QWidget* parent) const +{ + QWidget* widget = new QWidget(parent); + Ui::KAlgebraSettingsBase s; + s.setupUi(widget); + return widget; +} + +KConfigSkeleton* KAlgebraBackend::config() const +{ + return KAlgebraSettings::self(); +} + +QUrl KAlgebraBackend::helpUrl() const +{ + return QUrl(i18nc("The url to the documentation of KAlgebra, please check if there is a translated version and use the correct url", + "https://docs.kde.org/?application=kalgebra")); +} + +bool KAlgebraBackend::requirementsFullfilled(QString* const reason) const +{ + Q_UNUSED(reason); + return true; +} + +K_PLUGIN_FACTORY_WITH_JSON(kalgebrabackend, "kalgebrabackend.json", registerPlugin();) +#include "kalgebrabackend.moc" diff --git a/src/backends/kalgebra/kalgebrabackend.h b/src/backends/kalgebra/kalgebrabackend.h new file mode 100644 index 0000000..e92a655 --- /dev/null +++ b/src/backends/kalgebra/kalgebrabackend.h @@ -0,0 +1,30 @@ +/* + SPDX-FileCopyrightText: 2009 Aleix Pol + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef KALGEBRA_BACKEND_H +#define KALGEBRA_BACKEND_H + +#include "backend.h" +class KAlgebraBackend : public Cantor::Backend +{ + Q_OBJECT + public: + explicit KAlgebraBackend( QObject* parent = nullptr, const QList args = QList()); + ~KAlgebraBackend() override = default; + + QString id() const override; + Cantor::Session *createSession() override; + Cantor::Backend::Capabilities capabilities() const override; + + QWidget* settingsWidget(QWidget* parent) const override; + KConfigSkeleton* config() const override; + + QUrl helpUrl() const override; + QString version() const override; + bool requirementsFullfilled(QString* const reason) const override; +}; + +#endif /* _NULLBACKEND_H */ diff --git a/src/backends/kalgebra/kalgebrabackend.json b/src/backends/kalgebra/kalgebrabackend.json new file mode 100644 index 0000000..889c046 --- /dev/null +++ b/src/backends/kalgebra/kalgebrabackend.json @@ -0,0 +1,70 @@ +{ + "KPlugin": { + "Description": "KAlgebra backend for Cantor. Lets you use the same language you use in the KAlgebra application in Cantor worksheets.", + "Description[ca@valencia]": "Dorsal de KAlgebra per a Cantor. Us permet utilitzar als fulls de treball de Cantor el mateix llenguatge que utilitzeu en l'aplicació KAlgebra.", + "Description[ca]": "Dorsal de KAlgebra per al Cantor. Us permet utilitzar als fulls de treball del Cantor el mateix llenguatge que feu servir a l'aplicació KAlgebra.", + "Description[cs]": "Podpůrná vrstva KAlgebra pro Cantor. Umožňuje v listech Cantoru používat stejný jazyk jako v KAlgebra.", + "Description[de]": "KAlgebra-Modul für Cantor. Damit können Sie für die Arbeitsblätter in Cantor dieselbe Sprache wie in KAlgebra verwenden.", + "Description[el]": "Σύστημα υποστήριξης KAlgebra για το Cantor. Επιτρέπει τη χρήση της ίδιας γλώσσας που ψρησιμοποιείτε στην εφαρμογή KAlgebra στα φύλλα εργασίας Cantor.", + "Description[en_GB]": "KAlgebra backend for Cantor. Lets you use the same language you use in the KAlgebra application in Cantor worksheets.", + "Description[es]": "Motor de KAlgebra para Cantor. Le permite usar el mismo lenguaje que utiliza la aplicación KAlgebra en las hojas de trabajo de Cantor.", + "Description[et]": "Cantori KAlgebra taustaprogramm. Võimaldab kasutada Cantori töölehtedel sama keelt, mida kasutab rakendus KAlgebra.", + "Description[fi]": "Cantorin KAlgebra-taustajärjestelmä. Mahdollistaa KAlgebran kielen käytön Cantorin työkirjoissa.", + "Description[fr]": "Moteur KAlgebra pour Cantor vous permettant d'utiliser le même langage que dans l'application KAlgebra pour les feuilles de calcul de Cantor.", + "Description[gl]": "Infraestrutura de KAlgebra para Cantor. Permite empregar a mesma linguaxe que na aplicación KAlgebra nas fichas de Cantor.", + "Description[ia]": "Retroadministration de KAlgebra per Cantor. Il permitte a te de usar le mesme linguage que tu usa in le application de KAlgebra in folios de travalio de Cantor.", + "Description[it]": "Motore per KAlgebra di Cantor. Permette di usare in Cantor lo stesso linguaggio usato in KAlgebra.", + "Description[ka]": "KAlgebra -ის უკანაბოლო Cantor-სთვის. საშუალებას გაძლევთ, იგივე ენა, რასაც KAlgebra -ში იყენებთ, Cantor-ის ცხრილებში გამოიყენოთ.", + "Description[ko]": "Cantor의 KAlgebra 백엔드입니다. Cantor 워크시트에서 KAlgebra와 같은 언어를 사용할 수 있습니다.", + "Description[nl]": "Kalgebra backend voor Cantor. Het laat u dezelfde taal als in Kalgebra gebruiken in Cantor-werkbladen.", + "Description[nn]": "KAlgebra-motor for Cantor. Lèt deg bruka same sprÃ¥k som du brukar i KAlgebra-program i Cantor-arbeidsark.", + "Description[pl]": "Silnik programu KAlgebra dla Cantor. Pozwala na użycie w arkuszach Cantor tego samego języka co w programie KAlgebra.", + "Description[pt]": "Infra-estrutura do KAlgebra para o Cantor. Permite-lhe usar a mesma linguagem que usa na aplicação KAlgebra nas folhas de cálculo do Cantor.", + "Description[pt_BR]": "Infraestrutura do KAlgebra para o Cantor. Permite-lhe usar a mesma linguagem usada no aplicativo KAlgebra, nas planilhas do Cantor.", + "Description[ru]": "Модуль поддержки KAlgebra для Cantor. Позволяет использовать тот же язык, что и в KAlgebra, в документах Cantor.", + "Description[sk]": "KAlgebra backend pre Cantor. Umožní vám použiÅ¥ rovnaký jazyk, ktorý používate v aplikácii KAlgebra v listoch Cantor.", + "Description[sl]": "Zaledje KAlgebre za Cantor. V delovnih listih Cantor vam omogoča uporabo istega jezika kot v KAlgebri.", + "Description[sv]": "Kalgebra bakgrundsprogram för Cantor. LÃ¥ter dig använda samma sprÃ¥k i Cantors arbetsblad som i programmet Kalgebra.", + "Description[tr]": "Cantor için KAlgebra arka ucu. KAlgebra uygulaması içinde Cantor çalışma sayfalarında kullanılan dille aynı dili kullanmanıza izin verir.", + "Description[uk]": "Модуль KAlgebra для Cantor. Надає вам змогу використовувати мову команд програми KAlgebra на робочих аркушах Cantor.", + "Description[x-test]": "xxKAlgebra backend for Cantor. Lets you use the same language you use in the KAlgebra application in Cantor worksheets.xx", + "Description[zh_CN]": "KAlgebra 的 Cantor 后端。可供您在 Cantor 工作表里使用和 KAlgebra 一致的语言。", + "Description[zh_TW]": "KAlgebra 的 Cantor 後端介面。讓您使用與在 KAlgebra 應用程式中的 Cantor 工作表中相同的語言。", + "Icon": "kalgebrabackend", + "Id": "kalgebrabackend", + "License": "GPL", + "Name": "KAlgebra", + "Name[ar]": "جبرك", + "Name[ca@valencia]": "KAlgebra", + "Name[ca]": "KAlgebra", + "Name[cs]": "KAlgebra", + "Name[da]": "KAlgebra", + "Name[de]": "KAlgebra", + "Name[el]": "KAlgebra", + "Name[en_GB]": "KAlgebra", + "Name[es]": "KAlgebra", + "Name[et]": "KAlgebra", + "Name[fi]": "KAlgebra", + "Name[fr]": "KAlgebra", + "Name[gl]": "KAlgebra", + "Name[ia]": "KAlgebra", + "Name[it]": "KAlgebra", + "Name[ka]": "KAlgebra", + "Name[ko]": "KAlgebra", + "Name[nl]": "KAlgebra", + "Name[nn]": "KAlgebra", + "Name[pl]": "KAlgebra", + "Name[pt]": "KAlgebra", + "Name[pt_BR]": "KAlgebra", + "Name[ru]": "KAlgebra", + "Name[sk]": "KAlgebra", + "Name[sl]": "KAlgebra", + "Name[sv]": "Kalgebra", + "Name[tr]": "KAlgebra", + "Name[uk]": "KAlgebra", + "Name[x-test]": "xxKAlgebraxx", + "Name[zh_CN]": "KAlgebra", + "Name[zh_TW]": "數學_KAlgebra", + "Website": "https://edu.kde.org/kalgebra" + } +} diff --git a/src/backends/kalgebra/kalgebrabackend.kcfg b/src/backends/kalgebra/kalgebrabackend.kcfg new file mode 100644 index 0000000..1287913 --- /dev/null +++ b/src/backends/kalgebra/kalgebrabackend.kcfg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/src/backends/kalgebra/kalgebracompletionobject.cpp b/src/backends/kalgebra/kalgebracompletionobject.cpp new file mode 100644 index 0000000..de449b5 --- /dev/null +++ b/src/backends/kalgebra/kalgebracompletionobject.cpp @@ -0,0 +1,36 @@ +/* + SPDX-FileCopyrightText: 2009 Aleix Pol + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "kalgebracompletionobject.h" + +#include + +#include "kalgebrasession.h" +#include + +KAlgebraCompletionObject::KAlgebraCompletionObject(const QString& command, int index, KAlgebraSession* session) + : Cantor::CompletionObject(session) +{ + setLine(command, index); +} + +void KAlgebraCompletionObject::fetchCompletions() +{ + OperatorsModel* opm=static_cast(session())->operatorsModel(); + + QModelIndexList idxs=opm->match(opm->index(0,0), Qt::DisplayRole, command(), 5, Qt::MatchStartsWith); + QStringList comp; + foreach(const QModelIndex& idx, idxs) + comp << idx.data().toString(); + + setCompletions(comp); + emit fetchingDone(); +} + +bool KAlgebraCompletionObject::mayIdentifierBeginWith(QChar c) const +{ + return c.isLetter(); +} diff --git a/src/backends/kalgebra/kalgebracompletionobject.h b/src/backends/kalgebra/kalgebracompletionobject.h new file mode 100644 index 0000000..cfb1ad4 --- /dev/null +++ b/src/backends/kalgebra/kalgebracompletionobject.h @@ -0,0 +1,27 @@ +/* + SPDX-FileCopyrightText: 2009 Aleix Pol + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef KALGEBRA_COMPLETIONOBJECT_H +#define KALGEBRA_COMPLETIONOBJECT_H + +#include "completionobject.h" + +class KAlgebraSession; + +class KAlgebraCompletionObject : public Cantor::CompletionObject +{ + public: + KAlgebraCompletionObject( const QString& command, int index, KAlgebraSession* session); + ~KAlgebraCompletionObject() override = default; + + protected: + bool mayIdentifierBeginWith(QChar c) const override; + + protected Q_SLOTS: + void fetchCompletions() override; +}; + +#endif /* _NULLCOMPLETIONOBJECT_H */ diff --git a/src/backends/kalgebra/kalgebraexpression.cpp b/src/backends/kalgebra/kalgebraexpression.cpp new file mode 100644 index 0000000..0948d4d --- /dev/null +++ b/src/backends/kalgebra/kalgebraexpression.cpp @@ -0,0 +1,50 @@ +/* + SPDX-FileCopyrightText: 2009 Aleix Pol + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "kalgebraexpression.h" + +#include "textresult.h" +#include "helpresult.h" +#include "kalgebrasession.h" +#include + +#include +#include +#include + +KAlgebraExpression::KAlgebraExpression( KAlgebraSession* session, bool internal) + : Cantor::Expression(session, internal) +{} + +void KAlgebraExpression::evaluate() +{ + setStatus(Cantor::Expression::Computing); + + Analitza::Analyzer* a=static_cast(session())->analyzer(); + Analitza::Expression res; + QString cmd = command(); + QTextStream stream(&cmd); + + Analitza::ExpressionStream s(&stream); + for(; !s.atEnd();) { + a->setExpression(s.next()); + res = a->evaluate(); + + if(!a->isCorrect()) + break; + } + + if(a->isCorrect()) { + setResult(new Cantor::TextResult(res.toString())); + setStatus(Cantor::Expression::Done); + } else { + setErrorMessage(i18n("Error: %1", a->errors().join(QLatin1String("\n")))); + setStatus(Cantor::Expression::Error); + } +} + +void KAlgebraExpression::interrupt() +{} diff --git a/src/backends/kalgebra/kalgebraexpression.h b/src/backends/kalgebra/kalgebraexpression.h new file mode 100644 index 0000000..4e1c0d6 --- /dev/null +++ b/src/backends/kalgebra/kalgebraexpression.h @@ -0,0 +1,28 @@ +/* + SPDX-FileCopyrightText: 2009 Aleix Pol + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef KALGEBRA_EXPRESSION_H +#define KALGEBRA_EXPRESSION_H + +#include "expression.h" + +class KAlgebraSession; + +class KAlgebraExpression : public Cantor::Expression +{ + Q_OBJECT + public: + explicit KAlgebraExpression( KAlgebraSession* session, bool internal = false); + ~KAlgebraExpression() override = default; + + void evaluate() override; + void interrupt() override; + + void parseOutput(const QString&) override {}; + void parseError(const QString&) override {}; +}; + +#endif diff --git a/src/backends/kalgebra/kalgebraextensions.cpp b/src/backends/kalgebra/kalgebraextensions.cpp new file mode 100644 index 0000000..85315f9 --- /dev/null +++ b/src/backends/kalgebra/kalgebraextensions.cpp @@ -0,0 +1,22 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Alexander Rieder +*/ + +#include "kalgebraextensions.h" + +KAlgebraVariableManagementExtension::KAlgebraVariableManagementExtension(QObject* parent) : Cantor::VariableManagementExtension(parent) +{ + +} + +QString KAlgebraVariableManagementExtension::addVariable(const QString& name, const QString& value) +{ + //Kalgebra uses the same command for adding and setting a variable + return setValue(name, value); +} + +QString KAlgebraVariableManagementExtension::setValue(const QString& name,const QString& value) +{ + return QString::fromLatin1("%1:=%2").arg(name, value); +} diff --git a/src/backends/kalgebra/kalgebraextensions.h b/src/backends/kalgebra/kalgebraextensions.h new file mode 100644 index 0000000..c4e8fa1 --- /dev/null +++ b/src/backends/kalgebra/kalgebraextensions.h @@ -0,0 +1,26 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Alexander Rieder +*/ + +#ifndef _KALGEBRAEXTENSION_H +#define _KALGEBRAEXTENSION_H + +#include "extension.h" + +class KAlgebraVariableManagementExtension : public Cantor::VariableManagementExtension +{ + public: + explicit KAlgebraVariableManagementExtension( QObject* parent ); + ~KAlgebraVariableManagementExtension() override = default; + + public Q_SLOTS: + QString addVariable(const QString& name, const QString& value) override; + QString setValue(const QString& name, const QString& value) override; + QString removeVariable(const QString&) override { return QString(); } + QString saveVariables(const QString&) override { return QString(); } + QString loadVariables(const QString&) override { return QString(); } + QString clearVariables() override { return QString(); } +}; + +#endif /* _KALGEBRAEXTENSION_H */ diff --git a/src/backends/kalgebra/kalgebrasession.cpp b/src/backends/kalgebra/kalgebrasession.cpp new file mode 100644 index 0000000..d72ce09 --- /dev/null +++ b/src/backends/kalgebra/kalgebrasession.cpp @@ -0,0 +1,102 @@ +/* + SPDX-FileCopyrightText: 2009 Aleix Pol + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "kalgebrasession.h" + +#include "settings.h" + +#include "kalgebraexpression.h" +#include "kalgebracompletionobject.h" +#include +#include +#include + +#include +#include "kalgebrasyntaxhelpobject.h" +#include +#include + +KAlgebraSession::KAlgebraSession( Cantor::Backend* backend) + : Session(backend) +{ + m_analyzer = new Analitza::Analyzer; + m_operatorsModel = new OperatorsModel; + m_variablesModel = new Analitza::VariablesModel(m_analyzer->variables()); + m_operatorsModel->setVariables(m_analyzer->variables()); +} + +KAlgebraSession::~KAlgebraSession() +{ + delete m_analyzer; +} + +void KAlgebraSession::login() +{ + emit loginStarted(); + if(!KAlgebraSettings::autorunScripts().isEmpty()){ + QString autorunScripts = KAlgebraSettings::self()->autorunScripts().join(QLatin1String("\n")); + + evaluateExpression(autorunScripts, KAlgebraExpression::DeleteOnFinish, true); + } + + changeStatus(Cantor::Session::Done); + emit loginDone(); +} + +void KAlgebraSession::logout() +{ + Session::logout(); +} + +void KAlgebraSession::interrupt() +{ + changeStatus(Cantor::Session::Done); +} + +Cantor::Expression* KAlgebraSession::evaluateExpression(const QString& cmd, + Cantor::Expression::FinishingBehavior behave, + bool internal) +{ + KAlgebraExpression* expr=new KAlgebraExpression(this, internal); + expr->setFinishingBehavior(behave); + + changeStatus(Cantor::Session::Running); + expr->setCommand(cmd); + expr->evaluate(); + changeStatus(Cantor::Session::Done); + + m_operatorsModel->setVariables(m_analyzer->variables()); + m_variablesModel->updateInformation(); + return expr; +} + +Cantor::CompletionObject* KAlgebraSession::completionFor(const QString& command, int index) +{ + return new KAlgebraCompletionObject(command, index, this); +} + +Cantor::SyntaxHelpObject* KAlgebraSession::syntaxHelpFor(const QString& cmd) +{ + return new KAlgebraSyntaxHelpObject(cmd, this); +} + +OperatorsModel* KAlgebraSession::operatorsModel() +{ + return m_operatorsModel; +} + +QSyntaxHighlighter* KAlgebraSession::syntaxHighlighter(QObject* parent) +{ + Q_UNUSED(parent); + //return new AlgebraHighlighter(parent->document()); + // TODO: Think of something better here. + return new AlgebraHighlighter(nullptr); +} + +QAbstractItemModel* KAlgebraSession::variableDataModel() const +{ + return m_variablesModel; +} diff --git a/src/backends/kalgebra/kalgebrasession.h b/src/backends/kalgebra/kalgebrasession.h new file mode 100644 index 0000000..46b5b5f --- /dev/null +++ b/src/backends/kalgebra/kalgebrasession.h @@ -0,0 +1,46 @@ +/* + SPDX-FileCopyrightText: 2009 Aleix Pol + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef KALGEBRA_SESSION_H +#define KALGEBRA_SESSION_H + +#include "session.h" + +class OperatorsModel; +class KAlgebraExpression; + +namespace Analitza { +class Analyzer; +class VariablesModel; +} + +class KAlgebraSession : public Cantor::Session +{ + Q_OBJECT + public: + explicit KAlgebraSession( Cantor::Backend* backend); + ~KAlgebraSession() override; + + void login() override; + void logout() override; + + void interrupt() override; + + Cantor::Expression* evaluateExpression(const QString& command, Cantor::Expression::FinishingBehavior behave = Cantor::Expression::FinishingBehavior::DoNotDelete, bool internal = false) override; + Cantor::CompletionObject* completionFor(const QString& cmd, int index=-1) override; + Cantor::SyntaxHelpObject* syntaxHelpFor(const QString& cmd) override; + Analitza::Analyzer* analyzer() const { return m_analyzer; } + OperatorsModel* operatorsModel(); + QSyntaxHighlighter* syntaxHighlighter(QObject* parent) override; + QAbstractItemModel* variableDataModel() const override; + + private: + Analitza::Analyzer* m_analyzer; + OperatorsModel* m_operatorsModel; + Analitza::VariablesModel* m_variablesModel; +}; + +#endif diff --git a/src/backends/kalgebra/kalgebrasyntaxhelpobject.cpp b/src/backends/kalgebra/kalgebrasyntaxhelpobject.cpp new file mode 100644 index 0000000..90462a0 --- /dev/null +++ b/src/backends/kalgebra/kalgebrasyntaxhelpobject.cpp @@ -0,0 +1,36 @@ +/* + SPDX-FileCopyrightText: 2009 Aleix Pol + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "kalgebrasyntaxhelpobject.h" +#include "kalgebrasession.h" +#include +#include + +KAlgebraSyntaxHelpObject::KAlgebraSyntaxHelpObject(const QString& command, KAlgebraSession* session) + : SyntaxHelpObject(command, session) +{} + +void KAlgebraSyntaxHelpObject::fetchInformation() +{ + OperatorsModel* opm=static_cast(session())->operatorsModel(); + QModelIndexList idxs=opm->match(opm->index(0,0), Qt::DisplayRole, command(), 1, Qt::MatchExactly); + Q_ASSERT(idxs.size()<=1); + + if(!idxs.isEmpty()) { + QString result; + QModelIndex idx=idxs.first(); + int c=opm->columnCount(idx); + for(int i=0; i%1: %2

      ", + opm->headerData(i, Qt::Horizontal).toString(), + opm->data(idx.sibling(idx.row(), i)).toString()); + } + + setHtml(result); + emit done(); + } +} + diff --git a/src/backends/kalgebra/kalgebrasyntaxhelpobject.h b/src/backends/kalgebra/kalgebrasyntaxhelpobject.h new file mode 100644 index 0000000..578b1f0 --- /dev/null +++ b/src/backends/kalgebra/kalgebrasyntaxhelpobject.h @@ -0,0 +1,23 @@ +/* + SPDX-FileCopyrightText: 2009 Aleix Pol + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef KALGEBRASYNTAXHELPOBJECT_H +#define KALGEBRASYNTAXHELPOBJECT_H + +#include + +class KAlgebraSession; + +class KAlgebraSyntaxHelpObject : public Cantor::SyntaxHelpObject +{ + public: + KAlgebraSyntaxHelpObject( const QString& command, KAlgebraSession* session ); + + protected: + void fetchInformation() override; +}; + +#endif // KALGEBRASYNTAXHELPOBJECT_H diff --git a/src/backends/kalgebra/settings.kcfgc b/src/backends/kalgebra/settings.kcfgc new file mode 100644 index 0000000..c616bda --- /dev/null +++ b/src/backends/kalgebra/settings.kcfgc @@ -0,0 +1,3 @@ +File=kalgebrabackend.kcfg +ClassName=KAlgebraSettings +Singleton=true diff --git a/src/backends/kalgebra/settings.ui b/src/backends/kalgebra/settings.ui new file mode 100644 index 0000000..6df39ae --- /dev/null +++ b/src/backends/kalgebra/settings.ui @@ -0,0 +1,53 @@ + + + KAlgebraSettingsBase + + + + 0 + 0 + 400 + 300 + + + + + + + This autorun commands, which will run on start new worksheet. They can be useful for loading needed modules, changing environment, etc. + + + Commands to autorun + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + KEditListWidget + QWidget +
      keditlistwidget.h
      +
      +
      + + +
      diff --git a/src/backends/lua/CMakeLists.txt b/src/backends/lua/CMakeLists.txt new file mode 100644 index 0000000..dd36851 --- /dev/null +++ b/src/backends/lua/CMakeLists.txt @@ -0,0 +1,36 @@ +set(LuaBackend_SRCS + luabackend.cpp + luasession.cpp + luaexpression.cpp + luacompletionobject.cpp + luahelper.cpp + luakeywords.cpp + luahighlighter.cpp + luaextensions.cpp + luasettingswidget.cpp + ../backendsettingswidget.cpp +) + +kconfig_add_kcfg_files(LuaBackend_SRCS settings.kcfgc) +install(FILES luabackend.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) + +ki18n_wrap_ui(LuaBackend_SRCS settings.ui) + +add_backend(luabackend ${LuaBackend_SRCS}) + +include_directories(${LUAJIT_INCLUDE_DIR}) + +target_link_libraries(cantor_luabackend cantor_help ${LUAJIT_LIBRARY} KF5::SyntaxHighlighting) + +if(BUILD_TESTING) + add_executable( testlua testlua.cpp) + add_test(NAME testlua COMMAND testlua) + ecm_mark_as_test(testlua) + target_link_libraries( testlua + Qt5::Test + cantorlibs + cantortest + ) +endif(BUILD_TESTING) + +install(FILES cantor_lua.knsrc DESTINATION ${KDE_INSTALL_KNSRCDIR} ) diff --git a/src/backends/lua/cantor_lua.knsrc b/src/backends/lua/cantor_lua.knsrc new file mode 100644 index 0000000..e5d81b5 --- /dev/null +++ b/src/backends/lua/cantor_lua.knsrc @@ -0,0 +1,7 @@ +[KNewStuff3] +ProvidersUrl=https://autoconfig.kde.org/ocs/providers.xml +Categories=Cantor (Maxima),Cantor (Sage),Cantor (KAlgebra),Cantor (Qalculate),Cantor (Python 2),Cantor (Python 3),Cantor (Scilab),Cantor (Octave),Cantor (R),Cantor (Lua) +UploadCategories=Cantor (Lua) +TargetDir=cantor/examples +Uncompress=never +CustomName=true diff --git a/src/backends/lua/luabackend.cpp b/src/backends/lua/luabackend.cpp new file mode 100644 index 0000000..db2525c --- /dev/null +++ b/src/backends/lua/luabackend.cpp @@ -0,0 +1,72 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2014 Lucas Hermann Negri + SPDX-FileCopyrightText: 2019 Alexander Semke +*/ + +#include "luabackend.h" +#include "luaextensions.h" +#include "luasession.h" +#include "luasettingswidget.h" +#include "settings.h" + +#include + +LuaBackend::LuaBackend( QObject* parent,const QList args ) : Cantor::Backend( parent,args ) +{ + new LuaScriptExtension(this); +} + +QString LuaBackend::id() const +{ + return QLatin1String("lua"); +} + +QString LuaBackend::version() const +{ + return QLatin1String("LuaJIT 2.0"); +} + +Cantor::Session* LuaBackend::createSession() +{ + return new LuaSession(this); +} + +Cantor::Backend::Capabilities LuaBackend::capabilities() const +{ + Cantor::Backend::Capabilities cap = + Cantor::Backend::SyntaxHighlighting | + Cantor::Backend::Completion; + + return cap; +} + +bool LuaBackend::requirementsFullfilled(QString* const reason) const +{ + const QString& path = LuaSettings::self()->path().toLocalFile(); + return Cantor::Backend::checkExecutable(QLatin1String("Lua"), path, reason); +} + +QUrl LuaBackend::helpUrl() const +{ + return QUrl(i18nc("Lua official documentation", "https://www.lua.org/docs.html")); +} + +QString LuaBackend::description() const +{ + return i18n("Lua is a fast and lightweight scripting language, with a simple procedural syntax." \ + " There are several libraries in Lua aimed at math and science."); +} + +QWidget* LuaBackend::settingsWidget(QWidget* parent) const +{ + return new LuaSettingsWidget(parent, id()); +} + +KConfigSkeleton* LuaBackend::config() const +{ + return LuaSettings::self(); +} + +K_PLUGIN_FACTORY_WITH_JSON(luabackend, "luabackend.json", registerPlugin();) +#include "luabackend.moc" diff --git a/src/backends/lua/luabackend.h b/src/backends/lua/luabackend.h new file mode 100644 index 0000000..e48e597 --- /dev/null +++ b/src/backends/lua/luabackend.h @@ -0,0 +1,33 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2014 Lucas Hermann Negri +*/ + +#ifndef _LUABACKEND_H +#define _LUABACKEND_H + +#include "backend.h" + +class LuaBackend : public Cantor::Backend +{ +Q_OBJECT +public: + explicit LuaBackend( QObject* parent = nullptr, const QList args = QList()); + ~LuaBackend() override = default; + + QString id() const override; + QString version() const override; + + Cantor::Session* createSession() override; + Cantor::Backend::Capabilities capabilities() const override; + + bool requirementsFullfilled(QString* const reason = nullptr) const override; + QUrl helpUrl() const override; + QString description() const override; + + QWidget *settingsWidget(QWidget *parent) const override; + KConfigSkeleton *config() const override; +}; + + +#endif /* _LUABACKEND_H */ diff --git a/src/backends/lua/luabackend.json b/src/backends/lua/luabackend.json new file mode 100644 index 0000000..55750b2 --- /dev/null +++ b/src/backends/lua/luabackend.json @@ -0,0 +1,70 @@ +{ + "KPlugin": { + "Description": "Backend for luajit", + "Description[ca@valencia]": "Dorsal pel Luajit", + "Description[ca]": "Dorsal pel Luajit", + "Description[cs]": "Podpůrná vrstva pro luajit", + "Description[de]": "Modul für luajit", + "Description[el]": "Σύστημα υποστήριξης για το luajit", + "Description[en_GB]": "Backend for luajit", + "Description[es]": "Motor para luajit", + "Description[et]": "Luajit'i taustaprogramm", + "Description[fi]": "LuaJITin taustajärjestelmä", + "Description[fr]": "Moteur pour luajit", + "Description[gl]": "Infraestrutura para luajit.", + "Description[ia]": "Retroadministration per luajit", + "Description[it]": "Motore per luajit", + "Description[ka]": "უკანბოლო luajit-სთვის", + "Description[ko]": "Luajit 백엔드", + "Description[nl]": "Een backend voor luajit", + "Description[nn]": "Motor for LuaJIT", + "Description[pl]": "Silnik dla luajit", + "Description[pt]": "Infra-estrutura do luajit", + "Description[pt_BR]": "Infraestrutura para o luajit", + "Description[ru]": "Модуль поддержки языка Lua (компилятор LuaJIT)", + "Description[sk]": "Backend pre luajit", + "Description[sl]": "Zaledje za luajit", + "Description[sv]": "Bakgrundsprogram för luajit", + "Description[tr]": "Luajit için arka uç", + "Description[uk]": "Модуль для luajit", + "Description[x-test]": "xxBackend for luajitxx", + "Description[zh_CN]": "luajia 后端", + "Description[zh_TW]": "luajit 後端介面", + "Icon": "luabackend", + "Id": "Lua", + "License": "GPL", + "Name": "Lua", + "Name[ar]": "لوا", + "Name[ca@valencia]": "Lua", + "Name[ca]": "Lua", + "Name[cs]": "Lua", + "Name[da]": "Lua", + "Name[de]": "Lua", + "Name[el]": "Lua", + "Name[en_GB]": "Lua", + "Name[es]": "Lua", + "Name[et]": "Lua", + "Name[fi]": "Lua", + "Name[fr]": "Lua", + "Name[gl]": "Lua", + "Name[ia]": "Lua", + "Name[it]": "Lua", + "Name[ka]": "Lua", + "Name[ko]": "Lua", + "Name[nl]": "Lua", + "Name[nn]": "Lua", + "Name[pl]": "Lua", + "Name[pt]": "Lua", + "Name[pt_BR]": "Lua", + "Name[ru]": "Lua", + "Name[sk]": "Lua", + "Name[sl]": "Lua", + "Name[sv]": "Lua", + "Name[tr]": "Lua", + "Name[uk]": "Lua", + "Name[x-test]": "xxLuaxx", + "Name[zh_CN]": "Lua", + "Name[zh_TW]": "Lua", + "Website": "https://luajit.org" + } +} diff --git a/src/backends/lua/luabackend.kcfg b/src/backends/lua/luabackend.kcfg new file mode 100644 index 0000000..936398c --- /dev/null +++ b/src/backends/lua/luabackend.kcfg @@ -0,0 +1,17 @@ + + + QStandardPaths + + + + + QUrl::fromLocalFile(QStandardPaths::findExecutable(QLatin1String("luajit"))) + + + + + + diff --git a/src/backends/lua/luacompletionobject.cpp b/src/backends/lua/luacompletionobject.cpp new file mode 100644 index 0000000..03d9f12 --- /dev/null +++ b/src/backends/lua/luacompletionobject.cpp @@ -0,0 +1,59 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2014 Lucas Hermann Negri +*/ + +#include "luacompletionobject.h" + +#include + +#include "luasession.h" +#include "luahelper.h" +#include "luakeywords.h" + +LuaCompletionObject::LuaCompletionObject(const QString& command, int index, LuaSession* session) + : Cantor::CompletionObject(session) +{ + if (session->status() != Cantor::Session::Disable) + m_L = session->getState(); + else + m_L = nullptr; + setLine(command, index); +} + +void LuaCompletionObject::fetchCompletions() +{ + if (session()->status() != Cantor::Session::Done) + { + QStringList allCompletions; + + allCompletions << LuaKeywords::instance()->keywords(); + allCompletions << LuaKeywords::instance()->functions(); + allCompletions << LuaKeywords::instance()->variables(); + + setCompletions(allCompletions); + emit fetchingDone(); + } + else + { + QString name = command(); + int idx = name.lastIndexOf(QLatin1String("=")); + + // gets "table.next" from the expression "varname = table.next" + if(idx >= 0) + name = name.mid(idx+1).trimmed(); + + setCompletions( luahelper_completion(m_L, name) ); + emit fetchingDone(); + } +} + +bool LuaCompletionObject::mayIdentifierContain(QChar c) const +{ + return c.isLetter() || c.isDigit() || c == QLatin1Char('_') || c == QLatin1Char('.') || c == QLatin1Char(':'); +} + +bool LuaCompletionObject::mayIdentifierBeginWith(QChar c) const +{ + return c.isLetter() || c == QLatin1Char('_'); +} diff --git a/src/backends/lua/luacompletionobject.h b/src/backends/lua/luacompletionobject.h new file mode 100644 index 0000000..10436c2 --- /dev/null +++ b/src/backends/lua/luacompletionobject.h @@ -0,0 +1,32 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2014 Lucas Hermann Negri +*/ + +#ifndef _LUACOMPLETIONOBJECT_H +#define _LUACOMPLETIONOBJECT_H + +#include "completionobject.h" + +class LuaSession; +class QString; +struct lua_State; + +class LuaCompletionObject : public Cantor::CompletionObject +{ +public: + LuaCompletionObject( const QString& command, int index, LuaSession* session); + ~LuaCompletionObject() override = default; + +protected Q_SLOTS: + void fetchCompletions() override; + +protected: + bool mayIdentifierContain(QChar c) const override; + bool mayIdentifierBeginWith(QChar c) const override; + +private: + lua_State* m_L; +}; + +#endif /* _LUACOMPLETIONOBJECT_H */ diff --git a/src/backends/lua/luaexpression.cpp b/src/backends/lua/luaexpression.cpp new file mode 100644 index 0000000..7b20c51 --- /dev/null +++ b/src/backends/lua/luaexpression.cpp @@ -0,0 +1,59 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2014 Lucas Hermann Negri +*/ + +#include "luaexpression.h" +#include "luasession.h" +#include "luahelper.h" + +#include "textresult.h" +#include "imageresult.h" +#include "helpresult.h" + +#include + +#include +#include +#include + +LuaExpression::LuaExpression( Cantor::Session* session, bool internal) + : Cantor::Expression(session, internal) +{ +} + +void LuaExpression::evaluate() +{ + /* + * start evaluating the current expression + * set the status to computing + * decide what needs to be done if the user is trying to define a function etc + */ + if (command().isEmpty()) { + setStatus(Cantor::Expression::Done); + return; + } + + session()->enqueueExpression(this); +} + +void LuaExpression::parseError(const QString &error) +{ + qDebug() << error; + setErrorMessage(error); + setStatus(Error); +} + +void LuaExpression::parseOutput(const QString &output) +{ + qDebug()<<"parsing the output " << output; + + if (!output.isEmpty()) + setResult(new Cantor::TextResult(output)); + setStatus(Cantor::Expression::Done); +} + +void LuaExpression::interrupt() +{ + setStatus(Cantor::Expression::Interrupted); +} diff --git a/src/backends/lua/luaexpression.h b/src/backends/lua/luaexpression.h new file mode 100644 index 0000000..86f95e1 --- /dev/null +++ b/src/backends/lua/luaexpression.h @@ -0,0 +1,27 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2014 Lucas Hermann Negri +*/ + +#ifndef _LUAEXPRESSION_H +#define _LUAEXPRESSION_H + +#include "expression.h" + +struct lua_State; + +class LuaExpression : public Cantor::Expression +{ + Q_OBJECT + +public: + explicit LuaExpression( Cantor::Session* session, bool internal = false); + ~LuaExpression() override = default; + + void evaluate() override; + void interrupt() override; + void parseOutput(const QString&) override; + void parseError(const QString&) override; +}; + +#endif /* _LUAEXPRESSION_H */ diff --git a/src/backends/lua/luaextensions.cpp b/src/backends/lua/luaextensions.cpp new file mode 100644 index 0000000..feab370 --- /dev/null +++ b/src/backends/lua/luaextensions.cpp @@ -0,0 +1,31 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2014 Lucas Hermann Negri +*/ + +#include "luaextensions.h" +#include + +LuaScriptExtension::LuaScriptExtension(QObject* parent): Cantor::ScriptExtension(parent) {} + +LuaScriptExtension::~LuaScriptExtension() {} + +QString LuaScriptExtension::runExternalScript(const QString& path) +{ + return QString::fromLatin1("dofile(\"%1\")").arg(path); +} + +QString LuaScriptExtension::scriptFileFilter() +{ + return i18n("Lua script file (*.lua)"); +} + +QString LuaScriptExtension::highlightingMode() +{ + return QLatin1String("lua"); +} + +QString LuaScriptExtension::commandSeparator() +{ + return QLatin1String(""); +} diff --git a/src/backends/lua/luaextensions.h b/src/backends/lua/luaextensions.h new file mode 100644 index 0000000..5a4c830 --- /dev/null +++ b/src/backends/lua/luaextensions.h @@ -0,0 +1,24 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2014 Lucas Hermann Negri +*/ + +#ifndef LUAEXTENSIONS_H +#define LUAEXTENSIONS_H + +#include + +class LuaScriptExtension : public Cantor::ScriptExtension +{ + public: + explicit LuaScriptExtension(QObject* parent); + ~LuaScriptExtension() override; + + public Q_SLOTS: + QString scriptFileFilter() override; + QString highlightingMode() override; + QString runExternalScript(const QString& path) override; + QString commandSeparator() override; +}; + +#endif // LUAEXTENSIONS_H diff --git a/src/backends/lua/luahelper.cpp b/src/backends/lua/luahelper.cpp new file mode 100644 index 0000000..629b328 --- /dev/null +++ b/src/backends/lua/luahelper.cpp @@ -0,0 +1,117 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2014 Lucas Hermann Negri +*/ + +#include "luahelper.h" +#include "luakeywords.h" + +#include +#include +#include + +QString luahelper_tostring(lua_State* L, int idx) +{ + lua_getglobal(L, "tostring"); + lua_pushvalue(L, idx - 1); // tostring is on the top now! + lua_call(L, 1, 1); + QString str = QString::fromUtf8(lua_tostring(L, -1)); + lua_pop(L, 1); + return str; +} + +QString luahelper_dostring(lua_State* L, const QString& str) +{ + const QByteArray arr = str.toUtf8(); + bool err = ( luaL_loadbuffer(L, arr.data(), arr.size(), nullptr) || lua_pcall (L, 0, LUA_MULTRET, 0) ); + QString ret; + + if(err) + { + ret = QString::fromUtf8(lua_tostring(L, -1)); + lua_pop(L, 1); + } + + return ret; +} + +QString luahelper_getprinted(lua_State* L) +{ + luaL_loadstring(L, "return table.concat(__cantor, '\\n')"); + QString printed; + + if(!lua_pcall(L, 0, 1, 0) ) + printed = QString::fromUtf8(lua_tostring(L, -1)); + + lua_pop(L, 1); + + luaL_loadstring(L, "__cantor = {}"); // survives a __cantor = nil! + if( lua_pcall(L, 0, 0, 0) ) lua_pop(L, 1); + + return printed; +} + +static void luahelper_getkeys(lua_State* L, QStringList& list, const QString& prefix = QLatin1String("")) +{ + if(lua_type(L, -1) == LUA_TTABLE) + { + // ok, its a table, iterate the keys + lua_pushnil(L); + while (lua_next(L, -2) != 0) + { + if(lua_type(L, -2) == LUA_TSTRING) + { + QString key = QString::fromUtf8(lua_tostring(L, -2)); + list << prefix + key; + } + lua_pop(L, 1); + } + } +} + +QStringList luahelper_completion(lua_State* L, const QString& name) +{ + int top = lua_gettop(L); + + QStringList list; + + QStringList sections = name.split(QRegularExpression(QStringLiteral("\\.|:"))); + QString table, prefix; + + if(sections.size() == 1) // global table + { + list = LuaKeywords::instance()->keywords(); + table = QLatin1String("_G"); + } + else + { + if(sections.size() == 2) + { + table = sections.first(); // table.key + prefix = name.left(sections.first().length() + 1); // table. + } + } + + if(!table.isEmpty()) + { + // get keys from the table + QByteArray arr = table.toUtf8(); + lua_getglobal(L, arr.data()); + luahelper_getkeys(L, list, prefix); + + // get keys from the metatable.__index + if( lua_getmetatable(L, -1) ) + { + lua_getfield (L, -1, "__index"); + luahelper_getkeys(L, list, prefix); + lua_pop(L, 2); + // pop metatable and metatable.__index + } + + lua_pop(L, 1); // pop table + } + + lua_settop(L, top); + + return list; +} diff --git a/src/backends/lua/luahelper.h b/src/backends/lua/luahelper.h new file mode 100644 index 0000000..77ee913 --- /dev/null +++ b/src/backends/lua/luahelper.h @@ -0,0 +1,20 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2014 Lucas Hermann Negri +*/ + +#ifndef _LUAHELPER_H +#define _LUAHELPER_H + +#include + +struct lua_State; +class QString; + +/* follows lua_funcname convention */ +QString luahelper_tostring (lua_State* L, int idx); +QString luahelper_dostring (lua_State* L, const QString& str); +QString luahelper_getprinted (lua_State* L); +QStringList luahelper_completion (lua_State* L, const QString& name); + +#endif /* _LUAHELPER_H */ diff --git a/src/backends/lua/luahighlighter.cpp b/src/backends/lua/luahighlighter.cpp new file mode 100644 index 0000000..da73f06 --- /dev/null +++ b/src/backends/lua/luahighlighter.cpp @@ -0,0 +1,23 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2014 Lucas Hermann Negri +*/ + +#include "luahighlighter.h" +#include "luakeywords.h" +#include "luahelper.h" + +#include + +LuaHighlighter::LuaHighlighter(QObject* parent): DefaultHighlighter(parent) +{ + addKeywords (LuaKeywords::instance()->keywords()); + addFunctions(LuaKeywords::instance()->functions()); + addVariables(LuaKeywords::instance()->variables()); + + addRule(QRegularExpression(QStringLiteral("[A-Za-z0-9_]+(?=\\()")) , functionFormat()); + addRule(QRegularExpression(QStringLiteral("\"[^\"]*\"")) , stringFormat()); + addRule(QRegularExpression(QStringLiteral("'[^\'].*'")) , stringFormat()); + addRule(QRegularExpression(QStringLiteral("--[^\n]*")) , commentFormat()); + // did not add support for the multiline comment or multiline string +} diff --git a/src/backends/lua/luahighlighter.h b/src/backends/lua/luahighlighter.h new file mode 100644 index 0000000..9cb26f2 --- /dev/null +++ b/src/backends/lua/luahighlighter.h @@ -0,0 +1,18 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2014 Lucas Hermann Negri +*/ + +#ifndef LUAHIGHLIGHTER_H +#define LUAHIGHLIGHTER_H + +#include "defaulthighlighter.h" + +class LuaHighlighter : public Cantor::DefaultHighlighter +{ +public: + explicit LuaHighlighter(QObject* parent); + ~LuaHighlighter() override = default; +}; + +#endif // LUAHIGHLIGHTER_H diff --git a/src/backends/lua/luakeywords.cpp b/src/backends/lua/luakeywords.cpp new file mode 100644 index 0000000..b572e7e --- /dev/null +++ b/src/backends/lua/luakeywords.cpp @@ -0,0 +1,51 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Sirgienko Nikita +*/ + +#include "luakeywords.h" + +#include +#include + +LuaKeywords::LuaKeywords() +{ + KSyntaxHighlighting::Repository m_repository; + KSyntaxHighlighting::Definition definition = m_repository.definitionForName(QLatin1String("Lua")); + + m_keywords = definition.keywordList(QLatin1String("keywords")); + m_keywords << definition.keywordList(QLatin1String("control")); + + m_variables = definition.keywordList(QLatin1String("basevar")); + + m_functions = definition.keywordList(QLatin1String("basefunc")); +} + +LuaKeywords* LuaKeywords::instance() +{ + static LuaKeywords* inst = nullptr; + + if(inst == nullptr){ + inst = new LuaKeywords(); + qSort(inst->m_functions); + qSort(inst->m_keywords); + qSort(inst->m_variables); + } + + return inst; +} + +const QStringList& LuaKeywords::functions() const +{ + return m_functions; +} + +const QStringList& LuaKeywords::keywords() const +{ + return m_keywords; +} + +const QStringList& LuaKeywords::variables() const +{ + return m_variables; +} diff --git a/src/backends/lua/luakeywords.h b/src/backends/lua/luakeywords.h new file mode 100644 index 0000000..98a36a7 --- /dev/null +++ b/src/backends/lua/luakeywords.h @@ -0,0 +1,27 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Sirgienko Nikita +*/ + +#ifndef _LUAKEYWORDS_H +#define _LUAKEYWORDS_H + +#include + +class LuaKeywords +{ + public: + static LuaKeywords* instance(); + + const QStringList& functions() const; + const QStringList& keywords() const; + const QStringList& variables() const; + + private: + LuaKeywords(); + ~LuaKeywords() = default; + QStringList m_functions; + QStringList m_keywords; + QStringList m_variables; +}; +#endif /* _LUAKEYWORDS_H */ diff --git a/src/backends/lua/luasession.cpp b/src/backends/lua/luasession.cpp new file mode 100644 index 0000000..39bf78d --- /dev/null +++ b/src/backends/lua/luasession.cpp @@ -0,0 +1,282 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2014 Lucas Hermann Negri +*/ + +#include "luasession.h" +#include "luaexpression.h" +#include "luacompletionobject.h" +#include "luahighlighter.h" +#include "luahelper.h" +#include +#include "ui_settings.h" + +#ifndef Q_OS_WIN +#include +#endif + +#include + +const QString LuaSession::LUA_PROMPT = QLatin1String("> "); +const QString LuaSession::LUA_SUBPROMPT = QLatin1String(">> "); + +LuaSession::LuaSession( Cantor::Backend* backend) : Session(backend), + m_L(nullptr), + m_process(nullptr) +{ +} + +LuaSession::~LuaSession() +{ + if (m_process) + { + m_process->kill(); + m_process->deleteLater(); + m_process = nullptr; + } +} + +void LuaSession::login() +{ + emit loginStarted(); + + /* + * setup Qprocess here + * load the autoscripts + */ + + m_process = new QProcess(this); + m_process->setProgram(LuaSettings::self()->path().toLocalFile()); + m_process->setArguments(QStringList() << QLatin1String("-i")); + + m_process->setProcessChannelMode(QProcess::SeparateChannels); + + connect(m_process, SIGNAL(readyReadStandardOutput()), this, SLOT(readIntroMessage())); + connect(m_process, SIGNAL(started()), this, SLOT(processStarted())); + m_process->start(); + m_process->waitForStarted(); + m_process->waitForReadyRead(); + + // we need this for tab completion + m_L = luaL_newstate(); + luaL_openlibs(m_L); + + changeStatus(Cantor::Session::Done); + emit loginDone(); +} + +void LuaSession::readIntroMessage() +{ + while(m_process->bytesAvailable()) { + m_output.append(QString::fromLocal8Bit(m_process->readLine())); + } + + const QString& output = m_output.join(QLatin1String("\n")); + if(!output.isEmpty() && output.trimmed().endsWith(QLatin1String(">"))) { + qDebug() << " reading the intro message " << m_output ; + m_output.clear(); + + disconnect(m_process, SIGNAL(readyReadStandardOutput()), this , SLOT(readIntroMessage())); + connect(m_process, SIGNAL(readyReadStandardOutput()), this, SLOT(readOutput())); + connect(m_process, SIGNAL(readyReadStandardError()), this, SLOT(readError())); + } +} + +void LuaSession::readOutput() +{ + /* + * parse the output + * clear all the garbage + * set it as output + */ + // keep reading till the output ends with '>'. + // '>' marks the end of output for a particular command; + while(m_process->bytesAvailable()) { + QString line = QString::fromLocal8Bit(m_process->readLine()); + if (line.endsWith(QLatin1String("\n"))) + line.chop(1); + m_output.append(line); + } + + if (expressionQueue().size() > 0) + { + LuaExpression* expression = static_cast(expressionQueue().first()); + + // How parsing works: + // For each line of input command, which for example we name as X + // lua prints output in this form (common form, 90% of output) + // X + "\n" + command_output + "\n" + "> " or ">> " + "\n" + // or (merged form, rare, only 10% of output + // X + "\n" + command_output + "\n" + ("> " or ">> " in beginning of next X) + // Sometimes empty lines also apears in command output + + // In this realisation we iterate over input lines and output line and copy only output lines + int input_idx = 0; + int previous_output_idx = 0; + int output_idx = 0; + QString output; + qDebug() << "m_inputCommands" << m_inputCommands; + qDebug() << m_output; + while (output_idx < m_output.size() && input_idx < m_inputCommands.size()) + { + const QString& line = m_output[output_idx]; + bool previousLineIsPrompt = (output_idx >= 1 ? isPromptString(m_output[output_idx-1]) : true); + bool commonInputMatch = (line == m_inputCommands[input_idx] && previousLineIsPrompt); + bool mergedInputMatch = (line == LUA_PROMPT + m_inputCommands[input_idx] || line == LUA_SUBPROMPT + m_inputCommands[input_idx]); + + if (commonInputMatch || mergedInputMatch) + { + if (previous_output_idx + 1 < output_idx) + { + for (int i = previous_output_idx+1; i < output_idx; i++) + { + const QString& copiedLine = m_output[i]; + bool isLastLine = i == output_idx-1; + if (!(isLastLine && previousLineIsPrompt)) + output += copiedLine + QLatin1String("\n"); + } + } + previous_output_idx = output_idx; + input_idx++; + } + output_idx++; + } + + if (input_idx == m_inputCommands.size() && m_output[m_output.size()-1] == LUA_PROMPT) + { + //We parse all output, so copy tail of the output and pass it to lua expression + for (int i = previous_output_idx+1; i < m_output.size()-1; i++) + { + const QString& copiedLine = m_output[i]; + bool isLastLine = i == m_output.size()-1; + if (isLastLine) + output += copiedLine; + else + output += copiedLine + QLatin1String("\n"); + } + + expression->parseOutput(output); + m_output.clear(); + } + } +} + +bool LuaSession::isPromptString(const QString& s) +{ + return s == LUA_PROMPT || s == LUA_SUBPROMPT; +} + +void LuaSession::readError() +{ + qDebug() << "readError"; + QString error = QString::fromLocal8Bit(m_process->readAllStandardError()); + if (expressionQueue().isEmpty() || error.isEmpty()) + { + return; + } + + static_cast(expressionQueue().first())->parseError(error); +} + +void LuaSession::processStarted() +{ + qDebug() << m_process->program() << " pid " << m_process->processId() << " started"; +} + +void LuaSession::logout() +{ + if (!m_process) + return; + + if(status() == Cantor::Session::Running) + interrupt(); + + m_process->kill(); + m_process->deleteLater(); + m_process = nullptr; + + Session::logout(); +} + +void LuaSession::interrupt() +{ + qDebug() << expressionQueue().size(); + if(!expressionQueue().isEmpty()) + { + qDebug()<<"interrupting " << expressionQueue().first()->command(); + if(m_process && m_process->state() != QProcess::NotRunning) + { +#ifndef Q_OS_WIN + const int pid=m_process->pid(); + kill(pid, SIGINT); +#else + ; //TODO: interrupt the process on windows +#endif + } + foreach (Cantor::Expression* expression, expressionQueue()) + expression->setStatus(Cantor::Expression::Interrupted); + expressionQueue().clear(); + } + + changeStatus(Cantor::Session::Done); +} + +Cantor::Expression* LuaSession::evaluateExpression(const QString& cmd, Cantor::Expression::FinishingBehavior behave, bool internal) +{ + changeStatus(Cantor::Session::Running); + + LuaExpression* expression = new LuaExpression(this, internal); + + expression->setFinishingBehavior(behave); + expression->setCommand(cmd); + expression->evaluate(); + + return expression; +} + +void LuaSession::runFirstExpression() +{ + Cantor::Expression* expression = expressionQueue().first(); + connect(expression, SIGNAL(statusChanged(Cantor::Expression::Status)), this, SLOT(expressionFinished(Cantor::Expression::Status))); + QString command = expression->internalCommand(); + + m_inputCommands = command.split(QLatin1String("\n")); + m_output.clear(); + + command += QLatin1String("\n"); + qDebug() << "final command to be executed " << command; + qDebug() << "m_inputCommands" << m_inputCommands; + m_process->write(command.toLocal8Bit()); + + expression->setStatus(Cantor::Expression::Computing); +} + +Cantor::CompletionObject* LuaSession::completionFor(const QString& command, int index) +{ + return new LuaCompletionObject(command, index, this); +} + +void LuaSession::expressionFinished(Cantor::Expression::Status status) +{ + switch(status) + { + case Cantor::Expression::Done: + case Cantor::Expression::Error: + finishFirstExpression(); + break; + + default: + break; + } +} + +QSyntaxHighlighter* LuaSession::syntaxHighlighter(QObject* parent) +{ + LuaHighlighter* highlighter = new LuaHighlighter(parent); + return highlighter; +} + +lua_State* LuaSession::getState() const +{ + return m_L; +} diff --git a/src/backends/lua/luasession.h b/src/backends/lua/luasession.h new file mode 100644 index 0000000..847f297 --- /dev/null +++ b/src/backends/lua/luasession.h @@ -0,0 +1,56 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2014 Lucas Hermann Negri +*/ + +#ifndef _LUASESSION_H +#define _LUASESSION_H + +#include "session.h" +#include + +class LuaExpression; +class QProcess; + +class LuaSession : public Cantor::Session +{ + Q_OBJECT +public: + explicit LuaSession( Cantor::Backend* backend); + ~LuaSession() override; + + void login() override; + void logout() override; + + void interrupt() override; + + void runFirstExpression() override; + + Cantor::Expression* evaluateExpression(const QString& command, Cantor::Expression::FinishingBehavior behave = Cantor::Expression::FinishingBehavior::DoNotDelete, bool internal = false) override; + Cantor::CompletionObject* completionFor(const QString& cmd, int index=-1) override; + QSyntaxHighlighter* syntaxHighlighter(QObject* parent) override; + lua_State* getState() const; + +public Q_SLOTS: + void readIntroMessage(); + void readOutput(); + void readError(); + void processStarted(); + +private Q_SLOTS: + void expressionFinished(Cantor::Expression::Status status); + +private: + bool isPromptString(const QString& s); + +private: + lua_State* m_L; + QProcess* m_process; + QStringList m_inputCommands; + QStringList m_output; + + static const QString LUA_PROMPT; + static const QString LUA_SUBPROMPT; +}; + +#endif /* _LUASESSION_H */ diff --git a/src/backends/lua/luasettingswidget.cpp b/src/backends/lua/luasettingswidget.cpp new file mode 100644 index 0000000..488772c --- /dev/null +++ b/src/backends/lua/luasettingswidget.cpp @@ -0,0 +1,30 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020 Alexander Semke + */ + +#include "luasettingswidget.h" + +LuaSettingsWidget::LuaSettingsWidget(QWidget* parent, const QString& id) : BackendSettingsWidget(parent, id) +{ + setupUi(this); + + m_tabWidget = tabWidget; + m_tabDocumentation = tabDocumentation; + connect(tabWidget, &QTabWidget::currentChanged, this, &BackendSettingsWidget::tabChanged); +} diff --git a/src/backends/lua/luasettingswidget.h b/src/backends/lua/luasettingswidget.h new file mode 100644 index 0000000..da0f5b5 --- /dev/null +++ b/src/backends/lua/luasettingswidget.h @@ -0,0 +1,35 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020 Alexander Semke + */ + +#ifndef LUASETTINGSWIDGET_H +#define LUASETTINGSWIDGET_H + +#include "ui_settings.h" +#include "../backendsettingswidget.h" + +class LuaSettingsWidget : public BackendSettingsWidget, public Ui::LuaSettingsBase +{ + Q_OBJECT + + public: + explicit LuaSettingsWidget(QWidget* parent = nullptr, const QString& id = QString()); +}; + +#endif /* LUASETTINGSWIDGET_H */ diff --git a/src/backends/lua/settings.kcfgc b/src/backends/lua/settings.kcfgc new file mode 100644 index 0000000..592749a --- /dev/null +++ b/src/backends/lua/settings.kcfgc @@ -0,0 +1,3 @@ +File=luabackend.kcfg +ClassName=LuaSettings +Singleton=true diff --git a/src/backends/lua/settings.ui b/src/backends/lua/settings.ui new file mode 100644 index 0000000..4b7d498 --- /dev/null +++ b/src/backends/lua/settings.ui @@ -0,0 +1,93 @@ + + + LuaSettingsBase + + + + 0 + 0 + 420 + 302 + + + + + + + 0 + + + + General + + + + + + Path to luajit: + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + Autorun + + + + + + Commands to autorun + + + Qt::AlignCenter + + + + + + + + + + + Documentation + + + + + + + + + KUrlRequester + QWidget +
      kurlrequester.h
      + 1 +
      + + KEditListWidget + QWidget +
      keditlistwidget.h
      +
      +
      + + +
      diff --git a/src/backends/lua/testlua.cpp b/src/backends/lua/testlua.cpp new file mode 100644 index 0000000..1d6fb29 --- /dev/null +++ b/src/backends/lua/testlua.cpp @@ -0,0 +1,98 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Nikita Sirgienko +*/ + +#include "testlua.h" + +#include "session.h" +#include "backend.h" +#include "expression.h" +#include "result.h" +#include "imageresult.h" +#include "epsresult.h" + +#include "luaexpression.h" + +#include + +QString TestLua::backendName() +{ + return QLatin1String("lua"); +} + +void TestLua::testSimpleCommand() +{ + Cantor::Expression* e=evalExp( QLatin1String("print(2+2)\n") ); + + QVERIFY( e!=nullptr ); + QVERIFY( e->result()!=nullptr ); + + QCOMPARE( cleanOutput( e->result()->data().toString() ), QLatin1String("4") ); +} + +void TestLua::testMultilineCommand() +{ + Cantor::Expression* e=evalExp( QLatin1String("print(4+4); print(2-1)") ); + + QVERIFY( e!=nullptr ); + QVERIFY( e->result()!=nullptr ); + + QCOMPARE( cleanOutput(e->result()->data().toString()), QLatin1String("8\n1") ); +} + +void TestLua::testVariableDefinition() +{ + Cantor::Expression* e=evalExp( QLatin1String("num = 42; print(num)") ); + + QVERIFY( e!=nullptr ); + QVERIFY( e->result()!=nullptr ); + + QCOMPARE( cleanOutput(e->result()->data().toString()), QLatin1String("42") ); +} + +void TestLua::testInvalidSyntax() +{ + Cantor::Expression* e=evalExp( QLatin1String("2+2*+.") ); + + QVERIFY( e!=nullptr ); + QCOMPARE( e->status(), Cantor::Expression::Error ); +} + +void TestLua::testIfElseCondition() +{ + QSKIP("Skip, until problem with multiline input for lua backends not will be solved"); + QLatin1String cmd( + "if 12 > 50 then" + " print('true')" + "else" + " print('false')" + "end"); + + Cantor::Expression* e=evalExp(cmd); + + QVERIFY( e!=nullptr ); + QVERIFY( e->result()!=nullptr ); + + QCOMPARE( cleanOutput(e->result()->data().toString()), QLatin1String("false") ); +} + +void TestLua::testForLoop() +{ + QSKIP("Skip, until problem with multiline input for lua backends not will be solved"); + QLatin1String cmd( + "karlSum = 0""\n" + "for i = 1, 100 do""\n" + " karlSum = karlSum + i""\n" + "end""\n" + "print(karlSum)"); + + Cantor::Expression* e=evalExp(cmd); + + QVERIFY( e!=nullptr ); + QVERIFY( e->result()!=nullptr ); + + QCOMPARE( cleanOutput(e->result()->data().toString()), QLatin1String("5050") ); +} + +QTEST_MAIN( TestLua ) diff --git a/src/backends/lua/testlua.h b/src/backends/lua/testlua.h new file mode 100644 index 0000000..199a046 --- /dev/null +++ b/src/backends/lua/testlua.h @@ -0,0 +1,37 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Nikita Sirgienko +*/ + +#ifndef _TESTLUA_H +#define _TESTLUA_H + +#include "backendtest.h" + +/** This class test some of the basic functions of the Lua backend + The different tests represent some general expressions for preventing possible future regression +**/ +class TestLua : public BackendTest +{ + Q_OBJECT + +private Q_SLOTS: + //tests evaluating a simple command + void testSimpleCommand(); + //tests a command, containing more than 1 line + void testMultilineCommand(); + //tests simple variable definition + void testVariableDefinition(); + //tests a syntax error (not closing bracket) + void testInvalidSyntax(); + //tests if-else condition + void testIfElseCondition(); + //tests 'for' loop + void testForLoop(); + +private: + QString backendName() override; +}; + +#endif /* _TESTLUA_H */ + diff --git a/src/backends/maxima/CMakeLists.txt b/src/backends/maxima/CMakeLists.txt new file mode 100644 index 0000000..a6c61db --- /dev/null +++ b/src/backends/maxima/CMakeLists.txt @@ -0,0 +1,35 @@ +set( MaximaBackend_SRCS + maximabackend.cpp + maximasession.cpp + maximaexpression.cpp + maximaextensions.cpp + maximahighlighter.cpp + maximakeywords.cpp + maximacompletionobject.cpp + maximasettingswidget.cpp + maximasyntaxhelpobject.cpp + maximavariablemodel.cpp + ../backendsettingswidget.cpp +) + +kconfig_add_kcfg_files(MaximaBackend_SRCS settings.kcfgc) +install(FILES maximabackend.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) + +ki18n_wrap_ui(MaximaBackend_SRCS settings.ui) + +add_backend(maximabackend ${MaximaBackend_SRCS}) + +target_link_libraries(cantor_maximabackend cantor_help) + +if(BUILD_TESTING) + add_executable( testmaxima testmaxima.cpp) + add_test(NAME testmaxima COMMAND testmaxima) + target_link_libraries( testmaxima + Qt5::Test + cantorlibs + cantortest + ) +endif() + +install( FILES cantor_maxima.knsrc DESTINATION ${KDE_INSTALL_KNSRCDIR} ) +install( FILES cantor-initmaxima.lisp DESTINATION ${KDE_INSTALL_DATADIR}/cantor/maximabackend) diff --git a/src/backends/maxima/DESIGN b/src/backends/maxima/DESIGN new file mode 100644 index 0000000..7fc7149 --- /dev/null +++ b/src/backends/maxima/DESIGN @@ -0,0 +1,25 @@ +This backend allows Cantor to use the Maxima Computer Algebra System. + +It works by starting a Tcp Server on an open port (it just tries some, until one is +open), and then letting maxima connect to it(see setup-client command of maxima). +Once maxima has connected, the backend sends the commands through the socket, and +parses the delivered output. +The parsing itself is a bit tricky, as Maxima output can have different formattings. +1) it contains an output prompt. +2) no prompt: this means that either maxima has asked a question, or there has happened an + error. To determine which of the two it is, Cantor uses a timer, if for more than 100ms + no new output arrives it assumes that it's a question. This works fairly well, as this + case is rather seldom, and when an error occurs, maxima will soon deliver a new input prompt. +3) it contains a new input prompt: This means the computation is finished. If running the timer + from 2) is stopped, and the read output is prepared to be put into a Result. + +To allow embedding of plots, the backend watches if the commands contain a plot command +(using some regexp magic), sets a flag, and sends a slightly altered plot command to +maxima that contains a temporary target file. + +SyntaxHighlighting and TabCompletion are implemented in a very simplistic way, +by just using a static list of known functions/keywords. + +To allow SyntaxHelp and Typesetting, it launches a separate maxima process, that +then evaluates "? command" or "tex(expr)", and then the output is parsed. + diff --git a/src/backends/maxima/cantor-initmaxima.lisp b/src/backends/maxima/cantor-initmaxima.lisp new file mode 100644 index 0000000..65197e7 --- /dev/null +++ b/src/backends/maxima/cantor-initmaxima.lisp @@ -0,0 +1,87 @@ +;;this file is partially based on similar files from the WxMaxima and Texmacs projects + +(in-package :maxima) +#+clisp (defvar *old-suppress-check-redefinition* + custom:*suppress-check-redefinition*) +#+clisp (setf custom:*suppress-check-redefinition* t) +(setf *alt-display2d* 'cantor-latex-print) +(setf *alt-display1d* 'cantor-regular-print) +(setf *prompt-prefix* "") +;;the newline at the end of the next line is needed, as we otherwise might run into +;;weird issues with KPtyProcess caching the line of the prompt, and sending it twice +;;to readStdOut() +(setf *prompt-suffix* " +") +;(setf *general-display-prefix* "DISPLAY_PREFIX") +(setf *maxima-prolog* "Hello World") +(setf *maxima-epilog* "Bye!") + +(setf $display2d nil) + +;#-gcl(setf *debug-io* (make-two-way-stream *standard-input* *standard-output*)) +;#+(or cmu sbcl scl) +;(setf *terminal-io* (make-two-way-stream *standard-input* *standard-output*)) + +;; Small changes to mactex.lisp for interfacing with TeXmacs +;; Andrey Grozin, 2001-2006 + +;(defun main-prompt () +; (format () "~A(~A~D) ~A" *prompt-prefix* +; (tex-stripdollar $inchar) $linenum *prompt-suffix*)) + +(declare-top + (special lop rop ccol $gcprint $inchar) + (*expr tex-lbp tex-rbp)) +(defconstant texport *standard-output*) + +(defun tex-stripdollar (x) + (let ((s (quote-% (maybe-invert-string-case (symbol-name (stripdollar x)))))) + (if (> (length s) 1) + (concatenate 'string "\\mathrm{" s "}") + s))) + +(defprop mtimes ("\\*") texsym) + + +(defun cantor-latex-print (x) + (princ "") + (princ "") + (linear-displa x ) + (princ "") + + (let ((ccol 1)) + (mapc #'princ + (tex x '("") '("") 'mparen 'mparen))) + + (princ "") +) + +(defun cantor-regular-print (x) + (princ "") + (princ "") + (linear-displa x) + (princ "") + (princ "") +) + +(defun cantor-inspect (var) + ($disp var) + (mapc #'(lambda (x) + ($disp (eval x)) + ($disp "-cantor-value-separator-") + ) + (cdr var) + ) +) + +;; Fix bug with maxima tex output, LaTeX and amsmath, until Maxima team don't solve it +;; More info: https://sourceforge.net/p/maxima/bugs/3432/ +(defun tex-matrix(x l r) + (append l `("\\begin{pmatrix}") + (mapcan #'(lambda(y) + (tex-list (cdr y) nil (list "\\\\ ") "&")) + (cdr x)) + '("\\end{pmatrix}") r)) + +#+clisp (setf custom:*suppress-check-redefinition* + *old-suppress-check-redefinition*) diff --git a/src/backends/maxima/cantor_maxima.knsrc b/src/backends/maxima/cantor_maxima.knsrc new file mode 100644 index 0000000..76a8aa8 --- /dev/null +++ b/src/backends/maxima/cantor_maxima.knsrc @@ -0,0 +1,7 @@ +[KNewStuff3] +ProvidersUrl=https://autoconfig.kde.org/ocs/providers.xml +Categories=Cantor (Maxima),Cantor (Sage),Cantor (KAlgebra),Cantor (Qalculate),Cantor (Python 2),Cantor (Python 3),Cantor (Scilab),Cantor (Octave),Cantor (R),Cantor (Lua) +UploadCategories=Cantor (Maxima) +TargetDir=cantor/examples +Uncompress=never +CustomName=true diff --git a/src/backends/maxima/maximabackend.cpp b/src/backends/maxima/maximabackend.cpp new file mode 100644 index 0000000..a76730f --- /dev/null +++ b/src/backends/maxima/maximabackend.cpp @@ -0,0 +1,120 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2019 Alexander Semke +*/ + +#include "maximabackend.h" +#include "maximaextensions.h" +#include "maximasession.h" +#include "maximasettingswidget.h" +#include "settings.h" + +#include + +MaximaBackend::MaximaBackend( QObject* parent,const QList args ) : Cantor::Backend( parent,args ) +{ + //initialize the supported extensions + new MaximaHistoryExtension(this); + new MaximaScriptExtension(this); + new MaximaCASExtension(this); + new MaximaCalculusExtension(this); + new MaximaLinearAlgebraExtension(this); + new MaximaPlotExtension(this); + new MaximaVariableManagementExtension(this); +} + +MaximaBackend::~MaximaBackend() +{ + qDebug()<<"Destroying MaximaBackend"; +} + +QString MaximaBackend::id() const +{ + return QLatin1String("maxima"); +} + +QString MaximaBackend::version() const +{ + return QLatin1String("5.41, 5.42"); +} + +Cantor::Session* MaximaBackend::createSession() +{ + qDebug()<<"Spawning a new Maxima session"; + + return new MaximaSession(this); +} + +Cantor::Backend::Capabilities MaximaBackend::capabilities() const +{ + Cantor::Backend::Capabilities cap = + Cantor::Backend::LaTexOutput | + Cantor::Backend::InteractiveMode| + Cantor::Backend::SyntaxHighlighting| + Cantor::Backend::Completion | + Cantor::Backend::SyntaxHelp; + if(MaximaSettings::self()->variableManagement()) + cap |= Cantor::Backend::VariableManagement; + + return cap; +} + +bool MaximaBackend::requirementsFullfilled(QString* const reason) const +{ + const QString& path = MaximaSettings::self()->path().toLocalFile(); + return Cantor::Backend::checkExecutable(QLatin1String("Maxima"), path, reason); +} + +QUrl MaximaBackend::helpUrl() const +{ + return QUrl(i18nc("the url to the documentation of Maxima, please check if there is a translated version and use the correct url", + "http://maxima.sourceforge.net/docs/manual/en/maxima.html")); +} + +QString MaximaBackend::defaultHelp() const +{ + //taken from https://maxima.sourceforge.io/docs/manual/maxima_5.html + //@tranlators: don't tranlate Maxima's keywords here ("describe", "true", "false", etc.) which are put inside of + return i18n("

      Maxima's Help System

      " + "

      Function apropos

      " + "Searches for Maxima names which have name appearing anywhere within them; name must be a string or symbol. Thus, apropos(exp) returns a list of all the flags and functions which have exp as part of their name, such as expand, exp, and exponentialize. So, if you can only remember part of the name of a Maxima command or variable, you can use this command to find the rest of the name. Similarly, you can type apropos(tr_) to find a list of many of the switches relating to the translator, most of which begin with tr_.

      " + "apropos(\"\") returns a list with all Maxima names.

      " + "apropos returns the empty list [], if no name is found.

      " + "

      Function describe

      " + "describe(string) is equivalent to describe(string, exact).

      " + "describe(string, exact) finds an item with title equal (case-insensitive) to string, if there is any such item.

      " + "describe(string, inexact) finds all documented items which contain string in their titles. If there is more than one such item, Maxima asks the user to select an item or items to display.

      " + "? foo (with a space between ? and foo) is equivalent to describe(\"foo\", exact), and ?? foo is equivalent to describe(\"foo\", inexact).

      " + "describe("", inexact) yields a list of all topics documented in the on-line manual.

      " + "describe quotes its argument. describe returns true if some documentation is found, otherwise false.
      " + "

      Function example

      " + "example(topic) displays some examples of topic, which is a symbol or a string. To get examples for operators like if, do, or lambda the argument must be a string, e.g. example(\"do\"). example is not case sensitive. Most topics are function names.

      " + "example() returns the list of all recognized topics.

      " + "The name of the file containing the examples is given by the global option variable manual_demo, which defaults to \"manual.demo\".

      " + "example quotes its argument. example returns done unless no examples are found or there is no argument, in which case example returns the list of all recognized topics." + ); +} + +QWidget* MaximaBackend::settingsWidget(QWidget* parent) const +{ + return new MaximaSettingsWidget(parent, id()); +} + +KConfigSkeleton* MaximaBackend::config() const +{ + return MaximaSettings::self(); +} + +QString MaximaBackend::description() const +{ + return i18n("Maxima is a system for the manipulation of symbolic and numerical expressions, "\ + "including differentiation, integration, Taylor series, Laplace transforms, "\ + "ordinary differential equations, systems of linear equations, polynomials, and sets, "\ + "lists, vectors, matrices, and tensors. Maxima yields high precision numeric results "\ + "by using exact fractions, arbitrary precision integers, and variable precision "\ + "floating point numbers. Maxima can plot functions and data in two and three dimensions."); +} + +K_PLUGIN_FACTORY_WITH_JSON(maximabackend, "maximabackend.json", registerPlugin();) +#include "maximabackend.moc" diff --git a/src/backends/maxima/maximabackend.h b/src/backends/maxima/maximabackend.h new file mode 100644 index 0000000..fbfa35d --- /dev/null +++ b/src/backends/maxima/maximabackend.h @@ -0,0 +1,38 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _MAXIMABACKEND_H +#define _MAXIMABACKEND_H + +#include "backend.h" +#include "ui_settings.h" +#include "ui_qthelpconfigeditdialog.h" + +class QDialog; +class QTreeWidgetItem; + +class MaximaBackend : public Cantor::Backend +{ + Q_OBJECT + public: + explicit MaximaBackend( QObject* parent = nullptr, const QList args = QList()); + ~MaximaBackend() override; + + QString id() const override; + QString version() const override; + Cantor::Session* createSession() override; + Cantor::Backend::Capabilities capabilities() const override; + bool requirementsFullfilled(QString* const reason = nullptr) const override; + + QUrl helpUrl() const override; + QString defaultHelp() const override; + + QWidget* settingsWidget(QWidget* parent) const override; + KConfigSkeleton* config() const override; + + QString description() const override; +}; + +#endif /* _MAXIMABACKEND_H */ diff --git a/src/backends/maxima/maximabackend.json b/src/backends/maxima/maximabackend.json new file mode 100644 index 0000000..851ab44 --- /dev/null +++ b/src/backends/maxima/maximabackend.json @@ -0,0 +1,70 @@ +{ + "KPlugin": { + "Description": "Backend for the Maxima Computer Algebra System", + "Description[ca@valencia]": "Dorsal per a Maxima: un sistema d'àlgebra per ordinador", + "Description[ca]": "Dorsal per al Maxima: un sistema d'àlgebra per ordinador", + "Description[cs]": "Podpůrná vrstva pro počítačový systém algebry Maxima", + "Description[de]": "„Maxima Computer Algebra System“-Modul für Cantor", + "Description[el]": "Σύστημα υποστήριξης για το σύστημα υπολογιστικής άλγεβρας Maxima", + "Description[en_GB]": "Backend for the Maxima Computer Algebra System", + "Description[es]": "Motor para el sistema algebraico computacional Maxima", + "Description[et]": "Maxima kompuuter-algebrasüsteemi taustaprogramm", + "Description[fi]": "Maxima-tietokonealgebrajärjestelmän taustajärjestelmä", + "Description[fr]": "Moteur pour le système de calcul formel « Maxima »", + "Description[gl]": "Infraestrutura do Sistema de álxebra informática Maxima", + "Description[ia]": "Retroadministration per le Maxima Computer Algebra System", + "Description[it]": "Motore per il sistema di calcolo algebrico Maxima", + "Description[ka]": "Maxima Computer Algebra System-ის უკანაბოლო", + "Description[ko]": "Maxima 컴퓨터 대수 시스템 백엔드", + "Description[nl]": "Backend voor het Maxima Computer Algebra System", + "Description[nn]": "Motor for algebrasystemet Maxima", + "Description[pl]": "Silnik dla systemu algebry komputerowej Maxima", + "Description[pt]": "Infra-Estrutura do Sistema de Álgebra Computacional Maxima", + "Description[pt_BR]": "Infraestrutura para o Maxima Computer Algebra System", + "Description[ru]": "Модуль поддержки системы компьютерной алгебры Maxima", + "Description[sk]": "Backend pre Maxima Computer Algebra System", + "Description[sl]": "Zaledje za računalniški algebraični sistem Maxima", + "Description[sv]": "Bakgrundsprogram för datoralgebrasystemet Maxima", + "Description[tr]": "Maxima Computer Algebra System için arka uç", + "Description[uk]": "Модуль системи комп’ютерної алгебри Maxima", + "Description[x-test]": "xxBackend for the Maxima Computer Algebra Systemxx", + "Description[zh_CN]": "Maxima 计算器代数系统后端", + "Description[zh_TW]": "Maxima 電腦代數系統的後端介面", + "Icon": "maximabackend", + "Id": "Maxima", + "License": "GPL", + "Name": "Maxima", + "Name[ar]": "ماكسيما", + "Name[ca@valencia]": "Maxima", + "Name[ca]": "Maxima", + "Name[cs]": "Maxima", + "Name[da]": "Maxima", + "Name[de]": "Maxima", + "Name[el]": "Maxima", + "Name[en_GB]": "Maxima", + "Name[es]": "Maxima", + "Name[et]": "Maxima", + "Name[fi]": "Maxima", + "Name[fr]": "Maxima", + "Name[gl]": "Maxima", + "Name[ia]": "Maxima", + "Name[it]": "Maxima", + "Name[ka]": "Maxima", + "Name[ko]": "Maxima", + "Name[nl]": "Maxima", + "Name[nn]": "Maxima", + "Name[pl]": "Maxima", + "Name[pt]": "Maxima", + "Name[pt_BR]": "Maxima", + "Name[ru]": "Maxima", + "Name[sk]": "Maxima", + "Name[sl]": "Maxima", + "Name[sv]": "Maxima", + "Name[tr]": "Maxima", + "Name[uk]": "Maxima", + "Name[x-test]": "xxMaximaxx", + "Name[zh_CN]": "Maxima", + "Name[zh_TW]": "Maxima", + "Website": "http://maxima.sourceforge.net/" + } +} diff --git a/src/backends/maxima/maximabackend.kcfg b/src/backends/maxima/maximabackend.kcfg new file mode 100644 index 0000000..6aad78c --- /dev/null +++ b/src/backends/maxima/maximabackend.kcfg @@ -0,0 +1,33 @@ + + + QStandardPaths + + + + + + [this] { + #ifdef Q_OS_WIN + return QUrl::fromLocalFile(QStandardPaths::findExecutable( QLatin1String("maxima.bat") )); + #else + return QUrl::fromLocalFile(QStandardPaths::findExecutable( QLatin1String("maxima") )); + #endif + } () + + + + + true + + + + true + + + + + + diff --git a/src/backends/maxima/maximacompletionobject.cpp b/src/backends/maxima/maximacompletionobject.cpp new file mode 100644 index 0000000..97fc1ba --- /dev/null +++ b/src/backends/maxima/maximacompletionobject.cpp @@ -0,0 +1,66 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009-2012 Alexander Rieder +*/ + +#include "maximacompletionobject.h" + +#include + +#include "maximasession.h" +#include "maximakeywords.h" +#include "maximavariablemodel.h" + +MaximaCompletionObject::MaximaCompletionObject(const QString& command, int index,MaximaSession* session) : Cantor::CompletionObject(session) +{ + qDebug() << "MaximaCompletionObject constructor"; + setLine(command, index); +} + +void MaximaCompletionObject::fetchIdentifierType() +{ + QStringList userVariableNames=session()->variableModel()->variableNames(); + QStringList userFunctionNames=session()->variableModel()->functions(); + if (std::binary_search(userVariableNames.begin(), userVariableNames.end(), identifier())) + emit fetchingTypeDone(VariableType); + else if (std::binary_search(userFunctionNames.begin(), userFunctionNames.end(), identifier())) + emit fetchingTypeDone(FunctionType); + else if (std::binary_search(MaximaKeywords::instance()->functions().begin(), + MaximaKeywords::instance()->functions().end(), identifier())) + emit fetchingTypeDone(FunctionType); + else if (std::binary_search(MaximaKeywords::instance()->keywords().begin(), + MaximaKeywords::instance()->keywords().end(), identifier())) + emit fetchingTypeDone(KeywordType); + else + emit fetchingTypeDone(VariableType); +} + +void MaximaCompletionObject::fetchCompletions() +{ + QStringList allCompletions; + allCompletions<variables(); + allCompletions<functions(); + allCompletions<keywords(); + allCompletions<variableModel()->variableNames(); + allCompletions<variableModel()->functions(); + + const QString prefix = command(); + QStringList prefixCompletion; + for (const QString& str : allCompletions) + if (str.startsWith(prefix)) + prefixCompletion << str; + + setCompletions(prefixCompletion); + + emit fetchingDone(); +} + +bool MaximaCompletionObject::mayIdentifierContain(QChar c) const +{ + return c.isLetter() || c.isDigit() || c == QLatin1Char('_') || c == QLatin1Char('%'); +} + +bool MaximaCompletionObject::mayIdentifierBeginWith(QChar c) const +{ + return c.isLetter() || c == QLatin1Char('_') || c == QLatin1Char('%'); +} diff --git a/src/backends/maxima/maximacompletionobject.h b/src/backends/maxima/maximacompletionobject.h new file mode 100644 index 0000000..f12b7e0 --- /dev/null +++ b/src/backends/maxima/maximacompletionobject.h @@ -0,0 +1,28 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _MAXIMACOMPLETIONOBJECT_H +#define _MAXIMACOMPLETIONOBJECT_H + +#include "completionobject.h" + +class MaximaSession; + +class MaximaCompletionObject : public Cantor::CompletionObject +{ + public: + MaximaCompletionObject( const QString& cmd, int index, MaximaSession* session ); + ~MaximaCompletionObject() override = default; + + protected: + bool mayIdentifierContain(QChar c) const override; + bool mayIdentifierBeginWith(QChar c) const override; + + protected Q_SLOTS: + void fetchCompletions() override; + void fetchIdentifierType() override; +}; + +#endif /* _MAXIMACOMPLETIONOBJECT_H */ diff --git a/src/backends/maxima/maximaexpression.cpp b/src/backends/maxima/maximaexpression.cpp new file mode 100644 index 0000000..6fa82e0 --- /dev/null +++ b/src/backends/maxima/maximaexpression.cpp @@ -0,0 +1,512 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009-2012 Alexander Rieder + SPDX-FileCopyrightText: 2017-2022 by Alexander Semke (alexander.semke@web.de) +*/ + +#include "maximaexpression.h" + +#include + +#include "maximasession.h" +#include "textresult.h" +#include "epsresult.h" +#include "imageresult.h" +#include "helpresult.h" +#include "latexresult.h" +#include "settings.h" + +#include +#include + +#include +#include +#include +#include +#include +#include + +// MaximaExpression use real id from Maxima as expression id, so we don't know id before executing +MaximaExpression::MaximaExpression( Cantor::Session* session, bool internal ) : Cantor::Expression(session, internal, -1) +{ +} + +MaximaExpression::~MaximaExpression() { + if(m_tempFile) + delete m_tempFile; +} + +void MaximaExpression::evaluate() +{ + m_gotErrorContent = false; + + if(m_tempFile) + { + delete m_tempFile; + m_tempFile = nullptr; + m_isPlot = false; + m_plotResult = nullptr; + m_plotResultIndex = -1; + } + + QString cmd = command(); + + //if the user explicitly has entered quit(), do a logout here + //otherwise maxima's process will be stopped after the evaluation of this command + //and we re-start it because of "maxima has crashed". + if (cmd.remove(QLatin1Char(' ')) == QLatin1String("quit()")) + { + session()->logout(); + return; + } + + //check if this is a ?command + if(cmd.startsWith(QLatin1String("??")) + || cmd.startsWith(QLatin1String("describe(")) + || cmd.startsWith(QLatin1String("example(")) + || cmd.startsWith(QLatin1String(":lisp(cl-info::info-exact"))) + setIsHelpRequest(true); + + if (MaximaSettings::self()->integratePlots() + && !cmd.contains(QLatin1String("ps_file")) + && cmd.contains(QRegularExpression(QStringLiteral("(?:plot2d|plot3d|contour_plot|draw|draw2d|draw3d)\\s*\\([^\\)]")))) + { + m_isPlot = true; + if (cmd.contains(QRegularExpression(QStringLiteral("(?:draw|draw2d|draw3d)\\s*\\([^\\)]")))) + m_isDraw = true; + + m_tempFile = new QTemporaryFile(QDir::tempPath() + QLatin1String("/cantor_maxima-XXXXXX.png")); + m_tempFile->open(); + + m_fileWatch.removePaths(m_fileWatch.files()); + m_fileWatch.addPath(m_tempFile->fileName()); + connect(&m_fileWatch, &QFileSystemWatcher::fileChanged, this, &MaximaExpression::imageChanged, Qt::UniqueConnection); + } + + bool isComment = true; + int commentLevel = 0; + bool inString = false; + for (int i = 0; i < cmd.size(); ++i) { + if (cmd[i] == QLatin1Char('\\')) { + ++i; // skip the next character + if (commentLevel == 0 && !inString) { + isComment = false; + } + } else if (cmd[i] == QLatin1Char('"') && commentLevel == 0) { + inString = !inString; + isComment = false; + } else if (cmd.mid(i,2) == QLatin1String("/*") && !inString) { + ++commentLevel; + ++i; + } else if (cmd.mid(i,2) == QLatin1String("*/") && !inString) { + if (commentLevel == 0) { + qDebug() << "Comments mismatched!"; + setErrorMessage(i18n("Error: Too many */")); + setStatus(Cantor::Expression::Error); + return; + } + ++i; + --commentLevel; + } else if (isComment && commentLevel == 0 && !cmd[i].isSpace()) { + isComment = false; + } + } + + if (commentLevel > 0) { + qDebug() << "Comments mismatched!"; + setErrorMessage(i18n("Error: Too many /*")); + setStatus(Cantor::Expression::Error); + return; + } + if (inString) { + qDebug() << "String not closed"; + setErrorMessage(i18n("Error: expected \" before ;")); + setStatus(Cantor::Expression::Error); + return; + } + if(isComment) + { + setStatus(Cantor::Expression::Done); + return; + } + + session()->enqueueExpression(this); +} + +void MaximaExpression::interrupt() +{ + qDebug()<<"interrupting"; + setStatus(Cantor::Expression::Interrupted); +} + +QString MaximaExpression::internalCommand() +{ + QString cmd=command(); + + if(m_isPlot) + { + if(!m_tempFile) + { + qDebug()<<"plotting without tempFile"; + return QString(); + } + + + /* + const QString pdfParam = QLatin1String("[gnuplot_pdf_term_command, \"set term pdfcairo size 9cm, 6cm\"]"); // size 5.9in, 4.7in + const QString plotParameters = QLatin1String("[pdf_file, \"") + fileName + QLatin1String("\"], ") + pdfParam; + */ + + //replace all newlines with spaces, as maxima isn't sensitive about + //whitespaces, and without newlines the whole command + //is executed at once, without outputting an input + //prompt after each line. + // Also, this helps to handle plot/draw commands with line breaks that are not properly handled by the regex below. + cmd.replace(QLatin1Char('\n'), QLatin1Char(' ')); + + if (!m_isDraw) + { + const QString plotParameters = QLatin1String("[gnuplot_png_term_command, \"set term png size 500,340\"], [png_file, \"") + m_tempFile->fileName() + QLatin1String("\"]"); + cmd.replace(QRegularExpression(QStringLiteral("((plot2d|plot3d|contour_plot)\\s*\\(.*)\\)([;\n$]|$)")), + QLatin1String("\\1, ") + plotParameters + QLatin1String(");")); + + } + else + { + //strip off the extension ".png", the terminal parameter for draw() is adding the extension additionally + QString fileName = m_tempFile->fileName(); + fileName = fileName.left(fileName.length() - 4); + const QString plotParameters = QLatin1String("terminal=png, file_name = \"") + fileName + QLatin1String("\""); + cmd.replace(QRegularExpression(QStringLiteral("((draw|draw2d|draw3d)\\s*\\(.*)*\\)([;\n$]|$)")), + QLatin1String("\\1, ") + plotParameters + QLatin1String(");")); + } + + } + + if (!cmd.endsWith(QLatin1Char('$'))) + { + if (!cmd.endsWith(QLatin1String(";"))) + cmd+=QLatin1Char(';'); + } + + //lisp-quiet doesn't print a prompt after the command + //is completed, which causes the parsing to hang. + //replace the command with the non-quiet version + cmd.replace(QRegularExpression(QStringLiteral("^:lisp-quiet")), QStringLiteral(":lisp")); + + return cmd; +} + +void MaximaExpression::forceDone() +{ + qDebug()<<"forcing Expression state to DONE"; + setResult(nullptr); + setStatus(Cantor::Expression::Done); +} + +/*! + example output for the simple expression '5+5': + latex mode - "\n(%o1) 10\n\\mbox{\\tt\\red(\\mathrm{\\%o1}) \\black}10\n(%i2) \n" + text mode - "\n(%o1) 10\n\n(%i2) \n" + */ +void MaximaExpression::parseOutput(const QString& out) +{ + const int promptStart = out.indexOf(QLatin1String("")); + const int promptEnd = out.indexOf(QLatin1String("")); + const QString prompt = out.mid(promptStart + 15, promptEnd - promptStart - 15).simplified(); + + //check whether the result is part of the promt - this is the case when additional input is required from the user + if (prompt.contains(QLatin1String(""))) + { + //text part of the output + const int textContentStart = prompt.indexOf(QLatin1String("")); + const int textContentEnd = prompt.indexOf(QLatin1String("")); + QString textContent = prompt.mid(textContentStart + 13, textContentEnd - textContentStart - 13).trimmed(); + + qDebug()<<"asking for additional input for " << textContent; + emit needsAdditionalInformation(textContent); + return; + } + + qDebug()<<"new input label: " << prompt; + + QString errorContent; + + //parse the results + int resultStart = out.indexOf(QLatin1String("")); + if (resultStart != -1) { + errorContent += out.mid(0, resultStart); + if (!errorContent.isEmpty() && !(isHelpRequest() || m_isHelpRequestAdditional)) + { + //there is a result but also the error buffer is not empty. This is the case when + //warnings are generated, for example, the output of rat(0.75*10) is: + //"\nrat: replaced 7.5 by 15/2 = 7.5\n\n(%o2) 15/2\n\n(%i3) \n". + //In such cases we just add a new text result with the warning. + qDebug() << "warning: " << errorContent; + auto* result = new Cantor::TextResult(errorContent.trimmed()); + + //the output of tex() function is also placed outside of the result section, don't treat it as a warning + if (!command().remove(QLatin1Char(' ')).startsWith(QLatin1String("tex("))) + result->setIsWarning(true); + addResult(result); + } + } + + while (resultStart != -1) + { + int resultEnd = out.indexOf(QLatin1String(""), resultStart + 15); + const QString resultContent = out.mid(resultStart + 15, resultEnd - resultStart - 15); + parseResult(resultContent); + + //search for the next openning tag after the current closing tag + resultStart = out.indexOf(QLatin1String(""), resultEnd + 16); + } + + //parse the error message, the part outside of the tags + int lastResultEnd = out.lastIndexOf(QLatin1String("")); + if (lastResultEnd != -1) + lastResultEnd += 16; + else + lastResultEnd = 0; + + errorContent += out.mid(lastResultEnd, promptStart - lastResultEnd).trimmed(); + if (errorContent.isEmpty()) + { + // For plots we set Done status in imageChanged + if (!m_isPlot || m_plotResult) + setStatus(Cantor::Expression::Done); + } + else + { + qDebug() << "error content: " << errorContent; + + if (out.contains(QLatin1String("cantor-value-separator")) + || (out.contains(QLatin1String("")) && !(isHelpRequest() || m_isHelpRequestAdditional)) ) + { + //we don't interpret the error output as an error in the following cases: + //1. when fetching variables, in addition to the actual result with variable names and values, + // Maxima also writes out the names of the variables to the error buffer. + //2. when there is a valid result produced, in this case the error string + // contains actually a warning that is handled above + setStatus(Cantor::Expression::Done); + } + else if (prompt.trimmed() == QLatin1String("MAXIMA>") ) + { + //prompt is "MAXIMA>", i.e. we're switching to the Lisp-mode triggered by to_lisp(). The output in this case is: + // "Type (to-maxima) to restart, ($quit) to quit Maxima.\n\nMAXIMA> \n" + //Or we're already in the Lisp mode and just need to show the result of the lisp evaluation. + if (static_cast(session())->mode() != MaximaSession::Lisp) + static_cast(session())->setMode(MaximaSession::Lisp); + + auto* result = new Cantor::TextResult(errorContent.trimmed()); + setResult(result); + qDebug()<<"setting status to DONE"; + setStatus(Cantor::Expression::Done); + } + else if (prompt.trimmed() != QLatin1String("MAXIMA>") && static_cast(session())->mode() == MaximaSession::Lisp) + { + //"Returning to Maxima: + //output: "Returning to Maxima\n\n(%o1) true\n\n(%i2) \n" + static_cast(session())->setMode(MaximaSession::Maxima); + auto* result = new Cantor::TextResult(errorContent.trimmed()); + addResult(result); + setStatus(Cantor::Expression::Done); + } + else if(isHelpRequest() || m_isHelpRequestAdditional) //help messages are also part of the error output + { + //we've got help result, but maybe additional input is required -> check this + const int index = prompt.trimmed().indexOf(MaximaSession::MaximaInputPrompt); + if (index == -1) { + // No input label found in the prompt -> additional info is required + qDebug()<<"asking for additional input for the help request" << prompt; + m_isHelpRequestAdditional = true; + emit needsAdditionalInformation(prompt); + } + + //set the help result + errorContent.prepend(QLatin1Char(' ')); + auto* result = new Cantor::HelpResult(errorContent); + setResult(result); + + //if a new input prompt was found, no further input is expected and we're done + if (index != -1) { + m_isHelpRequestAdditional = false; + setStatus(Cantor::Expression::Done); + } + } + else + { + if (isInternal()) + setStatus(Cantor::Expression::Done); //for internal commands no need to handle the error output + else + { + errorContent = errorContent.replace(QLatin1String("\n\n"), QLatin1String("\n")); + setErrorMessage(errorContent); + setStatus(Cantor::Expression::Error); + } + } + } +} + +void MaximaExpression::parseResult(const QString& resultContent) +{ + //in case we asked for additional input for the help request, + //no need to process the result - we're not done yet and maxima is waiting for further input + if (m_isHelpRequestAdditional) + return; + + qDebug()<<"result content: " << resultContent; + + //text part of the output + const int textContentStart = resultContent.indexOf(QLatin1String("")); + const int textContentEnd = resultContent.indexOf(QLatin1String("")); + QString textContent = resultContent.mid(textContentStart + 13, textContentEnd - textContentStart - 13).trimmed(); + qDebug()<<"text content: " << textContent; + + //output label can be a part of the text content -> determine it + const QRegularExpression regex = QRegularExpression(MaximaSession::MaximaOutputPrompt.pattern()); + QRegularExpressionMatch match = regex.match(textContent); + QString outputLabel; + if (match.hasMatch()) // a match is found, so the output contains output label + outputLabel = textContent.mid(match.capturedStart(0), match.capturedLength(0)).trimmed(); + qDebug()<<"output label: " << outputLabel; + + //extract the expression id + bool ok; + QString idString = outputLabel.mid(3, outputLabel.length()-4); + int id = idString.toInt(&ok); + if (ok) + setId(id); + + qDebug()<<"expression id: " << this->id(); + + //remove the output label from the text content + textContent = textContent.remove(outputLabel).trimmed(); + + //determine the actual result + Cantor::Result* result = nullptr; + + const int latexContentStart = resultContent.indexOf(QLatin1String("")); + //Handle system maxima output for plotting commands + if (m_isPlot) + { + // plot/draw command can be part of a multi-line input having other non-plot related commands. + // parse the output of every command of the multi-line input and only add plot result if + // the output has plot/draw specific keywords + if ( (!m_isDraw && textContent.endsWith(QString::fromLatin1("\"%1\"]").arg(m_tempFile->fileName()))) + || (m_isDraw && (textContent.startsWith(QLatin1String("[gr2d(explicit")) || textContent.startsWith(QLatin1String("[gr3d(explicit"))) ) ) + { + m_plotResultIndex = results().size(); + // Gnuplot could generate plot before we parse text output from maxima and after + // If we already have plot result, just add it + // Else set info message, and replace it by real result in imageChanged function later + if (m_plotResult) + result = m_plotResult; + else + result = new Cantor::TextResult(i18n("Waiting for the plot result")); + } + else + result = new Cantor::TextResult(textContent); + } + else if (latexContentStart != -1) + { + //latex output is available + const int latexContentEnd = resultContent.indexOf(QLatin1String("")); + QString latexContent = resultContent.mid(latexContentStart + 14, latexContentEnd - latexContentStart - 14).trimmed(); + qDebug()<<"latex content: " << latexContent; + + Cantor::TextResult* textResult; + //replace the \mbox{} environment, if available, by the eqnarray environment + if (latexContent.indexOf(QLatin1String("\\mbox{")) != -1) + { + int i; + int pcount=0; + for(i = latexContent.indexOf(QLatin1String("\\mbox{"))+5; i < latexContent.size(); ++i) + { + if(latexContent[i]==QLatin1Char('{')) + pcount++; + else if(latexContent[i]==QLatin1Char('}')) + pcount--; + + + if(pcount==0) + break; + } + + QString modifiedLatexContent = latexContent.mid(i+1); + if(modifiedLatexContent.trimmed().isEmpty()) + { + //empty content in the \mbox{} environment (e.g. for print() outputs), use the latex string outside of the \mbox{} environment + modifiedLatexContent = latexContent.left(latexContent.indexOf(QLatin1String("\\mbox{"))); + } + + modifiedLatexContent.prepend(QLatin1String("\\begin{eqnarray*}")); + modifiedLatexContent.append(QLatin1String("\\end{eqnarray*}")); + textResult = new Cantor::TextResult(modifiedLatexContent, textContent); + qDebug()<<"modified latex content: " << modifiedLatexContent; + } + else + { + //no \mbox{} available, use what we've got. + textResult = new Cantor::TextResult(latexContent, textContent); + } + + textResult->setFormat(Cantor::TextResult::LatexFormat); + result = textResult; + } + else + { + //no latex output is available, the actual result is part of the textContent string + + // text output is quoted by Maxima, remove the quotes. No need to do it for internal + // commands to fetch the list of current variables, the proper parsing is done in MaximaVariableModel::parse(). + if (!isInternal() && textContent.startsWith(QLatin1String("\""))) + { + textContent.remove(0, 1); + textContent.chop(1); + textContent.replace(QLatin1String("\\\""), QLatin1String("\"")); + } + + result = new Cantor::TextResult(textContent); + } + + addResult(result); +} + +void MaximaExpression::parseError(const QString& out) +{ + m_errorBuffer.append(out); +} + +void MaximaExpression::addInformation(const QString& information) +{ + qDebug()<<"adding information"; + QString inf=information; + if(!inf.endsWith(QLatin1Char(';'))) + inf+=QLatin1Char(';'); + Cantor::Expression::addInformation(inf); + + static_cast(session())->sendInputToProcess(inf+QLatin1Char('\n')); +} + +void MaximaExpression::imageChanged() +{ + if(m_tempFile->size()>0) + { + m_plotResult = new Cantor::ImageResult( QUrl::fromLocalFile(m_tempFile->fileName()) ); + /* + QSizeF size; + const QImage& image = Cantor::Renderer::pdfRenderToImage(QUrl::fromLocalFile(m_tempFile->fileName()), 1., false, &size); + m_plotResult = new Cantor::ImageResult(image); + */ + + // Check, that we already parse maxima output for this plot, and if not, keep it up to this moment + // If it's true, replace text info result by real plot and set status as Done + if (m_plotResultIndex != -1) + { + replaceResult(m_plotResultIndex, m_plotResult); + if (status() != Cantor::Expression::Error) + setStatus(Cantor::Expression::Done); + } + } +} diff --git a/src/backends/maxima/maximaexpression.h b/src/backends/maxima/maximaexpression.h new file mode 100644 index 0000000..c80629e --- /dev/null +++ b/src/backends/maxima/maximaexpression.h @@ -0,0 +1,56 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009-2012 Alexander Rieder + SPDX-FileCopyrightText: 2018-2021 by Alexander Semke (alexander.semke@web.de) +*/ + +#ifndef _MAXIMAEXPRESSION_H +#define _MAXIMAEXPRESSION_H + +#include "expression.h" +#include +#include + +class QTemporaryFile; + +class MaximaExpression : public Cantor::Expression +{ + Q_OBJECT + +public: + explicit MaximaExpression(Cantor::Session*, bool internal = false); + ~MaximaExpression() override; + + void evaluate() override; + void interrupt() override; + + QString internalCommand() override; + + //Forces the status of this Expression to done + void forceDone(); + + //reads from @param out until a prompt indicates that a new expression has started + void parseOutput(const QString&) override; + void parseError(const QString&) override; + + void addInformation(const QString&) override; + +private Q_SLOTS: + void imageChanged(); + +private: + void parseResult(const QString&); + + QTemporaryFile* m_tempFile = nullptr; + QFileSystemWatcher m_fileWatch; + bool m_isHelpRequest = false; + bool m_isHelpRequestAdditional = false; + bool m_isPlot = false; + bool m_isDraw = false; + Cantor::Result* m_plotResult = nullptr; + int m_plotResultIndex = -1; + QString m_errorBuffer; + bool m_gotErrorContent = false; +}; + +#endif /* _MAXIMAEXPRESSION_H */ diff --git a/src/backends/maxima/maximaextensions.cpp b/src/backends/maxima/maximaextensions.cpp new file mode 100644 index 0000000..b062336 --- /dev/null +++ b/src/backends/maxima/maximaextensions.cpp @@ -0,0 +1,204 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009-2012 Alexander Rieder +*/ + +#include "maximaextensions.h" +#include +#include + +#define MAXIMA_EXTENSION_CONSTRUCTORS(name) Maxima##name##Extension::Maxima##name##Extension(QObject* parent) : name##Extension(parent) {} \ + Maxima##name##Extension::~Maxima##name##Extension() {} + +//History Extension +MAXIMA_EXTENSION_CONSTRUCTORS(History) + +QString MaximaHistoryExtension::lastResult() +{ + return QLatin1String("%"); +} + +//Script +MAXIMA_EXTENSION_CONSTRUCTORS(Script) + +QString MaximaScriptExtension::runExternalScript(const QString& file) +{ + return QString::fromLatin1("batch(\"%1\")$").arg(file); +} + +QString MaximaScriptExtension::scriptFileFilter() +{ + return i18n("Maxima batch file (*.mac)"); +} + +QString MaximaScriptExtension::highlightingMode() +{ + return QLatin1String("maxima"); +} + +QString MaximaScriptExtension::commentStartingSequence() +{ + return QLatin1String("/* "); +} + +QString MaximaScriptExtension::commentEndingSequence() +{ + return QLatin1String(" */"); +} + +//CAS Extension +MAXIMA_EXTENSION_CONSTRUCTORS(CAS) + +QString MaximaCASExtension::solve(const QStringList& equations, const QStringList& variables) +{ + QString eqstr=QString::fromLatin1("[%1]").arg(equations.join(QLatin1String(","))); + + QString variablestr=QString::fromLatin1("[%1]").arg(variables.join(QLatin1String(","))); + + return QString::fromLatin1("solve(%1,%2);").arg(eqstr, variablestr); +} + +QString MaximaCASExtension::simplify(const QString& expression) +{ + return QString::fromLatin1("simplify(%1);").arg(expression); +} + +QString MaximaCASExtension::expand(const QString& expression) +{ + return QString::fromLatin1("expand(%1);").arg(expression); +} + +//Calculus Extension +MAXIMA_EXTENSION_CONSTRUCTORS(Calculus) + +QString MaximaCalculusExtension::limit(const QString& expression, const QString& variable, const QString& limit) +{ + return QString::fromLatin1("limit(%1, %2=%3);").arg(expression, variable, limit); +} + +QString MaximaCalculusExtension::differentiate(const QString& function,const QString& variable, int times) +{ + return QString::fromLatin1("diff(%1, %2, %3);").arg(function, variable, QString::number(times)); +} + +QString MaximaCalculusExtension::integrate(const QString& function, const QString& variable) +{ + return QString::fromLatin1("integrate(%1, %2);").arg(function, variable); +} + +QString MaximaCalculusExtension::integrate(const QString& function,const QString& variable, const QString& left, const QString& right) +{ + return QString::fromLatin1("integrate(%1, %2, %3, %4);").arg(function, variable, left, right); +} + +//Linear Algebra Extension +MAXIMA_EXTENSION_CONSTRUCTORS(LinearAlgebra) + +//Commands to create Vectors/Matrices +QString MaximaLinearAlgebraExtension::createVector(const QStringList& entries, VectorType type) +{ + QString list=entries.join(QLatin1String(",")); + + if(type==Cantor::LinearAlgebraExtension::ColumnVector) + return QString::fromLatin1("columnvector([%1]);").arg(list); + else + return QString::fromLatin1("rowvector([%1]);").arg(list); +} + +QString MaximaLinearAlgebraExtension::createMatrix(const Matrix& matrix) +{ + QString cmd=QLatin1String("matrix("); + for (const QStringList& row : matrix) + { + cmd+=QLatin1Char('['); + for (const QString& entry : row) + cmd+=entry+QLatin1Char(','); + cmd.chop(1); + cmd+=QLatin1String("],"); + } + cmd.chop(1); + cmd+=QLatin1String(");"); + + return cmd; +} + +QString MaximaLinearAlgebraExtension::identityMatrix(int size) +{ + return QString::fromLatin1("ident(%1);").arg(size); +} + +//basic functions +QString MaximaLinearAlgebraExtension::rank(const QString& matrix) +{ + return QString::fromLatin1("rank(%1);").arg(matrix); +} + +QString MaximaLinearAlgebraExtension::invertMatrix(const QString& matrix) +{ + return QString::fromLatin1("invert(%1);").arg(matrix); +} + +QString MaximaLinearAlgebraExtension::charPoly(const QString& matrix) +{ + return QString::fromLatin1("charpoly(%1,x);").arg(matrix); +} + +QString MaximaLinearAlgebraExtension::eigenVectors(const QString& matrix) +{ + return QString::fromLatin1("eigenvectors(%1);").arg(matrix); +} + +QString MaximaLinearAlgebraExtension::eigenValues(const QString& matrix) +{ + return QString::fromLatin1("eigenvalues(%1);").arg(matrix); +} + +//Plotting +MAXIMA_EXTENSION_CONSTRUCTORS(Plot) + +QString MaximaPlotExtension::plotFunction2d(const QString& function, const QString& variable, const QString& left, const QString& right) +{ + return QString::fromLatin1("plot2d(%1,[%2,%3,%4])").arg(function, variable, left, right); +} + +QString MaximaPlotExtension::plotFunction3d(const QString& function, const VariableParameter& var1, const VariableParameter& var2) +{ + const Interval& int1=var1.second; + const Interval& int2=var2.second; + return QString::fromLatin1("plot3d(%1,[%2,%3,%4],[%6,%7,%8])").arg(function, + var1.first, int1.first, int1.second, + var2.first, int2.first, int2.second); +} + +//Variable Management +MAXIMA_EXTENSION_CONSTRUCTORS(VariableManagement) + +QString MaximaVariableManagementExtension::addVariable(const QString& name, const QString& value) +{ + return QString::fromLatin1("%1: %2").arg(name).arg(value); +} + +QString MaximaVariableManagementExtension::setValue(const QString& name,const QString& value) +{ + return QString::fromLatin1("%1: %2").arg(name).arg(value); +} + +QString MaximaVariableManagementExtension::removeVariable(const QString& name) +{ + return QString::fromLatin1("kill(%1)").arg(name); +} + +QString MaximaVariableManagementExtension::saveVariables(const QString& fileName) +{ + return QString::fromLatin1("save(\"%1\", values,functions)").arg(fileName); +} + +QString MaximaVariableManagementExtension::loadVariables(const QString& fileName) +{ + return QString::fromLatin1("load(\"%1\")").arg(fileName); +} + +QString MaximaVariableManagementExtension::clearVariables() +{ + return QLatin1String("kill(all)"); +} diff --git a/src/backends/maxima/maximaextensions.h b/src/backends/maxima/maximaextensions.h new file mode 100644 index 0000000..e784359 --- /dev/null +++ b/src/backends/maxima/maximaextensions.h @@ -0,0 +1,110 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009-2012 Alexander Rieder +*/ + +#ifndef _MAXIMAEXTENSIONS_H +#define _MAXIMAEXTENSIONS_H + +#include "extension.h" + +class MaximaHistoryExtension : public Cantor::HistoryExtension +{ + public: + explicit MaximaHistoryExtension( QObject* parent ); + ~MaximaHistoryExtension() override; + public Q_SLOTS: + QString lastResult() override; +}; + +class MaximaScriptExtension : public Cantor::ScriptExtension +{ + public: + explicit MaximaScriptExtension(QObject* parent); + ~MaximaScriptExtension() override; + public Q_SLOTS: + QString runExternalScript(const QString& file) override; + QString scriptFileFilter() override; + QString highlightingMode() override; + QString commentStartingSequence() override; + QString commentEndingSequence() override; +}; + + +class MaximaCASExtension : public Cantor::CASExtension +{ + public: + explicit MaximaCASExtension( QObject* parent); + ~MaximaCASExtension() override; + + public Q_SLOTS: + QString solve(const QStringList& equations, const QStringList& variables) override; + QString simplify(const QString& expression) override; + QString expand(const QString& expression) override; + +}; + +class MaximaCalculusExtension : public Cantor::CalculusExtension +{ + public: + explicit MaximaCalculusExtension( QObject* parent); + ~MaximaCalculusExtension() override; + + public Q_SLOTS: + QString limit(const QString& expression, const QString& variable, const QString& limit) override; + QString differentiate(const QString& function,const QString& variable, int times) override; + QString integrate(const QString& function, const QString& variable) override; + QString integrate(const QString& function,const QString& variable, const QString& left, const QString& right) override; +}; + +/** An extension for basic Linear Algebra + **/ +class MaximaLinearAlgebraExtension : public Cantor::LinearAlgebraExtension +{ + public: + explicit MaximaLinearAlgebraExtension(QObject* parent); + ~MaximaLinearAlgebraExtension() override; + + public Q_SLOTS: + //Commands to create Vectors/Matrices + QString createVector(const QStringList& entries, VectorType type) override; + QString createMatrix(const Matrix& matrix) override; + QString identityMatrix(int size) override; + + //basic functions + QString rank(const QString& matrix) override; + QString invertMatrix(const QString& matrix) override; + QString charPoly(const QString& matrix) override; + QString eigenVectors(const QString& matrix) override; + QString eigenValues(const QString& matrix) override; + +}; + +class MaximaPlotExtension : public Cantor::PlotExtension +{ + public: + explicit MaximaPlotExtension(QObject* parent); + ~MaximaPlotExtension() override; + public Q_SLOTS: + QString plotFunction2d(const QString& function, const QString& variable, const QString& left, const QString& right) override; + QString plotFunction3d(const QString& function, const VariableParameter& var1, const VariableParameter& var2) override; +}; + +class MaximaVariableManagementExtension : public Cantor::VariableManagementExtension +{ + public: + explicit MaximaVariableManagementExtension( QObject* parent ); + ~MaximaVariableManagementExtension() override; + + public Q_SLOTS: + QString addVariable(const QString& name, const QString& value) override; + QString setValue(const QString& name,const QString& value) override; + QString removeVariable(const QString& name) override; + + QString saveVariables(const QString& fileName) override; + QString loadVariables(const QString& fileName) override; + QString clearVariables() override; +}; + + +#endif /* _MAXIMAEXTENSIONS_H */ diff --git a/src/backends/maxima/maximahighlighter.cpp b/src/backends/maxima/maximahighlighter.cpp new file mode 100644 index 0000000..47f6dd1 --- /dev/null +++ b/src/backends/maxima/maximahighlighter.cpp @@ -0,0 +1,93 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009-2012 Alexander Rieder +*/ + +#include "maximahighlighter.h" +#include "maximakeywords.h" +#include "maximasession.h" +#include "maximavariablemodel.h" + +MaximaHighlighter::MaximaHighlighter(QObject* parent, MaximaSession* session) + : Cantor::DefaultHighlighter(parent, session) +{ + //addRule(QRegExp("\\b[A-Za-z0-9_]+(?=\\()"), functionFormat()); + + //Code highlighting the different keywords + addKeywords(MaximaKeywords::instance()->keywords()); + + addRule(QLatin1String("FIXME"), commentFormat()); + addRule(QLatin1String("TODO"), commentFormat()); + + addFunctions(MaximaKeywords::instance()->functions()); + addVariables(MaximaKeywords::instance()->variables()); + + //addRule(QRegExp("\".*\""), stringFormat()); + //addRule(QRegExp("'.*'"), stringFormat()); + + commentStartExpression = QRegularExpression(QStringLiteral("/\\*")); + commentEndExpression = QRegularExpression(QStringLiteral("\\*/")); +} + +void MaximaHighlighter::highlightBlock(const QString& text) +{ + if (skipHighlighting(text)) + return; + + //Do some backend independent highlighting (brackets etc.) + DefaultHighlighter::highlightBlock(text); + + setCurrentBlockState(-1); + + int commentLevel = 0; + bool inString = false; + int startIndex = -1; + + if (previousBlockState() > 0) { + commentLevel = previousBlockState(); + startIndex = 0; + } else if (previousBlockState() < -1) { + inString = true; + startIndex = 0; + } + + for (int i = 0; i < text.size(); ++i) { + if (text[i] == QLatin1Char('\\')) { + ++i; // skip the next character + } else if (text[i] == QLatin1Char('"') && commentLevel == 0) { + if (!inString) + startIndex = i; + else + setFormat(startIndex, i - startIndex + 1, stringFormat()); + inString = !inString; + } else if (text.mid(i,2) == QLatin1String("/*") && !inString) { + if (commentLevel == 0) + startIndex = i; + ++commentLevel; + ++i; + } else if (text.mid(i,2) == QLatin1String("*/") && !inString) { + if (commentLevel == 0) { + setFormat(i, 2, errorFormat()); + // undo the --commentLevel below, so we stay at 0 + ++commentLevel; + } else if (commentLevel == 1) { + setFormat(startIndex, i - startIndex + 2, commentFormat()); + } + ++i; + --commentLevel; + } + } + + if (inString) { + setCurrentBlockState(-2); + setFormat(startIndex, text.size() - startIndex, stringFormat()); + } else if (commentLevel > 0) { + setCurrentBlockState(commentLevel); + setFormat(startIndex, text.size() - startIndex, commentFormat()); + } +} + +QString MaximaHighlighter::nonSeparatingCharacters() const +{ + return QLatin1String("%"); +} diff --git a/src/backends/maxima/maximahighlighter.h b/src/backends/maxima/maximahighlighter.h new file mode 100644 index 0000000..32340b9 --- /dev/null +++ b/src/backends/maxima/maximahighlighter.h @@ -0,0 +1,31 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _MAXIMAHIGHLIGHTER_H +#define _MAXIMAHIGHLIGHTER_H + +#include + +#include "defaulthighlighter.h" +class MaximaSession; + +class MaximaHighlighter : public Cantor::DefaultHighlighter +{ + Q_OBJECT + public: + MaximaHighlighter( QObject* parent, MaximaSession* session); + ~MaximaHighlighter() override = default; + + protected: + void highlightBlock(const QString &text) override; + + QString nonSeparatingCharacters() const override; + + private: + QRegularExpression commentStartExpression; + QRegularExpression commentEndExpression; +}; + +#endif /* _MAXIMAHIGHLIGHTER_H */ diff --git a/src/backends/maxima/maximakeywords.cpp b/src/backends/maxima/maximakeywords.cpp new file mode 100644 index 0000000..f80d6af --- /dev/null +++ b/src/backends/maxima/maximakeywords.cpp @@ -0,0 +1,62 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "maximakeywords.h" + +#include + +#include +#include + +MaximaKeywords* MaximaKeywords::instance() +{ + static MaximaKeywords* inst=nullptr; + if(inst==nullptr) + { + inst=new MaximaKeywords(); + inst->loadKeywords(); + } + + return inst; +} + +void MaximaKeywords::loadKeywords() +{ + KSyntaxHighlighting::Repository m_repository; + KSyntaxHighlighting::Definition definition = m_repository.definitionForName(QLatin1String("Maxima")); + m_keywords = definition.keywordList(QLatin1String("MaximaKeyword")); + m_functions = definition.keywordList(QLatin1String("MaximaFunction")); + m_variables = definition.keywordList(QLatin1String("MaximaVariable")); + + // This is missing in KSyntaxHighlighting. + // https://phabricator.kde.org/D18714 + // OUTOFDATE: Remove after 5.55 KSyntaxHighlighting version + m_variables << QLatin1String("%pi") << QLatin1String("%e") << QLatin1String(" %i") + << QLatin1String("%gamma") << QLatin1String("ind") << QLatin1String("inf") + << QLatin1String("infinity") << QLatin1String("minf") << QLatin1String("%phi") + << QLatin1String("und") << QLatin1String("zeroa") << QLatin1String("zerob"); + + m_functions << QLatin1String("celine"); + + // We use qBinarySearch with this lists + std::sort(m_keywords.begin(), m_keywords.end()); + std::sort(m_functions.begin(), m_functions.end()); + std::sort(m_variables.begin(), m_variables.end()); +} + +const QStringList& MaximaKeywords::variables() const +{ + return m_variables; +} + +const QStringList& MaximaKeywords::functions() const +{ + return m_functions; +} + +const QStringList& MaximaKeywords::keywords() const +{ + return m_keywords; +} diff --git a/src/backends/maxima/maximakeywords.h b/src/backends/maxima/maximakeywords.h new file mode 100644 index 0000000..0853416 --- /dev/null +++ b/src/backends/maxima/maximakeywords.h @@ -0,0 +1,35 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _MAXIMAKEYWORDS_H +#define _MAXIMAKEYWORDS_H + +#include + +/* + Class storing a list of names, known to maxima + used for syntax highlighting and tab completion + */ +class MaximaKeywords +{ + private: + MaximaKeywords() = default; + ~MaximaKeywords() = default; + public: + static MaximaKeywords* instance(); + + const QStringList& functions() const; + const QStringList& keywords() const; + const QStringList& variables() const; + + private: + void loadKeywords(); + + private: + QStringList m_functions; + QStringList m_keywords; + QStringList m_variables; +}; +#endif /* _MAXIMAKEYWORDS_H */ diff --git a/src/backends/maxima/maximasession.cpp b/src/backends/maxima/maximasession.cpp new file mode 100644 index 0000000..bf2e398 --- /dev/null +++ b/src/backends/maxima/maximasession.cpp @@ -0,0 +1,307 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009-2012 Alexander Rieder + SPDX-FileCopyrightText: 2017-2022 Alexander Semke (alexander.semke@web.de) +*/ + +#include "maximasession.h" +#include "maximaexpression.h" +#include "maximacompletionobject.h" +#include "maximasyntaxhelpobject.h" +#include "maximahighlighter.h" +#include "maximavariablemodel.h" +#include "result.h" +#include "settings.h" + +#include +#include +#include + +#include +#include + +#ifndef Q_OS_WIN +#include +#endif + + +//NOTE: the \\s in the expressions is needed, because Maxima seems to sometimes insert newlines/spaces between the letters +//maybe this is caused by some behaviour if the Prompt is split into multiple "readStdout" calls +//the Expressions are encapsulated in () to allow capturing for the text +const QRegularExpression MaximaSession::MaximaOutputPrompt = + QRegularExpression(QStringLiteral("(\\(\\s*%\\s*o\\s*[0-9\\s]*\\))")); //Text, maxima outputs, before any output +const QRegularExpression MaximaSession::MaximaInputPrompt = + QRegularExpression(QStringLiteral("(\\(\\s*%\\s*i\\s*[0-9\\s]*\\))")); + + +MaximaSession::MaximaSession( Cantor::Backend* backend ) : Session(backend) +{ + setVariableModel(new MaximaVariableModel(this)); +} + +void MaximaSession::login() +{ + qDebug()<<"login"; + + if (m_process) + return; //TODO: why do we call login() again?!? + + emit loginStarted(); + QStringList arguments; + arguments << QLatin1String("--quiet"); //Suppress Maxima start-up message + const QString initFile = locateCantorFile(QLatin1String("maximabackend/cantor-initmaxima.lisp")); + arguments << QLatin1String("--init-lisp=") + initFile; //Set the name of the Lisp initialization file + + m_process = new QProcess(this); + m_process->start(MaximaSettings::self()->path().toLocalFile(), arguments); + m_process->waitForStarted(); + + // Wait until first maxima prompt + QString input; + while (!input.contains(QLatin1String(""))) + { + m_process->waitForReadyRead(); + input += QString::fromLatin1(m_process->readAllStandardOutput()); + qDebug() << input; + } + + connect(m_process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(restartMaxima())); + connect(m_process, SIGNAL(readyReadStandardOutput()), this, SLOT(readStdOut())); + connect(m_process, SIGNAL(readyReadStandardError()), this, SLOT(readStdErr())); + connect(m_process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(reportProcessError(QProcess::ProcessError))); + + //enable latex typesetting if needed + const QString& val = QLatin1String((isTypesettingEnabled() ? "t":"nil")); + evaluateExpression(QString::fromLatin1(":lisp(setf $display2d %1)").arg(val), Cantor::Expression::DeleteOnFinish, true); + + //auto-run scripts + if(!MaximaSettings::self()->autorunScripts().isEmpty()){ + QString autorunScripts = MaximaSettings::self()->autorunScripts().join(QLatin1String(";")); + autorunScripts.append(QLatin1String(";kill(labels)")); // Reset labels after running autorun scripts + evaluateExpression(autorunScripts, MaximaExpression::DeleteOnFinish, true); + updateVariables(); + } + + changeStatus(Session::Done); + emit loginDone(); + qDebug()<<"login done"; +} + +void MaximaSession::logout() +{ + qDebug()<<"logout"; + + if(!m_process) + return; + + disconnect(m_process, nullptr, this, nullptr); + + if (status() == Cantor::Session::Running) + interrupt(); + + write(QLatin1String("quit();\n")); + qDebug()<<"waiting for maxima to finish"; + + if(!m_process->waitForFinished(1000)) + { + m_process->kill(); + qDebug()<<"maxima still running, process kill enforced"; + } + m_process->deleteLater(); + m_process = nullptr; + + Session::logout(); + + qDebug()<<"logout done"; +} + +MaximaSession::Mode MaximaSession::mode() const { + return m_mode; +} + +void MaximaSession::setMode(MaximaSession::Mode mode) +{ + m_mode = mode; +} + +Cantor::Expression* MaximaSession::evaluateExpression(const QString& cmd, Cantor::Expression::FinishingBehavior behave, bool internal) +{ + qDebug() << "evaluating: " << cmd; + auto* expr = new MaximaExpression(this, internal); + expr->setFinishingBehavior(behave); + expr->setCommand(cmd); + expr->evaluate(); + + return expr; +} + +void MaximaSession::readStdErr() +{ + qDebug()<<"reading stdErr"; + if (!m_process) + return; + QString out = QString::fromLocal8Bit(m_process->readAllStandardError()); + + if(expressionQueue().size()>0) + { + auto* expr = expressionQueue().first(); + expr->parseError(out); + } +} + +void MaximaSession::readStdOut() +{ + QString out = QString::fromLocal8Bit(m_process->readAllStandardOutput()); + m_cache += out; + + //collect the multi-line output until Maxima has finished the calculation and returns a new promt + if ( !out.contains(QLatin1String("")) ) + return; + + if(expressionQueue().isEmpty()) + { + //queue is empty, interrupt was called, nothing to do here + qDebug()<parseOutput(m_cache); + m_cache.clear(); +} + +void MaximaSession::reportProcessError(QProcess::ProcessError e) +{ + qDebug()<<"process error"<internalCommand(); + connect(expr, &Cantor::Expression::statusChanged, this, &Session::currentExpressionStatusChanged); + + expr->setStatus(Cantor::Expression::Computing); + if(command.isEmpty()) + { + qDebug()<<"empty command"; + static_cast(expr)->forceDone(); + } + else + { + m_cache.clear(); + write(command + QLatin1Char('\n')); + } + } +} + +void MaximaSession::interrupt() +{ + if(!expressionQueue().isEmpty()) + { + qDebug()<<"interrupting " << expressionQueue().first()->command(); + if(m_process && m_process->state() != QProcess::NotRunning) + { +#ifndef Q_OS_WIN + const int pid = m_process->processId(); + kill(pid, SIGINT); +#else + ; //TODO: interrupt the process on windows +#endif + } + for (auto* expression : expressionQueue()) + expression->setStatus(Cantor::Expression::Interrupted); + + expressionQueue().clear(); + + qDebug()<<"done interrupting"; + } + + changeStatus(Cantor::Session::Done); + m_cache.clear(); +} + +void MaximaSession::sendInputToProcess(const QString& input) +{ + write(input); +} + +void MaximaSession::restartMaxima() +{ + qDebug()<<"restarting maxima cooldown: " << m_justRestarted; + + if(!m_justRestarted) + { + emit error(i18n("Maxima crashed. restarting...")); + //remove the command that caused maxima to crash (to avoid infinite loops) + if(!expressionQueue().isEmpty()) + expressionQueue().removeFirst(); + + m_justRestarted=true; + QTimer::singleShot(1000, this, SLOT(restartsCooledDown())); + + disconnect(m_process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(restartMaxima())); + login(); + }else + { + if(!expressionQueue().isEmpty()) + expressionQueue().removeFirst(); + KMessageBox::error(nullptr, i18n("Maxima crashed twice within a short time. Stopping to try starting"), i18n("Error - Cantor")); + } +} + +void MaximaSession::restartsCooledDown() +{ + qDebug()<<"maxima restart cooldown"; + m_justRestarted=false; +} + +void MaximaSession::setTypesettingEnabled(bool enable) +{ + if (m_process) + { + //we use the lisp command to set the variable, as those commands + //don't mess with the labels and history + const QString& val = QLatin1String((enable ? "t":"nil")); + evaluateExpression(QString::fromLatin1(":lisp(setf $display2d %1)").arg(val), Cantor::Expression::DeleteOnFinish, true); + } + + Cantor::Session::setTypesettingEnabled(enable); +} + +Cantor::CompletionObject* MaximaSession::completionFor(const QString& command, int index) +{ + return new MaximaCompletionObject(command, index, this); +} + +Cantor::SyntaxHelpObject* MaximaSession::syntaxHelpFor(const QString& command) +{ + return new MaximaSyntaxHelpObject(command, this); +} + +QSyntaxHighlighter* MaximaSession::syntaxHighlighter(QObject* parent) +{ + return new MaximaHighlighter(parent, this); +} + +void MaximaSession::write(const QString& exp) { + qDebug()<<"################################## EXPRESSION START ###############################################"; + qDebug()<<"sending expression to maxima process: " << exp; + m_process->write(exp.toUtf8()); +} diff --git a/src/backends/maxima/maximasession.h b/src/backends/maxima/maximasession.h new file mode 100644 index 0000000..dfa6b0b --- /dev/null +++ b/src/backends/maxima/maximasession.h @@ -0,0 +1,64 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009-2012 Alexander Rieder +*/ + +#ifndef _MAXIMASESSION_H +#define _MAXIMASESSION_H + +#include "session.h" +#include "expression.h" +#include +#include + +class MaximaExpression; +class MaximaVariableModel; + +class MaximaSession : public Cantor::Session +{ + Q_OBJECT + public: + static const QRegularExpression MaximaOutputPrompt; + static const QRegularExpression MaximaInputPrompt; + + enum Mode {Maxima, Lisp}; + + explicit MaximaSession(Cantor::Backend*); + + void login() override; + void logout() override; + + Cantor::Expression* evaluateExpression(const QString& command, Cantor::Expression::FinishingBehavior behave = Cantor::Expression::FinishingBehavior::DoNotDelete, bool internal = false) override; + + void interrupt() override; + void sendInputToProcess(const QString&); + + void setTypesettingEnabled(bool) override; + + Cantor::CompletionObject* completionFor(const QString& command, int index=-1) override; + Cantor::SyntaxHelpObject* syntaxHelpFor(const QString& command) override; + QSyntaxHighlighter* syntaxHighlighter(QObject*) override; + void runFirstExpression() override; + + Mode mode() const; + void setMode(Mode); + + public Q_SLOTS: + void readStdOut(); + void readStdErr(); + + private Q_SLOTS: + void restartMaxima(); + void restartsCooledDown(); + void reportProcessError(QProcess::ProcessError); + + private: + void write(const QString&); + + QProcess* m_process{nullptr}; + QString m_cache; + bool m_justRestarted{false}; + Mode m_mode{Maxima}; +}; + +#endif /* _MAXIMASESSION_H */ diff --git a/src/backends/maxima/maximasettingswidget.cpp b/src/backends/maxima/maximasettingswidget.cpp new file mode 100644 index 0000000..061bd46 --- /dev/null +++ b/src/backends/maxima/maximasettingswidget.cpp @@ -0,0 +1,34 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020-2022 Alexander Semke + Copyright (C) 2020 Shubham + */ + +#include "maximasettingswidget.h" + +MaximaSettingsWidget::MaximaSettingsWidget(QWidget* parent, const QString& id) : BackendSettingsWidget(parent, id) +{ + setupUi(this); + + m_tabWidget = tabWidget; + m_tabDocumentation = tabDocumentation; + m_urlRequester = kcfg_Path; + + connect(tabWidget, &QTabWidget::currentChanged, this, &BackendSettingsWidget::tabChanged); + connect(kcfg_Path, &KUrlRequester::textChanged, this, &MaximaSettingsWidget::fileNameChanged); +} diff --git a/src/backends/maxima/maximasettingswidget.h b/src/backends/maxima/maximasettingswidget.h new file mode 100644 index 0000000..c58567a --- /dev/null +++ b/src/backends/maxima/maximasettingswidget.h @@ -0,0 +1,36 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020-2022 Alexander Semke + Copyright (C) 2020 Shubham + */ + +#ifndef _MAXIMASETTINGSWIDGET_H +#define _MAXIMASETTINGSWIDGET_H + +#include "ui_settings.h" +#include "../backendsettingswidget.h" + +class MaximaSettingsWidget : public BackendSettingsWidget, public Ui::MaximaSettingsBase +{ +Q_OBJECT + +public: + explicit MaximaSettingsWidget(QWidget* parent = nullptr, const QString& id = QString()); +}; + +#endif /* _MAXIMASETTINGSWIDGET_H */ diff --git a/src/backends/maxima/maximasyntaxhelpobject.cpp b/src/backends/maxima/maximasyntaxhelpobject.cpp new file mode 100644 index 0000000..3385aa5 --- /dev/null +++ b/src/backends/maxima/maximasyntaxhelpobject.cpp @@ -0,0 +1,103 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009-2012 Alexander Rieder +*/ + +#include "maximasyntaxhelpobject.h" +#include "maximakeywords.h" + +#include "maximasession.h" +#include "maximaexpression.h" + +#include "result.h" + +#include + +MaximaSyntaxHelpObject::MaximaSyntaxHelpObject(const QString& cmd, MaximaSession* session) : Cantor::SyntaxHelpObject(cmd, session) +{ + m_expression=nullptr; +} + +void MaximaSyntaxHelpObject::fetchInformation() +{ + bool isValid=false; + for (const QString& func : MaximaKeywords::instance()->functions()) + { + if(command()==func) + { + isValid=true; + break; + } + } + + if(isValid) + { + if (session()->status() != Cantor::Session::Disable) + { + if (m_expression) + return; + + //use the lisp command, instead of directly calling the + //maxima function "describe" to avoid generating a new + //output label that would mess up history + QString cmd=QLatin1String(":lisp(cl-info::info-exact \"%1\")"); + + m_expression=session()->evaluateExpression(cmd.arg(command()), Cantor::Expression::FinishingBehavior::DoNotDelete, true); + + connect(m_expression, &Cantor::Expression::statusChanged, this, &MaximaSyntaxHelpObject::expressionChangedStatus); + } + else + // We can't get function's detailed description, because session not login yet, so do nothing + emit done(); + + }else + { + qDebug()<<"invalid syntax request"; + emit done(); + } +} + +void MaximaSyntaxHelpObject::expressionChangedStatus(Cantor::Expression::Status status) +{ + switch(status) + { + case Cantor::Expression::Done: + { + qDebug()<<"expr done"; + QString text=m_expression->result()->data().toString(); + QStringList lines=text.split(QLatin1Char('\n')); + + QString syntax; + for (QString line : lines) + { + if(line.endsWith(QLatin1Char('\r'))) + line.chop(1); + if(line.startsWith(QLatin1String("-- Function:"))) + { + line.remove(QLatin1String("-- Function:")); + line.remove(QLatin1String("
      ")); + } + syntax+=line; + qDebug() << "line: " << line; + } + + setHtml(QLatin1String("

      ")+syntax+QLatin1String("

      ")); + emit done(); + + m_expression->deleteLater(); + m_expression=nullptr; + break; + } + case Cantor::Expression::Error: + { + qWarning() << "syntax object error" << m_expression->result()->toHtml(); + emit done(); + + m_expression->deleteLater(); + m_expression=nullptr; + break; + } + default: + break; + } +} diff --git a/src/backends/maxima/maximasyntaxhelpobject.h b/src/backends/maxima/maximasyntaxhelpobject.h new file mode 100644 index 0000000..37d3454 --- /dev/null +++ b/src/backends/maxima/maximasyntaxhelpobject.h @@ -0,0 +1,31 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _MAXIMASYNTAXHELPOBJECT_H +#define _MAXIMASYNTAXHELPOBJECT_H + +#include "syntaxhelpobject.h" + +#include "expression.h" + +class MaximaSession; + +class MaximaSyntaxHelpObject : public Cantor::SyntaxHelpObject +{ + Q_OBJECT + public: + MaximaSyntaxHelpObject( const QString& command, MaximaSession* session ); + ~MaximaSyntaxHelpObject() override = default; + + protected Q_SLOTS: + void fetchInformation() override; + private Q_SLOTS: + void expressionChangedStatus(Cantor::Expression::Status status); + + private: + Cantor::Expression* m_expression; +}; + +#endif /* _MAXIMASYNTAXHELPOBJECT_H */ diff --git a/src/backends/maxima/maximavariablemodel.cpp b/src/backends/maxima/maximavariablemodel.cpp new file mode 100644 index 0000000..6996630 --- /dev/null +++ b/src/backends/maxima/maximavariablemodel.cpp @@ -0,0 +1,176 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Alexander Rieder +*/ + +#include "maximavariablemodel.h" + +#include "maximasession.h" +#include "maximaexpression.h" +#include "textresult.h" +#include "latexresult.h" + +#include +#include + +#include "settings.h" + +//command used to inspect a maxima variable. %1 is the name of that variable +const QString MaximaVariableModel::inspectCommand=QLatin1String(":lisp($disp $%1)"); +const QString MaximaVariableModel::variableInspectCommand=QLatin1String(":lisp(cantor-inspect $%1)"); + +MaximaVariableModel::MaximaVariableModel(MaximaSession* session) : Cantor::DefaultVariableModel(session) +{ +} + +void MaximaVariableModel::update() +{ + if (static_cast(session())->mode() != MaximaSession::Maxima) + return; + + if (!m_variableExpression) + { + qDebug()<<"checking for new variables"; + const QString& cmd1 = variableInspectCommand.arg(QLatin1String("values")); + m_variableExpression = static_cast(session()->evaluateExpression(cmd1, Cantor::Expression::FinishingBehavior::DoNotDelete, true)); + connect(m_variableExpression, &Cantor::Expression::statusChanged, this, &MaximaVariableModel::parseNewVariables); + } + + if (!m_functionExpression) + { + qDebug()<<"checking for new functions"; + const QString& cmd2 = inspectCommand.arg(QLatin1String("functions")); + m_functionExpression = static_cast(session()->evaluateExpression(cmd2, Cantor::Expression::FinishingBehavior::DoNotDelete, true)); + connect(m_functionExpression, &Cantor::Expression::statusChanged, this, &MaximaVariableModel::parseNewFunctions); + } +} + +QList parse(MaximaExpression* expr) +{ + if(!expr + || (expr->status()!=Cantor::Expression::Done && expr->errorMessage() != QLatin1String("$DONE")) + || expr->results().isEmpty()) + { + return QList(); + } + + //for parsing of names and values below (old code) we need to combine multiple results back to one string + QString text; + for (auto* result : expr->results()) + { + if(result->type()==Cantor::TextResult::Type) + text += static_cast(result)->plain(); + else if(expr->result()->type()==Cantor::LatexResult::Type) + text += static_cast(result)->plain(); + } + + const int nameIndex = text.indexOf(QLatin1Char(']')); + QString namesString = text.left(nameIndex); + //namesString.chop(1); + namesString=namesString.mid(1); + namesString=namesString.trimmed(); + + qDebug()<<"variable names: "<(); + + QStringList variableNames; + QString valuesString; + bool hasValues = false; + QStringList variableValues; + if ( namesString.contains(QLatin1Char(')')) ) + { + //function definition(s): e.g + //text = "[f1(x),f2(x,y),f3(x,y,z)]\n$DONE" + //nameString = f1(x),f2(x,y),f3(x,y,z) + //variableString = "\n$DONE" + variableNames = namesString.split(QLatin1String("),")); + } + else + { + //variable definition(s): e.g. + //text = "[a,b]\n1\n\"-cantor-value-separator-\"\n2\n\"-cantor-value-separator-\"\n($A $B)" + //nameString = "[a,b]" + //variableString = "\n1\n\"-cantor-value-separator-\"\n2\n\"-cantor-value-separator-\"\n($A $B)" + variableNames = namesString.split(QLatin1Char(',')); + if (MaximaSettings::self()->variableManagement()) + { + valuesString = text.mid(nameIndex+1).trimmed(); + valuesString = valuesString.remove(QLatin1String("\n")); //lists with many elements have line breaks, remove them + variableValues = valuesString.split(QLatin1String("\"-cantor-value-separator-\"")); + hasValues = variableValues.isEmpty(); + } + } + + qDebug()< variables; + variables.reserve(variableNames.size()); + for(int i=0;ii) + { + var.value=variableValues.at(i).trimmed(); + var.value=var.value.remove(QLatin1String("\n")); //lists with many elements have line breaks, remove them + + // text output is quoted by Maxima, remove the quotes + if (var.value.startsWith(QLatin1String("\""))) + { + var.value.remove(0, 1); + var.value.chop(1); + var.value.replace(QLatin1String("\\\""), QLatin1String("\"")); + } + } + else + var.value=QLatin1String("unknown"); + + variables< newVars=parse(m_variableExpression); + setVariables(newVars); + + //the expression is not needed anymore + m_variableExpression->deleteLater(); + m_variableExpression = nullptr; +} + +void MaximaVariableModel::parseNewFunctions(Cantor::Expression::Status status) +{ + if (status != Cantor::Expression::Done && status != Cantor::Expression::Error) + return; + + qDebug()<<"parsing functions"; + + // List of variables? + QList newFuncs=parse(m_functionExpression); + QStringList functions; + for (Variable var : newFuncs) + functions << var.name.left(var.name.indexOf(QLatin1Char('('))); + qDebug() << functions; + setFunctions(functions); + + //the expression is not needed anymore + m_functionExpression->deleteLater(); + m_functionExpression = nullptr; +} + +MaximaSession* MaximaVariableModel::maximaSession() +{ + return static_cast (session()); +} diff --git a/src/backends/maxima/maximavariablemodel.h b/src/backends/maxima/maximavariablemodel.h new file mode 100644 index 0000000..bff7d58 --- /dev/null +++ b/src/backends/maxima/maximavariablemodel.h @@ -0,0 +1,39 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Alexander Rieder +*/ + +#ifndef _MAXIMAVARIABLEMODEL_H +#define _MAXIMAVARIABLEMODEL_H + +#include "defaultvariablemodel.h" +#include + +class MaximaSession; +class MaximaExpression; + +class MaximaVariableModel : public Cantor::DefaultVariableModel +{ + Q_OBJECT + public: + static const QString inspectCommand; + static const QString variableInspectCommand; + + explicit MaximaVariableModel(MaximaSession*); + ~MaximaVariableModel() override = default; + + void update() override; + + private Q_SLOTS: + void parseNewVariables(Cantor::Expression::Status); + void parseNewFunctions(Cantor::Expression::Status); + + private: + MaximaSession* maximaSession(); + + private: + MaximaExpression* m_variableExpression{nullptr}; + MaximaExpression* m_functionExpression{nullptr}; +}; + +#endif /* _MAXIMAVARIABLEMODEL_H */ diff --git a/src/backends/maxima/settings.kcfgc b/src/backends/maxima/settings.kcfgc new file mode 100644 index 0000000..a434969 --- /dev/null +++ b/src/backends/maxima/settings.kcfgc @@ -0,0 +1,3 @@ +File=maximabackend.kcfg +ClassName=MaximaSettings +Singleton=true diff --git a/src/backends/maxima/settings.ui b/src/backends/maxima/settings.ui new file mode 100644 index 0000000..0eddec2 --- /dev/null +++ b/src/backends/maxima/settings.ui @@ -0,0 +1,127 @@ + + + MaximaSettingsBase + + + + 0 + 0 + 408 + 296 + + + + + + + 0 + + + + General + + + + + + If enabled, plots will be shown inside of the worksheet. Otherwise, plots will be shown in an external window. + + + Enabled + + + + + + + Plot Integration: + + + + + + + Monitor the creation and destruction of variables and show the existing variables in the variable panel. + + + Enabled + + + + + + + Variable Management: + + + + + + + Executable: + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + Autorun + + + + + + Commands to autorun + + + Qt::AlignCenter + + + + + + + + + + + Documentation + + + + + + + + + KUrlRequester + QWidget +
      kurlrequester.h
      + 1 +
      + + KEditListWidget + QWidget +
      keditlistwidget.h
      +
      +
      + + +
      diff --git a/src/backends/maxima/testmaxima.cpp b/src/backends/maxima/testmaxima.cpp new file mode 100644 index 0000000..8c1db92 --- /dev/null +++ b/src/backends/maxima/testmaxima.cpp @@ -0,0 +1,523 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2018-2022 by Alexander Semke (alexander.semke@web.de) +*/ + +#include "testmaxima.h" + +#include "session.h" +#include "backend.h" +#include "expression.h" +#include "result.h" +#include "textresult.h" +#include "imageresult.h" +#include "epsresult.h" +#include "syntaxhelpobject.h" +#include "completionobject.h" +#include "defaultvariablemodel.h" + +#include + +QString TestMaxima::backendName() +{ + return QLatin1String("maxima"); +} + + +void TestMaxima::testSimpleCommand() +{ + auto* e=evalExp( QLatin1String("2+2") ); + + QVERIFY( e!=nullptr ); + QVERIFY( e->result()!=nullptr ); + + QCOMPARE( cleanOutput( e->result()->data().toString() ), QLatin1String("4") ); +} + +void TestMaxima::testMultilineCommand() +{ + auto* e = evalExp( QLatin1String("2+2;3+3") ); + + QVERIFY(e != nullptr); + QVERIFY(e->results().size() == 2); + + QCOMPARE(e->results().at(0)->data().toString(), QLatin1String("4")); + QCOMPARE(e->results().at(1)->data().toString(), QLatin1String("6")); +} + +//WARNING: for this test to work, Integration of Plots must be enabled +//and CantorLib must be compiled with EPS-support +void TestMaxima::testPlot() +{ + if(QStandardPaths::findExecutable(QLatin1String("gnuplot")).isNull()) + { + QSKIP("gnuplot not found, maxima needs it for plotting", SkipSingle); + } + + auto* e=evalExp( QLatin1String("plot2d(sin(x), [x, -10,10])") ); + + QVERIFY( e!=nullptr ); + QVERIFY( e->result()!=nullptr ); + + if(!e->result()) + { + waitForSignal(e, SIGNAL(gotResult())); + } + + QCOMPARE( e->result()->type(), (int)Cantor::ImageResult::Type ); + QVERIFY( !e->result()->data().isNull() ); + QVERIFY( e->errorMessage().isNull() ); +} + +void TestMaxima::testPlotMultiline() +{ + if(QStandardPaths::findExecutable(QLatin1String("gnuplot")).isNull()) + QSKIP("gnuplot not found, maxima needs it for plotting", SkipSingle); + + auto* e = evalExp(QLatin1String( + "plot2d (x^2-y^3+3*y=2,\n" + "[x,-2.5,2.5],\n" + "[y,-2.5,2.5])" + )); + + QVERIFY(e != nullptr); + QVERIFY(e->result() != nullptr); + + if(!e->result()) + waitForSignal(e, SIGNAL(gotResult())); + + QCOMPARE(e->result()->type(), (int)Cantor::ImageResult::Type); + QVERIFY(!e->result()->data().isNull()); + QVERIFY(e->errorMessage().isNull()); +} + +void TestMaxima::testPlotWithAnotherTextResults() +{ + if(QStandardPaths::findExecutable(QLatin1String("gnuplot")).isNull()) + { + QSKIP("gnuplot not found, maxima needs it for plotting", SkipSingle); + } + + auto* e=evalExp( QLatin1String( + "2*2; \n" + "plot2d(sin(x), [x, -10,10]); \n" + "4*4;" + )); + + if (e->results().at(1)->type() == Cantor::TextResult::Type) + waitForSignal(e, SIGNAL(resultReplaced)); + + QVERIFY( e!=nullptr ); + QVERIFY( e->errorMessage().isNull() ); + QCOMPARE(e->results().size(), 3); + + QCOMPARE(e->results().at(0)->data().toString(), QLatin1String("4")); + + QCOMPARE( e->results().at(1)->type(), (int)Cantor::ImageResult::Type ); + QVERIFY( !e->results().at(1)->data().isNull() ); + + QCOMPARE(e->results().at(2)->data().toString(), QLatin1String("16")); +} + +void TestMaxima::testDraw() +{ + if(QStandardPaths::findExecutable(QLatin1String("gnuplot")).isNull()) + { + QSKIP("gnuplot not found, maxima needs it for plotting", SkipSingle); + } + + auto* e = evalExp( QLatin1String("draw3d(explicit(x^2+y^2,x,-1,1,y,-1,1))") ); + + QVERIFY(e != nullptr); + QVERIFY(e->result() != nullptr); + + if(!e->result()) + { + waitForSignal(e, SIGNAL(gotResult())); + } + + QCOMPARE( e->result()->type(), (int)Cantor::ImageResult::Type ); + QVERIFY( !e->result()->data().isNull() ); + QVERIFY( e->errorMessage().isNull() ); +} + +void TestMaxima::testDrawMultiline() +{ + if(QStandardPaths::findExecutable(QLatin1String("gnuplot")).isNull()) + QSKIP("gnuplot not found, maxima needs it for plotting", SkipSingle); + + auto* e = evalExp( QLatin1String( + "draw(\n" + "gr2d(\n" + "key=\"sin (x)\",grid=[2,2],\n" + "explicit(\n" + "sin(x),\n" + "x,0,2*%pi\n" + ")\n" + "),\n" + "gr2d(\n" + "key=\"cos (x)\",grid=[2,2],\n" + "explicit(\n" + "cos(x),\n" + "x,0,2*%pi\n" + ")\n" + "))" + )); + + + QVERIFY(e != nullptr); + QVERIFY(e->result() != nullptr); + + if(!e->result()) + waitForSignal(e, SIGNAL(gotResult())); + + QCOMPARE(e->result()->type(), (int)Cantor::ImageResult::Type); + QVERIFY(!e->result()->data().isNull()); + QVERIFY(e->errorMessage().isNull()); +} + +void TestMaxima::testDrawWithAnotherTextResults() +{ + if(QStandardPaths::findExecutable(QLatin1String("gnuplot")).isNull()) + { + QSKIP("gnuplot not found, maxima needs it for plotting", SkipSingle); + } + + auto* e = evalExp( QLatin1String( + "2*2; \n" + "draw3d(explicit(x^2+y^2,x,-1,1,y,-1,1)); \n" + "4*4;" + )); + + if (e->results().at(1)->type() == Cantor::TextResult::Type) + waitForSignal(e, SIGNAL(resultReplaced)); + + QVERIFY( e!=nullptr ); + QVERIFY( e->errorMessage().isNull() ); + QCOMPARE(e->results().size(), 3); + + QCOMPARE(e->results().at(0)->data().toString(), QLatin1String("4")); + + QCOMPARE( e->results().at(1)->type(), (int)Cantor::ImageResult::Type ); + QVERIFY( !e->results().at(1)->data().isNull() ); + + QCOMPARE(e->results().at(2)->data().toString(), QLatin1String("16")); +} + +void TestMaxima::testInvalidSyntax() +{ + auto* e=evalExp( QLatin1String("2+2*(") ); + + QVERIFY( e!=nullptr ); + QVERIFY( e->status()==Cantor::Expression::Error ); +} + +void TestMaxima::testWarning01() +{ + auto* e = evalExp( QLatin1String("rat(0.75*10)") ); + + QVERIFY(e != nullptr); + QVERIFY(e->results().size() == 2); //two results, the warning and the actual result of the calculation + + //the actual warning string "rat: replaced 7.5 by 15/2 = 7.5" which we don't checked since it's translated, + //we just check it's existance. + auto* result = dynamic_cast(e->results().at(0)); + QVERIFY(e != nullptr); + QVERIFY(result->data().toString().isEmpty() == false); + QVERIFY(result->isWarning() == true); + + //the result of the calculation + QCOMPARE(e->results().at(1)->data().toString(), QLatin1String("15/2")); +} + +/*! + * test the output of the tex() function which is similarly formatted as other functions producing warning + * but which shouldn't be treated as a warning. + * */ +void TestMaxima::testWarning02() +{ + auto* e = evalExp( QLatin1String("tex(\"sin(x)\")") ); + + QVERIFY(e != nullptr); + QVERIFY(e->results().size() == 2); //two results, the TeX output and an additional 'false' + + //the actual TeX string is of no interest for us, we just check it's existance. + auto* result = dynamic_cast(e->results().at(0)); + QVERIFY(e != nullptr); + QVERIFY(result->data().toString().isEmpty() == false); + QVERIFY(result->isWarning() == false); +} + +void TestMaxima::testExprNumbering() +{ + auto* e=evalExp( QLatin1String("kill(labels)") ); //first reset the labels + + e=evalExp( QLatin1String("2+2") ); + QVERIFY( e!=nullptr ); + int id=e->id(); + QCOMPARE( id, 1 ); + + e=evalExp( QString::fromLatin1("%o%1+1" ).arg( id ) ); + QVERIFY( e != nullptr ); + QVERIFY( e->result()!=nullptr ); + QCOMPARE( cleanOutput( e->result()->data().toString() ), QLatin1String( "5" ) ); +} + +void TestMaxima::testCommandQueue() +{ + //only wait for the last Expression to return, so the queue gets + //actually filled + + auto* e1=session()->evaluateExpression(QLatin1String("0+1")); + auto* e2=session()->evaluateExpression(QLatin1String("1+1")); + auto* e3=evalExp(QLatin1String("1+2")); + + QVERIFY(e1!=nullptr); + QVERIFY(e2!=nullptr); + QVERIFY(e3!=nullptr); + + QVERIFY(e1->result()); + QVERIFY(e2->result()); + QVERIFY(e3->result()); + + QCOMPARE(cleanOutput(e1->result()->data().toString()), QLatin1String("1")); + QCOMPARE(cleanOutput(e2->result()->data().toString()), QLatin1String("2")); + QCOMPARE(cleanOutput(e3->result()->data().toString()), QLatin1String("3")); +} + +void TestMaxima::testSimpleExpressionWithComment() +{ + auto* e=evalExp(QLatin1String("/*this is a comment*/2+2")); + QVERIFY(e!=nullptr); + QVERIFY(e->result()!=nullptr); + + QCOMPARE(cleanOutput(e->result()->data().toString()), QLatin1String("4")); +} + +void TestMaxima::testCommentExpression() +{ + auto* e=evalExp(QLatin1String("/*this is a comment*/")); + QVERIFY(e!=nullptr); + QVERIFY(e->result()==nullptr||e->result()->data().toString().isEmpty()); +} + +void TestMaxima::testNestedComment() +{ + auto* e=evalExp(QLatin1String("/*/*this is still a comment*/*/2+2/*still/*a*/comment*//**/")); + QVERIFY(e!=nullptr); + QVERIFY(e->result()!=nullptr); + + QCOMPARE(cleanOutput(e->result()->data().toString()), QLatin1String("4")); +} + +void TestMaxima::testUnmatchedComment() +{ + auto* e=evalExp(QLatin1String("/*this comment doesn't end here!")); + QVERIFY(e!=nullptr); + QVERIFY(e->result()==nullptr); + QVERIFY(e->status()==Cantor::Expression::Error); +} + +void TestMaxima::testInvalidAssignment() +{ + auto* e=evalExp(QLatin1String("0:a")); + QVERIFY(e!=nullptr); + //QVERIFY(e->result()==0); + //QVERIFY(e->status()==Cantor::Expression::Error); + + if(session()->status()==Cantor::Session::Running) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + //make sure we didn't screw up the session + auto* e2=evalExp(QLatin1String("2+2")); + QVERIFY(e2!=nullptr); + QVERIFY(e2->result()!=nullptr); + + QCOMPARE(cleanOutput(e2->result()->data().toString()), QLatin1String("4")); +} + +void TestMaxima::testInformationRequest() +{ + auto* e=session()->evaluateExpression(QLatin1String("integrate(x^n,x)")); + QVERIFY(e!=nullptr); + waitForSignal(e, SIGNAL(needsAdditionalInformation(QString))); + e->addInformation(QLatin1String("N")); + + waitForSignal(e, SIGNAL(statusChanged(Cantor::Expression::Status))); + QVERIFY(e->result()!=nullptr); + + QCOMPARE(cleanOutput(e->result()->data().toString()), QLatin1String("x^(n+1)/(n+1)")); +} + +void TestMaxima::testSyntaxHelp() +{ + Cantor::SyntaxHelpObject* help = session()->syntaxHelpFor(QLatin1String("simplify_sum")); + help->fetchSyntaxHelp(); + waitForSignal(help, SIGNAL(done())); + + bool trueHelpMessage= help->toHtml().contains(QLatin1String("simplify_sum")); + bool problemsWithMaximaDocs = help->toHtml().contains(QLatin1String("INTERNAL-SIMPLE-FILE-ERROR")); + QVERIFY(trueHelpMessage || problemsWithMaximaDocs); +} + +void TestMaxima::testCompletion() +{ + Cantor::CompletionObject* help = session()->completionFor(QLatin1String("ask"), 3); + waitForSignal(help, SIGNAL(fetchingDone())); + + // Checks all completions for this request + // This correct for Maxima 5.41.0 + const QStringList& completions = help->completions(); + QVERIFY(completions.contains(QLatin1String("asksign"))); + QVERIFY(completions.contains(QLatin1String("askinteger"))); + QVERIFY(completions.contains(QLatin1String("askexp"))); +} + +void TestMaxima::testHelpRequest() +{ + //execute "??print" + auto* e = session()->evaluateExpression(QLatin1String("??print")); + QVERIFY(e != nullptr); + + //help result will be shown, but maxima still expects further input + waitForSignal(e, SIGNAL(needsAdditionalInformation(QString))); + if (e->status() == Cantor::Expression::Computing) + waitForSignal(e, SIGNAL(statusChanged(Cantor::Expression::Status))); + QVERIFY(e->status() != Cantor::Expression::Done); + QVERIFY(e->results().size() == 1); //two results, the warning and the actual result of the calculation + + //ask for help for the first flag of the print command + e->addInformation(QLatin1String("0")); + + //no further input is required, we're done + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + if (e->status() == Cantor::Expression::Computing) + waitForSignal(e, SIGNAL(statusChanged(Cantor::Expression::Status))); + QVERIFY(e->status() == Cantor::Expression::Done); + QVERIFY(e->results().size() == 2); //two results, the warning and the actual result of the calculation +} + +void TestMaxima::testTextQuotes() +{ + // check simple sting + auto* e1 = evalExp(QLatin1String("t1: \"test string\"")); + QVERIFY(e1 != nullptr); + + if(session()->status()==Cantor::Session::Running) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + QVERIFY(e1->result() != nullptr); + QCOMPARE(e1->result()->type(), (int)Cantor::TextResult::Type ); + QCOMPARE(e1->result()->data().toString(), QLatin1String("test string")); + + // check string with quotes inside + auto* e2 = evalExp(QLatin1String("t2: \"this is a \\\"quoted string\\\"\"")); + QVERIFY(e2 != nullptr); + + if(session()->status()==Cantor::Session::Running) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + QVERIFY(e2->result() != nullptr); + QCOMPARE(e2->result()->type(), (int)Cantor::TextResult::Type ); + QCOMPARE(e2->result()->data().toString(), QLatin1String("this is a \"quoted string\"")); +} + +void TestMaxima::testVariableModel() +{ + QAbstractItemModel* model = session()->variableModel(); + QVERIFY(model != nullptr); + + auto* e1 = evalExp(QLatin1String("a: 15")); + auto* e2 = evalExp(QLatin1String("a: 15; b: \"Hello, world!\"")); + auto* e3 = evalExp(QLatin1String("l: [1,2,3]")); + auto* e4 = evalExp(QLatin1String("t: \"this is a \\\"quoted string\\\"\"")); + QVERIFY(e1 != nullptr); + QVERIFY(e2 != nullptr); + QVERIFY(e3 != nullptr); + QVERIFY(e4 != nullptr); + + if(session()->status()==Cantor::Session::Running) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + QCOMPARE(4, model->rowCount()); + + QVariant name = model->index(0,0).data(); + QCOMPARE(name.toString(),QLatin1String("a")); + + QVariant value = model->index(0,1).data(); + QCOMPARE(value.toString(),QLatin1String("15")); + + QVariant name1 = model->index(1,0).data(); + QCOMPARE(name1.toString(),QLatin1String("b")); + + QVariant value1 = model->index(1,1).data(); + QCOMPARE(value1.toString(),QLatin1String("Hello, world!")); + + QVariant name2 = model->index(2,0).data(); + QCOMPARE(name2.toString(),QLatin1String("l")); + + QVariant value2 = model->index(2,1).data(); + QCOMPARE(value2.toString(),QLatin1String("[1,2,3]")); + + QVariant name3 = model->index(3,0).data(); + QCOMPARE(name3.toString(),QLatin1String("t")); + + QVariant value3 = model->index(3,1).data(); + QCOMPARE(value3.toString(),QLatin1String("this is a \"quoted string\"")); +} + +void TestMaxima::testLispMode01() +{ + //switch to the Lisp-mode + auto* e1 = evalExp(QLatin1String("to_lisp();")); + QVERIFY(e1 != nullptr); + + //evaluate a Lisp command and check the result + auto* e2 = evalExp(QLatin1String("(cons 'a 'b)")); + QVERIFY(e2 != nullptr); + QVERIFY(e2->result() != nullptr); + QCOMPARE(cleanOutput(e2->result()->data().toString()), QLatin1String("(A . B)")); + + //switch back to Maxima mode + auto* e3 = evalExp(QLatin1String("(to-maxima)")); + QVERIFY(e3 != nullptr); + + //evaluate a simple Maxima command + auto* e4 = evalExp(QLatin1String("5+5")); + QVERIFY(e4 != nullptr); + + //TODO: doesn't work in the test, works in Cantor though... +// QVERIFY(e4->result() != nullptr); +// QCOMPARE(cleanOutput(e4->result()->data().toString()), QLatin1String("10")); +} + +void TestMaxima::testLoginLogout() +{ + // Logout from session twice and all must works fine + session()->logout(); + session()->logout(); + + // Login in session twice and all must works fine + session()->login(); + session()->login(); +} + +void TestMaxima::testRestartWhileRunning() +{ + auto* e1=session()->evaluateExpression(QLatin1String(":lisp (sleep 5)")); + + session()->logout(); + QCOMPARE(e1->status(), Cantor::Expression::Interrupted); + session()->login(); + + auto* e2=evalExp( QLatin1String("2+2") ); + + QVERIFY(e2 != nullptr); + QVERIFY(e2->result() != nullptr); + + QCOMPARE(cleanOutput(e2->result()->data().toString() ), QLatin1String("4")); +} + +QTEST_MAIN( TestMaxima ) + diff --git a/src/backends/maxima/testmaxima.h b/src/backends/maxima/testmaxima.h new file mode 100644 index 0000000..2c69b5b --- /dev/null +++ b/src/backends/maxima/testmaxima.h @@ -0,0 +1,73 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2018-2022 by Alexander Semke (alexander.semke@web.de) +*/ + +#ifndef _TESTMAXIMA_H +#define _TESTMAXIMA_H + +#include "backendtest.h" + +/** This class test some of the basic functions of the maxima backend + The different tests represent some general expressions, as well + as expressions, that are known to have caused problems in earlier + versions +**/ +class TestMaxima : public BackendTest +{ + Q_OBJECT + +private Q_SLOTS: + //tests evaluating a simple command + void testSimpleCommand(); + //tests a command, containing more than 1 line + void testMultilineCommand(); + //tests if the command queue works correctly + void testCommandQueue(); + + //tests doing a plot + void testPlot(); + void testPlotMultiline(); + void testPlotWithAnotherTextResults(); + void testDraw(); + void testDrawMultiline(); + void testDrawWithAnotherTextResults(); + + /* errors and warnings */ + + //tests a syntax error (not closing bracket) + void testInvalidSyntax(); + void testWarning01(); + void testWarning02(); + //tests if the expression numbering works + void testExprNumbering(); + void testInvalidAssignment(); + + /* comments */ + void testSimpleExpressionWithComment(); + void testCommentExpression(); + void testNestedComment(); + void testUnmatchedComment(); + + /* tests where additional input is required */ + void testInformationRequest(); + void testHelpRequest(); + void testSyntaxHelp(); + + void testCompletion(); + + void testVariableModel(); + + void testLispMode01(); + + void testTextQuotes(); + + void testLoginLogout(); + void testRestartWhileRunning(); + +private: + QString backendName() override; +}; + +#endif /* _TESTMAXIMA_H */ diff --git a/src/backends/octave/CMakeLists.txt b/src/backends/octave/CMakeLists.txt new file mode 100644 index 0000000..2ca67fa --- /dev/null +++ b/src/backends/octave/CMakeLists.txt @@ -0,0 +1,50 @@ +set( OctaveBackend_SRCS + octavebackend.cpp + octavesession.cpp + octaveexpression.cpp + octaveextensions.cpp + octavehighlighter.cpp + octavekeywords.cpp + octavecompletionobject.cpp + octavesyntaxhelpobject.cpp + octavevariablemodel.cpp + octavesettingswidget.cpp + ../backendsettingswidget.cpp +) + +add_subdirectory(scripts) + +set(DEFAULT_PLOT_FORMAT "png") + +configure_file(octavebackend.kcfg.in ${CMAKE_CURRENT_BINARY_DIR}/octavebackend.kcfg) + +kconfig_add_kcfg_files(OctaveBackend_SRCS settings.kcfgc) +install(FILES octavebackend.kcfg.in DESTINATION ${KDE_INSTALL_KCFGDIR}) + +ki18n_wrap_ui(OctaveBackend_SRCS settings.ui) + +add_backend(octavebackend ${OctaveBackend_SRCS}) + +target_link_libraries(cantor_octavebackend cantor_help + KF5::KIOCore + KF5::ConfigCore + KF5::ConfigGui + KF5::SyntaxHighlighting +) + +if(BUILD_TESTING) + add_executable( testoctave testoctave.cpp ${OctaveBackend_SRCS}) + add_test(NAME testoctave COMMAND testoctave) + target_link_libraries( testoctave + Qt5::Test + KF5::SyntaxHighlighting + cantorlibs + cantortest + cantor_help + ) +endif() + + +install(FILES cantor_octave.knsrc DESTINATION ${KDE_INSTALL_KNSRCDIR} ) + +install(FILES graphic_packages.xml DESTINATION ${KDE_INSTALL_DATADIR}/cantor/octave) diff --git a/src/backends/octave/cantor_octave.knsrc b/src/backends/octave/cantor_octave.knsrc new file mode 100644 index 0000000..019c147 --- /dev/null +++ b/src/backends/octave/cantor_octave.knsrc @@ -0,0 +1,7 @@ +[KNewStuff3] +ProvidersUrl=https://autoconfig.kde.org/ocs/providers.xml +Categories=Cantor (Maxima),Cantor (Sage),Cantor (KAlgebra),Cantor (Qalculate),Cantor (Python 2),Cantor (Python 3),Cantor (Scilab),Cantor (Octave),Cantor (R),Cantor (Lua) +UploadCategories=Cantor (Octave) +TargetDir=cantor/examples +Uncompress=never +CustomName=true diff --git a/src/backends/octave/cmake.patch b/src/backends/octave/cmake.patch new file mode 100644 index 0000000..e30a244 --- /dev/null +++ b/src/backends/octave/cmake.patch @@ -0,0 +1,10 @@ +Index: CMakeLists.txt +=================================================================== +--- CMakeLists.txt (revision 1124619) ++++ CMakeLists.txt (working copy) +@@ -12,3 +12,5 @@ + if(R_FOUND) + macro_optional_add_subdirectory(R) + endif(R_FOUND) ++ ++add_subdirectory(octave) diff --git a/src/backends/octave/graphic_packages.xml b/src/backends/octave/graphic_packages.xml new file mode 100644 index 0000000..d7390fd --- /dev/null +++ b/src/backends/octave/graphic_packages.xml @@ -0,0 +1,77 @@ + + + octave_universal + Octave + +if (length(available_graphics_toolkits()) > 0) + printf("%d", 1); +else + printf("%d", 0); +endif + + +set (0, "defaultfigurevisible","off"); + + +set (0, "defaultfigurevisible","on"); + + +__cantor_plot_filename__ ='%1%2.%3'; +try + print(strcat('-d', '%3'), __cantor_plot_filename__, '-tight'); +catch + try + print(strcat('-d', '%3'), __cantor_plot_filename__); + end_try_catch +end_try_catch +clear __cantor_plot_filename__ + + + plot + semilogx + semilogy + loglog + polar + contour + bar + stairs + errorbar + sombrero + hist + fplot + imshow + stem + stem3 + scatter + pareto + rose + pie + quiver + compass + feather + pcolor + area + fill + comet + plotmatrix + plot3 + mesh + meshc + meshz + surf + surfc + surfl + surfnorm + isosurface + isonormals + isocaps + ezplot3 + ezmesh + ezmeshc + ezsurf + ezsurfc + cantor_plot2d + cantor_plot3d + + + diff --git a/src/backends/octave/octavebackend.cpp b/src/backends/octave/octavebackend.cpp new file mode 100644 index 0000000..d889445 --- /dev/null +++ b/src/backends/octave/octavebackend.cpp @@ -0,0 +1,82 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Miha Čančula + SPDX-FileCopyrightText: 2019 Alexander Semke +*/ + +#include "octavebackend.h" +#include "octaveextensions.h" +#include "octavesession.h" +#include "octavesettingswidget.h" +#include "settings.h" + +#include + +OctaveBackend::OctaveBackend(QObject* parent, const QList& args): Backend(parent, args) +{ + new OctaveHistoryExtension(this); + new OctaveScriptExtension(this); + new OctavePlotExtension(this); + new OctaveLinearAlgebraExtension(this); + new OctaveVariableManagementExtension(this); + new OctavePackagingExtension(this); +} + +QString OctaveBackend::id() const +{ + return QLatin1String("octave"); +} + +QString OctaveBackend::version() const +{ + return QLatin1String("6.2"); +} + +Cantor::Backend::Capabilities OctaveBackend::capabilities() const +{ + Cantor::Backend::Capabilities cap = + SyntaxHighlighting | + Completion | + SyntaxHelp | + IntegratedPlots; + + if (OctaveSettings::self()->variableManagement()) + cap |= VariableManagement; + return cap; +} + +Cantor::Session* OctaveBackend::createSession() +{ + return new OctaveSession(this); +} + +bool OctaveBackend::requirementsFullfilled(QString* const reason) const +{ + const QString& path = OctaveSettings::path().toLocalFile(); + return Cantor::Backend::checkExecutable(QLatin1String("Octave"), path, reason); +} + +QUrl OctaveBackend::helpUrl() const +{ + return QUrl(i18nc("the url to the documentation of Octave, please check if there is a translated version and use the correct url", + "https://octave.org/doc/interpreter/")); +} + +QString OctaveBackend::description() const +{ + return i18n("GNU Octave is a high-level language, primarily intended for numerical computations.
      " + "It provides a convenient command line interface for solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with Matlab."); +} + +QWidget* OctaveBackend::settingsWidget(QWidget* parent) const +{ + return new OctaveSettingsWidget(parent, id()); +} + +KConfigSkeleton* OctaveBackend::config() const +{ + return OctaveSettings::self(); +} + +K_PLUGIN_FACTORY_WITH_JSON(octavebackend, "octavebackend.json", registerPlugin();) +#include "octavebackend.moc" diff --git a/src/backends/octave/octavebackend.h b/src/backends/octave/octavebackend.h new file mode 100644 index 0000000..0f88d7b --- /dev/null +++ b/src/backends/octave/octavebackend.h @@ -0,0 +1,30 @@ +/* + SPDX-FileCopyrightText: 2010 Miha Čančula + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef CANTOR_OCTAVE_BACKEND_H +#define CANTOR_OCTAVE_BACKEND_H + +#include + +class OctaveBackend : public Cantor::Backend +{ + Q_OBJECT + public: + explicit OctaveBackend( QObject* parent = nullptr,const QList& args = QList()); + ~OctaveBackend() override = default; + QString id() const override; + QString version() const override; + Cantor::Backend::Capabilities capabilities() const override; + Cantor::Session* createSession() override; + + bool requirementsFullfilled(QString* const reason = nullptr) const override; + QUrl helpUrl() const override; + QString description() const override; + QWidget* settingsWidget(QWidget* parent) const override; + KConfigSkeleton* config() const override; +}; + +#endif diff --git a/src/backends/octave/octavebackend.json b/src/backends/octave/octavebackend.json new file mode 100644 index 0000000..70a1471 --- /dev/null +++ b/src/backends/octave/octavebackend.json @@ -0,0 +1,69 @@ +{ + "KPlugin": { + "Description": "Backend for GNU Octave", + "Description[ca@valencia]": "Un dorsal per a GNU Octave", + "Description[ca]": "Un dorsal per al GNU Octave", + "Description[cs]": "Podpůrná vrstva pro GNU Octave", + "Description[de]": "Modul für GNU Octave", + "Description[el]": "Σύστημα υποστήριξης για το GNU Octave", + "Description[en_GB]": "Backend for GNU Octave", + "Description[es]": "Motor para GNU Octave", + "Description[et]": "GNU Octave'i taustaprogramm", + "Description[fi]": "GNU Octaven taustajärjestelmä", + "Description[fr]": "Moteur GNU « Octave »", + "Description[gl]": "Infraestrutura para GNU Octave", + "Description[ia]": "Retrodministration per GNU Octave", + "Description[it]": "Motore per GNU Octave", + "Description[ka]": "GNU Octave-ის უკანაბოლო", + "Description[ko]": "GNU Octave 백엔드", + "Description[nl]": "Een backend voor GNU Octave", + "Description[nn]": "Motor for GNU Octave", + "Description[pl]": "Silnik dla GNU Octave", + "Description[pt]": "Infra-estrutura para o GNU Octave", + "Description[pt_BR]": "Infraestrutura para o GNU Octave", + "Description[ru]": "Модуль поддержки Octave", + "Description[sk]": "Backend pre GNU Octave", + "Description[sl]": "Zaledje za GNU Octave", + "Description[sv]": "Ett bakgrundsprogram för GNU Octave", + "Description[tr]": "GNU Octave için arka uç", + "Description[uk]": "Модуль GNU Octave", + "Description[x-test]": "xxBackend for GNU Octavexx", + "Description[zh_CN]": "GNU Octave 后端", + "Description[zh_TW]": "GNU Octave 後端介面", + "Icon": "octavebackend", + "Id": "Octave", + "License": "GPL", + "Name": "Octave", + "Name[ca@valencia]": "Octave", + "Name[ca]": "Octave", + "Name[cs]": "Octave", + "Name[da]": "Octave", + "Name[de]": "Octave", + "Name[el]": "Octave", + "Name[en_GB]": "Octave", + "Name[es]": "Octave", + "Name[et]": "Octave", + "Name[fi]": "Octave", + "Name[fr]": "Octave", + "Name[gl]": "Octave", + "Name[ia]": "Octave", + "Name[it]": "Octave", + "Name[ka]": "Octave", + "Name[ko]": "Octave", + "Name[nl]": "Octave", + "Name[nn]": "Octave", + "Name[pl]": "Octave", + "Name[pt]": "Octave", + "Name[pt_BR]": "Octave", + "Name[ru]": "Octave", + "Name[sk]": "Octave", + "Name[sl]": "Octave", + "Name[sv]": "Octave", + "Name[tr]": "Octave", + "Name[uk]": "Octave", + "Name[x-test]": "xxOctavexx", + "Name[zh_CN]": "Octave", + "Name[zh_TW]": "Octave", + "Website": "https://www.gnu.org/software/octave/" + } +} diff --git a/src/backends/octave/octavebackend.kcfg.in b/src/backends/octave/octavebackend.kcfg.in new file mode 100644 index 0000000..12deb4a --- /dev/null +++ b/src/backends/octave/octavebackend.kcfg.in @@ -0,0 +1,41 @@ + + + QStandardPaths + + + + + + [this] { + #ifdef Q_OS_WIN + return QUrl::fromLocalFile(QStandardPaths::findExecutable( QLatin1String("octave.exe") )); + #else + return QUrl::fromLocalFile(QStandardPaths::findExecutable( QLatin1String("octave") )); + #endif + } () + + + + + true + + + + true + + + + + + + + + + + @DEFAULT_PLOT_FORMAT@ + + + diff --git a/src/backends/octave/octavecompletionobject.cpp b/src/backends/octave/octavecompletionobject.cpp new file mode 100644 index 0000000..3388850 --- /dev/null +++ b/src/backends/octave/octavecompletionobject.cpp @@ -0,0 +1,148 @@ +/* + SPDX-FileCopyrightText: 2010 Miha Čančula + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "octavecompletionobject.h" +#include "octavekeywords.h" + +#include "session.h" +#include "result.h" + +#include + +OctaveCompletionObject::OctaveCompletionObject(const QString& command, int index, Cantor::Session* parent): + CompletionObject(parent), + m_expression(nullptr) +{ + setLine(command, index); +} + +OctaveCompletionObject::~OctaveCompletionObject() +{ + if (m_expression) + m_expression->setFinishingBehavior(Cantor::Expression::FinishingBehavior::DeleteOnFinish); +} + +void OctaveCompletionObject::fetchCompletions() +{ + if (session()->status() != Cantor::Session::Done) + { + QStringList allCompletions; + + allCompletions << OctaveKeywords::instance()->functions(); + allCompletions << OctaveKeywords::instance()->keywords(); + + setCompletions(allCompletions); + + emit fetchingDone(); + } + else + { + if (m_expression) + return; + qDebug() << "Fetching completions for" << command(); + QString expr = QString::fromLatin1("completion_matches('%1')").arg(command()); + m_expression = session()->evaluateExpression(expr,Cantor::Expression::FinishingBehavior::DoNotDelete, true); + connect(m_expression, &Cantor::Expression::statusChanged, this, &OctaveCompletionObject::extractCompletions); + } +} + +void OctaveCompletionObject::extractCompletions(Cantor::Expression::Status status) +{ + switch(status) + { + case Cantor::Expression::Done: + { + Cantor::Result* result = m_expression->result(); + if (result) + { + QString res = result->data().toString(); + QStringList completions = res.split(QLatin1String("\n"), QString::SkipEmptyParts); + qDebug() << "Adding" << completions.size() << "completions"; + setCompletions( completions ); + } + break; + } + case Cantor::Expression::Interrupted: + case Cantor::Expression::Error: + { + qDebug() << "fetching expression finished with status" << (status == Cantor::Expression::Error? "Error" : "Interrupted"); + break; + } + default: + return; + } + + m_expression->deleteLater(); + m_expression=nullptr; + emit fetchingDone(); +} + +void OctaveCompletionObject::fetchIdentifierType() +{ + if (session()->status() != Cantor::Session::Done) + { + qDebug() << "Fetching type of " << identifier(); + if (OctaveKeywords::instance()->keywords().contains(identifier())) + emit fetchingTypeDone(KeywordType); + else if (OctaveKeywords::instance()->functions().contains(identifier())) + emit fetchingTypeDone(FunctionType); + else + emit fetchingTypeDone(UnknownType); + } + else + { + if (m_expression) + return; + qDebug() << "Fetching type of " << identifier(); + QString expr = QString::fromLatin1("__cantor_tmp__ = [exist('%1'), iskeyword('%1')], clear __cantor_tmp__").arg(identifier()); + m_expression = session()->evaluateExpression(expr, Cantor::Expression::FinishingBehavior::DoNotDelete, true); + connect(m_expression, &Cantor::Expression::statusChanged, this, &OctaveCompletionObject::extractIdentifierType); + } +} + +void OctaveCompletionObject::extractIdentifierType(Cantor::Expression::Status status) +{ + switch(status) + { + case Cantor::Expression::Error: + qDebug() << "Error with OctaveCompletionObject" << m_expression->errorMessage(); + emit fetchingTypeDone(UnknownType); + break; + + case Cantor::Expression::Interrupted: + qDebug() << "OctaveCompletionObject was interrupted"; + emit fetchingTypeDone(UnknownType); + break; + + case Cantor::Expression::Done: + if (m_expression->result()) + { + QString res = m_expression->result()->data().toString(); + // Remove '__cantor_tmp__ = \n' from result string + // size("__cantor_tmp__ = \n") == 18 + res.remove(0,18); + + const QStringList& ints = res.split(QLatin1String(" "), QString::SkipEmptyParts); + if (ints.size() != 2) + emit fetchingTypeDone(UnknownType); + else if (ints[1].toInt() == 1) + emit fetchingTypeDone(KeywordType); + else if (ints[0].toInt() == 1) + emit fetchingTypeDone(VariableType); + else if (ints[0].toInt() == 5 || ints[0].toInt() == 103) + emit fetchingTypeDone(FunctionType); + else + emit fetchingTypeDone(UnknownType); + } + break; + + default: + return; + } + + m_expression->deleteLater(); + m_expression = nullptr; +} diff --git a/src/backends/octave/octavecompletionobject.h b/src/backends/octave/octavecompletionobject.h new file mode 100644 index 0000000..5b82736 --- /dev/null +++ b/src/backends/octave/octavecompletionobject.h @@ -0,0 +1,32 @@ +/* + SPDX-FileCopyrightText: 2010 Miha Čančula + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef OCTAVECOMPLETIONOBJECT_H +#define OCTAVECOMPLETIONOBJECT_H + +#include "completionobject.h" +#include "expression.h" + +class OctaveCompletionObject : public Cantor::CompletionObject +{ + Q_OBJECT +public: + OctaveCompletionObject(const QString& command, int index, Cantor::Session* parent); + ~OctaveCompletionObject() override; + +protected: + void fetchCompletions() override; + void fetchIdentifierType() override; +private Q_SLOTS: + void extractCompletions(Cantor::Expression::Status status); + void extractIdentifierType(Cantor::Expression::Status status); + + private: + Cantor::Expression* m_expression; + +}; + +#endif // OCTAVECOMPLETIONOBJECT_H diff --git a/src/backends/octave/octaveexpression.cpp b/src/backends/octave/octaveexpression.cpp new file mode 100644 index 0000000..0eaa613 --- /dev/null +++ b/src/backends/octave/octaveexpression.cpp @@ -0,0 +1,198 @@ +/* + SPDX-FileCopyrightText: 2010 Miha Čančula + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "octaveexpression.h" +#include "octavesession.h" +#include "defaultvariablemodel.h" + +#include "textresult.h" +#include "imageresult.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "settings.h" + +static const QString printCommandTemplate = QString::fromLatin1("cantor_print('%1', '%2');"); +const QStringList OctaveExpression::plotExtensions({ + QLatin1String("png"), + QLatin1String("svg"), + QLatin1String("jpeg") +}); + +OctaveExpression::OctaveExpression(Cantor::Session* session, bool internal): Expression(session, internal) +{ +} + +OctaveExpression::~OctaveExpression() +{ +} + +void OctaveExpression::interrupt() +{ + qDebug() << "interrupt"; + + setStatus(Interrupted); +} + +void OctaveExpression::evaluate() +{ + m_plotFilename.clear(); + + m_finished = false; + m_plotPending = false; + + session()->enqueueExpression(this); +} + +QString OctaveExpression::internalCommand() +{ + QString cmd = command(); + + OctaveSession* octaveSession = static_cast(session()); + if (octaveSession->isIntegratedPlotsEnabled() && !session()->enabledGraphicPackages().isEmpty() && !isInternal()) + { + QStringList cmdWords = cmd.split(QRegularExpression(QStringLiteral("\\b")), QString::SkipEmptyParts); + if (!cmdWords.contains(QLatin1String("help")) && !cmdWords.contains(QLatin1String("completion_matches"))) + { + Q_ASSERT(session()->enabledGraphicPackages().size() == 1); + const Cantor::GraphicPackage& package = session()->enabledGraphicPackages().first(); + Q_ASSERT(package.id() == QLatin1String("octave_universal")); + for (const QString& plotCmd : package.plotCommandPrecentsKeywords()) + if (cmdWords.contains(plotCmd)) + { + if (package.isHavePlotCommand()) + { + m_plotFilename = octaveSession->plotFilePrefixPath() + QString::number(id()) + QLatin1String(".") + plotExtensions[OctaveSettings::inlinePlotFormat()]; + + if (!cmd.endsWith(QLatin1Char(';')) && !cmd.endsWith(QLatin1Char(','))) + cmd += QLatin1Char(','); + cmd.append(package.savePlotCommand(octaveSession->plotFilePrefixPath(), id(), plotExtensions[OctaveSettings::inlinePlotFormat()])); + + QFileSystemWatcher* watcher = fileWatcher(); + if (!watcher->files().isEmpty()) + watcher->removePaths(watcher->files()); + + // Add path works only with existed paths, so create the file + QFile file(m_plotFilename); + if (file.open(QFile::WriteOnly)) + { + file.close(); + watcher->addPath(m_plotFilename); + m_plotPending = true; + connect(watcher, &QFileSystemWatcher::fileChanged, this, &OctaveExpression::imageChanged, Qt::UniqueConnection); + } + } + break; + } + } + } + + // We need remove all comments here, because below we merge all strings to one long string + // Otherwise, all code after line with comment will be commented out after merging + // So, this small state machine remove all comments + // FIXME better implementation + QString tmp; + // 0 - command mode, 1 - string mode for ', 2 - string mode for ", 3 - comment mode + int status = 0; + for (int i = 0; i < cmd.size(); i++) + { + const char ch = cmd[i].toLatin1(); + if (status == 0 && (ch == '#' || ch == '%')) + status = 3; + else if (status == 0 && ch == '\'') + status = 1; + else if (status == 0 && ch == '"') + status = 2; + else if (status == 1 && ch == '\'') + status = 0; + else if (status == 2 && ch == '"') + status = 0; + else if (status == 3 && ch == '\n') + status = 0; + + if (status != 3) + tmp += cmd[i]; + } + + //Remove "\n" in the beginning of the command, if present + while(tmp[0] == QLatin1Char('\n')) + tmp.remove(0, 1); + + cmd = tmp; + cmd.replace(QLatin1String(";\n"), QLatin1String(";")); + cmd.replace(QLatin1Char('\n'), QLatin1Char(',')); + cmd += QLatin1Char('\n'); + + return cmd; +} + +void OctaveExpression::parseOutput(const QString& output) +{ + qDebug() << "parseOutput: " << output; + + if (!output.trimmed().isEmpty()) + { + // TODO: what about help in comment? printf with '... help ...'? + // This must be corrected. + if (command().contains(QLatin1String("help"))) + { + addResult(new Cantor::HelpResult(output)); + } + else + { + addResult(new Cantor::TextResult(output)); + } + } + + m_finished = true; + if (!m_plotPending) + setStatus(Done); +} + +void OctaveExpression::parseError(const QString& error) +{ + if (error.startsWith(QLatin1String("warning: "))) + { + // It's warning, so add as result + addResult(new Cantor::TextResult(error)); + } + else + { + setErrorMessage(error); + setStatus(Error); + } +} + +void OctaveExpression::imageChanged() +{ + if(QFile(m_plotFilename).size() <= 0) + return; + + const QUrl& url = QUrl::fromLocalFile(m_plotFilename); + auto* newResult = new Cantor::ImageResult(url); + + bool found = false; + for (int i = 0; i < results().size(); i++) + if (results()[i]->type() == newResult->type()) + { + replaceResult(i, newResult); + found = true; + } + + if (!found) + addResult(newResult); + + m_plotPending = false; + + if (m_finished && status() == Expression::Computing) + setStatus(Done); +} diff --git a/src/backends/octave/octaveexpression.h b/src/backends/octave/octaveexpression.h new file mode 100644 index 0000000..8864afb --- /dev/null +++ b/src/backends/octave/octaveexpression.h @@ -0,0 +1,43 @@ +/* + SPDX-FileCopyrightText: 2010 Miha Čančula + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef OCTAVEEXPRESSION_H +#define OCTAVEEXPRESSION_H + +#include + +#include +#include + +class QTemporaryFile; + +class OctaveExpression : public Cantor::Expression +{ + Q_OBJECT + +public: + explicit OctaveExpression(Cantor::Session*, bool internal = false); + ~OctaveExpression(); + + void interrupt() override; + void evaluate() override; + QString internalCommand() override; + + void parseOutput(const QString&) override; + void parseError(const QString&) override; + void imageChanged(); + +public: + const static QStringList plotExtensions; + +private: + QString m_resultString; + bool m_finished = false; + bool m_plotPending = false; + QString m_plotFilename; +}; + +#endif // OCTAVEEXPRESSION_H diff --git a/src/backends/octave/octaveextensions.cpp b/src/backends/octave/octaveextensions.cpp new file mode 100644 index 0000000..9f959c3 --- /dev/null +++ b/src/backends/octave/octaveextensions.cpp @@ -0,0 +1,201 @@ +/* + SPDX-FileCopyrightText: 2010 Miha Čančula + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "octaveextensions.h" +#include +#include + +#define OCTAVE_EXT_CDTOR(name) Octave##name##Extension::Octave##name##Extension(QObject* parent) : name##Extension(parent) {} \ + Octave##name##Extension::~Octave##name##Extension() {} + + +const QList octaveMatrixOperators = QList() << QLatin1Char('*') << QLatin1Char('/') << QLatin1Char('^'); +const QString octavePrintFileCommand = QLatin1String("print('-depsc',strcat(tempname(tempdir,'c-ob-'),'.eps')); "); + +OCTAVE_EXT_CDTOR(History) + +QString OctaveHistoryExtension::lastResult() +{ + return QLatin1String("ans"); +} + +OCTAVE_EXT_CDTOR(Script) + +QString OctaveScriptExtension::runExternalScript(const QString& path) +{ + return QString::fromLatin1("source \"%1\"").arg(path); +} + +QString OctaveScriptExtension::scriptFileFilter() +{ + return i18n("Octave script file (*.m)"); +} + +QString OctaveScriptExtension::highlightingMode() +{ + return QLatin1String("octave"); +} + +QString OctaveScriptExtension::commandSeparator() +{ + return QLatin1String(";"); +} + +OCTAVE_EXT_CDTOR(Plot) + +QString OctavePlotExtension::plotFunction2d(const QString& function, const QString& variable, const QString& left, const QString& right) +{ + return QString::fromLatin1("cantor_plot2d('%1','%2',%3,%4);") + .arg(function) + .arg(variable) + .arg(left) + .arg(right); +} + +QString OctavePlotExtension::plotFunction3d(const QString& function, const VariableParameter& var1, const VariableParameter& var2) +{ + return QString::fromLatin1("cantor_plot3d('%1','%2',%3,%4,'%5',%6,%7);") + .arg(function) + .arg(var1.first) + .arg(var1.second.first) + .arg(var1.second.second) + .arg(var2.first) + .arg(var2.second.first) + .arg(var2.second.second); +} + + +OCTAVE_EXT_CDTOR(LinearAlgebra) + +QString OctaveLinearAlgebraExtension::charPoly(const QString& matrix) +{ + return QString::fromLatin1("poly(%1)").arg(matrix); +} + +QString OctaveLinearAlgebraExtension::createMatrix(const Cantor::LinearAlgebraExtension::Matrix& matrix) +{ + QString command; + command += QLatin1Char('['); + foreach (const QStringList row, matrix) + { + foreach (const QString entry, row) + { + command += entry; + command += QLatin1String(", "); + } + command.chop(2); // Removes the last comma + command += QLatin1String("; "); + } + command.chop(2); // Removes the last semicolon + command += QLatin1Char(']'); + return command; +} + +QString OctaveLinearAlgebraExtension::createVector(const QStringList& entries, Cantor::LinearAlgebraExtension::VectorType type) +{ + QString separator; + if (type == ColumnVector) + { + separator = QLatin1String("; "); + } + else + { + separator = QLatin1String(", "); + } + QString command; + command += QLatin1Char('['); + foreach (const QString& entry, entries) + { + command += entry; + command += separator; + } + command.chop(1); + command += QLatin1Char(']'); + return command; +} + +QString OctaveLinearAlgebraExtension::eigenValues(const QString& matrix) +{ + return QString::fromLatin1("eig(%1)").arg(matrix); +} + +QString OctaveLinearAlgebraExtension::eigenVectors(const QString& matrix) +{ + return QString::fromLatin1("cantor_eigenvectors(%1)").arg(matrix); +} + +QString OctaveLinearAlgebraExtension::identityMatrix(int size) +{ + return QString::fromLatin1("eye(%1)").arg(size); +} + +QString OctaveLinearAlgebraExtension::invertMatrix(const QString& matrix) +{ + return QString::fromLatin1("inv(%1)").arg(matrix); +} + +QString OctaveLinearAlgebraExtension::nullMatrix(int rows, int columns) +{ + return QString::fromLatin1("zeros(%1,%2)").arg(rows).arg(columns); +} + +QString OctaveLinearAlgebraExtension::nullVector(int size, Cantor::LinearAlgebraExtension::VectorType type) +{ + QString command = QLatin1String("zeros(%1,%2)"); + switch (type) + { + case ColumnVector: + return command.arg(size).arg(1); + case RowVector: + return command.arg(1).arg(size); + default: + return Cantor::LinearAlgebraExtension::nullVector(size, type); + } +} + +QString OctaveLinearAlgebraExtension::rank(const QString& matrix) +{ + return QString::fromLatin1("rank(%1)").arg(matrix); +} + +OCTAVE_EXT_CDTOR(VariableManagement) + +QString OctaveVariableManagementExtension::addVariable(const QString& name, const QString& value) +{ + return setValue(name,value); +} + +QString OctaveVariableManagementExtension::setValue(const QString& name, const QString& value) +{ + return QString::fromLatin1("%1 = %2").arg(name).arg(value); +} + +QString OctaveVariableManagementExtension::removeVariable(const QString& name) +{ + return QString::fromLatin1("clear %1;").arg(name); +} + +QString OctaveVariableManagementExtension::clearVariables() +{ + return QLatin1String("clear;"); +} + +QString OctaveVariableManagementExtension::saveVariables(const QString& fileName) +{ + return QString::fromLatin1("save %1;").arg(fileName); +} + +QString OctaveVariableManagementExtension::loadVariables(const QString& fileName) +{ + return QString::fromLatin1("load %1;").arg(fileName); +} + +OCTAVE_EXT_CDTOR(Packaging) + +QString OctavePackagingExtension::importPackage(const QString& package) +{ + return QString::fromLatin1("pkg load %1").arg(package); +} diff --git a/src/backends/octave/octaveextensions.h b/src/backends/octave/octaveextensions.h new file mode 100644 index 0000000..078a0cc --- /dev/null +++ b/src/backends/octave/octaveextensions.h @@ -0,0 +1,75 @@ +/* + SPDX-FileCopyrightText: 2010 Miha Čančula + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef OCTAVEEXTENSIONS_H +#define OCTAVEEXTENSIONS_H + +#include + +#define OCTAVE_EXT_CDTOR_DECL(name) Octave##name##Extension(QObject* parent); \ + ~Octave##name##Extension(); + +class OctaveHistoryExtension : public Cantor::HistoryExtension +{ + public: + OCTAVE_EXT_CDTOR_DECL(History) + QString lastResult() override; +}; + +class OctaveScriptExtension : public Cantor::ScriptExtension +{ + public: + OCTAVE_EXT_CDTOR_DECL(Script) + QString scriptFileFilter() override; + QString highlightingMode() override; + QString runExternalScript(const QString& path) override; + QString commandSeparator() override; +}; + +class OctavePlotExtension : public Cantor::PlotExtension +{ + public: + OCTAVE_EXT_CDTOR_DECL(Plot) + QString plotFunction2d(const QString& function, const QString& variable, const QString& left, const QString& right) override; + QString plotFunction3d(const QString& function, const VariableParameter& var1, const VariableParameter& var2) override; +}; + +class OctaveLinearAlgebraExtension : public Cantor::LinearAlgebraExtension +{ + public: + OCTAVE_EXT_CDTOR_DECL(LinearAlgebra) + QString createVector(const QStringList& entries, VectorType type) override; + QString nullVector(int size, VectorType type) override; + QString createMatrix(const Cantor::LinearAlgebraExtension::Matrix& matrix) override; + QString identityMatrix(int size) override; + QString nullMatrix(int rows, int columns) override; + QString rank(const QString& matrix) override; + QString invertMatrix(const QString& matrix) override; + QString charPoly(const QString& matrix) override; + QString eigenVectors(const QString& matrix) override; + QString eigenValues(const QString& matrix) override; +}; + +class OctaveVariableManagementExtension : public Cantor::VariableManagementExtension +{ + public: + OCTAVE_EXT_CDTOR_DECL(VariableManagement) + QString addVariable(const QString& name, const QString& value) override; + QString setValue(const QString& name, const QString& value) override; + QString removeVariable(const QString& name) override; + QString saveVariables(const QString& fileName) override; + QString loadVariables(const QString& fileName) override; + QString clearVariables() override; +}; + +class OctavePackagingExtension : public Cantor::PackagingExtension +{ + public: + OCTAVE_EXT_CDTOR_DECL(Packaging) + QString importPackage(const QString& package) override; +}; + +#endif // OCTAVEEXTENSIONS_H diff --git a/src/backends/octave/octavehighlighter.cpp b/src/backends/octave/octavehighlighter.cpp new file mode 100644 index 0000000..493ff01 --- /dev/null +++ b/src/backends/octave/octavehighlighter.cpp @@ -0,0 +1,33 @@ +/* + SPDX-FileCopyrightText: 2010 Miha Čančula + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "octavehighlighter.h" +#include "octavekeywords.h" +#include + +using namespace Cantor; + +OctaveHighlighter::OctaveHighlighter(QObject* parent, Session* session): DefaultHighlighter(parent, session) +{ + addKeywords(OctaveKeywords::instance()->keywords()); + addFunctions(OctaveKeywords::instance()->functions()); + + QStringList operators; + operators + << QLatin1String("+") << QLatin1String("-") << QLatin1String("*") << QLatin1String("/") + << QLatin1String(".+") << QLatin1String(".-") << QLatin1String(".*") << QLatin1String("./") + << QLatin1String("=") << QLatin1String("or") << QLatin1String("and") << QLatin1String("xor") + << QLatin1String("not") << QLatin1String("||") << QLatin1String("&&") << QLatin1String("=="); + addRules(operators, operatorFormat()); + + addRule(QRegularExpression(QStringLiteral("\"[^\"]*\"")), stringFormat()); + addRule(QRegularExpression(QStringLiteral("'[^']*'")), stringFormat()); + + addRule(QRegularExpression(QStringLiteral("#[^\n]*")), commentFormat()); + addRule(QRegularExpression(QStringLiteral("%[^\n]*")), commentFormat()); + + rehighlight(); +} diff --git a/src/backends/octave/octavehighlighter.h b/src/backends/octave/octavehighlighter.h new file mode 100644 index 0000000..5a673f9 --- /dev/null +++ b/src/backends/octave/octavehighlighter.h @@ -0,0 +1,27 @@ +/* + SPDX-FileCopyrightText: 2010 Miha Čančula + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef OCTAVEHIGHLIGHTER_H +#define OCTAVEHIGHLIGHTER_H + +#include "defaulthighlighter.h" + +namespace Cantor +{ + class Expression; + class Session; +} + +class OctaveHighlighter : public Cantor::DefaultHighlighter +{ + Q_OBJECT + + public: + OctaveHighlighter(QObject* parent, Cantor::Session* session); + ~OctaveHighlighter() override = default; +}; + +#endif // OCTAVEHIGHLIGHTER_H diff --git a/src/backends/octave/octavekeywords.cpp b/src/backends/octave/octavekeywords.cpp new file mode 100644 index 0000000..8f4289b --- /dev/null +++ b/src/backends/octave/octavekeywords.cpp @@ -0,0 +1,74 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Sirgienko Nikita +*/ + +#include "octavekeywords.h" + +#include +#include + +OctaveKeywords::OctaveKeywords() +{ + KSyntaxHighlighting::Repository m_repository; + KSyntaxHighlighting::Definition definition = m_repository.definitionForName(QLatin1String("Octave")); + + //TODO: KSyntaxHighlighting provides "keywords", "functions", "forge", "builtin" and "commands". + //we use "keywords" and "functions" at the moment. decide what to do with "forge", "builtin" and "commands". + m_keywords = definition.keywordList(QLatin1String("keywords")); + + //KSyntaxHighlighting store this keywords separatly of keywords list, so we add them manually + m_keywords + << QLatin1String("function") << QLatin1String("endfunction") + << QLatin1String("for") << QLatin1String("endfor") + << QLatin1String("while") << QLatin1String("endwhile") + << QLatin1String("if") << QLatin1String("endif") << QLatin1String("else") + << QLatin1String("elseif") << QLatin1String("endswitch") + << QLatin1String("switch") << QLatin1String("case") + << QLatin1String("end") << QLatin1String("otherwise"); + + m_functions = definition.keywordList(QLatin1String("functions")); + // https://phabricator.kde.org/D18734 + // OUTOFDATE: Remove after 5.56 KSyntaxHighlighting version + m_functions + << QLatin1String("plot") << QLatin1String("semilogx") << QLatin1String("semilogy") + << QLatin1String("loglog") << QLatin1String("polar") << QLatin1String("contour") + << QLatin1String("stairs") << QLatin1String("errorbar") << QLatin1String("sombrero") + << QLatin1String("hist") << QLatin1String("fplot") << QLatin1String("imshow") + << QLatin1String("stem") << QLatin1String("stem3") << QLatin1String("scatter") + << QLatin1String("pie") << QLatin1String("quiver") << QLatin1String("compass") + << QLatin1String("pareto") << QLatin1String("rose") << QLatin1String("feather") + << QLatin1String("pcolor") << QLatin1String("area") << QLatin1String("fill") + << QLatin1String("plotmatrix") << QLatin1String("bar") << QLatin1String("comet") + /* 3d-plots */ + << QLatin1String("plot3") << QLatin1String("isocaps") << QLatin1String("isonormals") + << QLatin1String("mesh") << QLatin1String("meshc") << QLatin1String("meshz") + << QLatin1String("surf") << QLatin1String("surfc") << QLatin1String("surfl") + << QLatin1String("surfnorm") << QLatin1String("isosurface") + /* 3d-plots defined by a function */ + << QLatin1String("ezplot3") << QLatin1String("ezmesh") << QLatin1String("ezmeshc") + << QLatin1String("ezsurf") << QLatin1String("ezsurfc"); +} + +OctaveKeywords* OctaveKeywords::instance() +{ + static OctaveKeywords* inst = nullptr; + + if(inst == nullptr){ + inst = new OctaveKeywords(); + std::sort(inst->m_functions.begin(), inst->m_functions.end()); + std::sort(inst->m_keywords.begin(), inst->m_keywords.end()); + } + + return inst; +} + +const QStringList& OctaveKeywords::functions() const +{ + return m_functions; +} + +const QStringList& OctaveKeywords::keywords() const +{ + return m_keywords; +} diff --git a/src/backends/octave/octavekeywords.h b/src/backends/octave/octavekeywords.h new file mode 100644 index 0000000..1702d88 --- /dev/null +++ b/src/backends/octave/octavekeywords.h @@ -0,0 +1,25 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Sirgienko Nikita +*/ + +#ifndef _OCTAVEKEYWORDS_H +#define _OCTAVEKEYWORDS_H + +#include + +class OctaveKeywords +{ + public: + static OctaveKeywords* instance(); + + const QStringList& functions() const; + const QStringList& keywords() const; + + private: + OctaveKeywords(); + ~OctaveKeywords() = default; + QStringList m_functions; + QStringList m_keywords; +}; +#endif /* _OCTAVEKEYWORDS_H */ diff --git a/src/backends/octave/octavesession.cpp b/src/backends/octave/octavesession.cpp new file mode 100644 index 0000000..f89342b --- /dev/null +++ b/src/backends/octave/octavesession.cpp @@ -0,0 +1,442 @@ +/* + SPDX-FileCopyrightText: 2010 Miha Čančula + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include +#include "octavesession.h" +#include "octaveexpression.h" +#include "octavecompletionobject.h" +#include "octavesyntaxhelpobject.h" +#include "octavehighlighter.h" +#include "result.h" +#include "textresult.h" +#include + +#include "settings.h" + +#include +#include +#include +#include + +#include +#include +#include +#include + +#ifndef Q_OS_WIN +#include +#endif + +#include "octavevariablemodel.h" + +const QRegularExpression OctaveSession::PROMPT_UNCHANGEABLE_COMMAND = QRegularExpression(QStringLiteral("^(?:,|;)+$")); + +OctaveSession::OctaveSession(Cantor::Backend* backend) : Session(backend), +m_prompt(QStringLiteral("CANTOR_OCTAVE_BACKEND_PROMPT:([0-9]+)> ")), +m_subprompt(QStringLiteral("CANTOR_OCTAVE_BACKEND_SUBPROMPT:([0-9]+)> ")) +{ + setVariableModel(new OctaveVariableModel(this)); +} + +OctaveSession::~OctaveSession() +{ + if (m_process) + { + m_process->kill(); + m_process->deleteLater(); + m_process = nullptr; + } +} + +void OctaveSession::login() +{ + qDebug() << "login"; + if (m_process) + return; + + emit loginStarted(); + + m_process = new KProcess(this); + QStringList args; + args << QLatin1String("--silent"); + args << QLatin1String("--interactive"); + args << QLatin1String("--persist"); + + // Setting prompt and subprompt + args << QLatin1String("--eval"); + args << QLatin1String("PS1('CANTOR_OCTAVE_BACKEND_PROMPT:\\#> ');"); + args << QLatin1String("--eval"); + args << QLatin1String("PS2('CANTOR_OCTAVE_BACKEND_SUBPROMPT:\\#> ');"); + + // Add the cantor script directory to octave script search path + const QStringList& scriptDirs = locateAllCantorFiles(QLatin1String("octavebackend"), QStandardPaths::LocateDirectory); + if (scriptDirs.isEmpty()) + qCritical() << "Octave script directory not found, needed for integrated plots"; + else + { + for (const QString& dir : scriptDirs) + args << QLatin1String("--eval") << QString::fromLatin1("addpath \"%1\";").arg(dir); + } + + // Do not show extra text in help commands + args << QLatin1String("--eval"); + args << QLatin1String("suppress_verbose_help_message(1);"); + + m_process->setProgram ( OctaveSettings::path().toLocalFile(), args ); + qDebug() << "starting " << m_process->program(); + m_process->setOutputChannelMode ( KProcess::SeparateChannels ); + m_process->start(); + m_process->waitForStarted(); + + connect ( m_process, SIGNAL (readyReadStandardOutput()), SLOT (readOutput()) ); + connect ( m_process, SIGNAL (readyReadStandardError()), SLOT (readError()) ); + connect ( m_process, SIGNAL (error(QProcess::ProcessError)), SLOT (processError()) ); + + std::random_device rd; + std::mt19937 mt(rd()); + std::uniform_int_distribution rand_dist(0, 999999999); + m_plotFilePrefixPath = + QDir::tempPath() + + QLatin1String("/cantor_octave_") + + QString::number(m_process->processId()) + + QLatin1String("_") + + QString::number(rand_dist(mt)) + + QLatin1String("_"); + + if(!OctaveSettings::self()->autorunScripts().isEmpty()){ + QString autorunScripts = OctaveSettings::self()->autorunScripts().join(QLatin1String("\n")); + + evaluateExpression(autorunScripts, OctaveExpression::DeleteOnFinish, true); + updateVariables(); + } + + if (!m_worksheetPath.isEmpty()) + { + static const QString mfilenameTemplate = QLatin1String( + "function retval = mfilename(arg_mem = \"\")\n" + "type_info=typeinfo(arg_mem);\n" + "if (strcmp(type_info, \"string\"))\n" + "if (strcmp(arg_mem, \"fullpath\"))\n" + "retval = \"%1\";\n" + "elseif (strcmp(arg_mem, \"fullpathext\"))\n" + "retval = \"%2\";\n" + "else\n" + "retval = \"script\";\n" + "endif\n" + "else\n" + "error(\"wrong type argument '%s'\", type_info)\n" + "endif\n" + "endfunction" + ); + const QString& worksheetDirPath = QFileInfo(m_worksheetPath).absoluteDir().absolutePath(); + const QString& worksheetPathWithoutExtension = m_worksheetPath.mid(0, m_worksheetPath.lastIndexOf(QLatin1Char('.'))); + + evaluateExpression(QLatin1String("cd ")+worksheetDirPath, OctaveExpression::DeleteOnFinish, true); + evaluateExpression(mfilenameTemplate.arg(worksheetPathWithoutExtension, m_worksheetPath), OctaveExpression::DeleteOnFinish, true); + } + + changeStatus(Cantor::Session::Done); + emit loginDone(); + qDebug()<<"login done"; +} + +void OctaveSession::setWorksheetPath(const QString& path) +{ + m_worksheetPath = path; +} + +void OctaveSession::logout() +{ + qDebug()<<"logout"; + + if(!m_process) + return; + + disconnect(m_process, nullptr, this, nullptr); + + if(status() == Cantor::Session::Running) + interrupt(); + + m_process->write("exit\n"); + qDebug()<<"send exit command to octave"; + + if(!m_process->waitForFinished(1000)) + { + m_process->kill(); + qDebug()<<"octave still running, process kill enforced"; + } + m_process->deleteLater(); + m_process = nullptr; + + if (!m_plotFilePrefixPath.isEmpty()) + { + int i = 0; + const QString& extension = OctaveExpression::plotExtensions[OctaveSettings::inlinePlotFormat()]; + QString filename = m_plotFilePrefixPath + QString::number(i) + QLatin1String(".") + extension; + while (QFile::exists(filename)) + { + QFile::remove(filename); + i++; + filename = m_plotFilePrefixPath + QString::number(i) + QLatin1String(".") + extension; + } + } + + expressionQueue().clear(); + + m_output.clear(); + m_previousPromptNumber = 1; + m_isIntegratedPlotsEnabled = false; + m_isIntegratedPlotsSettingsEnabled = false; + + Session::logout(); + + qDebug()<<"logout done"; +} + +void OctaveSession::interrupt() +{ + qDebug() << expressionQueue().size(); + if(!expressionQueue().isEmpty()) + { + qDebug()<<"interrupting " << expressionQueue().first()->command(); + if(m_process && m_process->state() != QProcess::NotRunning) + { +#ifndef Q_OS_WIN + const int pid = m_process->processId(); + kill(pid, SIGINT); +#else + ; //TODO: interrupt the process on windows +#endif + } + + for (auto* expression : expressionQueue()) + expression->setStatus(Cantor::Expression::Interrupted); + expressionQueue().clear(); + + // Cleanup inner state and call octave prompt printing + // If we move this code for interruption to Session, we need add function for + // cleaning before setting Done status + m_output.clear(); + m_process->write("\n"); + + qDebug()<<"done interrupting"; + } + + changeStatus(Cantor::Session::Done); +} + +void OctaveSession::processError() +{ + qDebug() << "processError"; + emit error(m_process->errorString()); +} + +Cantor::Expression* OctaveSession::evaluateExpression(const QString& cmd, Cantor::Expression::FinishingBehavior behavior, bool internal) +{ + qDebug()<<"################################## EXPRESSION START ###############################################"; + qDebug() << "evaluating: " << cmd; + auto* expression = new OctaveExpression(this, internal); + expression->setCommand(cmd); + expression->setFinishingBehavior(behavior); + expression->evaluate(); + + return expression; +} + +void OctaveSession::runFirstExpression() +{ + auto* expression = expressionQueue().first(); + connect(expression, &Cantor::Expression::statusChanged, this, &Session::currentExpressionStatusChanged); + + const auto& command = expression->internalCommand(); + expression->setStatus(Cantor::Expression::Computing); + if (isDoNothingCommand(command)) + expression->setStatus(Cantor::Expression::Done); + else + m_process->write(command.toLocal8Bit()); +} + +void OctaveSession::readError() +{ + qDebug() << "readError"; + QString error = QString::fromLocal8Bit(m_process->readAllStandardError()); + if (!expressionQueue().isEmpty() && !error.isEmpty()) + { + auto* const exp = expressionQueue().first(); + if (m_syntaxError) + { + m_syntaxError = false; + exp->parseError(i18n("Syntax Error")); + } + else + exp->parseError(error); + + m_output.clear(); + } +} + +void OctaveSession::readOutput() +{ + while (m_process->bytesAvailable() > 0) + { + QString line = QString::fromLocal8Bit(m_process->readLine()); + qDebug()<<"start parsing " << " " << line; + QRegularExpressionMatch match = m_prompt.match(line); + if (match.hasMatch()) + { + const int promptNumber = match.captured(1).toInt(); + // Add all text before prompt, if exists + m_output += QStringRef(&line, 0, match.capturedStart(0)).toString(); + if (!expressionQueue().isEmpty()) + { + const QString& command = expressionQueue().first()->command(); + if (m_previousPromptNumber + 1 == promptNumber || isSpecialOctaveCommand(command)) + { + if (!expressionQueue().isEmpty()) + { + readError(); + expressionQueue().first()->parseOutput(m_output); + } + } + else + { + // Error command don't increase octave prompt number (usually, but not always) + readError(); + } + } + m_previousPromptNumber = promptNumber; + m_output.clear(); + } + else if ((match = m_subprompt.match(line)).hasMatch() + && match.captured(1).toInt() == m_previousPromptNumber) + { + // User don't write finished octave statement (for example, write 'a = [1,2, ' only), so + // octave print subprompt and waits input finish. + m_syntaxError = true; + qDebug() << "subprompt catch"; + m_process->write(")]'\"\n"); // force exit from subprompt + m_output.clear(); + } + else + m_output += line; + } +} + +Cantor::CompletionObject* OctaveSession::completionFor(const QString& cmd, int index) +{ + return new OctaveCompletionObject(cmd, index, this); +} + +Cantor::SyntaxHelpObject* OctaveSession::syntaxHelpFor(const QString& cmd) +{ + return new OctaveSyntaxHelpObject(cmd, this); +} + +QSyntaxHighlighter* OctaveSession::syntaxHighlighter(QObject* parent) +{ + return new OctaveHighlighter(parent, this); +} + +void OctaveSession::runSpecificCommands() +{ + m_process->write("figure(1,'visible','off')"); +} + +bool OctaveSession::isDoNothingCommand(const QString& command) +{ + return PROMPT_UNCHANGEABLE_COMMAND.match(command).hasMatch() + || command.isEmpty() || command == QLatin1String("\n"); +} + +bool OctaveSession::isSpecialOctaveCommand(const QString& command) +{ + return command.contains(QLatin1String("completion_matches")); +} + +bool OctaveSession::isIntegratedPlotsEnabled() const +{ + return m_isIntegratedPlotsEnabled; +} + +QString OctaveSession::plotFilePrefixPath() const +{ + return m_plotFilePrefixPath; +} + +void OctaveSession::updateGraphicPackagesFromSettings() +{ + if (m_isIntegratedPlotsSettingsEnabled == OctaveSettings::integratePlots()) + return; + + if (m_isIntegratedPlotsEnabled && OctaveSettings::integratePlots() == false) + { + updateEnabledGraphicPackages(QList()); + m_isIntegratedPlotsEnabled = false; + m_isIntegratedPlotsSettingsEnabled = OctaveSettings::integratePlots(); + return; + } + else if (!m_isIntegratedPlotsEnabled && OctaveSettings::integratePlots() == true) + { + bool isIntegratedPlots = OctaveSettings::integratePlots(); + if (isIntegratedPlots) + { + QString filename = QDir::tempPath() + QLatin1String("/cantor_octave_plot_integration_test.txt"); + QFile::remove(filename); // Remove previous file, if precents + int test_number = rand() % 1000; + + QStringList args; + args << QLatin1String("--no-init-file"); + args << QLatin1String("--no-gui"); + args << QLatin1String("--eval"); + args << QString::fromLatin1("file_id = fopen('%1', 'w'); fdisp(file_id, %2); fclose(file_id);").arg(filename).arg(test_number); + + QString errorMsg; + isIntegratedPlots = Cantor::Backend::testProgramWritable( + OctaveSettings::path().toLocalFile(), + args, + filename, + QString::number(test_number), + &errorMsg + ); + + // If we in this branch, then isIntegratedPlots was true, but if it false now, then it means, that the writable test is failed + if (isIntegratedPlots == false) + { + KMessageBox::error(nullptr, + i18n("Plot integration test failed.")+ + QLatin1String("\n\n")+ + errorMsg+ + QLatin1String("\n\n")+ + i18n("The integration of plots will be disabled."), + i18n("Cantor") + ); + } + } + + m_isIntegratedPlotsEnabled = isIntegratedPlots; + m_isIntegratedPlotsSettingsEnabled = OctaveSettings::integratePlots(); + + if (m_isIntegratedPlotsEnabled) + updateEnabledGraphicPackages(backend()->availableGraphicPackages()); + else + updateEnabledGraphicPackages(QList()); + } +} + +QString OctaveSession::graphicPackageErrorMessage(QString packageId) const +{ + QString text; + + if (packageId == QLatin1String("gr")) { + return i18n( + "The plot integration doesn't work because Cantor found, that Octave can't create plots, " + "because there are no graphical backends for it: this conclusion was made on the basis of empty " + "output from available_graphics_toolkits() function. Looks like you should install some " + "additional OS packages, like gnuplot, fltk or qt for possibility to create plots." + ); + } + return text; +} diff --git a/src/backends/octave/octavesession.h b/src/backends/octave/octavesession.h new file mode 100644 index 0000000..5c6891c --- /dev/null +++ b/src/backends/octave/octavesession.h @@ -0,0 +1,74 @@ +/* + SPDX-FileCopyrightText: 2010 Miha Čančula + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef OCTAVESESSION_H +#define OCTAVESESSION_H + +#include +#include +#include +#include +#include + +namespace Cantor { +class DefaultVariableModel; +} + +class KDirWatch; +class OctaveExpression; +class KProcess; + + +class OctaveSession : public Cantor::Session +{ + Q_OBJECT + public: + explicit OctaveSession(Cantor::Backend*); + ~OctaveSession() override; + void interrupt() override; + Cantor::Expression* evaluateExpression(const QString& cmd, Cantor::Expression::FinishingBehavior behavior = Cantor::Expression::FinishingBehavior::DoNotDelete, bool internal = false) override; + void logout() override; + void login() override; + Cantor::CompletionObject* completionFor(const QString& cmd, int index=-1) override; + Cantor::SyntaxHelpObject* syntaxHelpFor(const QString& cmd) override; + QSyntaxHighlighter* syntaxHighlighter(QObject* parent) override; + void runFirstExpression() override; + void setWorksheetPath(const QString&) override; + + bool isIntegratedPlotsEnabled() const; + QString plotFilePrefixPath() const; + + private: + const static QRegularExpression PROMPT_UNCHANGEABLE_COMMAND; + + private: + KProcess* m_process{nullptr}; + QTextStream m_stream; + QRegularExpression m_prompt; + QRegularExpression m_subprompt; + int m_previousPromptNumber{1}; + bool m_syntaxError{false}; + QString m_output; + QString m_plotFilePrefixPath; + QString m_worksheetPath; + bool m_isIntegratedPlotsEnabled{false}; // Better move it in worksheet, like isCompletion, etc. + bool m_isIntegratedPlotsSettingsEnabled{false}; + + private: + void readFromOctave(QByteArray); + bool isDoNothingCommand(const QString&); + bool isSpecialOctaveCommand(const QString&); + void updateGraphicPackagesFromSettings(); + QString graphicPackageErrorMessage(QString packageId) const override; + + private Q_SLOTS: + void readOutput(); + void readError(); + void processError(); + void runSpecificCommands(); +}; + +#endif // OCTAVESESSION_H diff --git a/src/backends/octave/octavesettingswidget.cpp b/src/backends/octave/octavesettingswidget.cpp new file mode 100644 index 0000000..a63a6fa --- /dev/null +++ b/src/backends/octave/octavesettingswidget.cpp @@ -0,0 +1,33 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020-2022 Alexander Semke + */ + +#include "octavesettingswidget.h" + +OctaveSettingsWidget::OctaveSettingsWidget(QWidget* parent, const QString& id) : BackendSettingsWidget(parent, id) +{ + setupUi(this); + + m_tabWidget = tabWidget; + m_tabDocumentation = tabDocumentation; + m_urlRequester = kcfg_Path; + + connect(tabWidget, &QTabWidget::currentChanged, this, &BackendSettingsWidget::tabChanged); + connect(kcfg_Path, &KUrlRequester::textChanged, this, &BackendSettingsWidget::fileNameChanged); +} diff --git a/src/backends/octave/octavesettingswidget.h b/src/backends/octave/octavesettingswidget.h new file mode 100644 index 0000000..ef8896a --- /dev/null +++ b/src/backends/octave/octavesettingswidget.h @@ -0,0 +1,35 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020 Alexander Semke + */ + +#ifndef OCTAVESETTINGSWIDGET_H +#define OCTAVESETTINGSWIDGET_H + +#include "ui_settings.h" +#include "../backendsettingswidget.h" + +class OctaveSettingsWidget : public BackendSettingsWidget, public Ui::OctaveSettingsBase +{ + Q_OBJECT + + public: + explicit OctaveSettingsWidget(QWidget* parent = nullptr, const QString& id = QString()); +}; + +#endif /* OCTAVESETTINGSWIDGET_H */ diff --git a/src/backends/octave/octavesyntaxhelpobject.cpp b/src/backends/octave/octavesyntaxhelpobject.cpp new file mode 100644 index 0000000..fd80a74 --- /dev/null +++ b/src/backends/octave/octavesyntaxhelpobject.cpp @@ -0,0 +1,62 @@ +/* + SPDX-FileCopyrightText: 2010 Miha Čančula + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "octavesyntaxhelpobject.h" +#include "session.h" +#include "result.h" + +#include + +OctaveSyntaxHelpObject::OctaveSyntaxHelpObject(const QString& command, Cantor::Session* session): SyntaxHelpObject(command, session), +m_expression(nullptr) +{ + +} + +void OctaveSyntaxHelpObject::fetchInformation() +{ + if (session()->status() != Cantor::Session::Disable) + { + qDebug() << "Fetching syntax help for" << command(); + QString expr = QString::fromLatin1("help('%1')").arg(command()); + m_expression = session()->evaluateExpression(expr, Cantor::Expression::FinishingBehavior::DoNotDelete, true); + connect(m_expression, &Cantor::Expression::statusChanged, this, &OctaveSyntaxHelpObject::fetchingDone); + } + else + emit done(); +} + +void OctaveSyntaxHelpObject::fetchingDone(Cantor::Expression::Status status) +{ + switch(status) + { + case Cantor::Expression::Done: + { + Cantor::Result* result = m_expression->result(); + if (result) + { + QString res = result->toHtml(); + res.remove(QLatin1String("
      ")); + res.remove(0, res.indexOf(QLatin1String("--"))); + setHtml(QLatin1Char(' ') + res.trimmed()); + } + break; + } + + case Cantor::Expression::Interrupted: + case Cantor::Expression::Error: + { + qDebug() << "fetching expression finished with status" << (status == Cantor::Expression::Error? "Error" : "Interrupted"); + break; + } + + default: + return; + } + m_expression->deleteLater(); + m_expression = nullptr; + emit done(); +} diff --git a/src/backends/octave/octavesyntaxhelpobject.h b/src/backends/octave/octavesyntaxhelpobject.h new file mode 100644 index 0000000..cbc6fae --- /dev/null +++ b/src/backends/octave/octavesyntaxhelpobject.h @@ -0,0 +1,30 @@ +/* + SPDX-FileCopyrightText: 2010 Miha Čančula + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef OCTAVESYNTAXHELPOBJECT_H +#define OCTAVESYNTAXHELPOBJECT_H + +#include +#include + +class OctaveSyntaxHelpObject : public Cantor::SyntaxHelpObject +{ + Q_OBJECT + public: + OctaveSyntaxHelpObject(const QString& command, Cantor::Session* session); + ~OctaveSyntaxHelpObject() override = default; + +protected: + void fetchInformation() override; + + private Q_SLOTS: + void fetchingDone(Cantor::Expression::Status status); + + private: + Cantor::Expression* m_expression; +}; + +#endif // OCTAVESYNTAXHELPOBJECT_H diff --git a/src/backends/octave/octavevariablemodel.cpp b/src/backends/octave/octavevariablemodel.cpp new file mode 100644 index 0000000..e1ce05f --- /dev/null +++ b/src/backends/octave/octavevariablemodel.cpp @@ -0,0 +1,106 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Nikita Sirgienko +*/ + +#include "octavevariablemodel.h" +#include "octavesession.h" +#include "textresult.h" + +#include + +#include "settings.h" + +using namespace Cantor; + +OctaveVariableModel::OctaveVariableModel(OctaveSession* session): + DefaultVariableModel(session), + m_expr(nullptr) +{ +} + +void OctaveVariableModel::update() +{ + static const QString code = QString::fromLatin1( + "printf('__cantor_delimiter_line__\\n');" + "__cantor_list__ = who();" + "__cantor_split_var__ = split_long_rows(0);" + "__cantor_parse_values__ = %1;" + "for __cantor_index__ = 1:length(__cantor_list__)" + " __cantor_varname__ = char(__cantor_list__{__cantor_index__});" + " printf([__cantor_varname__ '\\n']);" + " if (__cantor_parse_values__)" + " try" + " eval(['__cantor_string__ = disp(' __cantor_varname__ ');']);" + " printf(__cantor_string__);" + " printf([num2str(eval(['sizeof(' __cantor_varname__ ');'])) '\\n']);" + " catch" + " printf(['' '\\n']);" + " printf(['0' '\\n']);" + " end_try_catch;" + " else" + " printf('');" + " endif;" + " printf('__cantor_delimiter_line__\\n');" + "endfor;" + "split_long_rows(__cantor_split_var__);" + "clear __cantor_list__;" + "clear __cantor_index__;" + "clear __cantor_varname__;" + "clear __cantor_parse_values__;" + "clear __cantor_string__;" + "clear __cantor_split_var__;" + ); + + const QString& cmd = code.arg(OctaveSettings::self()->variableManagement() ? QLatin1String("true") : QLatin1String("false")); + + if (m_expr) + return; + + m_expr = session()->evaluateExpression(cmd, Expression::FinishingBehavior::DoNotDelete, true); + connect(m_expr, &Expression::statusChanged, this, &OctaveVariableModel::parseNewVariables); +} + +void OctaveVariableModel::parseNewVariables(Expression::Status status) +{ + switch(status) + { + case Expression::Status::Done: + { + static const QLatin1String delimiter("__cantor_delimiter_line__"); + + if (m_expr->results().isEmpty()) + { + qWarning() << "Octave code for parsing variables finish with done status, but without results"; + break; + } + + QString text = static_cast(m_expr->result())->plain(); + const QStringList& lines = text.split(delimiter, QString::SkipEmptyParts); + + QList vars; + for (QString line : lines) + { + line = line.trimmed(); + const QString& name = line.section(QLatin1String("\n"), 0, 0); + QString value; + if (OctaveSettings::self()->variableManagement()) + value = line.section(QLatin1String("\n"), 1, 1); + size_t size = line.section(QLatin1String("\n"), 2, 2).toULongLong(); + vars << Variable(name, value, size); + } + + setVariables(vars); + break; + } + case Expression::Status::Error: + qWarning() << "Octave code for parsing variables finish with error message: " << m_expr->errorMessage(); + break; + + default: + return; + } + + m_expr->deleteLater(); + m_expr = nullptr; +} diff --git a/src/backends/octave/octavevariablemodel.h b/src/backends/octave/octavevariablemodel.h new file mode 100644 index 0000000..5368963 --- /dev/null +++ b/src/backends/octave/octavevariablemodel.h @@ -0,0 +1,28 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Nikita Sirgienko +*/ + +#ifndef _OCTAVEVARIABLEMODEL_H +#define _OCTAVEVARIABLEMODEL_H + +#include "defaultvariablemodel.h" + +class OctaveSession; + +class OctaveVariableModel : public Cantor::DefaultVariableModel +{ + public: + OctaveVariableModel( OctaveSession* session); + ~OctaveVariableModel() override = default; + + void update() override; + + private Q_SLOTS: + void parseNewVariables(Cantor::Expression::Status status); + + private: + Cantor::Expression* m_expr; +}; + +#endif /* _OCTAVEVARIABLEMODEL_H */ diff --git a/src/backends/octave/scripts/CMakeLists.txt b/src/backends/octave/scripts/CMakeLists.txt new file mode 100644 index 0000000..bb1f2bb --- /dev/null +++ b/src/backends/octave/scripts/CMakeLists.txt @@ -0,0 +1 @@ +install( FILES cantor_eigenvectors.m cantor_plot2d.m cantor_plot3d.m cantor_print.m DESTINATION ${KDE_INSTALL_DATADIR}/cantor/octavebackend ) diff --git a/src/backends/octave/scripts/cantor_eigenvectors.m b/src/backends/octave/scripts/cantor_eigenvectors.m new file mode 100644 index 0000000..1a03902 --- /dev/null +++ b/src/backends/octave/scripts/cantor_eigenvectors.m @@ -0,0 +1,23 @@ +%{ + Copyright (C) 2010 Miha Čančula + + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +%} + +function v = cantor_eigenvectors(A) + [Vectors, Values] = eig(A); + v = Vectors; +endfunction \ No newline at end of file diff --git a/src/backends/octave/scripts/cantor_plot2d.m b/src/backends/octave/scripts/cantor_plot2d.m new file mode 100644 index 0000000..f8039ca --- /dev/null +++ b/src/backends/octave/scripts/cantor_plot2d.m @@ -0,0 +1,32 @@ +%{ + Copyright (C) 2010 Miha Čančula + + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +%} + +function cantor_plot2d(f_string,var,min,max) + f_mod_string = f_string; + for op = ['*' '/' '^'] + f_mod_string = strrep(f_mod_string, op, strcat('.',op)); + endfor + + f = inline(f_mod_string, var); + x = linspace(min,max); + plot (x, f(x)); + + xlabel(var); + ylabel(f_string); +endfunction diff --git a/src/backends/octave/scripts/cantor_plot3d.m b/src/backends/octave/scripts/cantor_plot3d.m new file mode 100644 index 0000000..91b3ee5 --- /dev/null +++ b/src/backends/octave/scripts/cantor_plot3d.m @@ -0,0 +1,33 @@ +%{ + Copyright (C) 2010 Miha Čančula + + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +%} + +function cantor_plot3d(f_string,var1,min1,max1,var2,min2,max2) + f_mod_string = f_string; + for op = ['*' '/' '^'] + f_mod_string = strrep(f_mod_string, op, strcat('.',op)); + endfor + + f = inline(f_mod_string, var1, var2); + [x,y] = meshgrid(linspace(min1,max1),linspace(min2,max2)); + mesh(x,y,f(x,y)); + + xlabel(var1); + ylabel(var2); + zlabel(f_string); +endfunction diff --git a/src/backends/octave/scripts/cantor_print.m b/src/backends/octave/scripts/cantor_print.m new file mode 100644 index 0000000..c473fcf --- /dev/null +++ b/src/backends/octave/scripts/cantor_print.m @@ -0,0 +1,26 @@ +%{ + Copyright (C) 2010 Miha Čančula + + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +%} + +function cantor_print(plot_format, filename) + try + print(strcat('-d', plot_format), filename, '-tight'); + catch + print(strcat('-d', plot_format), filename); + end_try_catch +endfunction diff --git a/src/backends/octave/settings.kcfgc b/src/backends/octave/settings.kcfgc new file mode 100644 index 0000000..6d736bd --- /dev/null +++ b/src/backends/octave/settings.kcfgc @@ -0,0 +1,3 @@ +File=octavebackend.kcfg +ClassName=OctaveSettings +Singleton=true diff --git a/src/backends/octave/settings.ui b/src/backends/octave/settings.ui new file mode 100644 index 0000000..39c1b01 --- /dev/null +++ b/src/backends/octave/settings.ui @@ -0,0 +1,156 @@ + + + OctaveSettingsBase + + + + 0 + 0 + 408 + 296 + + + + + + + 0 + + + + General + + + + + + Internal Plot Format: + + + + + + + + png + + + + + svg + + + + + jpeg + + + + + + + + Monitor the creation and destruction of variables and show the existing variables in the variable panel. + + + Enabled + + + + + + + + + + Variable Management: + + + + + + + Plot Integration: + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 44 + + + + + + + + If enabled, plots will be shown inside of the worksheet. Otherwise, plots will be shown in an external window. + + + Enabled + + + + + + + Executable: + + + + + + + + Autorun + + + + + + Commands to autorun + + + Qt::AlignCenter + + + + + + + + + + + Documentation + + + + + + + + + KUrlRequester + QWidget +
      kurlrequester.h
      + 1 +
      + + KEditListWidget + QWidget +
      keditlistwidget.h
      +
      +
      + + +
      diff --git a/src/backends/octave/testoctave.cpp b/src/backends/octave/testoctave.cpp new file mode 100644 index 0000000..90cdea3 --- /dev/null +++ b/src/backends/octave/testoctave.cpp @@ -0,0 +1,341 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "testoctave.h" + +#include "session.h" +#include "backend.h" +#include "expression.h" +#include "result.h" +#include "imageresult.h" +#include "textresult.h" +#include "helpresult.h" +#include "epsresult.h" +#include "completionobject.h" +#include "syntaxhelpobject.h" +#include "defaultvariablemodel.h" + +#include "octaveexpression.h" +#include "settings.h" + +#include + +QString TestOctave::backendName() +{ + return QLatin1String("octave"); +} + +void TestOctave::testSimpleCommand() +{ + Cantor::Expression* e=evalExp( QLatin1String("2+2") ); + + QVERIFY( e!=nullptr ); + QVERIFY( e->result()!=nullptr ); + + QCOMPARE( cleanOutput( e->result()->data().toString() ), QLatin1String("ans = 4") ); +} +void TestOctave::testMultilineCommand() +{ + Cantor::Expression* e=evalExp( QLatin1String("a = 2+2, b = 3+3") ); + + QVERIFY( e!=nullptr ); + QVERIFY( e->result()!=nullptr ); + + QString result=e->result()->data().toString(); + + QCOMPARE( cleanOutput(result ), QLatin1String("a = 4\nb = 6") ); +} + +void TestOctave::testCommandQueue() +{ + Cantor::Expression* e1=session()->evaluateExpression(QLatin1String("0+1")); + Cantor::Expression* e2=session()->evaluateExpression(QLatin1String("1+1")); + Cantor::Expression* e3=evalExp(QLatin1String("1+2")); + + QVERIFY(e1!=nullptr); + QVERIFY(e2!=nullptr); + QVERIFY(e3!=nullptr); + + QVERIFY(e1->result()); + QVERIFY(e2->result()); + QVERIFY(e3->result()); + + QCOMPARE(cleanOutput(e1->result()->data().toString()), QLatin1String("ans = 1")); + QCOMPARE(cleanOutput(e2->result()->data().toString()), QLatin1String("ans = 2")); + QCOMPARE(cleanOutput(e3->result()->data().toString()), QLatin1String("ans = 3")); +} + +void TestOctave::testVariableDefinition() +{ + Cantor::Expression* e = evalExp(QLatin1String("testvar = 1")); + + QVERIFY(e != nullptr); + QVERIFY(e->result() != nullptr); + QCOMPARE(cleanOutput(e->result()->data().toString()), QLatin1String("testvar = 1")); +} + +void TestOctave::testMatrixDefinition() +{ + Cantor::Expression* e = evalExp(QLatin1String( + "M = [1, 2, 3;"\ + " 4, 5, 6;"\ + " 7, 8, 9;]" + )); + + QVERIFY(e != nullptr); + QVERIFY(e->result() != nullptr); + QCOMPARE(e->result()->type(), (int) Cantor::TextResult::Type); + + Cantor::TextResult* result = static_cast(e->result()); + QCOMPARE(result->plain(), QLatin1String( + "M =\n"\ + "\n" + " 1 2 3\n"\ + " 4 5 6\n"\ + " 7 8 9" + )); +} + +//Comments +void TestOctave::testComment00() +{ + Cantor::Expression* e = evalExp(QLatin1String("s = 1234 #This is comment")); + + QVERIFY(e != nullptr); + QVERIFY(e->result() != nullptr); + QCOMPARE(cleanOutput(e->result()->data().toString()), QLatin1String("s = 1234")); +} + +/*! + * simple command containing one single comment only + */ +void TestOctave::testComment01() +{ + Cantor::Expression* e = evalExp(QLatin1String("#Only comment")); + + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Status::Done); + QCOMPARE(e->results().size(), 0); +} + +/*! + * multi-line command with lines containing comments only + */ +void TestOctave::testComment02() +{ + Cantor::Expression* e = evalExp(QLatin1String( + "# comment 1 \n" + "5 + 5\n" + "# comment 2\n" + "a = 10" + )); + + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Status::Done); + QVERIFY(e->result() != nullptr); + + Cantor::TextResult* result = static_cast(e->result()); + QVERIFY(result != nullptr); + QCOMPARE(cleanOutput(result->plain()), QLatin1String( + "ans = 10\n" + "a = 10" + )); +} + +/*! + * multi-line command with comments within the line containing also the actual expression + * */ +void TestOctave::testComment03() +{ + Cantor::Expression* e = evalExp(QLatin1String( + "a = 2+4 \n" + "6/2 % comment\n" + "q = 'Str' # comment\n" + "b = 4" + )); + + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Status::Done); + QVERIFY(e->result() != nullptr); + + Cantor::TextResult* result = static_cast(e->result()); + QVERIFY(result != nullptr); + QCOMPARE(cleanOutput(result->plain()), QLatin1String( + "a = 6\n" + "ans = 3\n" + "q = Str\n" + "b = 4" + )); +} + +void TestOctave::testCompletion() +{ + Cantor::CompletionObject* help = session()->completionFor(QLatin1String("as"), 2); + waitForSignal(help, SIGNAL(fetchingDone())); + + // Checks some completions for this request (but not all) + // This correct for Octave 4.2.2 at least (and another versions, I think) + const QStringList& completions = help->completions(); + QVERIFY(completions.contains(QLatin1String("asin"))); + QVERIFY(completions.contains(QLatin1String("asctime"))); + QVERIFY(completions.contains(QLatin1String("asec"))); + QVERIFY(completions.contains(QLatin1String("assert"))); +} + +void TestOctave::testVariablesCreatingFromCode() +{ + QAbstractItemModel* model = session()->variableModel(); + QVERIFY(model != nullptr); + + evalExp(QLatin1String("clear();")); + + Cantor::Expression* e=evalExp(QLatin1String("a = 15; b = 'S';")); + QVERIFY(e!=nullptr); + + if(session()->status()==Cantor::Session::Running) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + QCOMPARE(2, model->rowCount()); + + QCOMPARE(model->index(0,0).data().toString(), QLatin1String("a")); + QCOMPARE(model->index(0,1).data().toString(), QLatin1String("15")); + + QCOMPARE(model->index(1,0).data().toString(), QLatin1String("b")); + QCOMPARE(model->index(1,1).data().toString(), QLatin1String("S")); +} + +void TestOctave::testVariableCreatingFromCodeWithPlot() +{ + QAbstractItemModel* model = session()->variableModel(); + QVERIFY(model != nullptr); + + evalExp(QLatin1String("clear();")); + + Cantor::Expression* e = evalExp(QLatin1String( + "x = -10:0.1:10;\n" + "plot (x, sin (x));\n" + "xlabel (\"x\");\n" + "ylabel (\"sin (x)\");\n" + "title (\"Simple 2-D Plot\");\n" + )); + QVERIFY(e!=nullptr); + + if(session()->status()==Cantor::Session::Running) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + QCOMPARE(e->status(), Cantor::Expression::Done); + QVERIFY(e->result() != nullptr); + + bool eps = (OctaveExpression::plotExtensions[OctaveSettings::inlinePlotFormat()] == QLatin1String("eps")); + int plotType = eps ? (int)Cantor::EpsResult::Type : (int)Cantor::ImageResult::Type; + QVERIFY(e->result()->type() == plotType); + + QCOMPARE(1, model->rowCount()); + QCOMPARE(model->index(0,0).data().toString(), QLatin1String("x")); +} + +void TestOctave::testVariableCleanupAfterRestart() +{ + Cantor::DefaultVariableModel* model = session()->variableModel(); + QVERIFY(model != nullptr); + + evalExp(QLatin1String("clear();")); + Cantor::Expression* e=evalExp(QLatin1String("a = 15; b = 'S';")); + QVERIFY(e!=nullptr); + + if(session()->status()==Cantor::Session::Running) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + QCOMPARE(2, static_cast(model)->rowCount()); + + session()->logout(); + session()->login(); + + QCOMPARE(0, static_cast(model)->rowCount()); +} + +void TestOctave::testPlot() +{ + Cantor::Expression* e=evalExp( QLatin1String("cantor_plot2d('sin(x)', 'x', -10,10);") ); + + int cnt=0; + //give some time to create the image, but at most 5sec + int plotType = (OctaveExpression::plotExtensions[OctaveSettings::inlinePlotFormat()] == QLatin1String("eps") ? (int)Cantor::EpsResult::Type : (int)Cantor::ImageResult::Type); + while(e->result()==nullptr||e->result()->type() != plotType ) + { + QTest::qWait(250); + cnt+=250; + if(cnt>5000) + break; + } + + QVERIFY( e!=nullptr ); + QVERIFY( e->result()!=nullptr ); + + QCOMPARE( e->result()->type(), plotType ); + QVERIFY( !e->result()->data().isNull() ); +} + +void TestOctave::testInvalidSyntax() +{ + Cantor::Expression* e=evalExp( QLatin1String("2+2*+.") ); + + QVERIFY( e!=nullptr ); + QCOMPARE( e->status(), Cantor::Expression::Error ); +} + +void TestOctave::testHelpRequest() +{ + Cantor::Expression* e = evalExp(QLatin1String("help printf")); + + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Status::Done); + QVERIFY(e->result() != nullptr); + QCOMPARE(e->result()->type(), (int)Cantor::HelpResult::Type); + QString text = QString::fromLatin1("Print optional arguments under the control of the template").toHtmlEscaped(); + text.replace(QLatin1Char(' '), QLatin1String(" ")); + QVERIFY(e->result()->toHtml().contains(text)); +} + +void TestOctave::testSyntaxHelp() +{ + Cantor::SyntaxHelpObject* help = session()->syntaxHelpFor(QLatin1String("abs")); + help->fetchSyntaxHelp(); + waitForSignal(help, SIGNAL(done())); + + QString text = QString::fromLatin1("Compute the magnitude").toHtmlEscaped(); + text.replace(QLatin1Char(' '), QLatin1String(" ")); + QVERIFY(help->toHtml().contains(text)); +} + +void TestOctave::testLoginLogout() +{ + // Logout from session twice and all must works fine + session()->logout(); + session()->logout(); + + // Login in session twice and all must works fine + session()->login(); + session()->login(); +} + +void TestOctave::testRestartWhileRunning() +{ + Cantor::Expression* e1=session()->evaluateExpression(QLatin1String("sleep(5)")); + + session()->logout(); + QCOMPARE(e1->status(), Cantor::Expression::Interrupted); + session()->login(); + + Cantor::Expression* e2=evalExp( QLatin1String("2+2") ); + + QVERIFY(e2 != nullptr); + QVERIFY(e2->result() != nullptr); + + QCOMPARE(cleanOutput(e2->result()->data().toString() ), QLatin1String("ans = 4")); +} + +QTEST_MAIN( TestOctave ) + diff --git a/src/backends/octave/testoctave.h b/src/backends/octave/testoctave.h new file mode 100644 index 0000000..1048fbe --- /dev/null +++ b/src/backends/octave/testoctave.h @@ -0,0 +1,58 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _TESTOCTAVE_H +#define _TESTOCTAVE_H + +#include "backendtest.h" + +/** This class test some of the basic functions of the Octave backend + The different tests represent some general expressions, as well + as expressions, that are known to have caused problems in earlier + versions +**/ +class TestOctave : public BackendTest +{ + Q_OBJECT + +private Q_SLOTS: + //tests evaluating a simple command + void testSimpleCommand(); + //tests a command, containing more than 1 line + void testMultilineCommand(); + //tests if the command queue works correctly + void testCommandQueue(); + + void testVariableDefinition(); + void testMatrixDefinition(); + + //comments + void testComment00(); + void testComment01(); + void testComment02(); + void testComment03(); + + //tests a syntax error (not closing bracket) + void testInvalidSyntax(); + + void testCompletion(); + void testHelpRequest(); + void testSyntaxHelp(); + + //tests variable model + void testVariablesCreatingFromCode(); + void testVariableCleanupAfterRestart(); + void testVariableCreatingFromCodeWithPlot(); + + //tests doing a plot + void testPlot(); + + void testLoginLogout(); + void testRestartWhileRunning(); +private: + QString backendName() override; +}; + +#endif /* _TESTOCTAVE_H */ diff --git a/src/backends/python/CMakeLists.txt b/src/backends/python/CMakeLists.txt new file mode 100644 index 0000000..bcbbbe1 --- /dev/null +++ b/src/backends/python/CMakeLists.txt @@ -0,0 +1,60 @@ +set( PythonBackend_SRCS + pythonbackend.cpp + pythonsession.cpp + pythonexpression.cpp + pythonkeywords.cpp + pythonvariablemodel.cpp + pythonhighlighter.cpp + pythoncompletionobject.cpp + pythonextensions.cpp + pythonsettingswidget.cpp + ../backendsettingswidget.cpp +) + +set(PythonServer_SRCS + pythonservermain.cpp + pythonserver.cpp +) + +qt5_add_resources(PythonBackend_RSCS python.qrc) +ki18n_wrap_ui(PythonBackend_SRCS settings.ui) +kconfig_add_kcfg_files(PythonBackend_SRCS settings.kcfgc) + +add_backend(pythonbackend ${PythonBackend_SRCS} ${PythonBackend_RSCS}) +target_link_libraries(cantor_pythonbackend + cantorlibs + cantor_help + KF5::KIOCore + KF5::ConfigCore + KF5::ConfigGui + KF5::SyntaxHighlighting +) + +add_executable(cantor_pythonserver ${PythonServer_SRCS}) +set_target_properties(cantor_pythonserver PROPERTIES INSTALL_RPATH_USE_LINK_PATH false) +if(MSVC) + set_property(TARGET cantor_pythonserver PROPERTY LINK_FLAGS "/SUBSYSTEM:CONSOLE") +endif() +target_link_libraries(cantor_pythonserver Python3::Python) + +if(BUILD_TESTING) + add_executable(testpython testpython.cpp settings.cpp) + add_test(NAME testpython COMMAND testpython) + target_link_libraries(testpython + Qt5::Test + KF5::ConfigCore + KF5::ConfigGui + cantorlibs + cantortest + ) +endif(BUILD_TESTING) + +install(FILES cantor_python.knsrc DESTINATION ${KDE_INSTALL_KNSRCDIR}) +install(FILES pythonbackend.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) + +install(TARGETS cantor_pythonbackend DESTINATION ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) +install(TARGETS cantor_pythonserver DESTINATION ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) + +install(FILES graphic_packages.xml DESTINATION ${KDE_INSTALL_DATADIR}/cantor/python) + +#install(DIRECTORY . DESTINATION ${KDE_INSTALL_DATADIR}/cantor/pythonbackend FILES_MATCHING PATTERN "*.py") diff --git a/src/backends/python/cantor_python.knsrc b/src/backends/python/cantor_python.knsrc new file mode 100644 index 0000000..efd4b3b --- /dev/null +++ b/src/backends/python/cantor_python.knsrc @@ -0,0 +1,7 @@ +[KNewStuff3] +ProvidersUrl=https://autoconfig.kde.org/ocs/providers.xml +Categories=Cantor (Maxima),Cantor (Sage),Cantor (KAlgebra),Cantor (Qalculate),Cantor (Python 2),Cantor (Python 3),Cantor (Scilab),Cantor (Octave),Cantor (R),Cantor (Lua) +UploadCategories=Cantor (Python3) +TargetDir=cantor/examples +Uncompress=never +CustomName=true diff --git a/src/backends/python/graphic_packages.xml b/src/backends/python/graphic_packages.xml new file mode 100644 index 0000000..e371719 --- /dev/null +++ b/src/backends/python/graphic_packages.xml @@ -0,0 +1,76 @@ + + + matplotlib + Matplotlib + +try: + import matplotlib + print(1) +except ModuleNotFoundError: + print(0) + + +from matplotlib import pyplot as __cantor_plt__; +__cantor_plot_prefix__ = '%1' + +def __cantor_matplotlib_show__(): + global __cantor_plot_global_counter__ + __cantor_plt_filename__ = __cantor_plot_prefix__ + str(__cantor_plot_global_counter__) + __cantor_plot_global_counter__ += 1 + __cantor_plt__.savefig(__cantor_plt_filename__) + print('\nINNER PLOT INFO CANTOR: ', __cantor_plt_filename__, sep='') + __cantor_plt__.clf(); + +__cantor_matplotlib_original_show__ = matplotlib.pyplot.show +__cantor_plt__.show = __cantor_matplotlib_show__ + + +__cantor_plt__.show = __cantor_matplotlib_original_show__; + + + + + + + plotly + Plot.ly + +def __cantor_plotly_check_presence__(): + import matplotlib; + import sys + import subprocess + + output = subprocess.check_output(['orca', '--help'], shell=True) + output_str = output.decode(sys.stdout.encoding) + is_needed_orca = output_str.find('Plotly\'s image-exporting utilities') != -1 + print(1 if is_needed_orca else 0) + +try: + __cantor_plotly_check_presence__() +except ModuleNotFoundError: + print(0) + + +import plotly as __cantor_plotly__ +__cantor_plot_prefix__ = '%1' +def __cantor_plotly_show__(figure): + global __cantor_plot_global_counter__ + __cantor_plt_filename__ = __cantor_plot_prefix__ + str(__cantor_plot_global_counter__) + '.png' + __cantor_plot_global_counter__ += 1 + figure.write_image(__cantor_plt_filename__, scale=2) + print('\nINNER PLOT INFO CANTOR: ', __cantor_plt_filename__, sep='') + +if hasattr(__cantor_plotly__, 'basedatatypes'): + __cantor_plotly_original_show__ = __cantor_plotly__.basedatatypes.BaseFigure.show + __cantor_plotly__.basedatatypes.BaseFigure.show = __cantor_plotly_show__ +else: + __cantor_plotly_original_show__ = __cantor_plotly__.graph_objects.Figure.show + __cantor_plotly__.graph_objects.Figure.show = __cantor_plotly_show__ + + +__cantor_plotly__.basedatatypes.BaseFigure.show = __cantor_plotly_original_show__; + + + + + diff --git a/src/backends/python/python.qrc b/src/backends/python/python.qrc new file mode 100644 index 0000000..5c6b133 --- /dev/null +++ b/src/backends/python/python.qrc @@ -0,0 +1,7 @@ + + + variables_cleaner.py + variables_loader.py + variables_saver.py + + diff --git a/src/backends/python/pythonbackend.cpp b/src/backends/python/pythonbackend.cpp new file mode 100644 index 0000000..db6cfea --- /dev/null +++ b/src/backends/python/pythonbackend.cpp @@ -0,0 +1,93 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Filipe Saraiva +*/ + +#include "pythonbackend.h" +#include "pythonsession.h" +#include "pythonextensions.h" +#include "pythonsettingswidget.h" +#include "settings.h" +#include "ui_settings.h" + +#include +#include + +#include + +PythonBackend::PythonBackend(QObject* parent, const QList& args) : Cantor::Backend(parent, args) +{ + new PythonLinearAlgebraExtension(this); + new PythonPackagingExtension(this); + new PythonPlotExtension(this); + new PythonScriptExtension(this); + new PythonVariableManagementExtension(this); + + //setObjectName(QLatin1String("python3backend")); +} + +QWidget* PythonBackend::settingsWidget(QWidget* parent) const +{ + return new PythonSettingsWidget(parent, id()); +} + +Cantor::Session* PythonBackend::createSession() +{ + return new PythonSession(this); +} + +QString PythonBackend::id() const +{ + return QLatin1String("python"); +} + +QString PythonBackend::version() const +{ + return QLatin1String("3.6"); +} + +Cantor::Backend::Capabilities PythonBackend::capabilities() const +{ + qDebug()<<"Requesting capabilities of PythonSession"; + + Backend::Capabilities cap = + Cantor::Backend::SyntaxHighlighting | + Cantor::Backend::Completion | + Cantor::Backend::SyntaxHelp | + Cantor::Backend::IntegratedPlots; + + if(PythonSettings::variableManagement()) + cap |= Cantor::Backend::VariableManagement; + + return cap; +} + +QUrl PythonBackend::helpUrl() const +{ + return QUrl(i18nc("The url to the documentation Python", "https://docs.python.org/3/")); +} + +QString PythonBackend::description() const +{ + return i18n("Python is a remarkably powerful dynamic programming language that is used in a wide variety of application domains. " \ + "There are several Python packages to scientific programming."); +} + +KConfigSkeleton* PythonBackend::config() const +{ + return PythonSettings::self(); +} + +bool PythonBackend::requirementsFullfilled(QString* const reason) const +{ +#ifdef Q_OS_WIN + const QString& path = QStandardPaths::findExecutable(QLatin1String("cantor_pythonserver.exe")); +#else + const QString& path = QStandardPaths::findExecutable(QLatin1String("cantor_pythonserver")); +#endif + return Cantor::Backend::checkExecutable(QLatin1String("Cantor Python Server"), path, reason); +} + +K_PLUGIN_FACTORY_WITH_JSON(pythonbackend, "pythonbackend.json", registerPlugin();) +#include "pythonbackend.moc" + diff --git a/src/backends/python/pythonbackend.h b/src/backends/python/pythonbackend.h new file mode 100644 index 0000000..6e42421 --- /dev/null +++ b/src/backends/python/pythonbackend.h @@ -0,0 +1,31 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Filipe Saraiva +*/ + +#ifndef _PYTHONBACKEND_H +#define _PYTHONBACKEND_H + +#include "backend.h" + +class PythonBackend : public Cantor::Backend +{ + Q_OBJECT + public: + explicit PythonBackend(QObject* parent = nullptr, const QList& args = QList()); + + QWidget* settingsWidget(QWidget* parent) const override; + + Cantor::Session* createSession() override; + + QString id() const override; + QString version() const override; + Cantor::Backend::Capabilities capabilities() const override; + QUrl helpUrl() const override; + QString description() const override; + bool requirementsFullfilled(QString* const reason = nullptr) const override; + KConfigSkeleton* config() const override; +}; + + +#endif /* _PYTHONBACKEND_H */ diff --git a/src/backends/python/pythonbackend.json b/src/backends/python/pythonbackend.json new file mode 100644 index 0000000..e228e49 --- /dev/null +++ b/src/backends/python/pythonbackend.json @@ -0,0 +1,64 @@ +{ + "KPlugin": { + "Description": "Backend for Python Scientific Programming", + "Description[ca@valencia]": "Dorsal per a la programació científica en Python", + "Description[ca]": "Dorsal per a la programació científica en Python", + "Description[de]": "Modul für die wissenschaftliche Programmierumgebung Python ", + "Description[el]": "Σύστημα υποστήριξης για το Python Scientific Programming", + "Description[en_GB]": "Backend for Python Scientific Programming", + "Description[es]": "Motor para programación científica en Python", + "Description[et]": "Pythoni teadusliku programmeerimise taustaprogramm", + "Description[fi]": "Tieteellisen Python-ohjelmointiympäristön taustajärjestelmä", + "Description[fr]": "Moteur pour la programmation scientifique Python", + "Description[ia]": "Retroadministration per Programmar Scientific de Python", + "Description[it]": "Motore per l'ambiente scientifico di programmazione Python", + "Description[ka]": "Python -ის სამეცნიერო პროგრამირების უკანაბოლო", + "Description[ko]": "Python 과학 프로그래밍 백엔드", + "Description[nl]": "Backend voor wetenschappelijk programmeren in Python", + "Description[nn]": "Motor for Pythons «Scientific Programming»", + "Description[pl]": "Silnika dla naukowego środowiska programistycznego Pythona", + "Description[pt]": "Infra-Estrutura de Programação Científica com Python", + "Description[pt_BR]": "Infraestrutura de programação científica Python", + "Description[ru]": "Поддержка языка Python и инженерных и научных расчётов на нём", + "Description[sk]": "Backend pre vedecké programovanie v Python-e", + "Description[sl]": "Zaledje za znanstveno programersko okolje Python", + "Description[sv]": "Bakgrundsprogram för Python vetenskaplig programmeringsmiljö", + "Description[tr]": "Python Bilimsel Programlaması için arka uç", + "Description[uk]": "Модуль наукового програмування мовою Python", + "Description[x-test]": "xxBackend for Python Scientific Programmingxx", + "Description[zh_CN]": "Python 科学编程环境的后端", + "Icon": "pythonbackend", + "Id": "Python", + "License": "GPL", + "Name": "Python", + "Name[ar]": "بايثون", + "Name[ca@valencia]": "Python", + "Name[ca]": "Python", + "Name[cs]": "Python", + "Name[de]": "Python", + "Name[el]": "Python", + "Name[en_GB]": "Python", + "Name[es]": "Python", + "Name[et]": "Python", + "Name[fi]": "Python", + "Name[fr]": "Python", + "Name[ia]": "Python", + "Name[it]": "Python", + "Name[ka]": "Python", + "Name[ko]": "Python", + "Name[nl]": "Python", + "Name[nn]": "Python", + "Name[pl]": "Python", + "Name[pt]": "Python", + "Name[pt_BR]": "Python", + "Name[ru]": "Python", + "Name[sk]": "Python", + "Name[sl]": "Python", + "Name[sv]": "Python", + "Name[tr]": "Python", + "Name[uk]": "Python", + "Name[x-test]": "xxPythonxx", + "Name[zh_CN]": "Python", + "Website": "https://python.org/" + } +} diff --git a/src/backends/python/pythonbackend.kcfg b/src/backends/python/pythonbackend.kcfg new file mode 100644 index 0000000..b91e789 --- /dev/null +++ b/src/backends/python/pythonbackend.kcfg @@ -0,0 +1,32 @@ + + + QStandardPaths + + + + + false + + + + true + + + + + + + + + + + + + + 0 + + + diff --git a/src/backends/python/pythoncompletionobject.cpp b/src/backends/python/pythoncompletionobject.cpp new file mode 100644 index 0000000..dc8750c --- /dev/null +++ b/src/backends/python/pythoncompletionobject.cpp @@ -0,0 +1,155 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2013 Filipe Saraiva +*/ + +#include "pythoncompletionobject.h" + +#include + +#include "result.h" + +#include "pythonsession.h" +#include "pythonkeywords.h" + +using namespace Cantor; + +PythonCompletionObject::PythonCompletionObject(const QString& command, int index, PythonSession* session) : Cantor::CompletionObject(session), +m_expression(nullptr) +{ + setLine(command, index); +} + +PythonCompletionObject::~PythonCompletionObject() +{ + if (m_expression) + m_expression->setFinishingBehavior(Expression::DeleteOnFinish); +} + +void PythonCompletionObject::fetchCompletions() +{ + if (session()->status() != Session::Done) + { + QStringList allCompletions; + + allCompletions << PythonKeywords::instance()->variables(); + allCompletions << PythonKeywords::instance()->functions(); + allCompletions << PythonKeywords::instance()->keywords(); + + setCompletions(allCompletions); + + emit fetchingDone(); + } + else + { + if (m_expression) + return; + + qDebug() << "run fetchCompletions"; + const QString& expr = QString::fromLatin1( + "from __main__ import __dict__;" + "import rlcompleter;" + "print('|'.join(rlcompleter.Completer(__dict__).global_matches('%1')+rlcompleter.Completer(__dict__).attr_matches('%1')))" + ).arg(command()); + m_expression = session()->evaluateExpression(expr, Cantor::Expression::FinishingBehavior::DoNotDelete, true); + connect(m_expression, &Cantor::Expression::statusChanged, this, &PythonCompletionObject::extractCompletions); + } +} + + + +void PythonCompletionObject::fetchIdentifierType() +{ + if (session()->status() != Cantor::Session::Done) + { + if (std::binary_search(PythonKeywords::instance()->functions().begin(), + PythonKeywords::instance()->functions().end(), identifier())) + emit fetchingTypeDone(FunctionType); + else if (std::binary_search(PythonKeywords::instance()->keywords().begin(), + PythonKeywords::instance()->keywords().end(), identifier())) + emit fetchingTypeDone(KeywordType); + else + emit fetchingTypeDone(VariableType); + } + else + { + if (m_expression) + return; + + const QString& expr = QString::fromLatin1("callable(%1)").arg(identifier()); + m_expression = session()->evaluateExpression(expr, Cantor::Expression::FinishingBehavior::DoNotDelete, true); + connect(m_expression, &Cantor::Expression::statusChanged, this, &PythonCompletionObject::extractIdentifierType); + } +} + +void PythonCompletionObject::extractCompletions(Cantor::Expression::Status status) +{ + switch(status) + { + case Cantor::Expression::Error: + qDebug() << "Error with PythonCompletionObject" << (m_expression->result() ? m_expression->result()->toHtml() : QLatin1String("extractCompletions")); + break; + + case Cantor::Expression::Interrupted: + qDebug() << "PythonCompletionObject was interrupted"; + break; + + case Cantor::Expression::Done: + if (m_expression->result()) + setCompletions(m_expression->result()->data().toString().remove(QLatin1Char('(')).split(QLatin1Char('|'))); + break; + default: + return; + } + m_expression->deleteLater(); + m_expression = nullptr; + emit fetchingDone(); +} + +void PythonCompletionObject::extractIdentifierType(Cantor::Expression::Status status) +{ + switch(status) + { + case Cantor::Expression::Error: + + if (m_expression->errorMessage().contains(QLatin1String("SyntaxError: invalid syntax"))) + emit fetchingTypeDone(KeywordType); + else + { + qDebug() << "Error with PythonCompletionObject" << (m_expression->result() ? m_expression->result()->toHtml() : QLatin1String("extractIdentifierType")); + emit fetchingTypeDone(UnknownType); + } + break; + + case Cantor::Expression::Interrupted: + qDebug() << "PythonCompletionObject was interrupted"; + emit fetchingTypeDone(UnknownType); + break; + + case Cantor::Expression::Done: + if (m_expression->result()) + { + if (m_expression->result()->data().toString() == QLatin1String("True")) + emit fetchingTypeDone(FunctionType); + else + emit fetchingTypeDone(VariableType); + } + else + emit fetchingTypeDone(UnknownType); + break; + default: + return; + } + m_expression->deleteLater(); + m_expression = nullptr; +} + +bool PythonCompletionObject::mayIdentifierContain(QChar c) const +{ + return c.isLetter() || c.isDigit() || c == QLatin1Char('_') || c == QLatin1Char('%') || c == QLatin1Char('$') || c == QLatin1Char('.'); +} + +bool PythonCompletionObject::mayIdentifierBeginWith(QChar c) const +{ + return c.isLetter() || c == QLatin1Char('_') || c == QLatin1Char('%') || c == QLatin1Char('$'); +} diff --git a/src/backends/python/pythoncompletionobject.h b/src/backends/python/pythoncompletionobject.h new file mode 100644 index 0000000..694eac2 --- /dev/null +++ b/src/backends/python/pythoncompletionobject.h @@ -0,0 +1,34 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2013 Filipe Saraiva +*/ + +#ifndef _PYTHONCOMPLETIONOBJECT_H +#define _PYTHONCOMPLETIONOBJECT_H + +#include "completionobject.h" +#include "expression.h" + +class PythonSession; + +class PythonCompletionObject : public Cantor::CompletionObject +{ + public: + PythonCompletionObject(const QString& cmd, int index, PythonSession* session); + ~PythonCompletionObject() override; + + protected: + bool mayIdentifierContain(QChar c) const override; + bool mayIdentifierBeginWith(QChar c) const override; + + protected Q_SLOTS: + void fetchCompletions() override; + void fetchIdentifierType() override; + void extractCompletions(Cantor::Expression::Status status); + void extractIdentifierType(Cantor::Expression::Status status); + + private: + Cantor::Expression* m_expression; +}; + +#endif /* _PYTHONCOMPLETIONOBJECT_H */ diff --git a/src/backends/python/pythonexpression.cpp b/src/backends/python/pythonexpression.cpp new file mode 100644 index 0000000..6d3b9e1 --- /dev/null +++ b/src/backends/python/pythonexpression.cpp @@ -0,0 +1,138 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Filipe Saraiva +*/ + +#include "pythonexpression.h" + +#include + +#include "textresult.h" +#include "imageresult.h" +#include "helpresult.h" +#include "session.h" +#include "settings.h" + +#include + +#include "pythonsession.h" + +PythonExpression::PythonExpression(Cantor::Session* session, bool internal) : Cantor::Expression(session, internal) +{ +} + +PythonExpression::~PythonExpression() { +} + +void PythonExpression::evaluate() +{ + session()->enqueueExpression(this); +} + +QString PythonExpression::internalCommand() +{ + QString cmd = command(); + + if (PythonSettings::integratePlots()) + { + auto* pySession = static_cast(session()); + const QString& filepath = pySession->plotFilePrefixPath() + QString::number(pySession->plotFileCounter()) + QLatin1String(".png"); + + for(const auto& package : session()->enabledGraphicPackages()) + { + if (package.isHavePlotCommand()) + { + cmd.append(QLatin1String("\n")); + cmd.append(package.savePlotCommand(filepath, pySession->plotFileCounter())); + } + } + } + + QStringList commandLine = cmd.split(QLatin1String("\n")); + QString commandProcessing; + + for(const QString& command : commandLine){ + const QString firstLineWord = command.trimmed().replace(QLatin1String("("), QLatin1String(" ")) + .split(QLatin1String(" ")).at(0); + + // Ignore comments + if (firstLineWord.length() != 0 && firstLineWord[0] == QLatin1Char('#')){ + + commandProcessing += command + QLatin1String("\n"); + continue; + } + + if(firstLineWord.contains(QLatin1String("execfile"))){ + + commandProcessing += command; + continue; + } + + commandProcessing += command + QLatin1String("\n"); + + } + + return commandProcessing; +} + +void PythonExpression::parseOutput(const QString& output) +{ + qDebug() << "expression output: " << output; + if(command().simplified().startsWith(QLatin1String("help("))) + { + QString resultStr = output; + setResult(new Cantor::HelpResult(resultStr.remove(output.lastIndexOf(QLatin1String("None")), 4))); + } + else if (!output.isEmpty()) + { + auto* pySession = static_cast(session()); + const QString& plotFilePrefixPath = pySession->plotFilePrefixPath(); + const QString& searchPrefixPath = QLatin1String("INNER PLOT INFO CANTOR: ") + plotFilePrefixPath; + + QStringList buffer; + const QStringList& lines = output.split(QLatin1String("\n")); + for (const QString& line : lines) + { + if (line.startsWith(searchPrefixPath)) + { + if (!buffer.isEmpty() && !(buffer.size() == 1 && buffer[0].isEmpty())) + addResult(new Cantor::TextResult(buffer.join(QLatin1String("\n")))); + + QString filepath = plotFilePrefixPath + QString::number(pySession->plotFileCounter()) + QLatin1String(".png"); + pySession->plotFileCounter()++; + addResult(new Cantor::ImageResult(QUrl::fromLocalFile(filepath))); + buffer.clear(); + } + else + buffer.append(line); + } + if (!buffer.isEmpty() && !(buffer.size() == 1 && buffer[0].isEmpty())) + addResult(new Cantor::TextResult(buffer.join(QLatin1String("\n")))); + } + + setStatus(Cantor::Expression::Done); +} + +void PythonExpression::parseError(const QString& error) +{ + qDebug() << "expression error: " << error; + setErrorMessage(error); + + setStatus(Cantor::Expression::Error); +} + +void PythonExpression::parseWarning(const QString& warning) +{ + if (!warning.isEmpty()) + { + auto* result = new Cantor::TextResult(warning); + result->setStdErr(true); + addResult(result); + } +} + +void PythonExpression::interrupt() +{ + qDebug()<<"interruptinging command"; + setStatus(Cantor::Expression::Interrupted); +} diff --git a/src/backends/python/pythonexpression.h b/src/backends/python/pythonexpression.h new file mode 100644 index 0000000..27af7ff --- /dev/null +++ b/src/backends/python/pythonexpression.h @@ -0,0 +1,27 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Filipe Saraiva +*/ + +#ifndef _PYTHONEXPRESSION_H +#define _PYTHONEXPRESSION_H + +#include "expression.h" + +class PythonExpression : public Cantor::Expression +{ + Q_OBJECT + public: + PythonExpression(Cantor::Session*, bool internal); + ~PythonExpression() override; + + void evaluate() override; + void interrupt() override; + QString internalCommand() override; + + void parseOutput(const QString&) override; + void parseWarning(const QString&); + void parseError(const QString&) override; +}; + +#endif /* _PYTHONEXPRESSION_H */ diff --git a/src/backends/python/pythonextensions.cpp b/src/backends/python/pythonextensions.cpp new file mode 100644 index 0000000..363a2aa --- /dev/null +++ b/src/backends/python/pythonextensions.cpp @@ -0,0 +1,339 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2013 Filipe Saraiva +*/ + +#include "pythonextensions.h" + +#include + +#include + +#include "pythonutils.h" + +#include "settings.h" + +#define PYTHON_EXT_CDTOR(name) Python##name##Extension::Python##name##Extension(QObject* parent) : name##Extension(parent) {} \ + Python##name##Extension::~Python##name##Extension() {} + +PYTHON_EXT_CDTOR(LinearAlgebra) + +QString PythonLinearAlgebraExtension::createVector(const QStringList& entries, Cantor::LinearAlgebraExtension::VectorType type) +{ + Q_UNUSED(type); + + QString command; + command += QLatin1String("numpy.matrix(["); + + foreach (const QString& entry, entries) + { + command += entry + QLatin1String(", "); + } + + command.chop(2); + command += QLatin1String("])\n"); + + return command; +} + +QString PythonLinearAlgebraExtension::createMatrix(const Cantor::LinearAlgebraExtension::Matrix& matrix) +{ + QString command; + command += QLatin1String("numpy.matrix([["); + + foreach (const QStringList row, matrix) + { + foreach (const QString entry, row) + { + command += entry; + command += QLatin1String(", "); + } + command.chop(2); + command += QLatin1String("], ["); + } + + command.chop(3); + command += QLatin1String("])"); + + return command; +} + +QString PythonLinearAlgebraExtension::eigenValues(const QString& matrix) +{ + return QString::fromLatin1("numpy.linalg.eigvals(%1)").arg(matrix); +} + +QString PythonLinearAlgebraExtension::eigenVectors(const QString& matrix) +{ + return QString::fromLatin1("numpy.linalg.eig(%1)").arg(matrix); +} + +QString PythonLinearAlgebraExtension::identityMatrix(int size) +{ + return QString::fromLatin1("numpy.identity(%1)").arg(size); +} + +QString PythonLinearAlgebraExtension::invertMatrix(const QString& matrix) +{ + return QString::fromLatin1("numpy.linalg.inv(%1)").arg(matrix); +} + +QString PythonLinearAlgebraExtension::nullMatrix(int rows, int columns) +{ + return QString::fromLatin1("numpy.zeros(%1, %2)").arg(rows).arg(columns); +} + +QString PythonLinearAlgebraExtension::nullVector(int size, Cantor::LinearAlgebraExtension::VectorType type) +{ + QString command = QLatin1String("numpy.zeros(%1, %2)"); + switch (type) + { + case ColumnVector: + return command.arg(size).arg(1); + case RowVector: + return command.arg(1).arg(size); + default: + return Cantor::LinearAlgebraExtension::nullVector(size, type); + } +} + +QString PythonLinearAlgebraExtension::rank(const QString& matrix) +{ + return QString::fromLatin1("numpy.linalg.matrix_rank(%1)").arg(matrix); +} + +QString PythonLinearAlgebraExtension::charPoly(const QString& matrix) +{ + return QString::fromLatin1("numpy.poly(%1)").arg(matrix); +} + +PYTHON_EXT_CDTOR(Packaging) + +QString PythonPackagingExtension::importPackage(const QString& package) +{ + return QString::fromLatin1("import %1").arg(package); +} + +PYTHON_EXT_CDTOR(Plot) + +QString PythonPlotExtension::plotFunction2d(const QString& function, const QString& variable, const QString& left, const QString& right) +{ + QString command; + QString limits; + + int val = PythonSettings::plotExtenstionGraphicPackage(); + switch (val) + { + case PythonSettings::EnumPlotExtenstionGraphicPackage::matplotlib: + if (!left.isEmpty() && !right.isEmpty()) + limits = QString::fromLatin1("plt.xlim(%1, %2)\n").arg(left, right); + command = QString::fromLatin1( + "import matplotlib.pyplot as plt\n" + "\n" + "plt.plot(%1, %2)\n" + "%3" + "plt.show()" + ).arg(variable, function, limits); + break; + + case PythonSettings::EnumPlotExtenstionGraphicPackage::pylab: + if (!left.isEmpty() && !right.isEmpty()) + limits = QString::fromLatin1("pylab.xlim(%1, %2)\n").arg(left, right); + command = QString::fromLatin1( + "import pylab\n" + "\n" + "pylab.clf()\n" + "pylab.plot(%1, %2)\n" + "%3" + "pylab.show()" + ).arg(variable, function, limits); + break; + + case PythonSettings::EnumPlotExtenstionGraphicPackage::plotly: + if (!left.isEmpty() && !right.isEmpty()) + limits = QString::fromLatin1("fig.update_layout(xaxis=dict(range=[%1, %2]))\n").arg(left, right); + command = QString::fromLatin1( + "import plotly.graph_objects as go\n" + "\n" + "fig = go.Figure(data=go.Scatter(x=%1, y=%2))\n" + "%3" + "fig.show()" + ).arg(variable, function, limits); + break; + + case PythonSettings::EnumPlotExtenstionGraphicPackage::gr: + if (!left.isEmpty() && !right.isEmpty()) + limits = QString::fromLatin1("\nmlab.xlim(%1, %2)").arg(left, right); + command = QString::fromLatin1( + "from gr.pygr import mlab\n" + "\n" + "mlab.plot(%1, %2)" + "%3" + ).arg(variable, function, limits); + break; + + case PythonSettings::EnumPlotExtenstionGraphicPackage::bokeh: + if (!left.isEmpty() && !right.isEmpty()) + limits = QString::fromLatin1("x_range=(%1, %2)").arg(left, right); + command = QString::fromLatin1( + "from bokeh.plotting import figure, show\n" + "\n" + "fig = figure(%3)\n" + "fig.line(%1, %2)\n" + "show(fig)" + ).arg(variable, function, limits); + break; + }; + + return command; +} + +QString PythonPlotExtension::plotFunction3d(const QString& function, const VariableParameter& var1, const VariableParameter& var2) +{ + QString command; + + const Interval& interval1 = var1.second; + const Interval& interval2 = var2.second; + + QString interval1Limits; + QString interval2Limits; + + int val = PythonSettings::plotExtenstionGraphicPackage(); + switch (val) + { + case PythonSettings::EnumPlotExtenstionGraphicPackage::matplotlib: + if(!interval1.first.isEmpty() && !interval1.second.isEmpty()){ + interval1Limits = QString::fromLatin1("ax3D.set_xlim3d(%1, %2)\n").arg(interval1.first, interval1.second); + } + + if(!interval2.first.isEmpty() && !interval2.second.isEmpty()){ + interval2Limits = QString::fromLatin1("ax3D.set_ylim3d(%1, %2)\n").arg(interval2.first, interval2.second); + } + + command = QString::fromLatin1( + "import matplotlib.pyplot as plt\n" + "from mpl_toolkits.mplot3d import Axes3D\n\n" + "fig3D = plt.figure()\n" + "ax3D = fig3D.gca(projection='3d')\n" + "ax3D.plot_surface(%1, %2, %3)\n" \ + "%4%5" \ + "plt.show()" + ).arg(var1.first, var2.first, function, interval1Limits, interval2Limits); + break; + + case PythonSettings::EnumPlotExtenstionGraphicPackage::pylab: + if(!interval1.first.isEmpty() && !interval1.second.isEmpty()){ + interval1Limits = QString::fromLatin1("ax3D.set_xlim3d(%1, %2)\n").arg(interval1.first, interval1.second); + } + + if(!interval2.first.isEmpty() && !interval2.second.isEmpty()){ + interval2Limits = QString::fromLatin1("ax3D.set_ylim3d(%1, %2)\n").arg(interval2.first, interval2.second); + } + + command = QString::fromLatin1( + "import pylab\n" + "from mpl_toolkits.mplot3d import Axes3D\n\n" + "fig3D = pylab.figure()\n" + "ax3D = fig3D.gca(projection='3d')\n" + "ax3D.plot_surface(%1, %2, %3)\n" \ + "%4%5" \ + "pylab.show()" + ).arg(var1.first, var2.first, function, interval1Limits, interval2Limits); + break; + + case PythonSettings::EnumPlotExtenstionGraphicPackage::plotly: + if(!interval1.first.isEmpty() && !interval1.second.isEmpty()){ + interval1Limits = QString::fromLatin1("fig.update_layout(xaxis=dict(range=[%1, %2]))\n").arg(interval1.first, interval1.second); + } + + if(!interval2.first.isEmpty() && !interval2.second.isEmpty()){ + interval2Limits = QString::fromLatin1("fig.update_layout(yaxis=dict(range=[%1, %2]))\n").arg(interval2.first, interval2.second); + } + + command = QString::fromLatin1( + "import plotly.graph_objects as go\n" + "\n" + "fig = go.Figure(data=go.Scatter3d(x=%1, y=%2, z=%3))\n" + "%4%5" + "fig.show()" + ).arg(var1.first, var2.first, function, interval1Limits, interval2Limits); + break; + + case PythonSettings::EnumPlotExtenstionGraphicPackage::gr: + { + if(!interval1.first.isEmpty() && !interval1.second.isEmpty()){ + interval1Limits = QString::fromLatin1("mlab.xlim(%1, %2)\n").arg(interval1.first, interval1.second); + } + + if(!interval2.first.isEmpty() && !interval2.second.isEmpty()){ + interval2Limits = QString::fromLatin1("mlab.ylim(%1, %2)").arg(interval2.first, interval2.second); + } + QString newLinePlacement; + if(!interval1Limits.isEmpty() || !interval2Limits.isEmpty()) + newLinePlacement = QLatin1String("\n"); + + command = QString::fromLatin1( + "from gr.pygr import mlab\n" + "\n" + "mlab.plot3(%1, %2, %3)%6" + "%4%5" + ).arg(var1.first, var2.first, function, interval1Limits, interval2Limits, newLinePlacement); + } + break; + + case PythonSettings::EnumPlotExtenstionGraphicPackage::bokeh: + command = i18n("# Sorry, but Bokeh doesn't support 3d plotting"); + break; + }; + + return command; +} + +PYTHON_EXT_CDTOR(Script) + +QString PythonScriptExtension::runExternalScript(const QString& path) +{ + return QString::fromLatin1("exec(open(\"%1\").read())").arg(path); +} + +QString PythonScriptExtension::scriptFileFilter() +{ + return i18n("Python script file (*.py)"); +} + +QString PythonScriptExtension::highlightingMode() +{ + return QLatin1String("python"); +} + +PYTHON_EXT_CDTOR(VariableManagement) + +QString PythonVariableManagementExtension::addVariable(const QString& name, const QString& value) +{ + return setValue(name, value); +} + +QString PythonVariableManagementExtension::setValue(const QString& name, const QString& value) +{ + return QString::fromLatin1("%1 = %2").arg(name, value); +} + +QString PythonVariableManagementExtension::removeVariable(const QString& name) +{ + return QString::fromLatin1("del(%1)").arg(name); +} + +QString PythonVariableManagementExtension::clearVariables() +{ + return fromSource(QLatin1String(":/py/variables_cleaner.py")); +} + +QString PythonVariableManagementExtension::saveVariables(const QString& fileName) +{ + return fromSource(QLatin1String(":/py/variables_saver.py")).arg(fileName); +} + +QString PythonVariableManagementExtension::loadVariables(const QString& fileName) +{ + return fromSource(QLatin1String(":/py/variables_loader.py")).arg(fileName); +} diff --git a/src/backends/python/pythonextensions.h b/src/backends/python/pythonextensions.h new file mode 100644 index 0000000..a045333 --- /dev/null +++ b/src/backends/python/pythonextensions.h @@ -0,0 +1,66 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2013 Filipe Saraiva +*/ + +#ifndef PYTHONEXTENSIONS_H +#define PYTHONEXTENSIONS_H + +#include + +#define PYTHON_EXT_CDTOR_DECL(name) Python##name##Extension(QObject* parent); \ + ~Python##name##Extension(); + +class PythonLinearAlgebraExtension : public Cantor::LinearAlgebraExtension +{ + public: + PYTHON_EXT_CDTOR_DECL(LinearAlgebra) + QString createVector(const QStringList& entries, VectorType type) override; + QString nullVector(int size, VectorType type) override; + QString createMatrix(const Cantor::LinearAlgebraExtension::Matrix& matrix) override; + QString identityMatrix(int size) override; + QString nullMatrix(int rows, int columns) override; + QString rank(const QString& matrix) override; + QString invertMatrix(const QString& matrix) override; + QString charPoly(const QString& matrix) override; + QString eigenVectors(const QString& matrix) override; + QString eigenValues(const QString& matrix) override; +}; + +class PythonPackagingExtension : public Cantor::PackagingExtension +{ + public: + PYTHON_EXT_CDTOR_DECL(Packaging) + QString importPackage(const QString& module) override; +}; + +class PythonPlotExtension : public Cantor::PlotExtension +{ + public: + PYTHON_EXT_CDTOR_DECL(Plot) + QString plotFunction2d(const QString& function, const QString& variable, const QString& left, const QString& right) override; + QString plotFunction3d(const QString& function, const VariableParameter& var1, const VariableParameter& var2) override; +}; + +class PythonScriptExtension : public Cantor::ScriptExtension +{ + public: + PYTHON_EXT_CDTOR_DECL(Script) + QString scriptFileFilter() override; + QString highlightingMode() override; + QString runExternalScript(const QString& path) override; +}; + +class PythonVariableManagementExtension : public Cantor::VariableManagementExtension +{ + public: + PYTHON_EXT_CDTOR_DECL(VariableManagement) + QString addVariable(const QString& name, const QString& value) override; + QString setValue(const QString& name, const QString& value) override; + QString removeVariable(const QString& name) override; + QString saveVariables(const QString& fileName) override; + QString loadVariables(const QString& fileName) override; + QString clearVariables() override; +}; + +#endif // PYTHONEXTENSIONS_H diff --git a/src/backends/python/pythonhighlighter.cpp b/src/backends/python/pythonhighlighter.cpp new file mode 100644 index 0000000..40711dc --- /dev/null +++ b/src/backends/python/pythonhighlighter.cpp @@ -0,0 +1,116 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2013 Filipe Saraiva +*/ + +#include "pythonhighlighter.h" +#include "pythonkeywords.h" +#include "pythonsession.h" + +PythonHighlighter::PythonHighlighter(QObject* parent, PythonSession* session) : Cantor::DefaultHighlighter(parent, session) +{ + addRule(QRegularExpression(QStringLiteral("\\b\\w+(?=\\()")), functionFormat()); + + //Code highlighting the different keywords + addKeywords(PythonKeywords::instance()->keywords()); + addFunctions(PythonKeywords::instance()->functions()); + addVariables(PythonKeywords::instance()->variables()); +} + +void PythonHighlighter::highlightBlock(const QString &text) +{ + if (skipHighlighting(text)) + return; + + // Do some backend independent highlighting (brackets etc.) + DefaultHighlighter::highlightBlock(text); + + const int IN_MULTILINE_COMMENT = 1; + const int IN_SMALL_QUOTE_STRING = 2; + const int IN_SINGLE_QUOTE_STRING = 4; + const int IN_TRIPLE_QUOTE_STRING = 8; + + static const QRegularExpression multiLineCommentStartEnd(QStringLiteral("'''")); + static const QRegularExpression smallQuoteStartEnd(QStringLiteral("'")); + static const QRegularExpression singleQuoteStringStartEnd(QStringLiteral("\"")); + static const QRegularExpression tripleQuoteStringStartEnd(QStringLiteral("\"\"\"")); + static const QRegularExpression singleLineCommentStart(QStringLiteral("#")); + + int state = previousBlockState(); + if (state == -1) { + state = 0; + } + + QList flags = { + IN_TRIPLE_QUOTE_STRING, + IN_SINGLE_QUOTE_STRING, + IN_SMALL_QUOTE_STRING, + IN_MULTILINE_COMMENT + }; + const QVector regexps = { + tripleQuoteStringStartEnd, + singleQuoteStringStartEnd, + smallQuoteStartEnd, + multiLineCommentStartEnd + }; + QList formats = { + stringFormat(), + stringFormat(), + stringFormat(), + commentFormat() + }; + + int pos = 0; + while (pos < text.length()) { + // Trying to close current environments + bool triggered = false; + for (int i = 0; i < flags.size() && !triggered; i++) { + int flag = flags[i]; + QTextCharFormat &format = formats[i]; + if (state & flag) { + const QRegularExpressionMatch match = regexps.at(i).match(text, pos); + int length; + if (!match.hasMatch()) { + length = text.length() - pos; + } else { // found a match + length = match.capturedStart(0) - pos + match.capturedLength(0); + state -= flag; + } + setFormat(pos, length, format); + pos = pos + length; + triggered = true; + } + } + if (triggered) { + continue; + } + + QRegularExpressionMatch minMatch; + int minPos = INT_MAX; + int minIdx = -1; + for (int i = 0; i < regexps.size(); i++) { + const QRegularExpressionMatch match = regexps.at(i).match(text, pos); + if (match.hasMatch()) { + minPos = qMin(minPos, match.capturedStart(0)); + minIdx = i; + minMatch = match; + } + } + + const int singleLineCommentStartPos = text.indexOf(singleLineCommentStart, pos); + + if (singleLineCommentStartPos != -1 + && singleLineCommentStartPos < minPos) { + setFormat(singleLineCommentStartPos, text.length() - singleLineCommentStartPos, commentFormat()); + break; + } else if (minMatch.hasMatch()) { + state += flags[minIdx]; + pos = minPos + minMatch.capturedLength(0); + setFormat(minPos, minMatch.capturedLength(0), formats[minIdx]); + } else { + break; + } + } + + setCurrentBlockState(state); +} diff --git a/src/backends/python/pythonhighlighter.h b/src/backends/python/pythonhighlighter.h new file mode 100644 index 0000000..243eb29 --- /dev/null +++ b/src/backends/python/pythonhighlighter.h @@ -0,0 +1,30 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2013 Filipe Saraiva +*/ + +#ifndef _PYTHONHIGHLIGHTER_H +#define _PYTHONHIGHLIGHTER_H + +#include + +#include "defaulthighlighter.h" +class PythonSession; + +class PythonHighlighter : public Cantor::DefaultHighlighter +{ + Q_OBJECT + + public: + explicit PythonHighlighter(QObject* parent, PythonSession* session); + ~PythonHighlighter() override = default; + + protected: + void highlightBlock(const QString& text) override; + + private: + QRegularExpression commentStartExpression; + QRegularExpression commentEndExpression; +}; + +#endif /* _PYTHONHIGHLIGHTER_H */ diff --git a/src/backends/python/pythonkeywords.cpp b/src/backends/python/pythonkeywords.cpp new file mode 100644 index 0000000..9b28022 --- /dev/null +++ b/src/backends/python/pythonkeywords.cpp @@ -0,0 +1,83 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Filipe Saraiva +*/ + +#include "pythonkeywords.h" + +#include +#include + +#include +#include + +PythonKeywords::PythonKeywords() +{ + qDebug() << "PythonKeywords constructor"; + +} + +PythonKeywords* PythonKeywords::instance() +{ + static PythonKeywords* inst = nullptr; + if(inst == nullptr) + { + inst = new PythonKeywords(); + inst->loadKeywords(); + } + + return inst; +} + +void PythonKeywords::loadKeywords() +{ + KSyntaxHighlighting::Repository m_repository; + KSyntaxHighlighting::Definition definition = m_repository.definitionForName(QLatin1String("Python")); + + m_keywords << definition.keywordList(QLatin1String("import")); + m_keywords << definition.keywordList(QLatin1String("defs")); + m_keywords << definition.keywordList(QLatin1String("operators")); + m_keywords << definition.keywordList(QLatin1String("flow")); + + m_functions << definition.keywordList(QLatin1String("builtinfuncs")); + m_functions << definition.keywordList(QLatin1String("overloaders")); + + m_variables << definition.keywordList(QLatin1String("specialvars")); + + // We use qBinarySearch in PythonCompletetionObject for type fetching + std::sort(m_keywords.begin(), m_keywords.end()); + std::sort(m_functions.begin(), m_functions.end()); + std::sort(m_variables.begin(), m_variables.end()); +} + +void PythonKeywords::loadFromModule(const QString& module, const QStringList& keywords) +{ + qDebug() << "Module imported" << module; + + if (module.isEmpty()){ + for(int contKeyword = 0; contKeyword < keywords.size(); contKeyword++){ + m_functions << keywords.at(contKeyword); + } + } else { + m_variables << module; + + for(int contKeyword = 0; contKeyword < keywords.size(); contKeyword++){ + m_functions << module + QLatin1String(".") + keywords.at(contKeyword); + } + } +} + +const QStringList& PythonKeywords::variables() const +{ + return m_variables; +} + +const QStringList& PythonKeywords::functions() const +{ + return m_functions; +} + +const QStringList& PythonKeywords::keywords() const +{ + return m_keywords; +} diff --git a/src/backends/python/pythonkeywords.h b/src/backends/python/pythonkeywords.h new file mode 100644 index 0000000..57c43a3 --- /dev/null +++ b/src/backends/python/pythonkeywords.h @@ -0,0 +1,33 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2013 Filipe Saraiva +*/ + +#ifndef _PYTHONKEYWORDS_H +#define _PYTHONKEYWORDS_H + +#include + +class PythonKeywords +{ + private: + PythonKeywords(); + ~PythonKeywords() = default; + public: + static PythonKeywords* instance(); + + const QStringList& functions() const; + const QStringList& keywords() const; + const QStringList& variables() const; + + void loadFromModule(const QString& module, const QStringList& keywords); + + private: + void loadKeywords(); + + private: + QStringList m_functions; + QStringList m_keywords; + QStringList m_variables; +}; +#endif /* _PYTHONKEYWORDS_H */ diff --git a/src/backends/python/pythonserver.cpp b/src/backends/python/pythonserver.cpp new file mode 100644 index 0000000..e89db01 --- /dev/null +++ b/src/backends/python/pythonserver.cpp @@ -0,0 +1,185 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2015 Minh Ngo +*/ + +#include "pythonserver.h" +#include +#include +#include + +#include + +static_assert(PY_MAJOR_VERSION == 3, "This python server works only with Python 3"); + +using namespace std; + +namespace +{ + string pyObjectToQString(PyObject* obj) + { + return string(PyUnicode_AsUTF8(obj)); + } +} + +void PythonServer::login() +{ + Py_InspectFlag = 1; + Py_Initialize(); + m_pModule = PyImport_AddModule("__main__"); + PyRun_SimpleString("import sys"); + filePath = "python_cantor_worksheet"; +} + +void PythonServer::interrupt() +{ + PyErr_SetInterrupt(); +} + +void PythonServer::runPythonCommand(const string& command) +{ + PyObject* py_dict = PyModule_GetDict(m_pModule); + m_error = false; + + const char* prepareCommand = + "import sys;\n"\ + "class CatchOutPythonBackend:\n"\ + " def __init__(self, std_stream):\n"\ + " self.value = ''\n"\ + " self.encoding = std_stream.encoding\n"\ + " def flush():\n"\ + " pass\n"\ + " def write(self, txt):\n"\ + " self.value += txt\n"\ + "outputPythonBackend = CatchOutPythonBackend(sys.stdout)\n"\ + "errorPythonBackend = CatchOutPythonBackend(sys.stderr)\n"\ + "sys.stdout = outputPythonBackend\n"\ + "sys.stderr = errorPythonBackend\n"; + PyRun_SimpleString(prepareCommand); + + PyObject* compile = Py_CompileString(command.c_str(), filePath.c_str(), Py_single_input); + // There are two reasons for the error: + // 1) This code is not single expression, so we can't compile this with flag Py_single_input + // 2) There are errors in the code + if (PyErr_Occurred()) + { + PyErr_Clear(); + // Try to recompile code as sequence of expressions + compile = Py_CompileString(command.c_str(), filePath.c_str(), Py_file_input); + if (PyErr_Occurred()) + { + // We now know, that we have a syntax error, so print the traceback and exit + m_error = true; + PyErr_PrintEx(0); + return; + } + } + PyEval_EvalCode(compile, py_dict, py_dict); + + if (PyErr_Occurred()) + { + m_error = true; + PyErr_PrintEx(0); + } +} + +string PythonServer::getError() const +{ + PyObject *errorPython = PyObject_GetAttrString(m_pModule, "errorPythonBackend"); + PyObject *error = PyObject_GetAttrString(errorPython, "value"); + + return pyObjectToQString(error); +} + +string PythonServer::getOutput() const +{ + PyObject *outputPython = PyObject_GetAttrString(m_pModule, "outputPythonBackend"); + PyObject *output = PyObject_GetAttrString(outputPython, "value"); + + return pyObjectToQString(output); +} + +void PythonServer::setFilePath(const string& path, const string& dir) +{ + PyRun_SimpleString(("import sys; sys.argv = ['" + path + "']").c_str()); + if (path.length() == 0) // New session, not from file + { + PyRun_SimpleString("import sys; sys.path.insert(0, '')"); + } + else + { + this->filePath = path; + PyRun_SimpleString(("import sys; sys.path.insert(0, '" + dir + "')").c_str()); + PyRun_SimpleString(("__file__ = '"+path+"'").c_str()); + } +} + +string PythonServer::variables(bool parseValue) +{ + PyRun_SimpleStringFlags( + "try: \n" + " import numpy \n" + " __cantor_numpy_internal__ = numpy.get_printoptions()['threshold'] \n" + " numpy.set_printoptions(threshold=100000000) \n" + "except ModuleNotFoundError: \n" + " pass \n", nullptr + ); + + PyObject* py_dict = PyModule_GetDict(m_pModule); + PyRun_SimpleString("__tmp_globals__ = globals()"); + PyObject* globals = PyObject_GetAttrString(m_pModule,"__tmp_globals__"); + PyObject *key, *value; + Py_ssize_t pos = 0; + + vector vars; + while (PyDict_Next(globals, &pos, &key, &value)) { + const string& keyString = pyObjectToQString(key); + if (keyString.substr(0, 2) == string("__")) + continue; + + if (keyString == string("CatchOutPythonBackend") + || keyString == string("errorPythonBackend") + || keyString == string("outputPythonBackend")) + continue; + + if (PyModule_Check(value)) + continue; + + if (PyFunction_Check(value)) + continue; + + if (PyType_Check(value)) + continue; + + string valueString; + string sizeString; + if (parseValue) + { + valueString = pyObjectToQString(PyObject_Repr(value)); + std::string command = "sys.getsizeof("+keyString+")"; + sizeString = pyObjectToQString(PyObject_Repr(PyRun_String(command.c_str(), Py_eval_input, py_dict, py_dict))); + } + + vars.push_back(keyString + char(17) + valueString + char(17) + sizeString); + } + + PyRun_SimpleStringFlags( + "try: \n" + " import numpy \n" + " numpy.set_printoptions(threshold=__cantor_numpy_internal__) \n" + " del __cantor_numpy_internal__ \n" + "except ModuleNotFoundError: \n" + " pass \n", nullptr + ); + + string result; + for (const string& s : vars) + result += s + char(18); + result += char(18); + return result; +} + +bool PythonServer::isError() const +{ + return m_error; +} diff --git a/src/backends/python/pythonserver.h b/src/backends/python/pythonserver.h new file mode 100644 index 0000000..0c201ef --- /dev/null +++ b/src/backends/python/pythonserver.h @@ -0,0 +1,34 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2015 Minh Ngo +*/ + +#ifndef _PYTHONSERVER_H +#define _PYTHONSERVER_H +#include + +struct _object; +using PyObject = _object; + +class PythonServer +{ + public: + explicit PythonServer() = default; + + public: + void login(); + void interrupt(); + void setFilePath(const std::string& path, const std::string& dir); + void runPythonCommand(const std::string& command); + std::string getOutput() const; + std::string getError() const; + bool isError() const; + std::string variables(bool parseValue); + + private: + PyObject* m_pModule{nullptr}; + bool m_error{false}; + std::string filePath; +}; + +#endif diff --git a/src/backends/python/pythonservermain.cpp b/src/backends/python/pythonservermain.cpp new file mode 100644 index 0000000..a0f4d53 --- /dev/null +++ b/src/backends/python/pythonservermain.cpp @@ -0,0 +1,127 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2015 Minh Ngo +*/ + +#include +#include +#include +#include + +#include "pythonserver.h" + +using namespace std; + +const char messageEnd = 29; +const char recordSep = 30; +const char unitSep = 31; + +PythonServer server; +bool isInterrupted = false; + +string LOGIN("login"); +string EXIT("exit"); +string CODE("code"); +string FILEPATH("setFilePath"); +string MODEL("model"); + +void signal_handler(int signal) +{ + if (signal == SIGINT) + { + isInterrupted = true; + server.interrupt(); + } +} + +vector split(string s, char delimiter) +{ + vector results; + + size_t pos = 0; + std::string token; + while ((pos = s.find(delimiter)) != std::string::npos) { + token = s.substr(0, pos); + results.push_back(token); + s.erase(0, pos + 1); + } + results.push_back(s); + + return results; +} + +int main() +{ + std::signal(SIGINT, signal_handler); + + std::cout << "ready" << std::endl; + + std::string input; + while (getline(std::cin, input, messageEnd)) + { + const vector& records = split(input, recordSep); + + if (records.size() == 2) + { + if (records[0] == EXIT) + { + //Exit from cycle and finish program + break; + } + else if (records[0] == LOGIN) + { + server.login(); + } + if (records[0] == FILEPATH) + { + const vector& args = split(records[1], unitSep); + if (args.size() == 2) + server.setFilePath(args[0], args[1]); + } + else if (records[0] == CODE) + { + server.runPythonCommand(records[1]); + + if (!isInterrupted) + { + const string& result = + server.getOutput() + + unitSep + + server.getError() + + unitSep + + to_string((int)server.isError()) + + messageEnd; + + std::cout << result.c_str(); + } + else + { + // No replay when interrupted + isInterrupted = false; + } + } + else if (records[0] == MODEL) + { + bool ok, val; + try { + val = (bool)stoi(records[1]); + ok = true; + } catch (std::invalid_argument e) { + ok = false; + }; + + string result; + if (ok) + result = server.variables(val) + unitSep; + else + result = unitSep + string("Invalid argument for 'model' command"); + result += messageEnd; + + std::cout << result.c_str(); + } + std::cout.flush(); + } + } + + return 0; +} diff --git a/src/backends/python/pythonsession.cpp b/src/backends/python/pythonsession.cpp new file mode 100644 index 0000000..46b21d7 --- /dev/null +++ b/src/backends/python/pythonsession.cpp @@ -0,0 +1,320 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Filipe Saraiva + SPDX-FileCopyrightText: 2015 Minh Ngo +*/ + +#include +#include +#include "pythonsession.h" +#include "pythonexpression.h" +#include "pythonvariablemodel.h" +#include "pythonhighlighter.h" +#include "pythoncompletionobject.h" +#include "pythonkeywords.h" +#include "pythonutils.h" +#include "settings.h" + +#include + +#include +#include +#include +#include + +#include +#include + +#ifndef Q_OS_WIN +#include +#endif + +const QChar recordSep(30); +const QChar unitSep(31); +const QChar messageEnd = 29; + +PythonSession::PythonSession(Cantor::Backend* backend) : Session(backend) +{ + setVariableModel(new PythonVariableModel(this)); +} + +PythonSession::~PythonSession() +{ + if (m_process) { + disconnect(m_process, &QProcess::errorOccurred, this, &PythonSession::reportServerProcessError); + m_process->kill(); + m_process->deleteLater(); + m_process = nullptr; + } +} + +void PythonSession::login() +{ + qDebug()<<"login"; + emit loginStarted(); + + if (m_process) + m_process->deleteLater(); + + m_process = new QProcess(this); + m_process->setProcessChannelMode(QProcess::ForwardedErrorChannel); + +#ifdef Q_OS_WIN + const QString& serverExecutablePath = QStandardPaths::findExecutable(QLatin1String("cantor_pythonserver.exe")); + // On Windows QProcess can't handle paths with spaces, so add escaping + m_process->start(QLatin1String("\"") + serverExecutablePath + QLatin1String("\"")); +#else + const QString& serverExecutablePath = QStandardPaths::findExecutable(QLatin1String("cantor_pythonserver")); + m_process->start(serverExecutablePath); +#endif + + m_process->waitForStarted(); + m_process->waitForReadyRead(); + QTextStream stream(m_process->readAllStandardOutput()); + + const QString& readyStatus = QString::fromLatin1("ready"); + while (m_process->state() == QProcess::Running) + { + const QString& rl = stream.readLine(); + if (rl == readyStatus) + break; + } + + connect(m_process, &QProcess::readyReadStandardOutput, this, &PythonSession::readOutput); + connect(m_process, &QProcess::errorOccurred, this, &PythonSession::reportServerProcessError); + + sendCommand(QLatin1String("login")); + QString dir; + if (!m_worksheetPath.isEmpty()) + dir = QFileInfo(m_worksheetPath).absoluteDir().absolutePath(); + sendCommand(QLatin1String("setFilePath"), QStringList() << m_worksheetPath << dir); + + std::random_device rd; + std::mt19937 mt(rd()); + std::uniform_int_distribution rand_dist(0, 999999999); + m_plotFilePrefixPath = + QDir::tempPath() + + QLatin1String("/cantor_python_") + + QString::number(m_process->processId()) + + QLatin1String("_") + + QString::number(rand_dist(mt)) + + QLatin1String("_"); + + m_plotFileCounter = 0; + evaluateExpression(QLatin1String("__cantor_plot_global_counter__ = 0"), Cantor::Expression::DeleteOnFinish, true); + + const QStringList& scripts = PythonSettings::autorunScripts(); + if(!scripts.isEmpty()){ + QString autorunScripts = scripts.join(QLatin1String("\n")); + evaluateExpression(autorunScripts, Cantor::Expression::DeleteOnFinish, true); + variableModel()->update(); + } + + changeStatus(Session::Done); + emit loginDone(); +} + +void PythonSession::logout() +{ + if (!m_process) + return; + + if (m_process->exitStatus() != QProcess::CrashExit && m_process->error() != QProcess::WriteError) + sendCommand(QLatin1String("exit")); + + if(m_process->state() == QProcess::Running && !m_process->waitForFinished(1000)) + { + disconnect(m_process, &QProcess::errorOccurred, this, &PythonSession::reportServerProcessError); + m_process->kill(); + qDebug()<<"cantor_python server still running, process kill enforced"; + } + m_process->deleteLater(); + m_process = nullptr; + + if (!m_plotFilePrefixPath.isEmpty()) + { + for (int i = 0; i < m_plotFileCounter; i++) + QFile::remove(m_plotFilePrefixPath + QString::number(i) + QLatin1String(".png")); + m_plotFilePrefixPath.clear(); + m_plotFileCounter = 0; + } + + qDebug()<<"logout"; + Session::logout(); +} + +void PythonSession::interrupt() +{ + if(!expressionQueue().isEmpty()) + { + qDebug()<<"interrupting " << expressionQueue().first()->command(); + if(m_process && m_process->state() != QProcess::NotRunning) + { +#ifndef Q_OS_WIN + const int pid = m_process->processId(); + kill(pid, SIGINT); +#else + ; //TODO: interrupt the process on windows +#endif + } + for (auto* expression : expressionQueue()) + expression->setStatus(Cantor::Expression::Interrupted); + expressionQueue().clear(); + + m_output.clear(); + + qDebug()<<"done interrupting"; + } + + changeStatus(Cantor::Session::Done); +} + +Cantor::Expression* PythonSession::evaluateExpression(const QString& cmd, Cantor::Expression::FinishingBehavior behave, bool internal) +{ + qDebug() << "evaluating: " << cmd; + auto* expr = new PythonExpression(this, internal); + expr->setFinishingBehavior(behave); + expr->setCommand(cmd); + expr->evaluate(); + + return expr; +} + +QSyntaxHighlighter* PythonSession::syntaxHighlighter(QObject* parent) +{ + return new PythonHighlighter(parent, this); +} + +Cantor::CompletionObject* PythonSession::completionFor(const QString& command, int index) +{ + return new PythonCompletionObject(command, index, this); +} + +void PythonSession::runFirstExpression() +{ + if (expressionQueue().isEmpty()) + return; + + auto* expr = expressionQueue().first(); + const QString& command = expr->internalCommand(); + qDebug() << "run first expression" << command; + expr->setStatus(Cantor::Expression::Computing); + + if (expr->isInternal() && command.startsWith(QLatin1String("%variables "))) + { + const QString arg = command.section(QLatin1String(" "), 1); + sendCommand(QLatin1String("model"), QStringList(arg)); + } + else + sendCommand(QLatin1String("code"), QStringList(expr->internalCommand())); +} + +void PythonSession::sendCommand(const QString& command, const QStringList arguments) const +{ + qDebug() << "send command: " << command << arguments; + const QString& message = command + recordSep + arguments.join(unitSep) + messageEnd; + m_process->write(message.toLocal8Bit()); +} + +void PythonSession::readOutput() +{ + while (m_process->bytesAvailable() > 0) + { + const QByteArray& bytes = m_process->readAll(); + m_output.append(QString::fromUtf8(bytes)); + } + + qDebug() << "m_output: " << m_output; + + if (!m_output.contains(messageEnd)) + return; + + const QStringList packages = m_output.split(messageEnd, QString::SkipEmptyParts); + if (m_output.endsWith(messageEnd)) + m_output.clear(); + else + m_output = m_output.section(messageEnd, -1); + + for (const QString& message: packages) + { + if (expressionQueue().isEmpty()) + break; + + const QString& output = message.section(unitSep, 0, 0); + const QString& error = message.section(unitSep, 1, 1); + bool isError = message.section(unitSep, 2, 2).toInt(); + auto* expr = expressionQueue().first(); + if (isError) + { + if(error.isEmpty()){ + expr->parseOutput(output); + } else { + expr->parseError(error); + } + } + else + { + static_cast(expr)->parseWarning(error); + expr->parseOutput(output); + } + finishFirstExpression(true); + } +} + +void PythonSession::setWorksheetPath(const QString& path) +{ + m_worksheetPath = path; +} + +void PythonSession::reportServerProcessError(QProcess::ProcessError serverError) +{ + switch(serverError) + { + case QProcess::Crashed: + emit error(i18n("Cantor Python server stopped working.")); + break; + + case QProcess::FailedToStart: + emit error(i18n("Failed to start Cantor python server.")); + break; + + default: + emit error(i18n("Communication with Cantor python server failed for unknown reasons.")); + break; + } + reportSessionCrash(); +} + +int& PythonSession::plotFileCounter() +{ + return m_plotFileCounter; +} + +QString PythonSession::plotFilePrefixPath() +{ + return m_plotFilePrefixPath; +} + +void PythonSession::updateGraphicPackagesFromSettings() +{ + updateEnabledGraphicPackages(backend()->availableGraphicPackages(), m_plotFilePrefixPath); +} + +QString PythonSession::graphicPackageErrorMessage(QString packageId) const +{ + if (packageId == QLatin1String("matplotlib")) + { + return i18n( + "For using integrated graphics with Matplotlib package, you need to install \"matplotlib\" python package first." + ); + } + else if (packageId == QLatin1String("plotly")) + { + return i18n( + "For using integrated graphic with Plot.ly, you need to install \"plotly\" python package and special Plot.ly-compatible " + "\"orca\" executable. See \"Static Image Export\" article in Plot.ly documentation for details." + ); + } + return QString(); +} + diff --git a/src/backends/python/pythonsession.h b/src/backends/python/pythonsession.h new file mode 100644 index 0000000..a619d56 --- /dev/null +++ b/src/backends/python/pythonsession.h @@ -0,0 +1,53 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Filipe Saraiva + SPDX-FileCopyrightText: 2015 Minh Ngo +*/ + +#ifndef _PYTHONSESSION_H +#define _PYTHONSESSION_H + +#include "session.h" +#include +#include + +class PythonSession : public Cantor::Session +{ + Q_OBJECT + public: + PythonSession(Cantor::Backend*); + ~PythonSession() override; + + void login() override; + void logout() override; + + void interrupt() override; + + Cantor::Expression* evaluateExpression(const QString& command, Cantor::Expression::FinishingBehavior behave = Cantor::Expression::FinishingBehavior::DoNotDelete, bool internal = false) override; + Cantor::CompletionObject* completionFor(const QString& command, int index=-1) override; + QSyntaxHighlighter* syntaxHighlighter(QObject* parent) override; + void setWorksheetPath(const QString&) override; + + QString plotFilePrefixPath(); + int& plotFileCounter(); + + private: + QProcess* m_process{nullptr}; + QString m_worksheetPath; + QString m_output; + QString m_plotFilePrefixPath; + int m_plotFileCounter{0}; + + private Q_SLOT: + void readOutput(); + void reportServerProcessError(QProcess::ProcessError); + + private: + void runFirstExpression() override; + void updateGraphicPackagesFromSettings(); + QString graphicPackageErrorMessage(QString packageId) const override; + + void sendCommand(const QString& command, const QStringList arguments = QStringList()) const; +}; + +#endif /* _PYTHONSESSION_H */ diff --git a/src/backends/python/pythonsettingswidget.cpp b/src/backends/python/pythonsettingswidget.cpp new file mode 100644 index 0000000..26ff43b --- /dev/null +++ b/src/backends/python/pythonsettingswidget.cpp @@ -0,0 +1,30 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020 Alexander Semke + */ + +#include "pythonsettingswidget.h" + +PythonSettingsWidget::PythonSettingsWidget(QWidget* parent, const QString& id) : BackendSettingsWidget(parent, id) +{ + setupUi(this); + + m_tabWidget = tabWidget; + m_tabDocumentation = tabDocumentation; + connect(tabWidget, &QTabWidget::currentChanged, this, &BackendSettingsWidget::tabChanged); +} diff --git a/src/backends/python/pythonsettingswidget.h b/src/backends/python/pythonsettingswidget.h new file mode 100644 index 0000000..80e9dba --- /dev/null +++ b/src/backends/python/pythonsettingswidget.h @@ -0,0 +1,35 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020 Alexander Semke + */ + +#ifndef PYTHONSETTINGSWIDGET_H +#define PYTHONSETTINGSWIDGET_H + +#include "ui_settings.h" +#include "../backendsettingswidget.h" + +class PythonSettingsWidget : public BackendSettingsWidget, public Ui::PythonSettingsBase +{ + Q_OBJECT + + public: + explicit PythonSettingsWidget(QWidget* parent = nullptr, const QString& id = QString()); +}; + +#endif /* _PYTHONSETTINGSWIDGET_H */ diff --git a/src/backends/python/pythonutils.h b/src/backends/python/pythonutils.h new file mode 100644 index 0000000..5ef6c0b --- /dev/null +++ b/src/backends/python/pythonutils.h @@ -0,0 +1,24 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2015 Minh Ngo +*/ + +#ifndef _PYTHONUTILS_H +#define _PYTHONUTILS_H + +#include +#include + +inline QString fromSource(const QString& resourceName) +{ + QFile text(resourceName); + if (text.open(QIODevice::ReadOnly)) + return QString::fromUtf8(text.readAll()); + else + { + qWarning() << "Cantor Python resource" << resourceName << "didn't open - something wrong"; + return QString(); + } +} + +#endif diff --git a/src/backends/python/pythonvariablemodel.cpp b/src/backends/python/pythonvariablemodel.cpp new file mode 100644 index 0000000..86688c8 --- /dev/null +++ b/src/backends/python/pythonvariablemodel.cpp @@ -0,0 +1,83 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Nikita Sirgienko +*/ + +#include "pythonvariablemodel.h" +#include "pythonsession.h" +#include "textresult.h" + +#include +#include +#include +#include + +#include "settings.h" + +using namespace Cantor; + +PythonVariableModel::PythonVariableModel(PythonSession* session): + DefaultVariableModel(session) +{ +} + +PythonVariableModel::~PythonVariableModel() +{ + if (m_expression) + m_expression->setFinishingBehavior(Cantor::Expression::FinishingBehavior::DeleteOnFinish); +} + +void PythonVariableModel::update() +{ + if (m_expression) + return; + + int variableManagement = PythonSettings::variableManagement(); + const QString command = QString::fromLatin1("%variables %1").arg(variableManagement); + m_expression = session()->evaluateExpression(command, Cantor::Expression::FinishingBehavior::DoNotDelete, true); + connect(m_expression, &Cantor::Expression::statusChanged, this, &PythonVariableModel::extractVariables); +} + +void PythonVariableModel::extractVariables(Cantor::Expression::Status status) +{ + switch(status) + { + case Cantor::Expression::Done: + { + Cantor::Result* result = m_expression->result(); + if (result) + { + const QString data = result->data().toString(); + // In Cantor server response DC2(18) is delimiter between variables + const QStringList& records = data.split(QChar(18), QString::SkipEmptyParts); + + QList variables; + for (const QString& record : records) + { + // DC1(17) is delimiter between variable name and its value. + const QString& name = record.section(QChar(17), 0, 0); + const QString& value = record.section(QChar(17), 1, 1); + const QString& size = record.section(QChar(17), 2, 2); + + variables << Variable(name, value, size.toULongLong()); + } + + setVariables(variables); + } + break; + } + case Cantor::Expression::Interrupted: + case Cantor::Expression::Error: + { + qDebug() << "python variable model update finished with status" << (status == Cantor::Expression::Error? "Error" : "Interrupted"); + if (status == Cantor::Expression::Error) + qDebug() << "error message: " << m_expression->errorMessage(); + break; + } + default: + return; + } + + m_expression->deleteLater(); + m_expression=nullptr; +} diff --git a/src/backends/python/pythonvariablemodel.h b/src/backends/python/pythonvariablemodel.h new file mode 100644 index 0000000..9cb9e29 --- /dev/null +++ b/src/backends/python/pythonvariablemodel.h @@ -0,0 +1,29 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Nikita Sirgienko +*/ + +#ifndef _PYTHONVARIABLEMODEL_H +#define _PYTHONVARIABLEMODEL_H + +#include "defaultvariablemodel.h" + +class PythonSession; +class QDBusInterface; + +class PythonVariableModel : public Cantor::DefaultVariableModel +{ + public: + PythonVariableModel( PythonSession* session); + ~PythonVariableModel() override; + + void update() override; + + private: + Cantor::Expression* m_expression{nullptr}; + + private Q_SLOTS: + void extractVariables(Cantor::Expression::Status status); +}; + +#endif /* _PYTHONVARIABLEMODEL_H */ diff --git a/src/backends/python/settings.kcfgc b/src/backends/python/settings.kcfgc new file mode 100644 index 0000000..b12064d --- /dev/null +++ b/src/backends/python/settings.kcfgc @@ -0,0 +1,3 @@ +File=pythonbackend.kcfg +ClassName=PythonSettings +Singleton=true diff --git a/src/backends/python/settings.ui b/src/backends/python/settings.ui new file mode 100644 index 0000000..9aa0da8 --- /dev/null +++ b/src/backends/python/settings.ui @@ -0,0 +1,164 @@ + + + PythonSettingsBase + + + + 0 + 0 + 401 + 278 + + + + + + + 0 + + + + General + + + + + + Variable Management: + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Plot Integration: + + + + + + + Graphic package to be used in the Plot Assistant + + + Package for Plot Assistant + + + + + + + If enabled, plots will be shown inside of the worksheet. Otherwise, plots will be shown in an external window. + + + Enabled + + + + + + + Monitor the creation and destruction of variables and show the existing variables in the variable panel. + + + Enabled + + + + + + + + 0 + 0 + + + + Graphic package to be used in the Plot Assistant + + + + matplotlib + + + + + pylab + + + + + plot.ly + + + + + GR + + + + + bokeh + + + + + + + + + Autorun + + + + + + Commands to autorun + + + Qt::AlignCenter + + + + + + + + + + + Documentation + + + + + + + + + KComboBox + QComboBox +
      kcombobox.h
      +
      + + KEditListWidget + QWidget +
      keditlistwidget.h
      +
      +
      + + +
      diff --git a/src/backends/python/testpython.cpp b/src/backends/python/testpython.cpp new file mode 100644 index 0000000..e52ef20 --- /dev/null +++ b/src/backends/python/testpython.cpp @@ -0,0 +1,338 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2015 Minh Ngo + SPDX-FileCopyrightText: 2021-2022 Alexander Semke +*/ + +#include "testpython.h" + +#include "session.h" +#include "expression.h" +#include "imageresult.h" +#include "defaultvariablemodel.h" +#include "completionobject.h" + +#include "settings.h" + +QString TestPython3::backendName() +{ + return QLatin1String("python"); +} + +void TestPython3::testSimpleCommand() +{ + auto* e = evalExp(QLatin1String("2+2")); + + QVERIFY(e != nullptr); + QVERIFY(e->result()); + QVERIFY(e->result()->data().toString() == QLatin1String("4")); +} + +void TestPython3::testMultilineCommand() +{ + auto* e = evalExp(QLatin1String("print(2+2)\nprint(7*5)")); + + QVERIFY(e != nullptr); + QVERIFY(e->result()); + QVERIFY(e->result()->data().toString() == QLatin1String("4\n35")); +} + +void TestPython3::testCommandQueue() +{ + auto* e1 = session()->evaluateExpression(QLatin1String("0+1")); + auto* e2 = session()->evaluateExpression(QLatin1String("1+1")); + auto* e3 = evalExp(QLatin1String("1+2")); + + QVERIFY(e1 != nullptr); + QVERIFY(e2 != nullptr); + QVERIFY(e3 != nullptr); + + QVERIFY(e1->result()); + QVERIFY(e2->result()); + QVERIFY(e3->result()); + + QCOMPARE(cleanOutput(e1->result()->data().toString()), QLatin1String("1")); + QCOMPARE(cleanOutput(e2->result()->data().toString()), QLatin1String("2")); + QCOMPARE(cleanOutput(e3->result()->data().toString()), QLatin1String("3")); +} + +void TestPython3::testCommentExpression() +{ + auto* e = evalExp(QLatin1String("#only comment")); + + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Status::Done); + QCOMPARE(e->results().size(), 0); +} + +void TestPython3::testSimpleExpressionWithComment() +{ + auto* e = evalExp(QLatin1String("2+2 # comment")); + + QVERIFY(e != nullptr); + QVERIFY(e->result()); + QVERIFY(e->result()->data().toString() == QLatin1String("4")); +} + +void TestPython3::testMultilineCommandWithComment() +{ + auto* e = evalExp(QLatin1String( + "print(2+2) \n" + "#comment in middle \n" + "print(7*5)")); + + QVERIFY(e != nullptr); + QVERIFY(e->result()); + QVERIFY(e->result()->data().toString() == QLatin1String("4\n35")); +} + +void TestPython3::testInvalidSyntax() +{ + auto* e=evalExp( QLatin1String("2+2*+.") ); + + QVERIFY( e!=nullptr ); + QCOMPARE( e->status(), Cantor::Expression::Error ); +} + +void TestPython3::testCompletion() +{ + if(session()->status()==Cantor::Session::Running) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + auto* help = session()->completionFor(QLatin1String("p"), 1); + waitForSignal(help, SIGNAL(fetchingDone())); + + // Checks all completions for this request + const auto& completions = help->completions(); + QCOMPARE(completions.size(), 4); + QVERIFY(completions.contains(QLatin1String("pass"))); + QVERIFY(completions.contains(QLatin1String("pow"))); + QVERIFY(completions.contains(QLatin1String("print"))); + QVERIFY(completions.contains(QLatin1String("property"))); +} + + +void TestPython3::testImportStatement() +{ + auto* e = evalExp(QLatin1String("import sys")); + + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Done); +} + +void TestPython3::testCodeWithComments() +{ + { + auto* e = evalExp(QLatin1String("#comment\n1+2")); + + QVERIFY(e != nullptr); + QVERIFY(e->result()); + QVERIFY(e->result()->data().toString() == QLatin1String("3")); + } + + { + auto* e = evalExp(QLatin1String(" #comment\n1+2")); + + QVERIFY(e != nullptr); + QVERIFY(e->result()); + QVERIFY(e->result()->data().toString() == QLatin1String("3")); + } +} + +void TestPython3::testPython3Code() +{ + { + auto* e = evalExp(QLatin1String("print 1 + 2")); + + QVERIFY(e != nullptr); + QVERIFY(!e->errorMessage().isEmpty()); + } + + { + auto* e = evalExp(QLatin1String("print(1 + 2)")); + + QVERIFY(e != nullptr); + QVERIFY(e->result()); + QVERIFY(e->result()->data().toString() == QLatin1String("3")); + } +} + +void TestPython3::testSimplePlot() +{ + if (!PythonSettings::integratePlots()) + QSKIP("This test needs enabled plots integration in Python3 settings", SkipSingle); + + auto* e = evalExp(QLatin1String( + "import matplotlib\n" + "import matplotlib.pyplot as plt\n" + "import numpy as np" + )); + QVERIFY(e != nullptr); + QVERIFY(e->errorMessage().isEmpty() == true); + + //the variable model shouldn't have any entries after the module imports + QAbstractItemModel* model = session()->variableModel(); + QVERIFY(model != nullptr); + QVERIFY(model->rowCount() == 0); + + //create data for plotting + e = evalExp(QLatin1String( + "t = np.arange(0.0, 2.0, 0.01)\n" + "s = 1 + np.sin(2 * np.pi * t)" + )); + QVERIFY(e != nullptr); + QVERIFY(e->errorMessage().isEmpty() == true); + + if(session()->status()==Cantor::Session::Running) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + //the variable model should have two entries now + QVERIFY(model->rowCount() == 2); + + //plot the data and check the results + e = evalExp(QLatin1String( + "plt.plot(t,s)\n" + "plt.show()" + )); + + QVERIFY(e != nullptr); + if (e->result() == nullptr) + waitForSignal(e, SIGNAL(gotResult())); + + QVERIFY(e->errorMessage().isEmpty() == true); + QVERIFY(model->rowCount() == 2); //still only two variables + + //there must be one single image result + QVERIFY(e->results().size() == 1); + const Cantor::ImageResult* result = dynamic_cast(e->result()); + QVERIFY(result != nullptr); + + evalExp(QLatin1String("del t; del s")); +} + +void TestPython3::testVariablesCreatingFromCode() +{ + if (!PythonSettings::variableManagement()) + QSKIP("This test needs enabled variable management in Python3 settings", SkipSingle); + + QAbstractItemModel* model = session()->variableModel(); + QVERIFY(model != nullptr); + + auto* e = evalExp(QLatin1String("a = 15; b = 'S';")); + QVERIFY(e != nullptr); + + if(session()->status() == Cantor::Session::Running) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + QCOMPARE(2, model->rowCount()); + + QCOMPARE(model->index(0,0).data().toString(), QLatin1String("a")); + QCOMPARE(model->index(0,1).data().toString(), QLatin1String("15")); + + QCOMPARE(model->index(1,0).data().toString(), QLatin1String("b")); + QCOMPARE(model->index(1,1).data().toString(), QLatin1String("'S'")); + + evalExp(QLatin1String("del a; del b")); +} + +void TestPython3::testVariableCleanupAfterRestart() +{ + QAbstractItemModel* model = session()->variableModel(); + QVERIFY(model != nullptr); + + auto* e = evalExp(QLatin1String("a = 15; b = 'S';")); + QVERIFY(e != nullptr); + + if(session()->status()==Cantor::Session::Running) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + QCOMPARE(2, model->rowCount()); + + session()->logout(); + session()->login(); + + QCOMPARE(0, model->rowCount()); +} + +void TestPython3::testDictVariable() +{ + if (!PythonSettings::variableManagement()) + QSKIP("This test needs enabled variable management in Python3 settings", SkipSingle); + + Cantor::DefaultVariableModel* model = session()->variableModel(); + QVERIFY(model != nullptr); + + auto* e = evalExp(QLatin1String("d = {'value': 33}")); + + QVERIFY(e != nullptr); + + if(session()->status() == Cantor::Session::Running) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + QCOMPARE(1, static_cast(model)->rowCount()); + QCOMPARE(model->index(0,0).data().toString(), QLatin1String("d")); + QCOMPARE(model->index(0,1).data().toString(), QLatin1String("{'value': 33}")); + + evalExp(QLatin1String("del d")); +} + +void TestPython3::testInterrupt() +{ + auto* e1 = session()->evaluateExpression(QLatin1String("import time; time.sleep(150)")); + auto* e2 = session()->evaluateExpression(QLatin1String("2")); + + if (e1->status() != Cantor::Expression::Queued) + waitForSignal(e1, SIGNAL(statusChanged(Cantor::Expression::Status))); + + if (e1->status() != Cantor::Expression::Computing) + waitForSignal(e1, SIGNAL(statusChanged(Cantor::Expression::Status))); + + if (e2->status() != Cantor::Expression::Queued) + waitForSignal(e2, SIGNAL(statusChanged(Cantor::Expression::Status))); + + // Without this delay, server don't interrupt even if got interrupt signal (via OS kill) + // Also, if the server won't interrupt, the test will fail without reasonable reason + QTest::qWait(100); + + QCOMPARE(e1->status(), Cantor::Expression::Computing); + QCOMPARE(e2->status(), Cantor::Expression::Queued); + + while(session()->status() != Cantor::Session::Running) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + session()->interrupt(); + + while(session()->status() != Cantor::Session::Done) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + QCOMPARE(e1->status(), Cantor::Expression::Interrupted); + QCOMPARE(e2->status(), Cantor::Expression::Interrupted); + + auto* e = evalExp(QLatin1String("2+2")); + QVERIFY(e != nullptr); + + qDebug()<<"### session status 1 " << session()->status(); + qDebug()<<"### expression status 1 " << e->status(); + if (session()->status() == Cantor::Session::Running) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + qDebug()<<"### session status 2 " << session()->status(); + qDebug()<<"### expression status 2 " << e->status(); + QCOMPARE(e->status(), Cantor::Expression::Done); + QVERIFY(e->result()); + QCOMPARE(e->result()->data().toString(), QLatin1String("4")); +} + +void TestPython3::testWarning() +{ + auto* e = evalExp(QLatin1String("import warnings; warnings.warn('Test')")); + + QVERIFY(e != nullptr); + + if (session()->status() == Cantor::Session::Running) + waitForSignal(session(), SIGNAL(statusChanged(Cantor::Session::Status))); + + QCOMPARE(e->status(), Cantor::Expression::Status::Done); + QCOMPARE(e->results().size(), 1); +} + +QTEST_MAIN(TestPython3) diff --git a/src/backends/python/testpython.h b/src/backends/python/testpython.h new file mode 100644 index 0000000..82219b5 --- /dev/null +++ b/src/backends/python/testpython.h @@ -0,0 +1,42 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2015 Minh Ngo +*/ + +#ifndef _TESTPYTHON3_H +#define _TESTPYTHON3_H + +#include + +class TestPython3 : public BackendTest +{ + Q_OBJECT + private Q_SLOTS: + void testSimpleCommand(); + void testMultilineCommand(); + void testCodeWithComments(); + void testCommandQueue(); + + void testSimplePlot(); + + void testImportStatement(); + void testPython3Code(); + void testInvalidSyntax(); + + void testSimpleExpressionWithComment(); + void testCommentExpression(); + void testMultilineCommandWithComment(); + + void testVariablesCreatingFromCode(); + void testVariableCleanupAfterRestart(); + void testDictVariable(); + + void testCompletion(); + void testInterrupt(); + + void testWarning(); + private: + QString backendName() override; +}; + +#endif /* _TESTPYTHON3_H */ diff --git a/src/backends/python/variables_cleaner.py b/src/backends/python/variables_cleaner.py new file mode 100644 index 0000000..1bb7c0b --- /dev/null +++ b/src/backends/python/variables_cleaner.py @@ -0,0 +1,6 @@ +for keyPythonBackend in dir(): + if (not 'PythonBackend' in keyPythonBackend)\ + and (not '__' in keyPythonBackend): + del(globals()[keyPythonBackend]) + +del(keyPythonBackend) diff --git a/src/backends/python/variables_loader.py b/src/backends/python/variables_loader.py new file mode 100644 index 0000000..2ed46ff --- /dev/null +++ b/src/backends/python/variables_loader.py @@ -0,0 +1,9 @@ +import shelve +shelvePythonBackend = shelve.open('%1') +for keyPythonBackend in shelvePythonBackend: + globals()[keyPythonBackend] = shelvePythonBackend[keyPythonBackend] + +shelvePythonBackend.close() +del(shelve) +del(shelvePythonBackend) +del(keyPythonBackend) diff --git a/src/backends/python/variables_saver.py b/src/backends/python/variables_saver.py new file mode 100644 index 0000000..493cafb --- /dev/null +++ b/src/backends/python/variables_saver.py @@ -0,0 +1,11 @@ +import shelve +shelvePythonBackend = shelve.open('%1', 'n') +for keyPythonBackend in dir(): + if (not 'PythonBackend' in keyPythonBackend)\ + and (not '__' in keyPythonBackend)\ + and (not ' + + + &Plot + + + + diff --git a/src/backends/qalculate/plotassistant/qalculateplotassistant.cpp b/src/backends/qalculate/plotassistant/qalculateplotassistant.cpp new file mode 100644 index 0000000..c385a99 --- /dev/null +++ b/src/backends/qalculate/plotassistant/qalculateplotassistant.cpp @@ -0,0 +1,290 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Martin Kuettler +*/ + +#include "qalculateplotassistant.h" + +#include + +#include +#include +#include "cantor_macros.h" + +QalculatePlotAssistant::QalculatePlotAssistant(QObject* parent, QList args) : Assistant(parent) +{ + Q_UNUSED(args); + + m_dlg = nullptr; +} + +void QalculatePlotAssistant::initActions() +{ + setXMLFile(QLatin1String("cantor_qalculateplotassistant.rc")); + QAction* plot = new QAction(i18n("Plot"), actionCollection()); + actionCollection()->addAction(QLatin1String("qalculateplotassistant"), plot); + connect(plot, SIGNAL(triggered()), this, SIGNAL(requested())); +} + +void QalculatePlotAssistant::initDialog(QWidget* parent) +{ + m_dlg = new QDialog(parent); + QWidget *widget = new QWidget(m_dlg); + m_base.setupUi(widget); + QVBoxLayout *mainLayout = new QVBoxLayout; + m_dlg->setLayout(mainLayout); + mainLayout->addWidget(widget); + + m_base.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + m_base.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + + connect(m_base.addButton, SIGNAL(clicked()), this, SLOT(addFunction())); + connect(m_base.removeButton, SIGNAL(clicked()), this, SLOT(removeSelection())); + connect(m_base.clearButton, SIGNAL(clicked()), this, SLOT(clearFunctions())); + connect(m_base.functionTable, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(currentItemChanged(int,int,int,int))); + connect(m_base.stepsButton, SIGNAL(toggled(bool)), this, SLOT(toggleStep())); + connect(m_base.stepButton, SIGNAL(toggled(bool)), this, SLOT(toggleSteps())); + connect(m_base.buttonBox, SIGNAL(accepted()), m_dlg, SLOT(accept())); + connect(m_base.buttonBox, SIGNAL(rejected()), m_dlg, SLOT(reject())); + m_base.inlineCheckBox->setChecked(QalculateSettings::inlinePlot()); + m_base.colorCheckBox->setChecked(QalculateSettings::coloredPlot()); + m_base.gridCheckBox->setChecked(QalculateSettings::plotGrid()); + m_base.borderCheckBox->setChecked(QalculateSettings::plotBorder()); + m_base.smoothingBox->setCurrentIndex(QalculateSettings::plotSmoothing()); + m_base.styleBox->setCurrentIndex(QalculateSettings::plotStyle()); + m_base.legendBox->setCurrentIndex(QalculateSettings::plotLegend()); + m_base.stepsEdit->setText(QString::number(QalculateSettings::plotSteps())); + m_base.stepEdit->setDisabled(true); +} + +QStringList QalculatePlotAssistant::run(QWidget* parent) +{ + if (!m_dlg) + initDialog(parent); + + QStringList result; + if (m_dlg->exec()) { + if (m_base.functionTable->currentRow() >= 0) + saveRowInformation(m_base.functionTable->currentRow()); + result << plotCommand(); + } + + return result; +} + + +void QalculatePlotAssistant::addFunction() +{ + m_base.functionTable->insertRow(m_base.functionTable->rowCount()); + m_xVarList << QLatin1String(""); + m_styleList << QalculateSettings::STYLE_LINES; + m_smoothingList << QalculateSettings::SMOOTHING_NONE; + saveRowInformation(m_xVarList.size()-1); +} + +void QalculatePlotAssistant::removeSelection() +{ + int r = m_base.functionTable->currentRow(); + if (r < 0) + return; + m_base.functionTable->removeRow(r); + if (m_xVarList.size() > r) { + m_xVarList.removeAt(r); + m_styleList.removeAt(r); + m_smoothingList.removeAt(r); + } +} + +void QalculatePlotAssistant::clearFunctions() +{ + m_xVarList.clear(); + m_styleList.clear(); + m_smoothingList.clear(); + while (m_base.functionTable->rowCount()) + m_base.functionTable->removeRow(0); +} + +void QalculatePlotAssistant::toggleSteps() +{ + m_base.stepsButton->setChecked(!m_base.stepButton->isChecked()); +} + +void QalculatePlotAssistant::toggleStep() +{ + m_base.stepButton->setChecked(!m_base.stepsButton->isChecked()); +} + +void QalculatePlotAssistant::currentItemChanged(int newRow, int newColumn, int oldRow, int oldColumn) +{ + Q_UNUSED(newColumn); + Q_UNUSED(oldColumn); + + if (oldRow >= 0) + saveRowInformation(oldRow); + if (newRow >= 0) + loadRowInformation(newRow); +} + +void QalculatePlotAssistant::saveRowInformation(int row) +{ + m_xVarList[row] = m_base.xVarEdit->text(); + switch(m_base.styleBox->currentIndex()) { + case 0: + m_styleList[row] = QalculateSettings::STYLE_LINES; break; + case 1: + m_styleList[row] = QalculateSettings::STYLE_POINTS; break; + case 2: + m_styleList[row] = QalculateSettings::STYLE_LINES_POINTS; break; + case 3: + m_styleList[row] = QalculateSettings::STYLE_BOXES; break; + case 4: + m_styleList[row] = QalculateSettings::STYLE_HISTOGRAM; break; + case 5: + m_styleList[row] = QalculateSettings::STYLE_STEPS; break; + case 6: + m_styleList[row] = QalculateSettings::STYLE_CANDLESTICKS; break; + case 7: + m_styleList[row] = QalculateSettings::STYLE_DOTS; break; + } + switch(m_base.smoothingBox->currentIndex()) { + case 0: + m_smoothingList[row] = QalculateSettings::SMOOTHING_NONE; break; + case 1: + m_smoothingList[row] = QalculateSettings::SMOOTHING_UNIQUE; break; + case 2: + m_smoothingList[row] = QalculateSettings::SMOOTHING_CSPLINES; break; + case 3: + m_smoothingList[row] = QalculateSettings::SMOOTHING_BEZIER; break; + case 4: + m_smoothingList[row] = QalculateSettings::SMOOTHING_SBEZIER; break; + } +} + +void QalculatePlotAssistant::loadRowInformation(int row) +{ + m_base.xVarEdit->setText(m_xVarList[row]); + m_base.styleBox->setCurrentIndex(m_styleList[row]); + m_base.smoothingBox->setCurrentIndex(m_smoothingList[row]); +} + +QString QalculatePlotAssistant::plotCommand() +{ + QStringList boolList; + boolList << QLatin1String("false") << QLatin1String("true"); + QString command = QLatin1String("plot"); + if (!m_base.plotTitleEdit->text().isEmpty()) + command += QString::fromLatin1(" plottitle='%1'").arg(m_base.plotTitleEdit->text()); + if (!m_base.xLabelEdit->text().isEmpty()) + command += QString::fromLatin1(" xlabel='%1'").arg(m_base.xLabelEdit->text()); + if (!m_base.yLabelEdit->text().isEmpty()) + command += QString::fromLatin1(" ylabel='%1'").arg(m_base.yLabelEdit->text()); + if (m_base.legendBox->currentIndex() != QalculateSettings::plotLegend()) { + QString legend; + switch(m_base.legendBox->currentIndex()) { + case QalculateSettings::LEGEND_NONE: + legend=QLatin1String("none"); break; + case QalculateSettings::LEGEND_TOP_LEFT: + legend=QLatin1String("top_left"); break; + case QalculateSettings::LEGEND_TOP_RIGHT: + legend=QLatin1String("top_right"); break; + case QalculateSettings::LEGEND_BOTTOM_LEFT: + legend=QLatin1String("bottom_left"); break; + case QalculateSettings::LEGEND_BOTTOM_RIGHT: + legend=QLatin1String("bottom_right"); break; + case QalculateSettings::LEGEND_BELOW: + legend=QLatin1String("below"); break; + case QalculateSettings::LEGEND_OUTSIDE: + legend=QLatin1String("outside"); break; + } + command += QString::fromLatin1(" legend=%1").arg(legend); + } + if (m_base.gridCheckBox->isChecked() != QalculateSettings::plotGrid()) + command += QString::fromLatin1(" grid=%1").arg(boolList[m_base.gridCheckBox->isChecked()]); + if (m_base.borderCheckBox->isChecked() != QalculateSettings::plotBorder()) + command += QString::fromLatin1(" border=%1").arg(boolList[m_base.borderCheckBox->isChecked()]); + if (m_base.colorCheckBox->isChecked() != QalculateSettings::coloredPlot()) + command += QString::fromLatin1(" color=%1").arg(boolList[m_base.colorCheckBox->isChecked()]); + if (m_base.inlineCheckBox->isChecked() != QalculateSettings::inlinePlot()) + command += QString::fromLatin1(" inline=%1").arg(boolList[m_base.inlineCheckBox->isChecked()]); + if (m_base.xLogCheckBox->isChecked()) + command += QString::fromLatin1(" xlog=true xlogbase='%1'").arg(m_base.xLogEdit->text()); + if (m_base.yLogCheckBox->isChecked()) + command += QString::fromLatin1(" ylog=true ylogbase='%1'").arg(m_base.yLogEdit->text()); + if (m_base.saveCheckBox->isChecked()) { + QString filetype; + switch (m_base.saveFileBox->currentIndex()) { + case 0: + filetype = QLatin1String("auto"); break; + case 1: + filetype = QLatin1String("png"); break; + case 2: + filetype = QLatin1String("ps"); break; + case 3: + filetype = QLatin1String("eps"); break; + case 4: + filetype = QLatin1String("latex"); break; + case 5: + filetype = QLatin1String("svg"); break; + case 6: + filetype = QLatin1String("fig"); break; + } + command += QString::fromLatin1(" filename='%1' filetype=%2").arg + (m_base.saveFileEdit->text(), filetype); + } + command += QString::fromLatin1(" xmin='%1' xmax='%2'").arg + (m_base.xMinEdit->text(), m_base.xMaxEdit->text()); + if (m_base.stepsButton->isChecked()) + command += QString::fromLatin1(" steps='%1'").arg(m_base.stepsEdit->text()); + else + command += QString::fromLatin1(" step='%1'").arg(m_base.stepEdit->text()); + for (int i = 0; i < m_xVarList.size(); ++i) { + if (i>0) + command += QLatin1Char(','); + command += QString::fromLatin1(" title='%1' '%2' xvar='%3'").arg + (m_base.functionTable->item(i,0)->text(), + m_base.functionTable->item(i,1)->text(), + m_xVarList[i]); + if (m_styleList[i] != QalculateSettings::plotStyle()) { + QString style; + switch(m_styleList[i]) { + case QalculateSettings::STYLE_LINES: + style=QLatin1String("lines"); break; + case QalculateSettings::STYLE_POINTS: + style=QLatin1String("points"); break; + case QalculateSettings::STYLE_LINES_POINTS: + style=QLatin1String("points_lines"); break; + case QalculateSettings::STYLE_BOXES: + style=QLatin1String("boxes"); break; + case QalculateSettings::STYLE_HISTOGRAM: + style=QLatin1String("histogram"); break; + case QalculateSettings::STYLE_STEPS: + style=QLatin1String("steps"); break; + case QalculateSettings::STYLE_CANDLESTICKS: + style=QLatin1String("candlesticks"); break; + case QalculateSettings::STYLE_DOTS: + style=QLatin1String("dots"); break; + } + command += QString::fromLatin1(" style=%1").arg(style); + } + if (m_smoothingList[i] != QalculateSettings::plotSmoothing()) { + QString smoothing; + switch(m_smoothingList[i]) { + case QalculateSettings::SMOOTHING_NONE: + smoothing=QLatin1String("none"); break; + case QalculateSettings::SMOOTHING_UNIQUE: + smoothing=QLatin1String("monotonic"); break; + case QalculateSettings::SMOOTHING_CSPLINES: + smoothing=QLatin1String("csplines"); break; + case QalculateSettings::SMOOTHING_BEZIER: + smoothing=QLatin1String("bezier"); break; + case QalculateSettings::SMOOTHING_SBEZIER: + smoothing=QLatin1String("sbezier"); break; + } + command += QString::fromLatin1(" smoothing=%1").arg(smoothing); + } + } + return command; +} + +K_PLUGIN_FACTORY_WITH_JSON(qalculateplotassistant, "qalculateplotassistant.json", registerPlugin();) +#include "qalculateplotassistant.moc" diff --git a/src/backends/qalculate/plotassistant/qalculateplotassistant.h b/src/backends/qalculate/plotassistant/qalculateplotassistant.h new file mode 100644 index 0000000..7b0fbbe --- /dev/null +++ b/src/backends/qalculate/plotassistant/qalculateplotassistant.h @@ -0,0 +1,46 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Martin Kuettler +*/ + +#ifndef QALCULATE_PLOT_ASSISTANT_H +#define QALCULATE_PLOT_ASSISTANT_H + +#include "assistant.h" +#include "settings.h" +#include "ui_qalculateplotdialog.h" +#include +#include + +class QalculatePlotAssistant : public Cantor::Assistant +{ + Q_OBJECT +private: + QDialog* m_dlg; + Ui::QalculatePlotAssistantBase m_base; + QStringList m_xVarList; + QList m_styleList; + QList m_smoothingList; + + QString plotCommand(); + void initDialog(QWidget* parent); + void saveRowInformation(int); + void loadRowInformation(int); +public Q_SLOTS: + void addFunction(); + void removeSelection(); + void clearFunctions(); + void currentItemChanged(int, int, int, int); + void toggleSteps(); + void toggleStep(); + +public: + QalculatePlotAssistant(QObject* parent, QList args); + ~QalculatePlotAssistant() override = default; + + void initActions() override; + + QStringList run(QWidget* parent) override; +}; + +#endif //QALCULATE_PLOT_ASSISTANT_H diff --git a/src/backends/qalculate/plotassistant/qalculateplotassistant.json b/src/backends/qalculate/plotassistant/qalculateplotassistant.json new file mode 100644 index 0000000..8dc260f --- /dev/null +++ b/src/backends/qalculate/plotassistant/qalculateplotassistant.json @@ -0,0 +1,67 @@ +{ + "KPlugin": { + "Description": "An Assistant for plotting with the Qalculate backend.", + "Description[ca@valencia]": "Un assistent per a fer gràfiques amb el dorsal de Qalculate.", + "Description[ca]": "Un assistent per a fer gràfiques amb el dorsal del Qalculate.", + "Description[cs]": "Asistent pro grafy s podpůrnou vrstvou Qualculate.", + "Description[de]": "Ein Assistent für das Plotten mit dem Qalculate-Modul.", + "Description[el]": "Βοηθός σχεδίασης με το σύστημα υποστήριξης Qalculate", + "Description[en_GB]": "An Assistant for plotting with the Qalculate backend.", + "Description[es]": "Un asistente para mostrar gráficos con el motor de Qalculate.", + "Description[et]": "Joonise loomise abiline Qalculate'i taustaprogrammiga", + "Description[fi]": "Opastettu funktioiden piirtäminen käyttäen Qalculate-taustajärjestelmää.", + "Description[fr]": "Un assistant pour le tracé avec le moteur « Qalculate »", + "Description[gl]": "Un axudante para debuxar coa infraestrutura Qalculate.", + "Description[ia]": "Un assistente per traciar (plot) con le retroadministration de Qalculate", + "Description[it]": "Un assistente che crea grafici usando il motore di Qalculate.", + "Description[ka]": "დამხმარე ფანჯარა Qalculate-ის უკანაბოლოთი დახაზვისთვის.", + "Description[ko]": "Qalculate 백엔드를 사용하여 플롯할 수 있는 도우미입니다.", + "Description[nl]": "Een assistent voor het plotten met de Qalculate-backend.", + "Description[nn]": "Eit hjelpevindauge for plotting med Qalculate-motoren.", + "Description[pl]": "Pomocnik rysowania wykresów przy użyciu silnika Qalculate.", + "Description[pt]": "Um assistente para desenhar gráficos com a infra-estrutura do Qalculate.", + "Description[pt_BR]": "Um assistente para geração de gráficos com a infraestrutura Qalculate.", + "Description[ru]": "Диалоговое окно, упрощающее построение графиков с использованием Qalculate.", + "Description[sk]": "Asistent na kreslenie s backendom Qalculate.", + "Description[sl]": "Pomočnik za izrisovanje grafov s Qalculate.", + "Description[sv]": "En guide för att rita med bakgrundsprogrammet Qalculate.", + "Description[tr]": "Qalculate arka ucu ile bir grafik yardımcısı.", + "Description[uk]": "Допоміжна програма для креслення за допомогою модуля Qalculate.", + "Description[x-test]": "xxAn Assistant for plotting with the Qalculate backend.xx", + "Description[zh_CN]": "用 Qalculate 后端画图的助手。", + "Description[zh_TW]": "使用 Qalculate 後端介面的繪圖助手。", + "Id": "Plot2d", + "License": "GPL", + "Name": "QalculatePlot", + "Name[ca@valencia]": "Gràfic de Qalculate", + "Name[ca]": "Gràfic de Qalculate", + "Name[cs]": "QalculatePlot", + "Name[de]": "QalculatePlot", + "Name[el]": "QalculatePlot", + "Name[en_GB]": "QalculatePlot", + "Name[es]": "QalculatePlot", + "Name[et]": "Qalculate'i joonis", + "Name[fi]": "QalculatePlot", + "Name[fr]": "Tracé « Qalculate »", + "Name[gl]": "QalculatePlot", + "Name[ia]": "QalculatePlot", + "Name[it]": "Grafico con Qalculate", + "Name[ka]": "QalculatePlot", + "Name[ko]": "QalculatePlot", + "Name[nl]": "QalculatePlot", + "Name[nn]": "QalculatePlot", + "Name[pl]": "QalculatePlot", + "Name[pt]": "Gráfico Qalculate", + "Name[pt_BR]": "Gráfico do Qalculate", + "Name[ru]": "Графики Qalculate", + "Name[sk]": "QalculatePlot", + "Name[sl]": "Grafi Qalculate", + "Name[sv]": "Rita med Qalculate", + "Name[tr]": "QalculatePlot", + "Name[uk]": "QalculatePlot", + "Name[x-test]": "xxQalculatePlotxx", + "Name[zh_CN]": "QalculatePlot", + "Name[zh_TW]": "QalculatePlot" + }, + "RequiredExtensions": "QalculatePlotExtension" +} diff --git a/src/backends/qalculate/plotassistant/qalculateplotdialog.ui b/src/backends/qalculate/plotassistant/qalculateplotdialog.ui new file mode 100644 index 0000000..2235fce --- /dev/null +++ b/src/backends/qalculate/plotassistant/qalculateplotdialog.ui @@ -0,0 +1,779 @@ + + + QalculatePlotAssistantBase + + + + 0 + 0 + 470 + 489 + + + + Cantor - Plot Dialog + + + + + + 0 + + + + Functions + + + + + + QAbstractItemView::SingleSelection + + + QAbstractItemView::SelectRows + + + false + + + + Title + + + + + Expression + + + + + + + + + + + + + + Qt::Horizontal + + + + 220 + 20 + + + + + + + + Add + + + buttonGroup + + + + + + + Remove + + + buttonGroup + + + + + + + Clear List + + + buttonGroup + + + + + + + + + + + + X variable + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + x + + + + + + + + + + + Style + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + Lines + + + + + Points + + + + + Points and Lines + + + + + Boxes + + + + + Histogram + + + + + Steps + + + + + Candlesticks + + + + + Dots + + + + + + + + + + + + Smoothing + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + None + + + + + Monotonic + + + + + Natural Cubic Splines + + + + + Bezier + + + + + Bezier (monotonic) + + + + + + + + + + Function Range + + + + + + X range + + + + + + + + + + 0 + 0 + + + + 0 + + + + + + + - + + + + + + + + 0 + 0 + + + + 10 + + + + + + + + + Sa&mpling rate + + + true + + + + + + + Step si&ze + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + + + + Options + + + + + + + + Plot title + + + + + + + + 0 + 0 + + + + + + + + + + + + X-axis label + + + + + + + + 0 + 0 + + + + + + + + + + + + Y-axis label + + + + + + + + 0 + 0 + + + + + + + + + + + + Legend position + + + + + + + + Hide legend + + + + + Top-left + + + + + Top-right + + + + + Bottom-left + + + + + Bottom-right + + + + + Below + + + + + Outside + + + + + + + + + + + + Display Grid + + + + + + + Display full border + + + + + + + + + + + Use Colors + + + + + + + Display inline + + + + + + + + + + + Logarithmic x scale + + + + + + + + 0 + 0 + + + + + + + + + + + + Logarithmic y scale + + + + + + + + 0 + 0 + + + + + + + + + + File Options + + + + + + Save plot to file + + + + + + + + 0 + 0 + + + + false + + + + + + + File type + + + + + + + + Detect from filename + + + + + PNG + + + + + PS + + + + + EPS + + + + + LaTeX + + + + + SVG + + + + + FIG + + + + + + + + + + + Qt::Vertical + + + + 20 + 119 + + + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + false + + + + + + + + KLineEdit + QLineEdit +
      klineedit.h
      +
      + + KComboBox + QComboBox +
      kcombobox.h
      +
      +
      + + functionTable + xVarEdit + styleBox + smoothingBox + xMinEdit + xMaxEdit + stepsButton + stepsEdit + stepButton + stepEdit + plotTitleEdit + xLabelEdit + yLabelEdit + legendBox + gridCheckBox + borderCheckBox + colorCheckBox + inlineCheckBox + xLogCheckBox + xLogEdit + yLogCheckBox + yLogEdit + saveCheckBox + saveFileEdit + saveFileBox + + + + + stepButton + toggled(bool) + stepEdit + setEnabled(bool) + + + 168 + 460 + + + 235 + 462 + + + + + xLogCheckBox + toggled(bool) + xLogEdit + setEnabled(bool) + + + 111 + 79 + + + 111 + 79 + + + + + yLogCheckBox + toggled(bool) + yLogEdit + setEnabled(bool) + + + 111 + 82 + + + 111 + 82 + + + + + saveCheckBox + toggled(bool) + saveFileEdit + setEnabled(bool) + + + 111 + 84 + + + 111 + 84 + + + + + saveCheckBox + toggled(bool) + saveFileBox + setEnabled(bool) + + + 111 + 84 + + + 111 + 84 + + + + + saveCheckBox + toggled(bool) + label_23 + setEnabled(bool) + + + 69 + 84 + + + 67 + 84 + + + + + stepsButton + toggled(bool) + stepsEdit + setEnabled(bool) + + + 165 + 427 + + + 254 + 436 + + + + + + + +
      diff --git a/src/backends/qalculate/qalculatebackend.cpp b/src/backends/qalculate/qalculatebackend.cpp new file mode 100644 index 0000000..2305068 --- /dev/null +++ b/src/backends/qalculate/qalculatebackend.cpp @@ -0,0 +1,80 @@ +/* + SPDX-FileCopyrightText: 2009 Milian Wolff + SPDX-FileCopyrightText: 2011 Matteo Agostinelli + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "qalculatebackend.h" +#include "settings.h" // settings.h must be included before qalculatesession.h +#include "qalculatesession.h" +#include "qalculateextensions.h" +#include "qalculatesettingswidget.h" + +#include +#include + +QalculateBackend::QalculateBackend(QObject* parent,const QList args) + : Cantor::Backend(parent, args) +{ + new QalculateHistoryExtension(this); + new QalculateVariableManagementExtension(this); + new QalculateCalculusExtension(this); + new QalculateCASExtension(this); + new QalculateLinearAlgebraExtension(this); + new QalculatePlotExtension(this); +} + +QString QalculateBackend::id() const +{ + return QLatin1String("qalculate"); +} + +QString QalculateBackend::version() const +{ + return QLatin1String("0.9"); +} + +Cantor::Session* QalculateBackend::createSession() +{ + return new QalculateSession(this); +} + +Cantor::Backend::Capabilities QalculateBackend::capabilities() const +{ + return Cantor::Backend::Completion | Cantor::Backend::SyntaxHighlighting | Cantor::Backend::SyntaxHelp | Cantor::Backend::VariableManagement; +// return Cantor::Backend::Completion | Cantor::Backend::SyntaxHelp; +} + +QString QalculateBackend::description() const +{ + return i18n("Qalculate! is not your regular software replication of the cheapest available calculator. Qalculate! aims to make full use of the superior interface, power and flexibility of modern computers. "\ + "The center of attention in Qalculate! is the expression entry. Instead of entering each number in a mathematical expression separately, you can directly write the whole expression and later modify it. "\ + "The interpretation of expressions is flexible and fault tolerant, and if you nevertheless do something wrong, Qalculate! will tell you so. Not fully solvable expressions are however not errors. Qalculate! will simplify as far as it can and answer with an expression. "\ + "In addition to numbers and arithmetic operators, an expression may contain any combination of variables, units, and functions."); +} + +QUrl QalculateBackend::helpUrl() const +{ + // A sub-optimal solution but still this manual is fairly complete + return QUrl(QString::fromLatin1("https://qalculate.github.io/manual/index.html")); +} + +bool QalculateBackend::requirementsFullfilled(QString* const reason) const +{ + Q_UNUSED(reason); + return true; +} + +KConfigSkeleton* QalculateBackend::config() const +{ + return QalculateSettings::self(); +} + +QWidget* QalculateBackend::settingsWidget(QWidget* parent) const +{ + return new QalculateSettingsWidget(parent, id()); +} + +K_PLUGIN_FACTORY_WITH_JSON(qalculatebackend, "qalculatebackend.json", registerPlugin();) +#include "qalculatebackend.moc" diff --git a/src/backends/qalculate/qalculatebackend.h b/src/backends/qalculate/qalculatebackend.h new file mode 100644 index 0000000..4e76153 --- /dev/null +++ b/src/backends/qalculate/qalculatebackend.h @@ -0,0 +1,35 @@ +/* + SPDX-FileCopyrightText: 2009 Milian Wolff + SPDX-FileCopyrightText: 2011 Matteo Agostinelli + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef QALCULATE_BACKEND_H +#define QALCULATE_BACKEND_H + +#include "backend.h" + +class QalculateBackend : public Cantor::Backend +{ + Q_OBJECT + +public: + explicit QalculateBackend( QObject* parent = nullptr, const QList args = QList()); + ~QalculateBackend() override = default; + + QString id() const override; + QString version() const override; + + Cantor::Session *createSession() override; + Cantor::Backend::Capabilities capabilities() const override; + QString description() const override; + QUrl helpUrl() const override; + bool requirementsFullfilled(QString* const reason = nullptr) const override; + + QWidget* settingsWidget(QWidget* parent) const override; + KConfigSkeleton* config() const override; +}; + + +#endif /* QALCULATE_BACKEND_H */ diff --git a/src/backends/qalculate/qalculatebackend.json b/src/backends/qalculate/qalculatebackend.json new file mode 100644 index 0000000..7e76acd --- /dev/null +++ b/src/backends/qalculate/qalculatebackend.json @@ -0,0 +1,69 @@ +{ + "KPlugin": { + "Description": "Qalculate backend for Cantor. Gives you the advanced features of Qalculate", + "Description[ca@valencia]": "Dorsal de Qalculate per a Cantor. Vos oferix les característiques avançades de Qalculate", + "Description[ca]": "Dorsal de Qalculate per al Cantor. Us ofereix les característiques avançades de Qalculate", + "Description[cs]": "Podpůrná vrstva Qalculate pro Cantor. Poskytuje pokročilé vlastnosti Qalculate", + "Description[de]": "Qalculate-Modul für Cantor. Ermöglicht die Nutzung der weiterführenden Funktionen von Qalculate", + "Description[el]": "Σύστημα υποστήριξης Qalculate για το Cantor. Παρέχει τις προηγμένες λειτουργίες του Qalculate", + "Description[en_GB]": "Qalculate backend for Cantor. Gives you the advanced features of Qalculate", + "Description[es]": "Motor de Qalculate para Cantor. Le proporciona las funciones avanzadas de Qalculate", + "Description[et]": "Cantori Qalculate'i taustaprogramm. Tagab enamiku Qalculate'i omaduste kasutamise.", + "Description[fi]": "Qalculaten Cantor-taustajärjestelmä. Tarjoaa Qalculaten edistyneet ominaisuudet", + "Description[fr]": "Moteur « Qalculate » pour Cantor. Vous propose les fonctionnalités avancées de « Qalculate »", + "Description[gl]": "Infraestrutura Qalculate para Cantor. Dá acceso ás características avanzadas do Qalculate", + "Description[ia]": "Retroadministratin de Qalculate per Cantor. Illo forni a te le characteristicas de Qalculate", + "Description[it]": "Motore per Qalculate di Cantor. Ti dà la possibilità di usare le funzionalità avanzate di Qalculate", + "Description[ka]": "Qalculate-ის უკანაბოლო Cantor-სთვის. გაძლევთ წვდომას Qalculate-ის დამატებით ფუნქციებთან", + "Description[ko]": "Cantor의 Qalculate 백엔드입니다. Qalculate의 고급 기능을 사용할 수 있습니다", + "Description[nl]": "Qalculate-backend voor Cantor. Geeft u de geavanceerde features van Qalculate", + "Description[nn]": "Qalculate-motor for Cantor. Gjev tilgang til avanserte funksjonar i Qalculate.", + "Description[pl]": "Silnik Qalculate dla Cantor. Daje tobie rozbudowane funkcje Qalculate", + "Description[pt]": "Infra-estrutura do Qalculate para o Cantor. Dá-lhe as funcionalidades avançadas do Qalculate", + "Description[pt_BR]": "Infraestrutura do Qalculate para o Cantor. Fornece-lhe as funcionalidades avançadas do Qalculate", + "Description[ru]": "Модуль поддержки калькулятора Qalculate", + "Description[sk]": "Qalculate backend pre Cantor. Dáva vám pokročilé možnosti Qalculate", + "Description[sl]": "Zaledje Qalculate za Cantor. Ponuja napredne zmožnosti programa Qalculate", + "Description[sv]": "Bakgrundsprogrammet Qalculate förr Cantor. Ger tillgång till de avancerade funktionerna i Qalculate.", + "Description[tr]": "Cantor için Qalculate arka ucu. Qalculate gelişmiş özelliklerini sunar.", + "Description[uk]": "Модуль Qalculate для Cantor. Надає до ваших послуг додаткові можливості Qalculate", + "Description[x-test]": "xxQalculate backend for Cantor. Gives you the advanced features of Qalculatexx", + "Description[zh_CN]": "Qalculate 的 Cantor 后端,可以使用 Qalculate 的高级功能", + "Description[zh_TW]": "Cantor 的 Qalculate 後端介面。讓您使用 Qalculate 的進階功能", + "Icon": "qalculatebackend", + "Id": "qalculatebackend", + "License": "GPL", + "Name": "Qalculate", + "Name[ca@valencia]": "Qalculate", + "Name[ca]": "Qalculate", + "Name[cs]": "Qalculate", + "Name[da]": "Qalculate", + "Name[de]": "Qalculate", + "Name[el]": "Qalculate", + "Name[en_GB]": "Qalculate", + "Name[es]": "Qalculate", + "Name[et]": "Qalculate", + "Name[fi]": "Qalculate", + "Name[fr]": "Qalculate", + "Name[gl]": "Qalculate", + "Name[ia]": "Qalculate", + "Name[it]": "Qalculate", + "Name[ka]": "Qalculate", + "Name[ko]": "Qalculate", + "Name[nl]": "Qalculate", + "Name[nn]": "Qalculate", + "Name[pl]": "Qalculate", + "Name[pt]": "Qalculate", + "Name[pt_BR]": "Qalculate", + "Name[ru]": "Qalculate", + "Name[sk]": "Qalculate", + "Name[sl]": "Qalculate", + "Name[sv]": "Qalculate", + "Name[tr]": "Qalculate", + "Name[uk]": "Qalculate", + "Name[x-test]": "xxQalculatexx", + "Name[zh_CN]": "Qalculate", + "Name[zh_TW]": "Qalculate", + "Website": "https://qalculate.github.io/" + } +} diff --git a/src/backends/qalculate/qalculatebackend.kcfg b/src/backends/qalculate/qalculatebackend.kcfg new file mode 100644 index 0000000..1eafaed --- /dev/null +++ b/src/backends/qalculate/qalculatebackend.kcfg @@ -0,0 +1,133 @@ + + + + + + + true + + + + + + + + + + 1 + + + + 10 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + false + + + + false + + + + false + + + + + + + + + + 3 + + + + true + + + + true + + + + false + + + + false + + + + 2 + + + + 100 + + + + + + + + + + + 0 + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 2 + + + + + + diff --git a/src/backends/qalculate/qalculatecompletionobject.cpp b/src/backends/qalculate/qalculatecompletionobject.cpp new file mode 100644 index 0000000..35df29a --- /dev/null +++ b/src/backends/qalculate/qalculatecompletionobject.cpp @@ -0,0 +1,95 @@ +/* + SPDX-FileCopyrightText: 2009 Milian Wolff + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "qalculatecompletionobject.h" + +#include + +#include +#include +#include +#include + +#include "qalculatesession.h" + +QalculateCompletionObject::QalculateCompletionObject(const QString& command, int index, QalculateSession* session) + : Cantor::CompletionObject(session) +{ + setLine(command, index); +} + +void QalculateCompletionObject::fetchIdentifierType() +{ + Variable* var = CALCULATOR->getVariable(identifier().toLatin1().data()); + if (var) { + emit fetchingTypeDone(VariableType); + return; + } + MathFunction* func = CALCULATOR->getFunction(identifier().toLatin1().data()); + if (!func) // can this happen? + emit fetchingTypeDone(UnknownType); + else if (func->args() == 0) + emit fetchingTypeDone(FunctionWithoutArguments); + else + emit fetchingTypeDone(FunctionWithArguments); +} + +int QalculateCompletionObject::locateIdentifier(const QString& cmd, int index) const +{ + if (index < 0) + return -1; + + int i; + int start_index = -1; + for (i=index; i>=0 && mayIdentifierContain(cmd[i]); --i) { + if (mayIdentifierBeginWith(cmd[i])) + start_index = i; + } + + return start_index; +} + + +void QalculateCompletionObject::fetchCompletions() +{ + QStringList comp; + // Matching Qt::CaseInsensitive here does not help, because a) Qalculate + // does distinguish cases, and b) KCompletion::makeCompletion matches + // case sensitive. + foreach ( Unit* item, CALCULATOR->units ) { + //TODO: this is fugily... + QString str(QLatin1String(item->name(true).c_str())); + if ( str.startsWith(command(), Qt::CaseSensitive) ) { + comp << str; + } + QString str2(QLatin1String(item->singular().c_str())); + if (str2.startsWith(command(), Qt::CaseSensitive) ) { + comp << str2; + } + // Also include the plural form for completion? + //QString str3(item->plural().c_str()); + //if (str3.startsWith(command(), Qt::CaseSensitive) ) { + // comp << str3; + //} + } + foreach ( ExpressionItem* item, CALCULATOR->variables ) { + //TODO: this is fugly... + QString str(QLatin1String(item->name(true).c_str())); + if ( str.startsWith(command(), Qt::CaseSensitive) ) { + comp << str; + } + } + foreach ( ExpressionItem* item, CALCULATOR->functions ) { + //TODO: this is fugly... + QString str(QLatin1String(item->name(true).c_str())); + if ( str.startsWith(command(), Qt::CaseSensitive) ) { + comp << str; + } + } + + setCompletions(comp); + emit fetchingDone(); +} diff --git a/src/backends/qalculate/qalculatecompletionobject.h b/src/backends/qalculate/qalculatecompletionobject.h new file mode 100644 index 0000000..ce1e4b4 --- /dev/null +++ b/src/backends/qalculate/qalculatecompletionobject.h @@ -0,0 +1,28 @@ +/* + SPDX-FileCopyrightText: 2009 Milian Wolff + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef QALCULATE_COMPLETIONOBJECT_H +#define QALCULATE_COMPLETIONOBJECT_H + +#include "completionobject.h" + +class QalculateSession; + +class QalculateCompletionObject : public Cantor::CompletionObject +{ + public: + QalculateCompletionObject( const QString& command, int index, QalculateSession* session); + ~QalculateCompletionObject() override = default; + + protected: + int locateIdentifier(const QString& cmd, int index) const override; + + protected Q_SLOTS: + void fetchCompletions() override; + void fetchIdentifierType() override; +}; + +#endif /* _NULLCOMPLETIONOBJECT_H */ diff --git a/src/backends/qalculate/qalculateexpression.cpp b/src/backends/qalculate/qalculateexpression.cpp new file mode 100644 index 0000000..688b24b --- /dev/null +++ b/src/backends/qalculate/qalculateexpression.cpp @@ -0,0 +1,865 @@ +/* + SPDX-FileCopyrightText: 2009 Milian Wolff + SPDX-FileCopyrightText: 2011 Matteo Agostinelli + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include + +#include "textresult.h" +#include "helpresult.h" +#include "imageresult.h" +#include "epsresult.h" +#include "settings.h" +#include "defaultvariablemodel.h" + +#include "qalculateexpression.h" +#include "qalculatesession.h" +#include "qalculatesyntaxhelpobject.h" + +#include +#include +#include +#include +#include + +// required for the plotting interface of Qalculator + +#include +#include + +#include +#include +#include +#include + +#include +#include + +QalculateExpression::QalculateExpression( QalculateSession* session, bool internal) + : Cantor::Expression(session, internal) +{ +} + +QalculateExpression::~QalculateExpression() +{ + if (m_tempFile) + delete m_tempFile; +} + +void QalculateExpression::evaluate() +{ + /* + Use Api for: + * help + * plot + Use qalc for any other command + */ + setStatus(Cantor::Expression::Computing); + if (command().isEmpty()) { + setStatus(Cantor::Expression::Done); + return; + } + + + QStringList commands = command().split(QLatin1Char('\n')); + foreach(const QString& command, commands) + { + if (command.contains(QLatin1String("help"))) { + QalculateSyntaxHelpObject* helper = new QalculateSyntaxHelpObject(command, (QalculateSession*) session()); + setResult(new Cantor::HelpResult(helper->answer())); + setStatus(Cantor::Expression::Done); + return; + } + else if (command.trimmed().startsWith(QLatin1String("plot")) && + (command.indexOf(QLatin1String("plot"))+4 == command.size() || + command[command.indexOf(QLatin1String("plot"))+4].isSpace())) { + evaluatePlotCommand(); + return; + } + } + // we are here because the commands entered by user are regular commands. We would have returned by now otherwise + QalculateSession* currentSession = dynamic_cast(session()); + currentSession->runExpression(); +} + +void QalculateExpression::parseOutput(const QString& output) +{ + QString resultStr = output; + resultStr.remove(QLatin1String(">")); + resultStr = resultStr.trimmed(); + + qDebug() << "output from qalc for command: " << command() << " " << resultStr; + setResult(new Cantor::TextResult(resultStr)); + // update the variable model + updateVariables(); + setStatus(Cantor::Expression::Done); +} + +void QalculateExpression::updateVariables() +{ + auto* currentSession = dynamic_cast(session()); + auto& variables = currentSession->variables; + auto it = variables.constBegin(); + while (it != variables.constEnd()) { + currentSession->variableModel()->addVariable(it.key(), it.value()); + ++it; + } +} + +void QalculateExpression::parseError(const QString& error) +{ + QString errorStr = error; + errorStr.remove(QLatin1String(">")); + errorStr = errorStr.trimmed(); + qDebug() << "Error from qalc for command: " << command() << " " << error; + setErrorMessage(errorStr); + setStatus(Cantor::Expression::Error); +} + +void QalculateExpression::interrupt() +{ + setStatus(Cantor::Expression::Interrupted); +} + +void QalculateExpression::evaluatePlotCommand() +{ + QString argString = command().mid(command().indexOf(QLatin1String("plot"))+4); + argString = QLatin1String(unlocalizeExpression(argString).c_str()); + argString = argString.trimmed(); + + QList argumentsList; + QStringList arguments; + + // For error handling + KColorScheme scheme(QApplication::palette().currentColorGroup()); + const QString errorColor = scheme.foreground(KColorScheme::NegativeText).color().name(); + const QString warningColor = scheme.foreground(KColorScheme::NeutralText).color().name(); + const QString msgFormat(QLatin1String("%2: %3
      \n")); + + if (!CALCULATOR->canPlot()) { + showMessage(i18n("Qalculate reports it cannot print. Is gnuplot installed?"), MESSAGE_ERROR); + return; + } + + // Split argString into the arguments + int i=0; + int j=0; + QString arg = QLatin1String(""); + while (i < argString.size()) { + if (argString[i] == QLatin1Char('"') || argString[i] == QLatin1Char('\'')) { + ++j; + while(j < argString.size() && argString[j] != argString[i]) { + if (argString[j] == QLatin1Char('\\')) { + ++j; + if (j == argString.size()) + continue; // just ignore trailing backslashes + } + arg += argString[j]; + ++j; + } + if (j == argString.size()) { + showMessage(i18n("missing %1", argString[i]), MESSAGE_ERROR); + return; + } + ++j; + } else if (argString[i] == QLatin1Char(',')) { + argumentsList.append(arguments); + arguments.clear(); + ++j; + } else { + while(j < argString.size() && !argString[j].isSpace() && + argString[j] != QLatin1Char('=') && argString[j] != QLatin1Char(',')) { + if (argString[j] == QLatin1Char('\\')) { + ++j; + if (j == argString.size()) + continue; // just ignore trailing backslashes + } + arg += argString[j]; + ++j; + } + } + if (argString[j] == QLatin1Char('=')) { + // Parse things like title="..." as one argument + arg += QLatin1Char('='); + i = ++j; + continue; + } + if (!arg.isEmpty()) { + arguments << arg; + arg = QLatin1String(""); + } + while (j < argString.size() && argString[j].isSpace()) + ++j; + i = j; + } + argumentsList.append(arguments); + + // Parse the arguments and compute the points to be plotted + std::vector y_vectors; + std::vector x_vectors; + std::vector plotDataParameterList; + PlotParameters plotParameters; + EvaluationOptions eo = evaluationOptions(); + /// temporary + plotParameters.title = ""; + plotParameters.y_label = ""; + plotParameters.x_label = ""; + plotParameters.filename = ""; + plotParameters.filetype = PLOT_FILETYPE_AUTO; + plotParameters.color = QalculateSettings::coloredPlot(); + plotParameters.auto_y_min = true; + plotParameters.auto_x_min = true; + plotParameters.auto_x_max = true; + plotParameters.auto_y_max = true; + plotParameters.y_log = false; + plotParameters.x_log = false; + plotParameters.grid = QalculateSettings::plotGrid(); + plotParameters.linewidth = QalculateSettings::plotLineWidth(); + plotParameters.show_all_borders = QalculateSettings::plotBorder(); + switch (QalculateSettings::plotLegend()) { + case QalculateSettings::LEGEND_NONE: + plotParameters.legend_placement = PLOT_LEGEND_NONE; + break; + case QalculateSettings::LEGEND_TOP_LEFT: + plotParameters.legend_placement = PLOT_LEGEND_TOP_LEFT; + break; + case QalculateSettings::LEGEND_TOP_RIGHT: + plotParameters.legend_placement = PLOT_LEGEND_TOP_RIGHT; + break; + case QalculateSettings::LEGEND_BOTTOM_LEFT: + plotParameters.legend_placement = PLOT_LEGEND_BOTTOM_LEFT; + break; + case QalculateSettings::LEGEND_BOTTOM_RIGHT: + plotParameters.legend_placement = PLOT_LEGEND_BOTTOM_RIGHT; + break; + case QalculateSettings::LEGEND_BELOW: + plotParameters.legend_placement = PLOT_LEGEND_BELOW; + break; + case QalculateSettings::LEGEND_OUTSIDE: + plotParameters.legend_placement = PLOT_LEGEND_OUTSIDE; + break; + } + bool plotInline = QalculateSettings::inlinePlot(); + MathStructure xMin; + MathStructure xMax; + xMin.setUndefined(); + xMax.setUndefined(); + MathStructure stepLength; + stepLength.setUndefined(); + int steps = QalculateSettings::plotSteps(); + + QString mustBeNumber = i18n("%1 must be a number."); + QString mustBeInteger = i18n("%1 must be a integer."); + QString mustBeBoolean = i18n("%1 must be a boolean."); + QString invalidOption = i18n("invalid option for %1: %2"); + + for (int i = 0; i < argumentsList.size(); ++i) { + std::string xVariable = "x"; + PlotDataParameters* plotDataParams = new PlotDataParameters; + plotDataParameterList.push_back(plotDataParams); + plotDataParams->title = ""; + switch(QalculateSettings::plotSmoothing()) { + case QalculateSettings::SMOOTHING_NONE: + plotDataParams->smoothing = PLOT_SMOOTHING_NONE; + break; + case QalculateSettings::SMOOTHING_UNIQUE: + plotDataParams->smoothing = PLOT_SMOOTHING_UNIQUE; + break; + case QalculateSettings::SMOOTHING_CSPLINES: + plotDataParams->smoothing = PLOT_SMOOTHING_CSPLINES; + break; + case QalculateSettings::SMOOTHING_BEZIER: + plotDataParams->smoothing = PLOT_SMOOTHING_BEZIER; + break; + case QalculateSettings::SMOOTHING_SBEZIER: + plotDataParams->smoothing = PLOT_SMOOTHING_SBEZIER; + break; + } + switch(QalculateSettings::plotStyle()) { + case QalculateSettings::STYLE_LINES: + plotDataParams->style = PLOT_STYLE_LINES; + break; + case QalculateSettings::STYLE_POINTS: + plotDataParams->style = PLOT_STYLE_POINTS; + break; + case QalculateSettings::STYLE_LINES_POINTS: + plotDataParams->style = PLOT_STYLE_POINTS_LINES; + break; + case QalculateSettings::STYLE_BOXES: + plotDataParams->style = PLOT_STYLE_BOXES; + break; + case QalculateSettings::STYLE_HISTOGRAM: + plotDataParams->style = PLOT_STYLE_HISTOGRAM; + break; + case QalculateSettings::STYLE_STEPS: + plotDataParams->style = PLOT_STYLE_STEPS; + break; + case QalculateSettings::STYLE_CANDLESTICKS: + plotDataParams->style = PLOT_STYLE_CANDLESTICKS; + break; + case QalculateSettings::STYLE_DOTS: + plotDataParams->style = PLOT_STYLE_DOTS; + break; + } + plotDataParams->yaxis2 = false; + plotDataParams->xaxis2 = false; + arguments = argumentsList[i]; + std::string expression; + int lastExpressionEntry = -1; + for (int j = 0; j < arguments.size(); ++j) { + QString argument = arguments[j]; + // PlotParameters + if (argument.startsWith(QLatin1String("plottitle="))) + plotParameters.title = argument.mid(10).toLatin1().data(); + else if (argument.startsWith(QLatin1String("ylabel="))) + plotParameters.y_label = argument.mid(7).toLatin1().data(); + else if (argument.startsWith(QLatin1String("xlabel="))) + plotParameters.x_label = argument.mid(7).toLatin1().data(); + else if (argument.startsWith(QLatin1String("filename="))) + plotParameters.filename = argument.mid(9).toLatin1().data(); + else if (argument.startsWith(QLatin1String("filetype="))) { + QString option = argument.mid(9); + if (option == QLatin1String("auto")) + plotParameters.filetype = PLOT_FILETYPE_AUTO; + else if (option == QLatin1String("png")) + plotParameters.filetype = PLOT_FILETYPE_PNG; + else if (option == QLatin1String("ps")) + plotParameters.filetype = PLOT_FILETYPE_PS; + else if (option == QLatin1String("eps")) + plotParameters.filetype = PLOT_FILETYPE_EPS; + else if (option == QLatin1String("latex")) + plotParameters.filetype = PLOT_FILETYPE_LATEX; + else if (option == QLatin1String("svg")) + plotParameters.filetype = PLOT_FILETYPE_SVG; + else if (option == QLatin1String("fig")) + plotParameters.filetype = PLOT_FILETYPE_FIG; + else { + QString msg = invalidOption.arg(QLatin1String("filetype"), option); + showMessage(msg, MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } + else if (argument.startsWith(QLatin1String("font="))) + plotParameters.font = argument.mid(5).toLatin1().data(); + else if (argument.startsWith(QLatin1String("color="))) { + bool ok; + plotParameters.color = stringToBool(argument.mid(6), &ok); + if (!ok) { + showMessage(mustBeBoolean.arg(QLatin1String("color")), + MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } + else if (argument.startsWith(QLatin1String("ylog="))) { + bool ok; + plotParameters.y_log = stringToBool(argument.mid(5), &ok); + if (!ok) { + showMessage(mustBeBoolean.arg(QLatin1String("ylog")), MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } + else if (argument.startsWith(QLatin1String("xlog="))) { + bool ok; + plotParameters.x_log = stringToBool(argument.mid(5), &ok); + if (!ok) { + showMessage(mustBeBoolean.arg(QLatin1String("xlog")), MESSAGE_ERROR); + return; + } + } + else if (argument.startsWith(QLatin1String("ylogbase="))) { + MathStructure ylogStr = CALCULATOR->calculate(argument.mid(9).toLatin1().data(), eo); + if (checkForCalculatorMessages() & (MSG_WARN|MSG_ERR)) { + deletePlotDataParameters(plotDataParameterList); + return; + } + if (ylogStr.isNumber()) { + Number ylogNum = ylogStr.number(); + plotParameters.y_log_base = ylogNum.floatValue(); + } else { + showMessage(mustBeNumber.arg(QLatin1String("ylogbase")), MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } + else if (argument.startsWith(QLatin1String("xlogbase="))) { + MathStructure xlogStr = CALCULATOR->calculate(argument.mid(9).toLatin1().data(), eo); + if (checkForCalculatorMessages() & (MSG_WARN|MSG_ERR)) { + deletePlotDataParameters(plotDataParameterList); + return; + } + if (xlogStr.isNumber()) { + Number xlogNum = xlogStr.number(); + plotParameters.x_log_base = xlogNum.floatValue(); + } else { + showMessage(mustBeNumber.arg(QLatin1String("xlogbase")), MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } + else if (argument.startsWith(QLatin1String("grid="))) { + bool ok; + plotParameters.grid = stringToBool(argument.mid(5), &ok); + if (!ok) { + showMessage(mustBeBoolean.arg(QLatin1String("grid")), MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } + else if (argument.startsWith(QLatin1String("linewidth="))) { + MathStructure lineWidthStr = CALCULATOR->calculate(argument.mid(10).toLatin1().data(), eo); + Number lineWidthNum; + if (lineWidthStr.isNumber() && lineWidthStr.number().isInteger()) { + lineWidthNum = lineWidthStr.number(); + plotParameters.linewidth = lineWidthNum.intValue(); + } else { + showMessage(mustBeInteger.arg(QLatin1String("linewidth")), MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } + else if (argument.startsWith(QLatin1String("border="))) { + bool ok; + plotParameters.show_all_borders = stringToBool(argument.mid(7), &ok); + if (!ok) { + showMessage(mustBeBoolean.arg(QLatin1String("border")), MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } + else if (argument.startsWith(QLatin1String("legend="))) { + QString option = argument.mid(7); + if (option == QLatin1String("none")) + plotParameters.legend_placement = PLOT_LEGEND_NONE; + else if (option == QLatin1String("top_left")) + plotParameters.legend_placement = PLOT_LEGEND_TOP_LEFT; + else if (option == QLatin1String("top_right")) + plotParameters.legend_placement = PLOT_LEGEND_TOP_RIGHT; + else if (option == QLatin1String("bottom_left")) + plotParameters.legend_placement = PLOT_LEGEND_BOTTOM_LEFT; + else if (option == QLatin1String("bottom_right")) + plotParameters.legend_placement = PLOT_LEGEND_BOTTOM_RIGHT; + else if (option == QLatin1String("below")) + plotParameters.legend_placement = PLOT_LEGEND_BELOW; + else if (option == QLatin1String("outside")) + plotParameters.legend_placement = PLOT_LEGEND_OUTSIDE; + else { + QString msg = invalidOption.arg(QLatin1String("legend"), option); + showMessage(msg, MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } + // PlotDataParameters + else if (argument.startsWith(QLatin1String("title="))) { + plotDataParams->title = argument.mid(6).toLatin1().data(); + } + else if (argument.startsWith(QLatin1String("smoothing="))) { + QString option = argument.mid(10); + if (option == QLatin1String("none")) + plotDataParams->smoothing = PLOT_SMOOTHING_NONE; + else if (option == QLatin1String("monotonic")) + plotDataParams->smoothing = PLOT_SMOOTHING_UNIQUE; + else if (option == QLatin1String("csplines")) + plotDataParams->smoothing = PLOT_SMOOTHING_CSPLINES; + else if (option == QLatin1String("bezier")) + plotDataParams->smoothing = PLOT_SMOOTHING_BEZIER; + else if (option == QLatin1String("sbezier")) + plotDataParams->smoothing = PLOT_SMOOTHING_SBEZIER; + else { + QString msg = invalidOption.arg(QLatin1String("smoothing"), option); + showMessage(msg, MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } else if (argument.startsWith(QLatin1String("style="))) { + QString option = argument.mid(6); + if (option == QLatin1String("lines")) + plotDataParams->style = PLOT_STYLE_LINES; + else if (option == QLatin1String("points")) + plotDataParams->style = PLOT_STYLE_POINTS; + else if (option == QLatin1String("points_lines")) + plotDataParams->style = PLOT_STYLE_POINTS_LINES; + else if (option == QLatin1String("boxes")) + plotDataParams->style = PLOT_STYLE_BOXES; + else if (option == QLatin1String("histogram")) + plotDataParams->style = PLOT_STYLE_HISTOGRAM; + else if (option == QLatin1String("steps")) + plotDataParams->style = PLOT_STYLE_STEPS; + else if (option == QLatin1String("candlesticks")) + plotDataParams->style = PLOT_STYLE_CANDLESTICKS; + else if (option == QLatin1String("dots")) + plotDataParams->style = PLOT_STYLE_DOTS; + else { + QString msg = invalidOption.arg(QLatin1String("style"), option); + showMessage(msg, MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } else if (argument.startsWith(QLatin1String("xaxis2="))) { + bool ok; + plotDataParams->xaxis2 = stringToBool(argument.mid(7), &ok); + if (!ok) { + showMessage(mustBeBoolean.arg(QLatin1String("xaxis2")), MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } else if (argument.startsWith(QLatin1String("yaxis2="))) { + bool ok; + plotDataParams->yaxis2 = stringToBool(argument.mid(7), &ok); + if (!ok) { + showMessage(mustBeBoolean.arg(QLatin1String("yaxis2")), MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } + // inline, xmin, xmax, step, steps, xvar + // Custom options + else if (argument.startsWith(QLatin1String("inline="))) { + bool ok; + plotInline = stringToBool(argument.mid(7), &ok); + if (!ok) { + showMessage(mustBeBoolean.arg(QLatin1String("inline")), MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } + else if (argument.startsWith(QLatin1String("xmin="))) { + xMin = CALCULATOR->calculate(argument.mid(5).toLatin1().data(), eo); + if (checkForCalculatorMessages() & (MSG_WARN|MSG_ERR)) { + deletePlotDataParameters(plotDataParameterList); + return; + } + } + else if (argument.startsWith(QLatin1String("xmax="))) { + xMax = CALCULATOR->calculate(argument.mid(5).toLatin1().data(), eo); + if (checkForCalculatorMessages() & (MSG_WARN|MSG_ERR)) { + deletePlotDataParameters(plotDataParameterList); + return; + } + } + else if (argument.startsWith(QLatin1String("step="))) { + stepLength = CALCULATOR->calculate(argument.mid(5).toLatin1().data(), eo); + if (checkForCalculatorMessages() & (MSG_WARN|MSG_ERR)) { + deletePlotDataParameters(plotDataParameterList); + return; + } + steps = -1; + } + else if (argument.startsWith(QLatin1String("steps="))) { + MathStructure stepsStr = CALCULATOR->calculate(argument.mid(6).toLatin1().data(), eo); + if (checkForCalculatorMessages() & (MSG_WARN|MSG_ERR)) { + deletePlotDataParameters(plotDataParameterList); + return; + } + Number stepsNum; + if (stepsStr.isNumber() && stepsStr.number().isInteger()) { + stepsNum = stepsStr.number(); + steps = stepsNum.intValue(); + stepLength.setUndefined(); + } else { + showMessage(mustBeInteger.arg(QLatin1String("steps")), MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } + else if (argument.startsWith(QLatin1String("xvar="))) { + xVariable = argument.mid(5).toLatin1().data(); + } + else if (expression.empty()) { + expression = argument.toLatin1().data(); + lastExpressionEntry = j; + } + else if (lastExpressionEntry == j-1) { + expression += " "; + expression += argument.toLatin1().data(); + lastExpressionEntry = j; + } + else { + QString msg = i18n("found multiple expressions in one plot command (%1 and %2).", QLatin1String(expression.c_str()), argument); + showMessage(msg, MESSAGE_ERROR); + deletePlotDataParameters(plotDataParameterList); + return; + } + } + if (expression.empty()) + continue; + if (xMin.isUndefined()) { + if (!plotParameters.auto_x_min) + xMin = plotParameters.x_min; + else + xMin = 0.0; + } + if (xMax.isUndefined()) { + if (!plotParameters.auto_x_max) + xMax = plotParameters.x_max; + else + xMax = 10.0; + } + if (plotDataParams->title.empty()) + plotDataParams->title = expression; + MathStructure x_vec, y_vec; + x_vec.clearVector(); + if (!stepLength.isUndefined()) + y_vec = CALCULATOR->expressionToPlotVector(expression, xMin, xMax, stepLength, &x_vec, xVariable, eo.parse_options); + else + y_vec = CALCULATOR->expressionToPlotVector(expression, xMin, xMax, steps, &x_vec, xVariable, eo.parse_options); + if (checkForCalculatorMessages() & (MSG_WARN|MSG_ERR)) { + deletePlotDataParameters(plotDataParameterList); + return; + } + + x_vectors.push_back(x_vec); + y_vectors.push_back(y_vec); + + //PrintOptions po; + //y_vec.format(po); + + //setResult(new Cantor::TextResult(y_vec.print(po).c_str())); + //setStatus(Done); + //deletePlotDataParameters(plotDataParameterList); + //return; + } + + if (plotInline && plotParameters.filename.empty()) { + // TODO: get a temporary file name here + if (!m_tempFile) { +#ifdef WITH_EPS + m_tempFile=new QTemporaryFile(QDir::tempPath() + QLatin1String("/cantor_qalculate-XXXXXX.eps" )); +#else + m_tempFile=new QTemporaryFile(QDir::tempPath() + QLatin1String("/cantor_qalculate-XXXXXX.png")); +#endif + m_tempFile->open(); + } + plotParameters.filename = m_tempFile->fileName().toLatin1().data(); + plotParameters.filetype = PLOT_FILETYPE_AUTO; + } + + CALCULATOR->plotVectors(&plotParameters, y_vectors, x_vectors, + plotDataParameterList); + if (checkForCalculatorMessages() & (MSG_WARN|MSG_ERR)) { + deletePlotDataParameters(plotDataParameterList); + return; + } + + deletePlotDataParameters(plotDataParameterList); + + if (plotInline) { +#ifdef WITH_EPS + size_t p = plotParameters.filename.size(); + if (plotParameters.filetype == PLOT_FILETYPE_EPS || + plotParameters.filetype == PLOT_FILETYPE_PS || + (plotParameters.filetype == PLOT_FILETYPE_AUTO && p >= 4 && + plotParameters.filename.substr(p-4,4) == ".eps") || + (plotParameters.filetype == PLOT_FILETYPE_AUTO && p >= 3 && + plotParameters.filename.substr(p-3,3) == ".ps")) + setResult(new Cantor::EpsResult(QUrl(QString::fromStdString(plotParameters.filename)))); + else + setResult(new Cantor::ImageResult(QUrl(QString::fromStdString(plotParameters.filename)))); +#else + setResult(new Cantor::ImageResult(QUrl::fromLocalFile(QString::fromStdString(plotParameters.filename)))); +#endif + setStatus(Cantor::Expression::Done); + } +} + +void QalculateExpression::showMessage(QString msg, MessageType mtype) +{ + KColorScheme scheme(QApplication::palette().currentColorGroup()); + const QString errorColor = scheme.foreground(KColorScheme::NegativeText).color().name(); + const QString warningColor = scheme.foreground(KColorScheme::NeutralText).color().name(); + const QString msgFormat(QLatin1String("%2: %3
      \n")); + if(mtype == MESSAGE_ERROR || mtype == MESSAGE_WARNING) { + msg.replace(QLatin1String("&"), QLatin1String("&")); + msg.replace(QLatin1String(">"), QLatin1String(">")); + msg.replace(QLatin1String("<"), QLatin1String("<")); + + if (mtype == MESSAGE_ERROR) { + msg = msgFormat.arg(errorColor, i18n("ERROR"), QLatin1String(msg.toLatin1().data())); + } else { + msg = msgFormat.arg(errorColor, i18n("WARNING"), QLatin1String(msg.toLatin1().data())); + } + setErrorMessage(msg); + setStatus(Error); + } else { + KMessageBox::information(QApplication::activeWindow(), msg); + } +} + +EvaluationOptions QalculateExpression::evaluationOptions() +{ + EvaluationOptions eo; + + eo.auto_post_conversion = QalculateSettings::postConversion() ? POST_CONVERSION_BEST : POST_CONVERSION_NONE; + eo.keep_zero_units = false; + + eo.parse_options = parseOptions(); + + switch (QalculateSettings::structuring()) { + case 0: + eo.structuring = STRUCTURING_NONE; + break; + case 1: + eo.structuring = STRUCTURING_SIMPLIFY; + break; + case 2: + eo.structuring = STRUCTURING_FACTORIZE; + break; + } + + return eo; +} + +ParseOptions QalculateExpression::parseOptions() +{ + ParseOptions po; + switch (QalculateSettings::angleUnit()) { + case 0: + po.angle_unit = ANGLE_UNIT_NONE; + break; + case 1: + po.angle_unit = ANGLE_UNIT_RADIANS; + break; + case 2: + po.angle_unit = ANGLE_UNIT_DEGREES; + break; + case 3: + po.angle_unit = ANGLE_UNIT_GRADIANS; + break; + } + + po.base = QalculateSettings::base(); + po.comma_as_separator = false; + + return po; +} + +void QalculateExpression::deletePlotDataParameters + (const std::vector& plotDataParameterList) +{ + for(size_t i = 0; i < plotDataParameterList.size(); ++i) + delete plotDataParameterList[i]; +} + +bool QalculateExpression::stringToBool(const QString &string, bool *ok) +{ + if (string == QLatin1String("true") || string == QLatin1String("1")) { + *ok = true; + return true; + } else if (string == QLatin1String("false") || string == QLatin1String("0")) { + *ok = true; + return false; + } else { + *ok = false; + return false; + } +} + +int QalculateExpression::checkForCalculatorMessages() +{ + // error handling, most of it copied from qalculate-kde + int msgType = MSG_NONE; + if ( CALCULATOR->message() ) { + QString msg; + KColorScheme scheme(QApplication::palette().currentColorGroup()); + const QString errorColor = scheme.foreground(KColorScheme::NegativeText).color().name(); + const QString warningColor = scheme.foreground(KColorScheme::NeutralText).color().name(); + const QString msgFormat(QLatin1String("%2: %3
      \n")); + MessageType mtype; + while(true) { + mtype = CALCULATOR->message()->type(); + switch(mtype) { + case MESSAGE_INFORMATION: + msgType |= MSG_INFO; break; + case MESSAGE_WARNING: + msgType |= MSG_WARN; break; + case MESSAGE_ERROR: + msgType |= MSG_ERR; break; + } + if(mtype == MESSAGE_ERROR || mtype == MESSAGE_WARNING) { + QString text = QLatin1String(CALCULATOR->message()->message().c_str()); + text.replace(QLatin1String("&"), QLatin1String("&")); + text.replace(QLatin1String(">"), QLatin1String(">")); + text.replace(QLatin1String("<"), QLatin1String("<")); + + if (mtype == MESSAGE_ERROR) { + msg.append(msgFormat.arg(errorColor, i18n("ERROR"), text)); + } else { + msg.append(msgFormat.arg(errorColor, i18n("WARNING"), text)); + } + } else { + KMessageBox::information(QApplication::activeWindow(), QLatin1String(CALCULATOR->message()->message().c_str())); + } + if(!CALCULATOR->nextMessage()) break; + } + if ( !msg.isEmpty() ) { + m_message += msg; + setErrorMessage(m_message); + setStatus(Error); + } + } + return msgType; +} + +std::string QalculateExpression::unlocalizeExpression(QString expr) +{ + // copy'n'pasted from qalculate plasma applet + + return CALCULATOR->unlocalizeExpression( + expr.replace(QChar(0xA3), QLatin1String("GBP")) + .replace(QChar(0xA5), QLatin1String("JPY")) + .replace(QLatin1String("$"), QLatin1String("USD")) + .replace(QChar(0x20AC), QLatin1String("EUR")) + .toLatin1().data() + ); +} + +QSharedPointer QalculateExpression::printOptions() +{ + QSharedPointer po(new PrintOptions); + + switch (QalculateSettings::fractionFormat()) { + case 0: + po->number_fraction_format = FRACTION_DECIMAL; + break; + case 1: + po->number_fraction_format = FRACTION_DECIMAL_EXACT; + break; + case 2: + po->number_fraction_format = FRACTION_FRACTIONAL; + break; + case 3: + po->number_fraction_format = FRACTION_COMBINED; + break; + } + po->indicate_infinite_series = QalculateSettings::indicateInfiniteSeries(); + po->use_all_prefixes = QalculateSettings::useAllPrefixes(); + po->negative_exponents = QalculateSettings::negativeExponents(); + + po->lower_case_e = true; + po->base = QalculateSettings::base(); + po->decimalpoint_sign = QLocale().decimalPoint().toLatin1(); + + switch (QalculateSettings::minExp()) { + case 0: + po->min_exp = EXP_NONE; + break; + case 1: + po->min_exp = EXP_PURE; + break; + case 2: + po->min_exp = EXP_SCIENTIFIC; + break; + case 3: + po->min_exp = EXP_PRECISION; + break; + case 4: + po->min_exp = EXP_BASE_3; + break; + } + return po; +} diff --git a/src/backends/qalculate/qalculateexpression.h b/src/backends/qalculate/qalculateexpression.h new file mode 100644 index 0000000..c23af69 --- /dev/null +++ b/src/backends/qalculate/qalculateexpression.h @@ -0,0 +1,52 @@ +/* + SPDX-FileCopyrightText: 2009 Milian Wolff + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef QALCULATE_EXPRESSION_H +#define QALCULATE_EXPRESSION_H + +#include "expression.h" +#include +#include +#include + +#include + +class QalculateSession; +class QTemporaryFile; + +class QalculateExpression : public Cantor::Expression +{ + Q_OBJECT + +public: + explicit QalculateExpression( QalculateSession* session, bool internal = false); + ~QalculateExpression() override; + + void evaluate() override; + void interrupt() override; + void parseOutput(const QString&) override; + void parseError(const QString&) override; + +private: + QTemporaryFile* m_tempFile{nullptr}; + + QString m_message; + enum MsgType { MSG_NONE=0, MSG_INFO=1, MSG_WARN=2, MSG_ERR=4 }; + + void evaluatePlotCommand(); + + bool stringToBool(const QString&, bool*); + void deletePlotDataParameters(const std::vector&); + void showMessage(QString msg, MessageType mtype); + int checkForCalculatorMessages(); + void updateVariables(); + QSharedPointer printOptions(); + EvaluationOptions evaluationOptions(); + ParseOptions parseOptions(); + std::string unlocalizeExpression(QString expr); +}; + +#endif diff --git a/src/backends/qalculate/qalculateextensions.cpp b/src/backends/qalculate/qalculateextensions.cpp new file mode 100644 index 0000000..237fead --- /dev/null +++ b/src/backends/qalculate/qalculateextensions.cpp @@ -0,0 +1,188 @@ +/* + SPDX-FileCopyrightText: 2011 Matteo Agostinelli + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "qalculateextensions.h" + +#include +#include +#include + +#include + +#define QALCULATE_EXT_CDTOR(name) Qalculate##name##Extension::Qalculate##name##Extension(QObject* parent) : name##Extension(parent) {} \ + Qalculate##name##Extension::~Qalculate##name##Extension() {} + +QALCULATE_EXT_CDTOR(History) +QALCULATE_EXT_CDTOR(VariableManagement) +QALCULATE_EXT_CDTOR(CAS) +QALCULATE_EXT_CDTOR(Calculus) +QALCULATE_EXT_CDTOR(LinearAlgebra) + +QString QalculateHistoryExtension::lastResult() +{ + return QLatin1String("ans"); +} + +QString QalculateVariableManagementExtension::addVariable(const QString& name, const QString& value) +{ + return setValue(name,value); +} + +QString QalculateVariableManagementExtension::setValue(const QString& name, const QString& value) +{ + return QString::fromLatin1("%1 := %2").arg(name).arg(value); +} + +QString QalculateVariableManagementExtension::removeVariable(const QString& name) +{ + Q_UNUSED(name) + //CALCULATOR->getVariable(name.toStdString())->setActive(false); + return QString(); +} + +QString QalculateVariableManagementExtension::clearVariables() +{ + //CALCULATOR->resetVariables(); + return QString(); +} + +QString QalculateVariableManagementExtension::saveVariables(const QString& fileName) +{ + QString escapedFileName = fileName; + escapedFileName.replace(QLatin1Char(' '), QLatin1String("\\ ")); + return QString::fromLatin1("saveVariables %1").arg(escapedFileName); +} + +QString QalculateVariableManagementExtension::loadVariables(const QString& fileName) +{ + QString escapedFileName = fileName; + escapedFileName.replace(QLatin1Char(' '), QLatin1String("\\ ")); + return QString::fromLatin1("loadVariables %1").arg(escapedFileName); +} + +// Custom Plot Extension. This extension does not fit into the normal pattern, +// because it inherits Cantor::Extension directly. +// Also it does not do anything at all, because all the work is done by the +// QalculatePlotAssistant +QalculatePlotExtension::QalculatePlotExtension(QObject* parent) : + Cantor::Extension(QLatin1String("QalculatePlotExtension"), parent) +{ +} + +QalculatePlotExtension::~QalculatePlotExtension() = default; + +QString QalculateCASExtension::solve(const QStringList& equations, const QStringList& variables) +{ + QString eqstr=QString::fromLatin1("[%1]").arg(equations.join(QLatin1String(","))); + + QString variablestr=QString::fromLatin1("[%1]").arg(variables.join(QLatin1String(","))); + + return QString::fromLatin1("multisolve(%1,%2)").arg(eqstr, variablestr); +} + +QString QalculateCASExtension::simplify(const QString& expression) +{ + // There is (currently) no way to do this + return QString::fromLatin1("").arg(expression); +} + +QString QalculateCASExtension::expand(const QString& expression) +{ + // There is (currently) no way to do this + return QString::fromLatin1("").arg(expression); +} + +QString QalculateCalculusExtension::limit(const QString& expression, const QString& variable, const QString& limit) +{ + Q_UNUSED(expression) + Q_UNUSED(variable) + Q_UNUSED(limit) + // There is no limit function in Qalculate (at least none I know of), + // but fortunately this function seems not to be used anyway. + return QLatin1String(""); + //return QString("limit(%1, %2=%3);").arg(expression, variable, limit); +} + +QString QalculateCalculusExtension::differentiate(const QString& function,const QString& variable, int times) +{ + return QString::fromLatin1("diff(%1, %2, %3)").arg(function, variable, QString::number(times)); +} + +QString QalculateCalculusExtension::integrate(const QString& function, const QString& variable) +{ + return QString::fromLatin1("integrate(%1, %2)").arg(function, variable); +} + +QString QalculateCalculusExtension::integrate(const QString& function,const QString& variable, const QString& left, const QString& right) +{ + return QString::fromLatin1("integrate(%1, %2, %3, %4)").arg(function, variable, left, right); +} + +//Commands to create Vectors/Matrices +QString QalculateLinearAlgebraExtension::createVector(const QStringList& entries, VectorType type) +{ + // Neither of these does create a normal vector, but a n-times-1 or + // an 1-times-n matrix. + if(type==Cantor::LinearAlgebraExtension::ColumnVector) { + QString list=entries.join(QLatin1String("], [")); + return QString::fromLatin1("[[%1]]").arg(list); + } + else { + QString list=entries.join(QLatin1String(",")); + return QString::fromLatin1("[[%1]]").arg(list); + } +} + +QString QalculateLinearAlgebraExtension::createMatrix(const Matrix& matrix) +{ + QString cmd=QLatin1String("["); + foreach(const QStringList& row, matrix) + { + cmd+=QLatin1Char('['); + foreach(const QString& entry, row) + cmd+=entry+QLatin1Char(','); + cmd.chop(1); + cmd+=QLatin1String("],"); + } + cmd.chop(1); + cmd+=QLatin1String("]"); + + return cmd; +} + +QString QalculateLinearAlgebraExtension::identityMatrix(int size) +{ + return QString::fromLatin1("identity(%1)").arg(size); +} + +//basic functions +QString QalculateLinearAlgebraExtension::rank(const QString& matrix) +{ + // This feature seems to be missing in Qalculate + return QString::fromLatin1("").arg(matrix); +} + +QString QalculateLinearAlgebraExtension::invertMatrix(const QString& matrix) +{ + return QString::fromLatin1("inverse(%1)").arg(matrix); +} + +QString QalculateLinearAlgebraExtension::charPoly(const QString& matrix) +{ + return QString::fromLatin1("det(x*identity(%1)-%2)").arg(matrix, matrix); +} + +QString QalculateLinearAlgebraExtension::eigenVectors(const QString& matrix) +{ + // No such function + return QString::fromLatin1("").arg(matrix); +} + +QString QalculateLinearAlgebraExtension::eigenValues(const QString& matrix) +{ + // No such function + return QString::fromLatin1("").arg(matrix); +} diff --git a/src/backends/qalculate/qalculateextensions.h b/src/backends/qalculate/qalculateextensions.h new file mode 100644 index 0000000..b8bf093 --- /dev/null +++ b/src/backends/qalculate/qalculateextensions.h @@ -0,0 +1,84 @@ +/* + SPDX-FileCopyrightText: 2011 Matteo Agostinelli + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef QALCULATEEXTENSIONS_H +#define QALCULATEEXTENSIONS_H + +#include + +#define QALCULATE_EXT_CDTOR_DECL(name) Qalculate##name##Extension(QObject* parent); \ + ~Qalculate##name##Extension(); + +class QalculateHistoryExtension : public Cantor::HistoryExtension +{ +public: + QALCULATE_EXT_CDTOR_DECL(History) + QString lastResult() override; +}; + +class QalculateVariableManagementExtension : public Cantor::VariableManagementExtension +{ + public: + QALCULATE_EXT_CDTOR_DECL(VariableManagement) + QString addVariable(const QString& name, const QString& value) override; + QString setValue(const QString& name, const QString& value) override; + QString removeVariable(const QString& name) override; + QString saveVariables(const QString& fileName) override; + QString loadVariables(const QString& fileName) override; + QString clearVariables() override; +}; + +class QalculatePlotExtension : public Cantor::Extension +{ +public: + QALCULATE_EXT_CDTOR_DECL(Plot) +}; + +class QalculateCASExtension : public Cantor::CASExtension +{ + public: + QALCULATE_EXT_CDTOR_DECL(CAS) + + public Q_SLOTS: + QString solve(const QStringList& equations, const QStringList& variables) override; + QString simplify(const QString& expression) override; + QString expand(const QString& expression) override; + +}; + +class QalculateCalculusExtension : public Cantor::CalculusExtension +{ + public: + QALCULATE_EXT_CDTOR_DECL(Calculus) + + public Q_SLOTS: + QString limit(const QString& expression, const QString& variable, const QString& limit) override; + QString differentiate(const QString& function,const QString& variable, int times) override; + QString integrate(const QString& function, const QString& variable) override; + QString integrate(const QString& function,const QString& variable, const QString& left, const QString& right) override; +}; + +class QalculateLinearAlgebraExtension : public Cantor::LinearAlgebraExtension +{ + public: + QALCULATE_EXT_CDTOR_DECL(LinearAlgebra) + + public Q_SLOTS: + //Commands to create Vectors/Matrices + QString createVector(const QStringList& entries, VectorType type) override; + QString createMatrix(const Matrix& matrix) override; + QString identityMatrix(int size) override; + + //basic functions + QString rank(const QString& matrix) override; + QString invertMatrix(const QString& matrix) override; + QString charPoly(const QString& matrix) override; + QString eigenVectors(const QString& matrix) override; + QString eigenValues(const QString& matrix) override; + +}; + +#endif /* QALCULATEEXTENSIONS_H */ diff --git a/src/backends/qalculate/qalculatehighlighter.cpp b/src/backends/qalculate/qalculatehighlighter.cpp new file mode 100644 index 0000000..758645f --- /dev/null +++ b/src/backends/qalculate/qalculatehighlighter.cpp @@ -0,0 +1,120 @@ +/* + SPDX-FileCopyrightText: 2009 Milian Wolff + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "qalculatehighlighter.h" + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +QalculateHighlighter::QalculateHighlighter(QObject* parent) + : Cantor::DefaultHighlighter(parent) +{ +} + +void QalculateHighlighter::highlightBlock(const QString& text) +{ + if ( text.isEmpty() || text.trimmed().isEmpty() || text.startsWith(QLatin1String(">>> ")) + // filter error messages, they get highlighted via html + || text.startsWith(i18n("ERROR") + QLatin1Char(':')) || text.startsWith(i18n("WARNING") + QLatin1Char(':')) ) { + return; + } + + int pos = 0; + int count; + ///TODO: Can't we use CALCULATOR->parse() or similar? + /// Question is how to get the connection between + /// MathStructur and position+length in @p text + const QStringList words = text.split(QRegularExpression(QStringLiteral("\\b")), QString::SkipEmptyParts); + + qDebug() << "highlight block:" << text; + + CALCULATOR->beginTemporaryStopMessages(); + + const QString decimalSymbol = QLocale().decimalPoint(); + + for ( int i = 0; i < words.size(); ++i, pos += count ) { + count = words[i].size(); + if ( words[i].trimmed().isEmpty() ) { + continue; + } + + qDebug() << "highlight word:" << words[i]; + + QTextCharFormat format = errorFormat(); + + if ( i < words.size() - 1 && words[i+1].trimmed() == QLatin1String("(") && CALCULATOR->getFunction(words[i].toUtf8().constData()) ) { + // should be a function + qDebug() << "function"; + format = functionFormat(); + } else if ( isOperatorAndWhitespace(words[i]) ) { + // stuff like ") * (" is an invalid expression, but actually OK + + // check if last number is actually a float + bool isFloat = false; + if ( words[i].trimmed() == decimalSymbol ) { + if ( i > 0 ) { + // lookbehind + QString lastWord = words[i-1].trimmed(); + if ( !lastWord.isEmpty() && lastWord.at(lastWord.size()-1).isNumber() ) { + qDebug() << "actually float"; + isFloat = true; + } + } + if ( !isFloat && i < words.size() - 1 ) { + // lookahead + QString nextWord = words[i+1].trimmed(); + if ( !nextWord.isEmpty() && nextWord.at(0).isNumber() ) { + qDebug() << "float coming"; + isFloat = true; + } + } + } + if ( !isFloat ) { + qDebug() << "operator / whitespace"; + format = operatorFormat(); + } else { + format = numberFormat(); + } + } else { + MathStructure expr = CALCULATOR->parse(words[i].toLatin1().constData()); + if ( expr.isNumber() || expr.isNumber_exp() ) { + qDebug() << "number"; + format = numberFormat(); + } else if ( expr.isVariable() ) { + qDebug() << "variable"; + format = variableFormat(); + } else if ( expr.isUndefined() ) { + qDebug() << "undefined"; + } else if ( expr.isUnit() || expr.isUnit_exp() ) { + qDebug() << "unit"; + format = keywordFormat(); + } + } + + setFormat(pos, count, format); + } + + CALCULATOR->endTemporaryStopMessages(); + +} + +bool QalculateHighlighter::isOperatorAndWhitespace(const QString& word) const +{ + foreach ( const QChar& c, word ) { + if ( c.isLetterOrNumber() ) { + return false; + } + } + return true; +} diff --git a/src/backends/qalculate/qalculatehighlighter.h b/src/backends/qalculate/qalculatehighlighter.h new file mode 100644 index 0000000..7efc7c0 --- /dev/null +++ b/src/backends/qalculate/qalculatehighlighter.h @@ -0,0 +1,25 @@ +/* + SPDX-FileCopyrightText: 2009 Milian Wolff + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef QALCULATEHIGHLIGHTER_H +#define QALCULATEHIGHLIGHTER_H + +#include "defaulthighlighter.h" + +class QalculateHighlighter : public Cantor::DefaultHighlighter +{ +public: + explicit QalculateHighlighter(QObject* parent); + ~QalculateHighlighter() override = default; + +protected: + void highlightBlock(const QString& text) override; + +private: + bool isOperatorAndWhitespace(const QString &word) const; +}; + +#endif // QALCULATEHIGHLIGHTER_H diff --git a/src/backends/qalculate/qalculatesession.cpp b/src/backends/qalculate/qalculatesession.cpp new file mode 100644 index 0000000..99cf469 --- /dev/null +++ b/src/backends/qalculate/qalculatesession.cpp @@ -0,0 +1,417 @@ +/* + SPDX-FileCopyrightText: 2009 Milian Wolff + SPDX-FileCopyrightText: 2011 Matteo Agostinelli + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "settings.h" + +#include "qalculatesession.h" +#include "qalculatecompletionobject.h" +#include "qalculatehighlighter.h" +#include "defaultvariablemodel.h" + +#include +#include + +#include +#include +#include +#include +#include + +#include "qalculatesyntaxhelpobject.h" + +QalculateSession::QalculateSession( Cantor::Backend* backend) + : Session(backend), + m_variableModel(new Cantor::DefaultVariableModel(this)), + m_process(nullptr), + m_currentExpression(nullptr), + m_isSaveCommand(false) +{ + /* + qalc does all of this by default but we still need the CALCULATOR instance for plotting + graphs + */ + + if ( !CALCULATOR ) { + new Calculator(); + CALCULATOR->loadGlobalDefinitions(); + CALCULATOR->loadLocalDefinitions(); + CALCULATOR->loadExchangeRates(); + } +} + +QalculateSession::~QalculateSession() +{ + CALCULATOR->abort(); + if(m_process) + { + m_process->kill(); + m_process->deleteLater(); + m_process = nullptr; + } +} + +void QalculateSession::login() +{ + if (m_process) + return; + + emit loginStarted(); + qDebug() << "login started"; + + /* we will , most probably, use autoscripts for setting the mode , evaluate options, print options etc */ + + // if(!QalculateSettings::autorunScripts().isEmpty()){ + // QString autorunScripts = QalculateSettings::self()->autorunScripts().join(QLatin1String("\n")); + // + // evaluateExpression(autorunScripts, QalculateExpression::DeleteOnFinish); + // } + + /* + set up the process here. The program path , arguments(if any),channel modes , and connections should all be set up here. + once the setup is complete, start the process and inform the worksheet that we are ready + */ + m_process = new QProcess(this); + + m_process->setProgram(QStandardPaths::findExecutable(QLatin1String("qalc"))); +#ifdef QALCULATE_NEED_DISABLE_COLOR + QStringList args; + args << QLatin1String("-s") << QLatin1String("color 0"); + m_process->setArguments(args); +#endif + m_process->setProcessChannelMode(QProcess::SeparateChannels); + + connect(m_process, SIGNAL(readyReadStandardOutput()), this, SLOT(readOutput())); + connect(m_process, SIGNAL(readyReadStandardError()), this, SLOT(readError())); + connect(m_process, SIGNAL(started()), this, SLOT(processStarted())); + + m_process->start(); + + changeStatus(Session::Done); + emit loginDone(); +} + +void QalculateSession::readOutput() +{ + while(m_process->bytesAvailable()) { + m_output.append(QString::fromLocal8Bit(m_process->readLine())); + qDebug() << m_output; + } + + if(m_currentExpression && !m_output.isEmpty() && m_output.trimmed().endsWith(QLatin1String(">"))) { + + // check if the commandQueue is empty or not . if it's not empty run the "runCommandQueue" function. + // store the output in finalOutput and clear m_output + + if(m_currentCommand.trimmed().isEmpty()) + m_output.clear(); + + if(!m_output.toLower().contains(QLatin1String("error")) && m_isSaveCommand) { + storeVariables(m_currentCommand, m_output); + m_isSaveCommand = false; + } + + m_output = m_output.trimmed(); + m_output.remove(m_currentCommand); + if (!m_output.isEmpty()) + m_finalOutput.append(m_output); + + // we tried to perform a save operation but failed(see parseSaveCommand()).In such a case + // m_output will be empty but m_saveError will contain the error message. + if(!m_saveError.isEmpty()) { + m_finalOutput.append(m_saveError); + m_saveError.clear(); + } + + m_finalOutput.append(QLatin1String("\n")); + m_output.clear(); + + + + if (!m_commandQueue.isEmpty()) + runCommandQueue(); + else { + qDebug () << "parsing output: " << m_finalOutput; + m_currentExpression->parseOutput(m_finalOutput); + m_finalOutput.clear(); + } + } +} + +void QalculateSession::storeVariables(QString& currentCmd, QString output) +{ + + // internally we pass save(value,variable) command to qlac to save the variables. see parseSaveCommand() + // TODO: if the user if trying to override a default variable(constants etc) or an existing variable, ask the user if he/she wants to override it or not. + + qDebug() << "save command " << currentCmd; + + /** + if we have reached here, we expect our variable model to be updated with new variables. + In case the variable model is not updated, it most probably because we were not able to successfully parse the + current command and output to extract variable and value + + This is probably not the best way to get the variable and value. + But since qalc does not provide a way to get the list of variables, we will have to stick to parsing + **/ + QRegularExpression regex; + // find the value + regex.setPattern(QStringLiteral("^[\\s\\w\\W]+=\\s*([\\w\\W]+)$")); + QRegularExpressionMatch match = regex.match(output); + QString value; + if(match.hasMatch()) { + value = match.captured(1).trimmed(); + value.replace(QLatin1String("\n"), QLatin1String("")); + value.remove(QLatin1String(">")); + } + + //find the varaiable. + // ex1: currentCmd = save(10, var_1,category, title): var_1 = variable + // ex2: currentCmd = save(planet(jupter,mass), jupiter_mass, category, title): jupiter_mass = variable + + // regex.setPattern(QLatin1String("\\s*save\\s*\\(\\s*[\\s\\w]+\\s*,([\\s\\w]+),*[\\w\\W]*\\)\\s*;*$|\\s*save\\s*\\(\\s*[\\s\\w\\W]+\\)\\s*,([\\s\\w]+),*[\\w\\W]*\\)\\s*;*$")); + + regex.setPattern(QStringLiteral("^\\s*save\\s*\\(" + "(?:.+?(?:\\(.+?,.+?\\))|(?:[^,()]+?))," + "(.+?)," + "(?:.+?)," + "(?:.+?)\\)\\s*;?$")); + QString var; + match = regex.match(currentCmd); + if (match.hasMatch()) { + var = match.captured(1).trimmed(); + var.replace(QLatin1String("\n"), QLatin1String("")); + var.remove(QLatin1String(">")); + } + if(!value.isEmpty() && !var.isEmpty()) + variables.insert(var, value); +} + +void QalculateSession::readError() +{ + QString error = QLatin1String(m_process->readAllStandardError()); + if(m_currentExpression) { + m_currentExpression->parseError(error); + } +} + +void QalculateSession::processStarted() +{ + qDebug() << "process started " << m_process->program() << m_process->processId(); +} + +void QalculateSession::logout() +{ + qDebug () << "logging out"; + if (!m_process) + return; + + if(status() == Cantor::Session::Running) + interrupt(); + + m_process->write("quit\n"); + if(!m_process->waitForFinished(1000)) + m_process->kill(); + m_process->deleteLater(); + m_process = nullptr; + + Session::logout(); +} + +void QalculateSession::interrupt() +{ + qDebug () << "interrupting .... "; + if(m_currentExpression) + m_currentExpression->interrupt(); + + m_commandQueue.clear(); + m_expressionQueue.clear(); + m_output.clear(); + m_finalOutput.clear(); + m_currentCommand.clear(); + m_currentExpression = nullptr; + +} + +void QalculateSession::runExpression() +{ + const QString& command = m_currentExpression->command(); + foreach(const QString& cmd, command.split(QLatin1Char('\n'))) { + m_commandQueue.enqueue(cmd); + } + runCommandQueue(); +} + + +void QalculateSession::runCommandQueue() +{ + if (!m_commandQueue.isEmpty()) { + m_currentCommand = m_commandQueue.dequeue(); + // parse the current command if it's a save/load/store command + if( m_currentCommand.toLower().trimmed().startsWith(QLatin1String("save")) || + m_currentCommand.toLower().trimmed().startsWith(QLatin1String("store")) || + m_currentCommand.trimmed().startsWith(QLatin1String("saveVariables"))) { + + m_currentCommand = parseSaveCommand(m_currentCommand); + } + + m_currentCommand = m_currentCommand.trimmed(); + m_currentCommand += QLatin1String("\n"); + m_process->write(m_currentCommand.toLocal8Bit()); + } +} + +QString QalculateSession::parseSaveCommand(QString& currentCmd) +{ + /* + make sure the command is: + * formatted correctly. e.g if the command is save(value,variable), we have to make sure that there is no space between save and '(', otherwise qalc + waits for user input which is not supported by us as of now + * supported save commands: save(value,variable,[category],[title]), save definitions, save mode, save var, store var, + saveVariables filename + */ + + QRegularExpression regex; + regex.setPatternOptions(QRegularExpression::CaseInsensitiveOption); + + regex.setPattern(QStringLiteral("^\\s*save\\s*definitions\\s*$")); + if(regex.match(currentCmd).hasMatch()) { + // save the variables in ~/.cantor/backends/qalculate/definitions + currentCmd.clear(); + return currentCmd; + } + + regex.setPattern(QStringLiteral("^\\s*save\\s*mode\\s*$")); + if(regex.match(currentCmd).hasMatch()) { + // save the mode in ~/.cantor/backends/qalculate/cantor_qalc.cfg + currentCmd.clear(); + return currentCmd; + } + + regex.setPattern(QStringLiteral("^\\s*saveVariables\\s*[\\w\\W]+$")); + if(regex.match(currentCmd).hasMatch()) { + // save the variables in a file + currentCmd.clear(); + return currentCmd; + } + + regex.setPattern(QStringLiteral("^\\s*store\\s*([a-zA-Z_]+[\\w]*)|\\s*save\\s*([a-zA-Z_]+[\\w]*)$")); + QRegularExpressionMatch match = regex.match(currentCmd); + if(match.hasMatch()) { + m_isSaveCommand = true; + + QString str = match.captured(1).trimmed(); + if (str.isEmpty()) + str = match.captured(2).trimmed(); + + currentCmd = QStringLiteral("save(%1, %2)").arg(QStringLiteral("ans"), str); + + return currentCmd; + } + + regex.setPattern(QStringLiteral("^\\s*save\\s*(\\([\\w\\W]+\\))\\s*;*$")); + match = regex.match(currentCmd); + if(match.hasMatch()) { + m_isSaveCommand = true; + currentCmd = QStringLiteral("save%1").arg(match.captured(1).trimmed()); + return currentCmd; + } + + /* + If we have not returned by this point, it's because: + * we did not parse the save command properly. This might be due to malformed regular expressions. + * or the commnad given by the user is malformed. More likely to happen + In both these cases we will simply return an empty string because we don't want qalc to run malformed queries, + else it would wait for user input and hence Qprocess would never return a complete output and the expression will remain in + 'calculating' state + */ + m_saveError = currentCmd + QLatin1String("\nError: Could not save.\n"); + return QLatin1String(""); +} + +//TODO: unify with the funcion in the base class +void QalculateSession::currentExpressionStatusChanged(Cantor::Expression::Status status) +{ + // depending on the status of the expression change the status of the session; + switch (status) { + case Cantor::Expression::Computing: + break; + case Cantor::Expression::Interrupted: + changeStatus(Cantor::Session::Done); + break; + case Cantor::Expression::Queued: + break; + case Cantor::Expression::Done: + case Cantor::Expression::Error: + qDebug() << " ****** STATUS " << status; + changeStatus(Cantor::Session::Done); + if(m_expressionQueue.size() > 0) + m_expressionQueue.dequeue(); + if(!m_expressionQueue.isEmpty()) + runExpressionQueue(); + } +} + +Cantor::Expression* QalculateSession::evaluateExpression(const QString& cmd, Cantor::Expression::FinishingBehavior behave, bool internal) +{ + qDebug() << " ** evaluating expression: " << cmd; + qDebug() << " size of expression queue: " << m_expressionQueue.size(); + + changeStatus(Cantor::Session::Running); + + QalculateExpression* expr = new QalculateExpression(this, internal); + expr->setFinishingBehavior(behave); + expr->setCommand(cmd); + + m_expressionQueue.enqueue(expr); + runExpressionQueue(); + + return expr; +} + +void QalculateSession::runExpressionQueue() +{ + if(!m_expressionQueue.isEmpty()) { + + if(!m_currentExpression) + m_currentExpression = m_expressionQueue.head(); + + else { + /* there was some expression that was being executed by cantor. We run the new expression only + if the current expression's status is 'Done' or 'Error', if not , we simply return + */ + Cantor::Expression::Status expr_status = m_currentExpression->status(); + if(expr_status != Cantor::Expression::Done && expr_status != Cantor::Expression::Error) + return; + } + + m_currentExpression = m_expressionQueue.head(); + connect(m_currentExpression, SIGNAL(statusChanged(Cantor::Expression::Status)), this, SLOT(currentExpressionStatusChanged(Cantor::Expression::Status))); + // start processing the expression + m_currentExpression->evaluate(); + } +} + + +Cantor::CompletionObject* QalculateSession::completionFor(const QString& command, int index) +{ + return new QalculateCompletionObject(command, index, this); +} + +Cantor::SyntaxHelpObject* QalculateSession::syntaxHelpFor(const QString& cmd) +{ + return new QalculateSyntaxHelpObject(cmd, this); +} + +QSyntaxHighlighter* QalculateSession::syntaxHighlighter(QObject* parent) +{ + return new QalculateHighlighter(parent); +} + +Cantor::DefaultVariableModel* QalculateSession::variableModel() const +{ + return m_variableModel; +} diff --git a/src/backends/qalculate/qalculatesession.h b/src/backends/qalculate/qalculatesession.h new file mode 100644 index 0000000..a528d1f --- /dev/null +++ b/src/backends/qalculate/qalculatesession.h @@ -0,0 +1,78 @@ +/* + SPDX-FileCopyrightText: 2009 Milian Wolff + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef QALCULATE_SESSION_H +#define QALCULATE_SESSION_H + +#include "session.h" +#include "qalculateexpression.h" + +#include +#include +#include + +#include +#include + +namespace Cantor { +class DefaultVariableModel; +} + +class QalculateEngine; +class QProcess; + + +class QalculateSession : public Cantor::Session +{ + Q_OBJECT + +private: + Cantor::DefaultVariableModel* m_variableModel; + QProcess* m_process; + QalculateExpression* m_currentExpression; + QString m_output; + QString m_finalOutput; + QString m_currentCommand; + QString m_saveError; + QQueue m_expressionQueue; + QQueue m_commandQueue; + bool m_isSaveCommand; + + +private: + void runExpressionQueue(); + void runCommandQueue(); + QString parseSaveCommand(QString& currentCmd); + void storeVariables(QString& currentCmd, QString output); + +public: + explicit QalculateSession( Cantor::Backend* backend); + ~QalculateSession() override; + + void login() override; + void logout() override; + + void interrupt() override; + + Cantor::Expression* evaluateExpression(const QString& command, Cantor::Expression::FinishingBehavior behave = Cantor::Expression::FinishingBehavior::DoNotDelete, bool internal = false) override; + Cantor::CompletionObject* completionFor(const QString& cmd, int index=-1) override; + Cantor::SyntaxHelpObject* syntaxHelpFor(const QString& cmd) override; + QSyntaxHighlighter* syntaxHighlighter(QObject* parent) override; + + void runExpression(); + Cantor::DefaultVariableModel* variableModel() const override; + +public: + QMap variables; + +public Q_SLOTS: + void readOutput(); + void readError(); + void processStarted(); + void currentExpressionStatusChanged(Cantor::Expression::Status status); +}; + +#endif diff --git a/src/backends/qalculate/qalculatesettingswidget.cpp b/src/backends/qalculate/qalculatesettingswidget.cpp new file mode 100644 index 0000000..e86a22c --- /dev/null +++ b/src/backends/qalculate/qalculatesettingswidget.cpp @@ -0,0 +1,30 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2021 Alexander Semke + */ + +#include "qalculatesettingswidget.h" + +QalculateSettingsWidget::QalculateSettingsWidget(QWidget* parent, const QString& id) : BackendSettingsWidget(parent, id) +{ + setupUi(this); + + m_tabWidget = tabWidget; + m_tabDocumentation = tabDocumentation; + connect(tabWidget, &QTabWidget::currentChanged, this, &BackendSettingsWidget::tabChanged); +} diff --git a/src/backends/qalculate/qalculatesettingswidget.h b/src/backends/qalculate/qalculatesettingswidget.h new file mode 100644 index 0000000..2ebc35e --- /dev/null +++ b/src/backends/qalculate/qalculatesettingswidget.h @@ -0,0 +1,35 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2021 Alexander Semke + */ + +#ifndef QALCULATESETTINGSWIDGET_H +#define QALCULATESETTINGSWIDGET_H + +#include "ui_settings.h" +#include "../backendsettingswidget.h" + +class QalculateSettingsWidget : public BackendSettingsWidget, public Ui::QalculateSettingsBase +{ + Q_OBJECT + + public: + explicit QalculateSettingsWidget(QWidget* parent = nullptr, const QString& id = QString()); +}; + +#endif diff --git a/src/backends/qalculate/qalculatesyntaxhelpobject.cpp b/src/backends/qalculate/qalculatesyntaxhelpobject.cpp new file mode 100644 index 0000000..6e2bcb8 --- /dev/null +++ b/src/backends/qalculate/qalculatesyntaxhelpobject.cpp @@ -0,0 +1,265 @@ +/* + SPDX-FileCopyrightText: 2009 Milian Wolff + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "qalculatesyntaxhelpobject.h" +#include "settings.h" +#include "qalculatesession.h" + +#include + +#include +#include +#include +#include +#include +#include + +QalculateSyntaxHelpObject::QalculateSyntaxHelpObject(const QString& command, QalculateSession* session) + : SyntaxHelpObject(command, session), m_answer(QString()) +{ +} + +void QalculateSyntaxHelpObject::fetchInformation() +{ + std::string cmd = command().remove(QLatin1String("help")).simplified().toLatin1().data(); + qDebug() << "HELP CALLED FOR:" << QLatin1String(cmd.c_str()); + + if (cmd == "plot") { + setPlotInformation(); + return; + } + if (cmd == "saveVariables") { + setSaveVariablesInformation(); + return; + } + if (cmd == "loadVariables") { + setLoadVariablesInformation(); + return; + } + + ExpressionItem *item = CALCULATOR->getActiveExpressionItem(cmd); + + if (!item) { + m_answer = i18n("No function, variable or unit with specified name exist."); + return; + } + + switch(item->type()) { + case TYPE_FUNCTION: + MathFunction *f = (MathFunction*) item; + QString title = i18n("Function: %1", QLatin1String(item->title().c_str())); + const ExpressionName *ename = &f->preferredName(false); + int iargs = f->maxargs(); + if(iargs < 0) { + iargs = f->minargs() + 1; + } + QString str,str2,syntax; + str += QLatin1String(ename->name.c_str()); + str += QLatin1String("("); + if(iargs != 0) { + Argument *arg; + Argument default_arg; + for(int i2 = 1; i2 <= iargs; i2++) { + if(i2 > f->minargs()) { + str += QLatin1String("["); + } + if(i2 > 1) { + str += QLatin1String(CALCULATOR->getComma().c_str()); + str += QLatin1String(" "); + } + arg = f->getArgumentDefinition(i2); + if(arg && !arg->name().empty()) { + str2 = QLatin1String(arg->name().c_str()); + } else { + str2 = QLatin1String("argument"); + str2 += QLatin1String(" "); + str2 += QString::number(i2); + } + str += str2; + if(i2 > f->minargs()) { + str += QLatin1String("]"); + } + } + if(f->maxargs() < 0) { + str += QLatin1String(CALCULATOR->getComma().c_str()); + str += QLatin1String(" ..."); + } + } + str += QLatin1String(")"); + syntax = QString::fromLatin1("

      %1

      ").arg(str); + + QString arguments = QLatin1String(""); + if(iargs != 0) { + Argument *arg; + Argument default_arg; + for(int i2 = 1; i2 <= iargs; i2++) { + arg = f->getArgumentDefinition(i2); + if(arg && !arg->name().empty()) { + str = QLatin1String(arg->name().c_str()); + } else { + str = QString::number(i2); + } + str += QLatin1String(": "); + if(arg) { + str2 = QLatin1String(arg->printlong().c_str()); + } else { + str2 = QLatin1String(default_arg.printlong().c_str()); + } + if(i2 > f->minargs()) { + str2 += QLatin1String(" ("); + //optional argument, in description + str2 += QLatin1String("optional"); + if(!f->getDefaultValue(i2).empty()) { + str2 += QLatin1String(", "); + //argument default, in description + str2 += QLatin1String("default: "); + str2 += QLatin1String(f->getDefaultValue(i2).c_str()); + } + str2 += QLatin1String(")"); + } + str += str2; + arguments += QString::fromLatin1("

      %1

      ").arg(str); + } + } + + QString desc = QString::fromLatin1("

      %1

      ").arg(QLatin1String(item->description().c_str())); + + m_answer = title + desc + syntax + arguments; + setHtml(QLatin1String("

      ") + syntax + QLatin1String("

      ")); + emit done(); + } +} + +void QalculateSyntaxHelpObject::setPlotInformation() +{ + QString title = QLatin1String("

      ") + i18n("Plotting interface") + QLatin1String("

      "); + QString desc = QLatin1String("

      ") + i18n("Plots one or more functions either inline or in a separate window.") + QLatin1String("

      "); + QString expression = i18n("expression"); + QString option = i18n("option"); + QString value = i18n("value"); + QString syntax = QLatin1String("

      plot %1 [%2=%3 ...] [, %4 [%5=%6 ...]] ...

      "); + syntax = syntax.arg(expression, option, value, expression, option, value); + + QString integer = i18n("integer"); + QString boolean = i18n("boolean"); + QString number = i18n("number"); + QString defaultValue = i18n("default: %1"); + QString noDefault = QLatin1String(""); + QString optionFormat2 = QLatin1String("

      %1: %2

      "); + QString optionFormat3 = QLatin1String("

      %1: %2 (%3)

      "); + QString optionFormat4 = QLatin1String("

      %1: %2 (%3, %4)

      "); + + QStringList boolList; + boolList << QLatin1String("false") << QLatin1String("true"); + + QString legendDefault; + QString styleDefault; + QString smoothingDefault; + switch (QalculateSettings::plotLegend()) { + case QalculateSettings::LEGEND_NONE: + legendDefault = QLatin1String("none"); break; + case QalculateSettings::LEGEND_TOP_LEFT: + legendDefault = QLatin1String("top_left"); break; + case QalculateSettings::LEGEND_TOP_RIGHT: + legendDefault = QLatin1String("top_right"); break; + case QalculateSettings::LEGEND_BOTTOM_LEFT: + legendDefault = QLatin1String("bottom_left"); break; + case QalculateSettings::LEGEND_BOTTOM_RIGHT: + legendDefault = QLatin1String("bottom_right"); break; + case QalculateSettings::LEGEND_BELOW: + legendDefault = QLatin1String("below"); break; + case QalculateSettings::LEGEND_OUTSIDE: + legendDefault = QLatin1String("outside"); break; + } + switch(QalculateSettings::plotSmoothing()) { + case QalculateSettings::SMOOTHING_NONE: + smoothingDefault = QLatin1String("none"); break; + case QalculateSettings::SMOOTHING_UNIQUE: + smoothingDefault = QLatin1String("monotonic"); break; + case QalculateSettings::SMOOTHING_CSPLINES: + smoothingDefault = QLatin1String("csplines"); break; + case QalculateSettings::SMOOTHING_BEZIER: + smoothingDefault = QLatin1String("bezier"); break; + case QalculateSettings::SMOOTHING_SBEZIER: + smoothingDefault = QLatin1String("sbezier"); break; + } + switch(QalculateSettings::plotStyle()) { + case QalculateSettings::STYLE_LINES: + styleDefault = QLatin1String("lines"); break; + case QalculateSettings::STYLE_POINTS: + styleDefault = QLatin1String("points"); break; + case QalculateSettings::STYLE_LINES_POINTS: + styleDefault = QLatin1String("points_lines"); break; + case QalculateSettings::STYLE_BOXES: + styleDefault = QLatin1String("boxes"); break; + case QalculateSettings::STYLE_HISTOGRAM: + styleDefault = QLatin1String("histogram"); break; + case QalculateSettings::STYLE_STEPS: + styleDefault = QLatin1String("steps"); break; + case QalculateSettings::STYLE_CANDLESTICKS: + styleDefault = QLatin1String("candlesticks"); break; + case QalculateSettings::STYLE_DOTS: + styleDefault = QLatin1String("dots"); break; + } + + QString arguments = QLatin1String(""); + arguments += optionFormat3.arg(QLatin1String("title"), i18n("The function's name"), + defaultValue.arg(QLatin1String("expression"))); + arguments += optionFormat2.arg(QLatin1String("plottitle"), i18n("Title label")); + arguments += optionFormat2.arg(QLatin1String("xlabel"), i18n("x-axis label")); + arguments += optionFormat2.arg(QLatin1String("ylabel"), i18n("y-axis label")); + arguments += optionFormat2.arg(QLatin1String("filename"), i18n("Image to save plot to. If empty shows plot in a window on the screen. If inline=true the image is shown regardless of this option.")); + arguments += optionFormat3.arg(QLatin1String("filetype"), i18n("The image type to save as. One of auto, png, ps, eps, latex, svg, fig."), defaultValue.arg(QLatin1String("auto"))); + arguments += optionFormat4.arg(QLatin1String("color"), i18n("Set to true for colored plot, false for monochrome."), boolean, defaultValue.arg(boolList[QalculateSettings::coloredPlot()])); + arguments += optionFormat3.arg(QLatin1String("xmin"), i18n("Minimum x-axis value."), number); + arguments += optionFormat3.arg(QLatin1String("xmax"), i18n("Maximum x-axis value."), number); + arguments += optionFormat4.arg(QLatin1String("xlog"), i18n("If a logarithmic scale shall be used for the x-axis."), boolean, defaultValue.arg(QLatin1String("false"))); + arguments += optionFormat4.arg(QLatin1String("ylog"), i18n("If a logarithmic scale shall be used for the y-axis."), boolean, defaultValue.arg(QLatin1String("false"))); + arguments += optionFormat4.arg(QLatin1String("xlogbase"), i18n("Logarithmic base for the x-axis."), number, defaultValue.arg(QLatin1String("10"))); + arguments += optionFormat4.arg(QLatin1String("ylogbase"), i18n("Logarithmic base for the y-axis."), boolean, defaultValue.arg(QLatin1String("10"))); + arguments += optionFormat4.arg(QLatin1String("grid"), i18n("If a grid shall be shown in the plot."), boolean, defaultValue.arg(boolList[QalculateSettings::plotGrid()])); + arguments += optionFormat4.arg(QLatin1String("border"), i18n("If the plot shall be surrounded by borders on all sides (not just axis)."), boolean, defaultValue.arg(boolList[QalculateSettings::plotBorder()])); + arguments += optionFormat4.arg(QLatin1String("linewidth"), i18n("Width of lines."), integer, defaultValue.arg(QString::number(QalculateSettings::plotLineWidth()))); + arguments += optionFormat3.arg(QLatin1String("legend"), i18n("Where the plot legend shall be placed. One of none, top_left, top_right, bottom_left, bottom_right, below, outside"), defaultValue.arg(legendDefault)); + arguments += optionFormat3.arg(QLatin1String("smoothing"), i18n("Plot smoothing. One of none, unique, csplines, bezier, sbezier"), defaultValue.arg(smoothingDefault)); + arguments += optionFormat3.arg(QLatin1String("style"), i18n("Plot style. One of lines, points, points_lines, boxes, histogram, steps, candlesticks, dots"), defaultValue.arg(styleDefault)); + arguments += optionFormat4.arg(QLatin1String("xaxis2"), i18n("Use scale on second x-axis."), boolean, defaultValue.arg(QLatin1String("false"))); + arguments += optionFormat4.arg(QLatin1String("yaxis2"), i18n("Use scale on second y-axis."), boolean, defaultValue.arg(QLatin1String("false"))); + arguments += optionFormat4.arg(QLatin1String("inline"), i18n("If the plot is to be drawn inline, instead of in a new window."), boolean, defaultValue.arg(boolList[QalculateSettings::inlinePlot()])); + arguments += optionFormat3.arg(QLatin1String("step"), i18n("Distance between two interpolation points. See also steps."), number); + arguments += optionFormat4.arg(QLatin1String("steps"), i18n("Number of interpolation points. See also step."), integer, defaultValue.arg(QString::number(QalculateSettings::plotSteps()))); + arguments += optionFormat3.arg(QLatin1String("xvar"), i18n("The name of the x variable. This must be an unknown variable"), defaultValue.arg(QLatin1String("x"))); + + m_answer = title + desc + syntax + arguments; + + +} + +void QalculateSyntaxHelpObject::setSaveVariablesInformation() +{ + QString title = QLatin1String("

      ") + i18n("Save variables to a file") + QLatin1String("

      "); + QString desc = QLatin1String("

      ") + i18n("Save all currently defined variables to a file. They can be reloaded with %1.", QLatin1String("loadVariables")) + QLatin1String("

      "); + QString syntax = QLatin1String("

      saveVariables ") + i18n("file") + QLatin1String("

      "); + QString arguments = QLatin1String("

      ") + i18n("file: the file to save to") + QLatin1String("

      "); + m_answer = title + desc + syntax + arguments; +} + +void QalculateSyntaxHelpObject::setLoadVariablesInformation() +{ + QString title = QLatin1String("

      ") + i18n("Load variables from a file") + QLatin1String("

      "); + QString desc = QLatin1String("

      ") + i18n("Load variables from a file that has previously been created by %1.", QLatin1String("saveVariables")) + QLatin1String("

      "); + QString syntax = QLatin1String("

      loadVariables ") + i18n("file") + QLatin1String("

      "); + QString arguments = QLatin1String("

      ") + i18n("file: the file to load") + QLatin1String("

      "); + m_answer = title + desc + syntax + arguments; +} + + +QString QalculateSyntaxHelpObject::answer() +{ + fetchInformation(); + return m_answer; +} + diff --git a/src/backends/qalculate/qalculatesyntaxhelpobject.h b/src/backends/qalculate/qalculatesyntaxhelpobject.h new file mode 100644 index 0000000..820aeb6 --- /dev/null +++ b/src/backends/qalculate/qalculatesyntaxhelpobject.h @@ -0,0 +1,30 @@ +/* + SPDX-FileCopyrightText: 2009 Milian Wolff + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef QALCULATESYNTAXHELPOBJECT_H +#define QALCULATESYNTAXHELPOBJECT_H + +#include + +class QalculateSession; + +class QalculateSyntaxHelpObject : public Cantor::SyntaxHelpObject +{ +public: + QalculateSyntaxHelpObject( const QString& command, QalculateSession* session ); + QString answer(); + +protected: + void fetchInformation() override; + + void setPlotInformation(); + void setSaveVariablesInformation(); + void setLoadVariablesInformation(); + + QString m_answer; +}; + +#endif // QALCULATESYNTAXHELPOBJECT_H diff --git a/src/backends/qalculate/settings.kcfgc b/src/backends/qalculate/settings.kcfgc new file mode 100644 index 0000000..6bbe336 --- /dev/null +++ b/src/backends/qalculate/settings.kcfgc @@ -0,0 +1,3 @@ +File=qalculatebackend.kcfg +ClassName=QalculateSettings +Singleton=true diff --git a/src/backends/qalculate/settings.ui b/src/backends/qalculate/settings.ui new file mode 100644 index 0000000..24170f1 --- /dev/null +++ b/src/backends/qalculate/settings.ui @@ -0,0 +1,596 @@ + + + QalculateSettingsBase + + + + 0 + 0 + 424 + 380 + + + + + + + 0 + + + + General + + + + + + Number base: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + + Fraction format: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + Decimal + + + + + Exact + + + + + Fractional + + + + + Combined + + + + + + + + Numerical display: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + None + + + + + Pure + + + + + Scientific + + + + + Precision + + + + + + + + Indicate infinite series: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + Enabled + + + + + + + Use all SI prefixes: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + Enabled + + + + + + + Use negative exponents: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + Enabled + + + + + + + Qt::Vertical + + + + 20 + 102 + + + + + + + + + Evaluate + + + + + + Convert to best SI units: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + Enabled + + + + + + + + None + + + + + Radians + + + + + Degrees + + + + + Gradians + + + + + + + + Structuring Mode: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + None + + + + + Simplify + + + + + Factorize + + + + + + + + Qt::Vertical + + + + 20 + 185 + + + + + + + + Angle unit: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + Plotting + + + + + + Display plots inline: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + Enabled + + + + + + + Enabled + + + + + + + Enabled + + + + + + + Show full borders: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + Enabled + + + + + + + Width of lines: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + 1 + + + + + + + Sampling rate: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + 1 + + + + + + + Smoothing Mode: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + None + + + + + Monotonic + + + + + Natural cubic Splines + + + + + Bezier + + + + + Bezier (monotonic) + + + + + + + + + Lines + + + + + Points + + + + + Points and Lines + + + + + Boxes + + + + + Histogram + + + + + Steps + + + + + Candlesticks + + + + + Dots + + + + + + + + Legend Position: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + Hide legend + + + + + Top-left + + + + + Top-right + + + + + Bottom-left + + + + + Bottom-right + + + + + Below + + + + + Outside + + + + + + + + Qt::Vertical + + + + 20 + 22 + + + + + + + + Colored Plots: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + Show grid: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + Plot Style: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + Autorun + + + + + + Commands to autorun + + + + + + + + + + + + + Documentation + + + + + + + + + KComboBox + QComboBox +
      kcombobox.h
      +
      + + KEditListWidget + QWidget +
      keditlistwidget.h
      +
      +
      + + +
      diff --git a/src/backends/qthelpconfig.cpp b/src/backends/qthelpconfig.cpp new file mode 100644 index 0000000..86ea985 --- /dev/null +++ b/src/backends/qthelpconfig.cpp @@ -0,0 +1,338 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Shubham + SPDX-FileCopyrightText: 2020-2021 Alexander Semke + */ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "qthelpconfig.h" + +#include "ui_qthelpconfigeditdialog.h" +#include "ui_qthelpconfig.h" + +enum Column +{ + NameColumn, + PathColumn, + IconColumn, + GhnsColumn, + ConfigColumn +}; + +class QtHelpConfigEditDialog : public QDialog, public Ui_QtHelpConfigEditDialog +{ + Q_OBJECT +public: + explicit QtHelpConfigEditDialog(QTreeWidgetItem* modifiedItem, QtHelpConfig* parent = nullptr) + : QDialog(parent) + , m_modifiedItem(modifiedItem) + , m_config(parent) + { + setupUi(this); + + if (modifiedItem) + setWindowTitle(i18nc("@title:window", "Modify Entry")); + else + setWindowTitle(i18nc("@title:window", "Add New Entry")); + + qchIcon->setIcon(QStringLiteral("qtlogo")); + } + + bool checkQtHelpFile(); + void accept() override; + +private: + QTreeWidgetItem* m_modifiedItem; + QtHelpConfig* m_config; +}; + +bool QtHelpConfigEditDialog::checkQtHelpFile() +{ + //verify if the file is valid and if there is a name + if(qchName->text().isEmpty()){ + KMessageBox::error(this, i18n("Name cannot be empty.")); + return false; + } + + return m_config->checkNamespace(qchRequester->text(), m_modifiedItem); +} + +void QtHelpConfigEditDialog::accept() +{ + if (!checkQtHelpFile()) + return; + + QDialog::accept(); +} + +QtHelpConfig::QtHelpConfig(const QString& backend) : QWidget(), m_backend(backend) +{ + auto* ui = new Ui::QtHelpConfigUI; + ui->setupUi(this); + ui->addButton->setIcon(QIcon::fromTheme(QStringLiteral("list-add"))); + ui->addButton->setToolTip(i18n("Add local documentation")); + connect(ui->addButton, &QPushButton::clicked, this, &QtHelpConfig::add); + + m_treeWidget = ui->qchTable; + + // Table + m_treeWidget->setColumnHidden(IconColumn, true); + m_treeWidget->setColumnHidden(GhnsColumn, true); + m_treeWidget->model()->setHeaderData(ConfigColumn, Qt::Horizontal, QVariant()); + m_treeWidget->header()->setSectionsMovable(false); + m_treeWidget->header()->setStretchLastSection(false); + m_treeWidget->header()->setSectionResizeMode(NameColumn, QHeaderView::ResizeToContents); + m_treeWidget->header()->setSectionResizeMode(PathColumn, QHeaderView::Stretch); + m_treeWidget->header()->setSectionResizeMode(ConfigColumn, QHeaderView::Fixed); + + // Add GHNS button + auto* knsButton = new KNSWidgets::Button(i18nc("@action:button Allow user to get some API documentation with GHNS", "Get New Documentation"), + QStringLiteral("cantor-documentation.knsrc"), + this); + knsButton->setToolTip(i18n("Download additional documentations")); + ui->tableCtrlLayout->insertWidget(1, knsButton); + connect(knsButton, &KNSWidgets::Button::dialogFinished, this, &QtHelpConfig::knsUpdate); + + connect(this, &QtHelpConfig::settingsChanged, this, &QtHelpConfig::saveSettings); + + // load settings for Install Additional Help Files widget + loadSettings(); +} + +QtHelpConfig::~QtHelpConfig() = default; + +void QtHelpConfig::add() +{ + QPointer dialog = new QtHelpConfigEditDialog(nullptr, this); + if (dialog->exec()) { + auto* item = addTableItem(dialog->qchIcon->icon(), + dialog->qchName->text(), + dialog->qchRequester->text(), + QStringLiteral("0")); + m_treeWidget->setCurrentItem(item); + emit settingsChanged(); + } + + delete dialog; +} + +void QtHelpConfig::modify(QTreeWidgetItem* item) +{ + if (!item) + return; + + QPointer dialog = new QtHelpConfigEditDialog(item, this); + + if (item->text(GhnsColumn) != QLatin1String("0")) + { + dialog->qchRequester->hide(); + dialog->lPath->hide(); + //resize the dialog to fit the content after the widgets were hidden + dialog->layout()->activate(); + dialog->resize( QSize(dialog->width(), 0).expandedTo(dialog->minimumSize()) ); + } + else + { + dialog->qchRequester->setText(item->text(PathColumn)); + dialog->qchRequester->setEnabled(true); + } + + dialog->qchName->setText(item->text(NameColumn)); + dialog->qchIcon->setIcon(item->text(IconColumn)); + + if (dialog->exec()) { + item->setIcon(NameColumn, QIcon(dialog->qchIcon->icon())); + item->setText(NameColumn, dialog->qchName->text()); + item->setText(IconColumn, dialog->qchIcon->icon()); + if(item->text(GhnsColumn) == QLatin1String("0")) + item->setText(PathColumn, dialog->qchRequester->text()); + + emit settingsChanged(); + } + + delete dialog; +} + +bool QtHelpConfig::checkNamespace(const QString& filename, QTreeWidgetItem* modifiedItem) +{ + QString qtHelpNamespace = QHelpEngineCore::namespaceName(filename); + if (qtHelpNamespace.isEmpty()) { + KMessageBox::error(this, i18n("Qt Compressed Help file is not valid.")); + return false; + } + + // verify if it's the namespace it's not already in the list + for(int i=0; i < m_treeWidget->topLevelItemCount(); i++) { + const auto* item = m_treeWidget->topLevelItem(i); + if (item != modifiedItem){ + if (qtHelpNamespace == QHelpEngineCore::namespaceName(item->text(PathColumn))) { + KMessageBox::error(this, i18n("Documentation already imported")); + return false; + } + } + } + return true; +} + +void QtHelpConfig::remove(QTreeWidgetItem* item) +{ + if (!item) + return; + + delete item; + emit settingsChanged(); +} + +void QtHelpConfig::knsUpdate(const QList& list) +{ + if (list.isEmpty()) + return; + + for (const auto& e : list) + { + if(e.status() == KNS3::Entry::Installed && e.installedFiles().size() == 1) + { + //we're downloading a zip archive and after unpacking KSN::Entry::installedFiles() + //returns one single entry for the path with the wildcard standing for all file like in + //"$HOME/.local/share/cantor/documentation/Maxima_v5.44/*" + //we need to remove the wildcard and to determine the actual path for the qch.file + + //determine the path for the qch file + QString qchPath; + QString iconPath = QStringLiteral("documentation"); + QString path = e.installedFiles().at(0); + path.chop(1); + QDir dir(path); + const auto& fileInfos = dir.entryInfoList(); + for (const auto& fileInfo : fileInfos) + { + if (fileInfo.suffix() == QLatin1String("qch")) + qchPath = fileInfo.filePath(); + + if (fileInfo.suffix() == QLatin1String("svg")) + iconPath = fileInfo.filePath(); + } + + //add the qch file if valid + if(checkNamespace(qchPath, nullptr)) + { + auto* item = addTableItem(iconPath, e.name(), qchPath, QStringLiteral("1")); + m_treeWidget->setCurrentItem(item); + } + } + else if(e.status() == KNS3::Entry::Deleted && e.uninstalledFiles().size() > 0) { + //determine the path for the qch file + QString path = e.uninstalledFiles().at(0); + path.chop(1);//remove '*' at the end + + //delete the corresponding item in the table + for(int i=0; i < m_treeWidget->topLevelItemCount(); i++) { + const auto* item = m_treeWidget->topLevelItem(i); + if (item->text(PathColumn).startsWith(path)) { + delete item; + break; + } + } + } + } + + emit settingsChanged(); +} + +QTreeWidgetItem* QtHelpConfig::addTableItem(const QString& icon, const QString& name, + const QString& path, const QString& ghnsStatus) +{ + auto* item = new QTreeWidgetItem(m_treeWidget); + item->setIcon(NameColumn, QIcon::fromTheme(icon)); + item->setText(NameColumn, name); + item->setToolTip(NameColumn, name); + item->setText(PathColumn, path); + item->setToolTip(PathColumn, path); + item->setText(IconColumn, icon); + item->setText(GhnsColumn, ghnsStatus); + + auto* ctrlWidget = new QWidget(item->treeWidget()); + ctrlWidget->setLayout(new QHBoxLayout(ctrlWidget)); + + auto* modifyBtn = new QToolButton(item->treeWidget()); + modifyBtn->setIcon(QIcon::fromTheme(QStringLiteral("document-edit"))); + modifyBtn->setToolTip(i18nc("@info:tooltip", "Modify")); + connect(modifyBtn, &QPushButton::clicked, this, [=](){ modify(item); }); + + auto *removeBtn = new QToolButton(item->treeWidget()); + removeBtn->setIcon(QIcon::fromTheme(QStringLiteral("entry-delete"))); + removeBtn->setToolTip(i18nc("@info:tooltip", "Delete")); + + if (item->text(GhnsColumn) != QLatin1String("0")) + { + // KNS3 currently does not provide API to uninstall entries + // just removing the files results in wrong installed states in the KNS3 dialog + // TODO: add API to KNS to remove files without UI interaction + removeBtn->setEnabled(false); + removeBtn->setToolTip(i18nc("@info:tooltip", "Please uninstall this via GHNS.")); + } else + connect(removeBtn, &QPushButton::clicked, this, [=](){ remove(item); }); + + ctrlWidget->layout()->addWidget(modifyBtn); + ctrlWidget->layout()->addWidget(removeBtn); + + m_treeWidget->setItemWidget(item, ConfigColumn, ctrlWidget); + + return item; +} + +void QtHelpConfig::loadSettings() +{ + // load settings for current backend and then update the QTreeWidget + const auto& group = KSharedConfig::openConfig(QStringLiteral("cantorrc"))->group(m_backend); + + const auto& nameList = group.readEntry(QLatin1String("Names"), QStringList()); + const auto& pathList = group.readEntry(QLatin1String("Paths"), QStringList()); + const auto& iconList = group.readEntry(QLatin1String("Icons"), QStringList()); + const auto& ghnsList = group.readEntry(QLatin1String("Ghns"), QStringList()); + + // iterate through Name Location pairs and update the QTreeWidget + for(int i = 0; i < nameList.size(); i++) + { + QTreeWidgetItem* item = addTableItem(iconList.at(i), nameList.at(i), pathList.at(i), ghnsList.at(i)); + m_treeWidget->setCurrentItem(item); + } +} + +void QtHelpConfig::saveSettings() +{ + // create seperate group for seperate backends + auto group = KSharedConfig::openConfig(QStringLiteral("cantorrc"))->group(m_backend); + + QStringList nameList; + QStringList pathList; + QStringList iconList; + QStringList ghnsList; + + for (int i = 0; i < m_treeWidget->topLevelItemCount(); i++) + { + const auto* item = m_treeWidget->topLevelItem(i); + nameList << item->text(0); + pathList << item->text(1); + iconList << item->text(2); + ghnsList << item->text(3); + } + + group.writeEntry(QLatin1String("Names"), nameList); + group.writeEntry(QLatin1String("Paths"), pathList); + group.writeEntry(QLatin1String("Icons"), iconList); + group.writeEntry(QLatin1String("Ghns"), ghnsList); +} + +#include "qthelpconfig.moc" diff --git a/src/backends/qthelpconfig.h b/src/backends/qthelpconfig.h new file mode 100644 index 0000000..554b2e7 --- /dev/null +++ b/src/backends/qthelpconfig.h @@ -0,0 +1,45 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Shubham + SPDX-FileCopyrightText: 2021 Alexander Semke + */ + +#ifndef QTHELPCONFIG_H +#define QTHELPCONFIG_H + +#include +#include + +class QTreeWidget; +class QTreeWidgetItem; + +class QtHelpConfig : public QWidget +{ + Q_OBJECT + + public: + explicit QtHelpConfig(const QString&); + ~QtHelpConfig(); + + bool checkNamespace(const QString& filename, QTreeWidgetItem* modifiedItem); + + Q_SIGNALS: + void settingsChanged(); + + private Q_SLOTS: + void add(); + void remove(QTreeWidgetItem*); + void modify(QTreeWidgetItem*); + void knsUpdate(const QList &list); + void saveSettings(); + + private: + void loadSettings(); + QTreeWidgetItem* addTableItem(const QString& icon, const QString& name, + const QString& path, const QString& ghnsStatus); + + QTreeWidget* m_treeWidget{nullptr}; + QString m_backend; +}; + +#endif // QTHELPCONFIG_H diff --git a/src/backends/qthelpconfig.ui b/src/backends/qthelpconfig.ui new file mode 100644 index 0000000..f955718 --- /dev/null +++ b/src/backends/qthelpconfig.ui @@ -0,0 +1,102 @@ + + + QtHelpConfigUI + + + + 0 + 0 + 588 + 389 + + + + + + + + + + Install Additional Documentation Files + + + Qt::AlignCenter + + + + + + + QAbstractItemView::NoEditTriggers + + + false + + + false + + + 5 + + + false + + + true + + + + Name + + + + + Path + + + + + IconName + + + + + Ghns + + + + + + + + + + + + + + + Add + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + diff --git a/src/backends/qthelpconfigeditdialog.ui b/src/backends/qthelpconfigeditdialog.ui new file mode 100644 index 0000000..35943ca --- /dev/null +++ b/src/backends/qthelpconfigeditdialog.ui @@ -0,0 +1,136 @@ + + + QtHelpConfigEditDialog + + + + 0 + 0 + 400 + 174 + + + + + + + Icon: + + + + + + + Select an icon + + + 16 + + + true + + + + + + + Name: + + + + + + + Enter a name + + + Select a name... + + + + + + + Path: + + + + + + + + 0 + 0 + + + + Select a Qt Help file... + + + *.qch|Qt Compressed Help (.qch) + + + Select a Qt Help file... + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + KIconButton + QPushButton +
      kiconbutton.h
      +
      + + KUrlRequester + QWidget +
      kurlrequester.h
      +
      +
      + + + + buttonBox + accepted() + QtHelpConfigEditDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + QtHelpConfigEditDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + +
      diff --git a/src/backends/sage/CMakeLists.txt b/src/backends/sage/CMakeLists.txt new file mode 100644 index 0000000..17b2a75 --- /dev/null +++ b/src/backends/sage/CMakeLists.txt @@ -0,0 +1,39 @@ +set( SageBackend_SRCS + sagebackend.cpp + sagesession.cpp + sageexpression.cpp + sageextensions.cpp + sagekeywords.cpp + sagehighlighter.cpp + sagecompletionobject.cpp + sagesettingswidget.cpp + ../backendsettingswidget.cpp +) + +kconfig_add_kcfg_files(SageBackend_SRCS settings.kcfgc) +install(FILES sagebackend.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) + +ki18n_wrap_ui(SageBackend_SRCS settings.ui) + +add_backend(sagebackend ${SageBackend_SRCS}) + +target_link_libraries( cantor_sagebackend cantor_help + KF5::Pty + KF5::SyntaxHighlighting) + +if(BUILD_TESTING) + add_executable( testsage testsage.cpp) + add_test(NAME testsage COMMAND testsage) + target_link_libraries( testsage + Qt5::Test + cantorlibs + cantortest + ) +endif() + +install(FILES cantor_sage.knsrc DESTINATION ${KDE_INSTALL_KNSRCDIR}) + +install( + PROGRAMS cantor-execsage + DESTINATION ${KDE_INSTALL_DATADIR}/cantor/sagebackend +) diff --git a/src/backends/sage/DESIGN b/src/backends/sage/DESIGN new file mode 100644 index 0000000..2b78d86 --- /dev/null +++ b/src/backends/sage/DESIGN @@ -0,0 +1,22 @@ +This backend creates a bridge between Cantor and the Sage mathematical software. + +To accomplish this, it launches a sage session using KPtyProcess. +It sends the input to the process, and tries to parse the output. +(NOTE: KPtyProcess is used instead of a regular KProcess, because +when using KProcess, some weird errors showed up. e.g. when running +sage.misc.latex.pretty_print_default) + +The backend basically works by comparing the number of lines, +fed to the process, and the number of prompts read from it to +determine when a process is finished. To find out if a computation +has returned an image(e.g. whe plotting) it monitors the tmp directory +used by sage using KDirWatch, and returns an ImageResult if a new +file was created there while the computation was in progress. + +Sage offers the pretty_print_default option to automatically return latex code +for the results. This is used when Typesetting is enabled. + +TabCompletion is implemented by calling sage.interfaces.tab_completion.completions in the Session and parsing the +output. To make sure it doesn't mess with the history, some tricks are used. (see the code) + +Highlighting uses a simple list of known keywords and some regular expressions. (so no magic here) diff --git a/src/backends/sage/cantor-execsage b/src/backends/sage/cantor-execsage new file mode 100644 index 0000000..d909a13 --- /dev/null +++ b/src/backends/sage/cantor-execsage @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +export SAGE_ROOT="$($1 --root)" + +# Sage 9.2 stop source sage-env-config automatically, so do it manually +if [[ -f $SAGE_ROOT"/bin/sage-env" ]]; then + if [[ -f $SAGE_ROOT"/bin/sage-env-config" ]]; then + source "$SAGE_ROOT/bin/sage-env-config" >&2 + fi + . "$SAGE_ROOT/bin/sage-env" >&2 +elif [[ -f $SAGE_ROOT"/local/bin/sage-env" ]]; then + if [[ -f $SAGE_ROOT"/local/bin/sage-env-config" ]]; then + source "$SAGE_ROOT/local/bin/sage-env-config" >&2 + fi + . "$SAGE_ROOT/local/bin/sage-env" >&2 +elif [[ -f $SAGE_ROOT"/src/bin/sage-env" ]]; then + if [[ -f $SAGE_ROOT"/src/bin/sage-env-config" ]]; then + source "$SAGE_ROOT/src/bin/sage-env-config" >&2 + fi + . "$SAGE_ROOT/src/bin/sage-env" >&2 +fi + +exec sage-ipython -i --simple-prompt diff --git a/src/backends/sage/cantor_sage.knsrc b/src/backends/sage/cantor_sage.knsrc new file mode 100644 index 0000000..2f5b5f2 --- /dev/null +++ b/src/backends/sage/cantor_sage.knsrc @@ -0,0 +1,7 @@ +[KNewStuff3] +ProvidersUrl=https://autoconfig.kde.org/ocs/providers.xml +Categories=Cantor (Maxima),Cantor (Sage),Cantor (KAlgebra),Cantor (Qalculate),Cantor (Python 2),Cantor (Python 3),Cantor (Scilab),Cantor (Octave),Cantor (R),Cantor (Lua) +UploadCategories=Cantor (Sage) +TargetDir=cantor/examples +Uncompress=never +CustomName=true diff --git a/src/backends/sage/sagebackend.cpp b/src/backends/sage/sagebackend.cpp new file mode 100644 index 0000000..6765f51 --- /dev/null +++ b/src/backends/sage/sagebackend.cpp @@ -0,0 +1,89 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2019 Alexander Semke +*/ + +#include "sagebackend.h" +#include "sageextensions.h" +#include "sagesession.h" +#include "sagesettingswidget.h" +#include "settings.h" + +#include + +SageBackend::SageBackend( QObject* parent,const QList& args ) : Cantor::Backend( parent,args ) +{ + //initialize the supported extensions + new SageHistoryExtension(this); + new SageScriptExtension(this); + new SageCASExtension(this); + new SageCalculusExtension(this); + new SageLinearAlgebraExtension(this); + new SagePlotExtension(this); + new SagePackagingExtension(this); +} + +SageBackend::~SageBackend() +{ + qDebug()<<"Destroying SageBackend"; +} + +QString SageBackend::id() const +{ + return QLatin1String("sage"); +} + +QString SageBackend::version() const +{ + return QLatin1String("8.3"); +} + +Cantor::Session* SageBackend::createSession() +{ + qDebug()<<"Spawning a new Sage session"; + + return new SageSession(this); +} + +Cantor::Backend::Capabilities SageBackend::capabilities() const +{ + Cantor::Backend::Capabilities caps = Cantor::Backend::SyntaxHighlighting|Cantor::Backend::Completion; + + // Latex output from sage sometimes correct, sometimes not, so allow disable typesetting, if user want it + if (SageSettings::self()->allowLatex()) + caps |= Cantor::Backend::LaTexOutput; + + return caps; +} + +bool SageBackend::requirementsFullfilled(QString* const reason) const +{ + const QString& path = SageSettings::self()->path().toLocalFile(); + return Cantor::Backend::checkExecutable(QLatin1String("Sage"), path, reason); +} + +QWidget* SageBackend::settingsWidget(QWidget* parent) const +{ + return new SageSettingsWidget(parent, id()); +} + +KConfigSkeleton* SageBackend::config() const +{ + return SageSettings::self(); +} + +QUrl SageBackend::helpUrl() const +{ + return QUrl(i18nc("the url to the documentation of Sage, please check if there is a translated version and use the correct url", + "https://doc.sagemath.org/html/en/reference/index.html")); +} + +QString SageBackend::description() const +{ + return i18n("Sage is a free open-source mathematics software system licensed under the GPL.
      " \ + "It combines the power of many existing open-source packages into a common Python-based interface."); +} + +K_PLUGIN_FACTORY_WITH_JSON(sagebackend, "sagebackend.json", registerPlugin();) +#include "sagebackend.moc" diff --git a/src/backends/sage/sagebackend.h b/src/backends/sage/sagebackend.h new file mode 100644 index 0000000..18cf37d --- /dev/null +++ b/src/backends/sage/sagebackend.h @@ -0,0 +1,32 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _SAGEBACKEND_H +#define _SAGEBACKEND_H + +#include "backend.h" + +class SageBackend : public Cantor::Backend +{ + Q_OBJECT + public: + explicit SageBackend( QObject* parent = nullptr, const QList& args = QList()); + ~SageBackend() override; + + QString id() const override; + QString version() const override; + Cantor::Session *createSession() override; + Cantor::Backend::Capabilities capabilities() const override; + bool requirementsFullfilled(QString* const reason = nullptr) const override; + + QWidget* settingsWidget(QWidget* parent) const override; + KConfigSkeleton* config() const override; + + QUrl helpUrl() const override; + QString description() const override; +}; + + +#endif /* _SAGEBACKEND_H */ diff --git a/src/backends/sage/sagebackend.json b/src/backends/sage/sagebackend.json new file mode 100644 index 0000000..c9ded38 --- /dev/null +++ b/src/backends/sage/sagebackend.json @@ -0,0 +1,70 @@ +{ + "KPlugin": { + "Description": "Backend for the Sage Mathematics Software", + "Description[ca@valencia]": "Dorsal per al programari matemàtic Sage", + "Description[ca]": "Dorsal per al programari matemàtic Sage", + "Description[cs]": "Podpůrná vrstva pro matematický software Sage", + "Description[de]": "„Sage Mathematics Software“-Modul für Cantor", + "Description[el]": "Σύστημα υποστήριξης για το μαθηματικό λογισμικό Sage", + "Description[en_GB]": "Backend for the Sage Mathematics Software", + "Description[es]": "Motor para el software matemático Sage", + "Description[et]": "Sage matemaatikatarkvara taustaprogramm", + "Description[fi]": "Sage-matematiikkaohjelmiston taustajärjestelmä", + "Description[fr]": "Moteur pour le logiciel de mathématiques « Sage »", + "Description[gl]": "Infraestrutura do Software de matemáticas Sage", + "Description[ia]": "Retroadministration per le Sftware mathematic Sage", + "Description[it]": "Motore per il software matematico Sage", + "Description[ka]": "Sage Mathematics Software-ის უკანაბოლო", + "Description[ko]": "Sage 수학 소프트웨어 백엔드", + "Description[nl]": "Backend voor de Sage wiskundige software", + "Description[nn]": "Motor for matematikkprogramvara Sage", + "Description[pl]": "Silnik dla programu matematycznego Sage", + "Description[pt]": "Infra-Estrutura da Aplicação Matemática Sage", + "Description[pt_BR]": "Infraestrutura para o Sage Mathematics Software", + "Description[ru]": "Модуль поддержки Sage", + "Description[sk]": "Backend pre matematický softvér Sage", + "Description[sl]": "Zaledje za matematično programsko opremo Sage", + "Description[sv]": "Bakgrundsprogram för matematikprogramvaran Sage", + "Description[tr]": "Sage Matematik Yazılımı için arka uç", + "Description[uk]": "Модуль математичного програмного забезпечення Sage", + "Description[x-test]": "xxBackend for the Sage Mathematics Softwarexx", + "Description[zh_CN]": "Sage 数学软件的后端", + "Description[zh_TW]": "Sage 數學系統的後端介面", + "Icon": "sagebackend", + "Id": "Sage", + "License": "GPL", + "Name": "Sage", + "Name[ar]": "ساج", + "Name[ca@valencia]": "Sage", + "Name[ca]": "Sage", + "Name[cs]": "Sage", + "Name[da]": "Sage", + "Name[de]": "Sage", + "Name[el]": "Sage", + "Name[en_GB]": "Sage", + "Name[es]": "Sage", + "Name[et]": "Sage", + "Name[fi]": "Sage", + "Name[fr]": "Sage", + "Name[gl]": "Sage", + "Name[ia]": "Sage", + "Name[it]": "Sage", + "Name[ka]": "Sage", + "Name[ko]": "Sage", + "Name[nl]": "Sage", + "Name[nn]": "Sage", + "Name[pl]": "Sage", + "Name[pt]": "Sage", + "Name[pt_BR]": "Sage", + "Name[ru]": "Sage", + "Name[sk]": "Sage", + "Name[sl]": "Sage", + "Name[sv]": "Sage", + "Name[tr]": "Sage", + "Name[uk]": "Sage", + "Name[x-test]": "xxSagexx", + "Name[zh_CN]": "Sage", + "Name[zh_TW]": "Sage", + "Website": "https://www.sagemath.org/" + } +} diff --git a/src/backends/sage/sagebackend.kcfg b/src/backends/sage/sagebackend.kcfg new file mode 100644 index 0000000..5636c09 --- /dev/null +++ b/src/backends/sage/sagebackend.kcfg @@ -0,0 +1,21 @@ + + + QStandardPaths + + + + + QUrl::fromLocalFile(QStandardPaths::findExecutable( QLatin1String("sage") )) + + + + true + + + + + + diff --git a/src/backends/sage/sagecompletionobject.cpp b/src/backends/sage/sagecompletionobject.cpp new file mode 100644 index 0000000..b3fa07d --- /dev/null +++ b/src/backends/sage/sagecompletionobject.cpp @@ -0,0 +1,210 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "sagecompletionobject.h" + +#include "sagesession.h" +#include "sagekeywords.h" +#include "textresult.h" + +#include +#include + +using namespace Cantor; + +SageCompletionObject::SageCompletionObject(const QString& command, int index, SageSession* session) : Cantor::CompletionObject(session) +{ + setLine(command, index); + m_expression=nullptr; +} + +SageCompletionObject::~SageCompletionObject() +{ + if(m_expression) + m_expression->setFinishingBehavior(Expression::DeleteOnFinish); +} + +void SageCompletionObject::fetchCompletions() +{ + if (session()->status() != Cantor::Session::Done) + { + QStringList allCompletions; + + allCompletions << SageKeywords::instance()->keywords(); + allCompletions << SageKeywords::instance()->functions(); + allCompletions << SageKeywords::instance()->variables(); + + setCompletions(allCompletions); + emit fetchingDone(); + } + else + { + if (m_expression) + return; + + //cache the value of the "_" variable into __hist_tmp__, so we can restore the previous result + //after complete() was evaluated + const QString& cmd = QLatin1String("__hist_tmp__=_; sage.interfaces.tab_completion.completions(\"")+command()+QLatin1String("\",globals());_=__hist_tmp__"); + m_expression=session()->evaluateExpression(cmd, Cantor::Expression::FinishingBehavior::DoNotDelete, true); + connect(m_expression, &Cantor::Expression::gotResult, this, &SageCompletionObject::extractCompletions); + } +} + +void SageCompletionObject::extractCompletions() +{ + SageSession* s=qobject_cast(session()); + if(s&&s->sageVersion()result(); + m_expression->deleteLater(); + m_expression=nullptr; + + if(!res || !(res->type()==Cantor::TextResult::Type)) + { + qDebug()<<"something went wrong fetching tab completion"; + fetchingDone(); + return; + } + + //the result looks like "['comp1', 'comp2']" parse it + + QString txt=res->data().toString().trimmed(); + txt=txt.mid(1); //remove [ + txt.chop(1); //remove ] + + qDebug()<<"completion string: "<keywords(); + setCompletions(completions); + + emit fetchingDone(); +} + +void SageCompletionObject::extractCompletionsLegacy() +{ + Cantor::Result* res=m_expression->result(); + m_expression->deleteLater(); + m_expression=nullptr; + + if(!res || !(res->type()==Cantor::TextResult::Type)) + { + qDebug()<<"something went wrong fetching tab completion"; + fetchingDone(); + return; + } + + //the result looks like "['comp1', 'comp2']" parse it + QString txt=res->data().toString().trimmed(); + txt=txt.mid(1); //remove [ + txt.chop(1); //remove ] + + QStringList tmp=txt.split(QLatin1Char(',')); + QStringList completions; + + foreach(QString c, tmp) // krazy:exclude=foreach + { + c=c.trimmed(); + c.chop(1); + completions<keywords(); + setCompletions(completions); + + emit fetchingDone(); +} + + +void SageCompletionObject::fetchIdentifierType() +{ + if (SageKeywords::instance()->keywords().contains(identifier())) + { + emit fetchingTypeDone(KeywordType); + return; + } + + if (session()->status() != Cantor::Session::Done) + { + if (SageKeywords::instance()->functions().contains(identifier())) + emit fetchingTypeDone(FunctionType); + else if (SageKeywords::instance()->variables().contains(identifier())) + emit fetchingTypeDone(VariableType); + else + emit fetchingTypeDone(UnknownType); + } + else + { + if (m_expression) + return; + + QString expr = QString::fromLatin1("__cantor_internal__ = _; type(%1); _ = __cantor_internal__").arg(identifier()); + m_expression = session()->evaluateExpression(expr, Cantor::Expression::FinishingBehavior::DoNotDelete, true); + connect(m_expression, &Cantor::Expression::statusChanged, this, &SageCompletionObject::extractIdentifierType); + } +} + +void SageCompletionObject::extractIdentifierType(Cantor::Expression::Status status) +{ + switch(status) + { + case Cantor::Expression::Error: + qDebug() << "Error with SageCompletionObject" << m_expression->errorMessage(); + emit fetchingTypeDone(UnknownType); + break; + + case Cantor::Expression::Interrupted: + qDebug() << "SageCompletionObject was interrupted"; + emit fetchingTypeDone(UnknownType); + break; + + case Cantor::Expression::Done: + { + Cantor::Result* result = m_expression->result(); + if (result) + { + QString res = result->data().toString(); + if (res.contains(QLatin1String("function")) || res.contains(QLatin1String("method"))) + emit fetchingTypeDone(FunctionType); + else + emit fetchingTypeDone(VariableType); + } + else + emit fetchingTypeDone(UnknownType); + break; + } + + default: + return; + } + + m_expression->deleteLater(); + m_expression = nullptr; +} + +bool SageCompletionObject::mayIdentifierContain(QChar c) const +{ + return c.isLetter() || c.isDigit() || c == QLatin1Char('_') || c == QLatin1Char('.'); +} + +bool SageCompletionObject::mayIdentifierBeginWith(QChar c) const +{ + return c.isLetter() || c.isDigit() || c == QLatin1Char('_'); +} diff --git a/src/backends/sage/sagecompletionobject.h b/src/backends/sage/sagecompletionobject.h new file mode 100644 index 0000000..cd71980 --- /dev/null +++ b/src/backends/sage/sagecompletionobject.h @@ -0,0 +1,40 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _SAGECOMPLETIONOBJECT_H +#define _SAGECOMPLETIONOBJECT_H + +#include "completionobject.h" +#include "expression.h" + +class SageSession; + +class SageCompletionObject : public Cantor::CompletionObject +{ + Q_OBJECT + public: + SageCompletionObject( const QString& command, int index, SageSession* session); + ~SageCompletionObject() override; + + protected: + bool mayIdentifierContain(QChar c) const override; + bool mayIdentifierBeginWith(QChar c) const override; + + + protected Q_SLOTS: + void fetchCompletions() override; + void extractCompletions(); + void fetchIdentifierType() override; + void extractIdentifierType(Cantor::Expression::Status status); + + private: + void extractCompletionsNew(); + void extractCompletionsLegacy(); + + private: + Cantor::Expression* m_expression; +}; + +#endif /* _SAGECOMPLETIONOBJECT_H */ diff --git a/src/backends/sage/sageexpression.cpp b/src/backends/sage/sageexpression.cpp new file mode 100644 index 0000000..52a06bf --- /dev/null +++ b/src/backends/sage/sageexpression.cpp @@ -0,0 +1,271 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "sageexpression.h" + +#include "sagesession.h" +#include "textresult.h" +#include "imageresult.h" +#include "animationresult.h" +#include "helpresult.h" + +#include +#include +#include +#include + +SageExpression::SageExpression( Cantor::Session* session, bool internal ) : Cantor::Expression(session, internal), + m_isHelpRequest(false), + m_promptCount(0), + m_syntaxError(false) +{ +} + +void SageExpression::evaluate() +{ + m_imagePath.clear(); + + m_isHelpRequest=false; + + //check if this is a ?command or help command + if( command().startsWith(QLatin1Char('?')) + || command().endsWith(QLatin1Char('?')) + || command().contains(QLatin1String("help(")) + ) + m_isHelpRequest=true; + + //coun't how many newlines are in the command, + //as sage will output one "sage: " or "....:" for + //each. + m_promptCount=command().count(QLatin1Char('\n'))+2; + + session()->enqueueExpression(this); +} + +void SageExpression::interrupt() +{ + qDebug()<<"interrupting"; + + setStatus(Cantor::Expression::Interrupted); +} + +void SageExpression::parseOutput(const QString& text) +{ + if (m_syntaxError) + { + setErrorMessage(i18n("Syntax Error")); + setStatus(Cantor::Expression::Error); + return; + } + + QString output=text; + //remove carriage returns, we only use \n internally + output.remove(QLatin1Char('\r')); + //replace appearing backspaces, as they mess the whole output up + //with QRegularExpression/PCRE to make \b match a backspace put it inside [] + //see https://perldoc.perl.org/perlrecharclass.html#Bracketed-Character-Classes + output.remove(QRegularExpression(QStringLiteral(".[\b]"))); + //replace Escape sequences (only tested with `ls` command) + const QChar ESC(0x1b); + output.remove(QRegularExpression(QString(ESC)+QLatin1String("\\][^\a]*\a"))); + + const QString promptRegexpBase(QLatin1String("(^|\\n)%1")); + const QRegularExpression promptRegexp(promptRegexpBase.arg( + QRegularExpression::escape(QLatin1String(SageSession::SagePrompt)))); + const QRegularExpression altPromptRegexp(promptRegexpBase.arg( + QRegularExpression::escape(QLatin1String(SageSession::SageAlternativePrompt)))); + + bool endsWithAlternativePrompt=output.endsWith(QLatin1String(SageSession::SageAlternativePrompt)); + + //remove all prompts. we do this in a loop, because after we removed the first prompt, + //there could be a second one, that isn't matched by promptRegexp in the first run, because + //it originally isn't at the beginning of a line. + int index=-1, index2=-1; + while ( (index=output.indexOf(promptRegexp)) != -1 || (index2=output.indexOf(altPromptRegexp)) != -1 ) + { + qDebug()<<"got prompt"<(session())->sendInputToProcess(QLatin1String("\x03")); + m_syntaxError = true; + } + else + { + evalFinished(); + } + } + +} + +void SageExpression::parseError(const QString& text) +{ + qDebug()<<"error"; + setErrorMessage(text); + setStatus(Cantor::Expression::Error); +} + +void SageExpression::addFileResult( const QString& path ) +{ + QUrl url = QUrl::fromLocalFile(path); + QMimeDatabase db; + QMimeType type = db.mimeTypeForUrl(url); + + if(m_imagePath.isEmpty()||type.name().contains(QLatin1String("image"))||path.endsWith(QLatin1String(".png"))||path.endsWith(QLatin1String(".gif"))) + { + m_imagePath=path; + } +} + +void SageExpression::evalFinished() +{ + qDebug()<<"evaluation finished"; + qDebug()<")); + const bool isLatex=m_outputCache.contains(QLatin1String("\\newcommand{\\Bold}")); //Check if it's latex stuff + if(isLatex) //It's latex stuff so encapsulate it into an eqnarray environment + { + int bol_command_len = QLatin1String("\\newcommand{\\Bold}[1]{\\mathbf{#1}}").size(); + int curr_index = stripped.indexOf(QLatin1String("\\newcommand{\\Bold}[1]{\\mathbf{#1}}"))+bol_command_len; + // Add an & for the align environment + stripped.insert(curr_index, QLatin1String("&")); + // Strip away any additional "\\newcommand;{\\Bold}" so that it's compilable by LaTeX + if(stripped.count(QLatin1String("\\newcommand{\\Bold}")) > 1){ + while(curr_index != -1){ + curr_index = stripped.indexOf(QLatin1String("\\newcommand{\\Bold}[1]{\\mathbf{#1}}"), curr_index); + stripped.remove(curr_index, bol_command_len); + // Also add an & for left alignment + stripped.insert(curr_index, QLatin1String("&")); + } + } + // Replace new-line characters with \\ for LaTeX's newline intepretation + stripped.replace(QLatin1Char('\n'), QLatin1String("\\\\")); + stripped.prepend(QLatin1String("\\begin{align*}")); + stripped.append(QLatin1String("\\end{align*}")); + // TODO: Remove for final merge + qDebug()<<"NewCommand"; + qDebug()<]*>") ) ); + } + + if (stripped.endsWith(QLatin1Char('\n'))) + stripped.chop(1); + + if (m_isHelpRequest) + { + stripped = stripped.toHtmlEscaped(); + stripped.replace(QLatin1Char(' '), QLatin1String(" ")); + stripped.replace(QLatin1Char('\n'), QLatin1String("
      \n")); + + //make things quoted in `` `` bold + stripped.replace(QRegularExpression(QStringLiteral("``([^`]*)``")), QStringLiteral("\\1")); + + addResult(new Cantor::HelpResult(stripped, true)); + } + else + { + Cantor::TextResult* result=new Cantor::TextResult(stripped); + if(isLatex) + result->setFormat(Cantor::TextResult::LatexFormat); + addResult(result); + } + } + + if (hasImage) + { + QMimeDatabase db; + QMimeType type = db.mimeTypeForUrl(QUrl::fromLocalFile(m_imagePath)); + if(type.inherits(QLatin1String("image/gif"))) + addResult( new Cantor::AnimationResult(QUrl::fromLocalFile(m_imagePath ),i18n("Result of %1" , command() ) ) ); + else + addResult( new Cantor::ImageResult( QUrl::fromLocalFile(m_imagePath ),i18n("Result of %1" , command() ) ) ); + } + setStatus(Cantor::Expression::Done); +} + +void SageExpression::onProcessError(const QString& msg) +{ + QString errMsg=i18n("%1\nThe last output was: \n %2", msg, m_outputCache.trimmed()); + setErrorMessage(errMsg); + setStatus(Cantor::Expression::Error); +} + +QString SageExpression::additionalLatexHeaders() +{ + //The LaTeX sage needs the amsmath package and some specific macros. + //So include them in the header. + //More about the macros requirement in bug #312738 + return QLatin1String("\\usepackage{amsmath}\n" \ + "\\newcommand{\\ZZ}{\\Bold{Z}}\n" \ + "\\newcommand{\\NN}{\\Bold{N}}\n" \ + "\\newcommand{\\RR}{\\Bold{R}}\n" \ + "\\newcommand{\\CC}{\\Bold{C}}\n" \ + "\\newcommand{\\QQ}{\\Bold{Q}}\n" \ + "\\newcommand{\\QQbar}{\\overline{\\QQ}}\n" \ + "\\newcommand{\\GF}[1]{\\Bold{F}_{#1}}\n" \ + "\\newcommand{\\Zp}[1]{\\ZZ_{#1}}\n" \ + "\\newcommand{\\Qp}[1]{\\QQ_{#1}}\n" \ + "\\newcommand{\\Zmod}[1]{\\ZZ/#1\\ZZ}\n" \ + "\\newcommand{\\CDF}{\\Bold{C}}\n" \ + "\\newcommand{\\CIF}{\\Bold{C}}\n" \ + "\\newcommand{\\CLF}{\\Bold{C}}\n" \ + "\\newcommand{\\RDF}{\\Bold{R}}\n" \ + "\\newcommand{\\RIF}{\\Bold{I} \\Bold{R}}\n"\ + "\\newcommand{\\RLF}{\\Bold{R}}\n" \ + "\\newcommand{\\CFF}{\\Bold{CFF}}\n"); +} + diff --git a/src/backends/sage/sageexpression.h b/src/backends/sage/sageexpression.h new file mode 100644 index 0000000..17f95e9 --- /dev/null +++ b/src/backends/sage/sageexpression.h @@ -0,0 +1,41 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _SAGEEXPRESSION_H +#define _SAGEEXPRESSION_H + +#include "expression.h" + +class SageExpression : public Cantor::Expression +{ + Q_OBJECT + public: + explicit SageExpression(Cantor::Session*, bool internal = false); + + void evaluate() override; + void interrupt() override; + + void parseOutput(const QString&) override; + void parseError(const QString&) override; + + void addFileResult(const QString&); + + void onProcessError(const QString&); + + public Q_SLOTS: + void evalFinished(); + + protected: + QString additionalLatexHeaders() override; + + private: + QString m_outputCache; + QString m_imagePath; + bool m_isHelpRequest; + int m_promptCount; + bool m_syntaxError; +}; + +#endif /* _SAGEEXPRESSION_H */ diff --git a/src/backends/sage/sageextensions.cpp b/src/backends/sage/sageextensions.cpp new file mode 100644 index 0000000..f717492 --- /dev/null +++ b/src/backends/sage/sageextensions.cpp @@ -0,0 +1,186 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "sageextensions.h" +#include +#include + +#define SAGE_EXTENSION_CONSTRUCTORS(name) Sage##name##Extension::Sage##name##Extension(QObject* parent) : name##Extension(parent) {} \ + Sage##name##Extension::~Sage##name##Extension() {} + + +//History Extension +SAGE_EXTENSION_CONSTRUCTORS(History) + +QString SageHistoryExtension::lastResult() +{ + return QLatin1String("_"); +} + +//Script Extension +SAGE_EXTENSION_CONSTRUCTORS(Script) + +QString SageScriptExtension::runExternalScript(const QString& path) +{ + return QString::fromLatin1("execfile(\"%1\")").arg(path); +} + +QString SageScriptExtension::scriptFileFilter() +{ + return i18n("Python script file (*.py);;Sage script file (*.sage)"); +} + +QString SageScriptExtension::highlightingMode() +{ + return QLatin1String("python"); +} + +//CAS extension +SAGE_EXTENSION_CONSTRUCTORS(CAS) + +QString SageCASExtension::solve(const QStringList& equations, const QStringList& variables) +{ + QString eqstr=QString::fromLatin1("[%1]").arg(equations.join(QLatin1String(","))); + eqstr.replace(QLatin1Char('='), QLatin1String("==")); //Sage uses == for equations and = for assignments + QString variablestr=variables.join(QLatin1String(",")); + + return QString::fromLatin1("solve(%1,%2)").arg(eqstr, variablestr); +} + +QString SageCASExtension::simplify(const QString& expression) +{ + return QString::fromLatin1("simplify(%1)").arg(expression); +} + +QString SageCASExtension::expand(const QString& expression) +{ + return QString::fromLatin1("expand(%1)").arg(expression); +} + +//Calculus Extension +SAGE_EXTENSION_CONSTRUCTORS(Calculus) + +QString SageCalculusExtension::limit(const QString& expression, const QString& variable, const QString& limit) +{ + return QString::fromLatin1("limit(%1,%2=%3)").arg(expression, variable, limit); +} + +QString SageCalculusExtension::differentiate(const QString& function,const QString& variable, int times) +{ + return QString::fromLatin1("diff(%1,%2,%3)").arg(function, variable, QString::number(times)); +} + +QString SageCalculusExtension::integrate(const QString& function, const QString& variable) +{ + return QString::fromLatin1("integral(%1,%2)").arg(function, variable); +} + +QString SageCalculusExtension::integrate(const QString& function,const QString& variable, const QString& left, const QString& right) +{ + return QString::fromLatin1("integral(%1,%2,%3,%4)").arg(function, variable, left, right); +} + +//Linear Algebra +SAGE_EXTENSION_CONSTRUCTORS(LinearAlgebra) + +QString SageLinearAlgebraExtension::createVector(const QStringList& entries, VectorType type) +{ + QString cmd=QLatin1String("vector("); + foreach(const QString& e, entries) + cmd+=e+QLatin1Char(','); + cmd.chop(1); + cmd+=QLatin1Char(')'); + + if(type==Cantor::LinearAlgebraExtension::ColumnVector) + cmd+=QLatin1String(".transpose()"); + + return cmd; +} + +QString SageLinearAlgebraExtension::nullVector(int size, VectorType type) +{ + QString cmd=QString::fromLatin1("vector(seq(0 for i in range(0,%1)))").arg(size); + if(type==Cantor::LinearAlgebraExtension::ColumnVector) + cmd+=QLatin1String(".transpose()"); + + return cmd; +} + +QString SageLinearAlgebraExtension::createMatrix(const Matrix& matrix) +{ + QString cmd=QLatin1String("matrix(["); + foreach(const QStringList& row, matrix) + { + cmd+=QLatin1Char('['); + foreach(const QString& entry, row) + cmd+=entry+QLatin1Char(','); + cmd.chop(1); + cmd+=QLatin1String("],"); + } + cmd.chop(1); + cmd+=QLatin1String("])"); + + return cmd; +} + +QString SageLinearAlgebraExtension::identityMatrix(int size) +{ + return QString::fromLatin1("identity_matrix(%1)").arg(size); +} + +QString SageLinearAlgebraExtension::nullMatrix(int rows,int columns) +{ + return QString::fromLatin1("null_matrix(%1,%2)").arg(rows, columns); +} + +QString SageLinearAlgebraExtension::rank(const QString& matrix) +{ + return QString::fromLatin1("%1.rank()").arg(matrix); +} + +QString SageLinearAlgebraExtension::invertMatrix(const QString& matrix) +{ + return QString::fromLatin1("%1.inverse()").arg(matrix); +} + +QString SageLinearAlgebraExtension::charPoly(const QString& matrix) +{ + return QString::fromLatin1("%1.char_poly()").arg(matrix); +} + +QString SageLinearAlgebraExtension::eigenVectors(const QString& matrix) +{ + return QString::fromLatin1("%1.eigenvectors_right()").arg(matrix); +} + +QString SageLinearAlgebraExtension::eigenValues(const QString& matrix) +{ + return QString::fromLatin1("%1.eigenvalues()").arg(matrix); +} + +//Plotting +SAGE_EXTENSION_CONSTRUCTORS(Plot) + +QString SagePlotExtension::plotFunction2d(const QString& function, const QString& variable, const QString& left, const QString& right) +{ + return QString::fromLatin1("plot(%1,%2,%3,%4)").arg(function, variable, left, right); +} + +QString SagePlotExtension::plotFunction3d(const QString& function, const VariableParameter& var1, const VariableParameter& var2) +{ + const Interval& int1=var1.second; + const Interval& int2=var2.second; + return QString::fromLatin1("plot3d(%1,(%2,%3,%4),(%6,%7,%8))").arg(function, + var1.first, int1.first, int1.second, + var2.first, int2.first, int2.second); +} + +//Packaging +SAGE_EXTENSION_CONSTRUCTORS(Packaging) + +QString SagePackagingExtension::importPackage(const QString& module) +{ + return QString::fromLatin1("import %1").arg(module); +} diff --git a/src/backends/sage/sageextensions.h b/src/backends/sage/sageextensions.h new file mode 100644 index 0000000..95cbec1 --- /dev/null +++ b/src/backends/sage/sageextensions.h @@ -0,0 +1,99 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _SAGEEXTENSIONS_H +#define _SAGEEXTENSIONS_H + +#include "extension.h" + +class SageHistoryExtension : public Cantor::HistoryExtension +{ + public: + explicit SageHistoryExtension( QObject* parent ); + ~SageHistoryExtension() override; + public Q_SLOTS: + QString lastResult() override; +}; + +class SageScriptExtension : public Cantor::ScriptExtension +{ + public: + explicit SageScriptExtension(QObject* parent); + ~SageScriptExtension() override; + public Q_SLOTS: + QString runExternalScript(const QString& path) override; + QString scriptFileFilter() override; + QString highlightingMode() override; +}; + +class SageCASExtension : public Cantor::CASExtension +{ + public: + explicit SageCASExtension( QObject* parent); + ~SageCASExtension() override; + + public Q_SLOTS: + QString solve(const QStringList& equations, const QStringList& variables) override; + QString simplify(const QString& expression) override; + QString expand(const QString& expression) override; + +}; + +class SageCalculusExtension : public Cantor::CalculusExtension +{ + public: + explicit SageCalculusExtension( QObject* parent); + ~SageCalculusExtension() override; + + public Q_SLOTS: + QString limit(const QString& expression, const QString& variable, const QString& limit) override; + QString differentiate(const QString& function,const QString& variable, int times) override; + QString integrate(const QString& function, const QString& variable) override; + QString integrate(const QString& function,const QString& variable, const QString& left, const QString& right) override; +}; + +class SageLinearAlgebraExtension : public Cantor::LinearAlgebraExtension +{ + public: + explicit SageLinearAlgebraExtension( QObject* parent); + ~SageLinearAlgebraExtension() override; + + public Q_SLOTS: + //Commands to create Vectors/Matrices + QString createVector(const QStringList& entries, Cantor::LinearAlgebraExtension::VectorType type) override; + QString nullVector(int size, Cantor::LinearAlgebraExtension::VectorType type) override; + QString createMatrix(const Matrix& matrix) override; + QString identityMatrix(int size) override; + QString nullMatrix(int rows,int columns) override; + + //basic functions + QString rank(const QString& matrix) override; + QString invertMatrix(const QString& matrix) override; + QString charPoly(const QString& matrix) override; + QString eigenVectors(const QString& matrix) override; + QString eigenValues(const QString& matrix) override; +}; + +class SagePlotExtension : public Cantor::PlotExtension +{ + public: + explicit SagePlotExtension(QObject* parent); + ~SagePlotExtension() override; + public Q_SLOTS: + QString plotFunction2d(const QString& function, const QString& variable, const QString& left, const QString& right) override; + QString plotFunction3d(const QString& function, const VariableParameter& var1, const VariableParameter& var2) override; +}; + +class SagePackagingExtension : public Cantor::PackagingExtension +{ + public: + explicit SagePackagingExtension(QObject* parent); + ~SagePackagingExtension() override; + + public Q_SLOTS: + QString importPackage(const QString& module) override; +}; + +#endif /* _SAGEEXTENSIONS_H */ diff --git a/src/backends/sage/sagehighlighter.cpp b/src/backends/sage/sagehighlighter.cpp new file mode 100644 index 0000000..8bcd68b --- /dev/null +++ b/src/backends/sage/sagehighlighter.cpp @@ -0,0 +1,20 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "sagehighlighter.h" +#include "sagekeywords.h" + +#include + +SageHighlighter::SageHighlighter(QObject* parent) : Cantor::DefaultHighlighter(parent) +{ + addRule(QRegularExpression(QStringLiteral("[A-Za-z0-9_]+(?=\\()")), functionFormat()); + + addKeywords(SageKeywords::instance()->keywords()); + addFunctions(SageKeywords::instance()->functions()); + addVariables(SageKeywords::instance()->variables()); + + addRule(QRegularExpression(QStringLiteral("#[^\n]*")), commentFormat()); +} diff --git a/src/backends/sage/sagehighlighter.h b/src/backends/sage/sagehighlighter.h new file mode 100644 index 0000000..b2d1879 --- /dev/null +++ b/src/backends/sage/sagehighlighter.h @@ -0,0 +1,25 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _SAGEHIGHLIGHTER_H +#define _SAGEHIGHLIGHTER_H + +#include "defaulthighlighter.h" + + +/* + this is basically a syntax highlighter for the + Python programming Language, as Sage is based on + it +*/ + +class SageHighlighter : public Cantor::DefaultHighlighter +{ + public: + explicit SageHighlighter( QObject* parent); + ~SageHighlighter() override = default; +}; + +#endif /* _SAGEHIGHLIGHTER_H */ diff --git a/src/backends/sage/sagekeywords.cpp b/src/backends/sage/sagekeywords.cpp new file mode 100644 index 0000000..f81faa0 --- /dev/null +++ b/src/backends/sage/sagekeywords.cpp @@ -0,0 +1,53 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ +#include "sagekeywords.h" + +#include +#include + +#include + +SageKeywords* SageKeywords::instance() +{ + static SageKeywords* inst=nullptr; + if(inst==nullptr) + { + inst = new SageKeywords(); + inst->loadKeywords(); + } + + return inst; +} + +void SageKeywords::loadKeywords() +{ + KSyntaxHighlighting::Repository m_repository; + KSyntaxHighlighting::Definition definition = m_repository.definitionForName(QLatin1String("Python")); + + m_keywords << definition.keywordList(QLatin1String("import")); + m_keywords << definition.keywordList(QLatin1String("defs")); + m_keywords << definition.keywordList(QLatin1String("operators")); + m_keywords << definition.keywordList(QLatin1String("flow")); + + m_functions << definition.keywordList(QLatin1String("builtinfuncs")); + m_functions << definition.keywordList(QLatin1String("overloaders")); + + m_variables << definition.keywordList(QLatin1String("specialvars")); +} + +const QStringList& SageKeywords::keywords() const +{ + return m_keywords; +} + +const QStringList& SageKeywords::functions() const +{ + return m_functions; +} + +const QStringList& SageKeywords::variables() const +{ + return m_variables; +} diff --git a/src/backends/sage/sagekeywords.h b/src/backends/sage/sagekeywords.h new file mode 100644 index 0000000..9cfdcf5 --- /dev/null +++ b/src/backends/sage/sagekeywords.h @@ -0,0 +1,40 @@ +/* + SPDX-FileCopyrightText: 2012 Martin Kuettler + + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +*/ + +#ifndef _SAGEKEYWORDS_H +#define _SAGEKEYWORDS_H + +#include + +/** + Class to store all Sage keywords (i.e. Python keywords) + It is similar to MaximaKeywords or ScilabKeywords, but for Sage we only + need to store actual keywords, as variables and functions can be fetched from + the backend. + */ + +class SageKeywords +{ +private: + SageKeywords() = default; + ~SageKeywords() = default; + +public: + static SageKeywords* instance(); + + const QStringList& keywords() const; + const QStringList& functions() const; + const QStringList& variables() const; + + private: + void loadKeywords(); + + QStringList m_keywords; + QStringList m_functions; + QStringList m_variables; +}; + +#endif /* _SAGEKEYWORDS_H */ diff --git a/src/backends/sage/sagesession.cpp b/src/backends/sage/sagesession.cpp new file mode 100644 index 0000000..abbde96 --- /dev/null +++ b/src/backends/sage/sagesession.cpp @@ -0,0 +1,511 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "sagesession.h" +#include "sageexpression.h" +#include "sagecompletionobject.h" +#include "sagehighlighter.h" + +#include +#include +#include +#include +#include +#include +#include "settings.h" + +#ifndef Q_OS_WIN +#include +#endif + +const QByteArray SageSession::SagePrompt="sage: "; //Text, sage outputs after each command +const QByteArray SageSession::SageAlternativePrompt="....: "; //Text, sage outputs when it expects further input + +//some commands that are run after login +static QByteArray initCmd="os.environ['PAGER'] = 'cat' \n "\ + "sage.misc.pager.EMBEDDED_MODE = True \n "\ + "sage.misc.viewer.BROWSER='' \n "\ + "sage.misc.viewer.viewer.png_viewer('false') \n" \ + "sage.plot.plot3d.base.SHOW_DEFAULTS['viewer'] = 'tachyon' \n"\ + "sage.misc.latex.EMBEDDED_MODE = True \n "\ + "os.environ['PAGER'] = 'cat' \n "\ + "%colors nocolor \n "\ + "print('%s %s' % ('____TMP_DIR____', sage.misc.misc.SAGE_TMP))\n"; + +static QByteArray newInitCmd= + "__CANTOR_IPYTHON_SHELL__=get_ipython() \n "\ + "__CANTOR_IPYTHON_SHELL__.autoindent=False\n "; + +static QByteArray legacyInitCmd= + "__CANTOR_IPYTHON_SHELL__=__IPYTHON__ \n " \ + "__CANTOR_IPYTHON_SHELL__.autoindent=False\n "; + +static QByteArray endOfInitMarker="print('____END_OF_INIT____')\n "; + + +SageSession::VersionInfo::VersionInfo(int major, int minor) +{ + m_major=major; + m_minor=minor; +} + +int SageSession::VersionInfo::majorVersion() const +{ + return m_major; +} + +int SageSession::VersionInfo::minorVersion() const +{ + return m_minor; +} + +bool SageSession::VersionInfo::operator==(VersionInfo other) const +{ + return m_major==other.m_major&&m_minor==other.m_minor; +} + +bool SageSession::VersionInfo::operator<(VersionInfo other) const +{ + return (m_major!= -1 && other.m_major==-1) || + ( ((m_major!=-1 && other.m_major!=-1) || (m_major==other.m_major && m_major==-1) ) && ( m_major(SageSession::VersionInfo other) const +{ + return !( (*this <= other )); +} + +bool SageSession::VersionInfo::operator>=(SageSession::VersionInfo other) const +{ + return !( *this < other); +} + +SageSession::SageSession(Cantor::Backend* backend) : Session(backend), +m_process(nullptr), +m_isInitialized(false), +m_waitingForPrompt(false), +m_haveSentInitCmd(false) +{ + connect( &m_dirWatch, SIGNAL(created(QString)), this, SLOT(fileCreated(QString)) ); +} + +SageSession::~SageSession() +{ + if (m_process) + { + m_process->kill(); + m_process->deleteLater(); + m_process = nullptr; + } +} + +void SageSession::login() +{ + qDebug()<<"login"; + if (m_process) + return; + emit loginStarted(); + + m_process=new KPtyProcess(this); + updateSageVersion(); + const QString& sageExecFile = SageSettings::self()->path().toLocalFile(); + if (false) +// Reenable when https://trac.sagemath.org/ticket/25363 is merged +// if (m_sageVersion >= SageSession::VersionInfo(8, 4)) + m_process->setProgram(sageExecFile, QStringList() << QLatin1String("--simple-prompt")); + else + { + const QString& sageStartScript = locateCantorFile(QLatin1String("sagebackend/cantor-execsage")); + m_process->setProgram(sageStartScript, QStringList(sageExecFile)); + } + + m_process->setOutputChannelMode(KProcess::SeparateChannels); + m_process->setPtyChannels(KPtyProcess::AllChannels); + m_process->pty()->setEcho(false); + + connect(m_process->pty(), SIGNAL(readyRead()), this, SLOT(readStdOut())); + connect(m_process, SIGNAL(readyReadStandardError()), this, SLOT(readStdErr())); + connect(m_process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processFinished(int,QProcess::ExitStatus))); + connect(m_process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(reportProcessError(QProcess::ProcessError))); + m_process->start(); + m_process->waitForStarted(); + + m_process->pty()->write(initCmd); + + //save the path to the worksheet as variable "__file__" + //this variable is usually set by the "os" package when running a script + //but when it is run in an interpreter (like sage server) it is not set + if (!m_worksheetPath.isEmpty()) + { + const QString cmd = QLatin1String("__file__ = '%1'"); + evaluateExpression(cmd.arg(m_worksheetPath), Cantor::Expression::DeleteOnFinish, true); + } + + //enable latex typesetting if needed + const QString cmd = QLatin1String("__cantor_enable_typesetting(%1)"); + evaluateExpression(cmd.arg(isTypesettingEnabled() ? QLatin1String("true"):QLatin1String("false")), Cantor::Expression::DeleteOnFinish); + + //auto-run scripts + if(!SageSettings::self()->autorunScripts().isEmpty()){ + QString autorunScripts = SageSettings::self()->autorunScripts().join(QLatin1String("\n")); + evaluateExpression(autorunScripts, SageExpression::DeleteOnFinish, true); + } + + changeStatus(Session::Done); + emit loginDone(); +} + +void SageSession::logout() +{ + qDebug()<<"logout"; + + if (!m_process) + return; + + if(status() == Cantor::Session::Running) + interrupt(); + + disconnect(m_process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processFinished(int,QProcess::ExitStatus))); + + m_process->pty()->write("exit\n"); + + if(!m_process->waitForFinished(1000)) + m_process->kill(); + m_process->deleteLater(); + m_process = nullptr; + + //Run sage-cleaner to kill all the orphans + KProcess::startDetached(SageSettings::self()->path().toLocalFile(),QStringList()<setFinishingBehavior(behave); + expr->setCommand(cmd); + expr->evaluate(); + + return expr; +} + +void SageSession::readStdOut() +{ + m_outputCache.append(QString::fromUtf8(m_process->pty()->readAll())); + qDebug()<<"out: "<= SageSession::VersionInfo(7,4)) + { + const QString message = i18n( + "Sage version %1.%2 is unsupported. Please update your installation "\ + "to the supported versions to make it work with Cantor.", m_sageVersion.majorVersion(), m_sageVersion.minorVersion()); + KMessageBox::error(nullptr, message, i18n("Cantor")); + interrupt(); + logout(); + } + else if(m_sageVersion<=SageSession::VersionInfo(5, 7)) + { + qDebug()<<"using an old version of sage: "<pty()->write(legacyInitCmd); + defineCustomFunctions(); + m_process->pty()->write(endOfInitMarker); + m_haveSentInitCmd=true; + } + + } + else + { + qDebug()<<"using the current set of commands"; + + if(!m_haveSentInitCmd) + { + m_process->pty()->write(newInitCmd); + defineCustomFunctions(); + m_process->pty()->write(endOfInitMarker); + m_haveSentInitCmd=true; + } + } + } + else + { + const QString message = i18n( + "Failed to determine the version of Sage. Please check your installation and the output of 'sage -v'."); + KMessageBox::error(nullptr, message, i18n("Cantor")); + interrupt(); + logout(); + } + } + + + int indexOfEOI=m_outputCache.indexOf(QLatin1String("____END_OF_INIT____")); + if(indexOfEOI!=-1&&m_outputCache.indexOf(QLatin1String(SagePrompt), indexOfEOI)!=-1) + { + qDebug()<<"initialized"; + //out.remove("____END_OF_INIT____"); + //out.remove(SagePrompt); + m_isInitialized=true; + m_waitingForPrompt=false; + runFirstExpression(); + m_outputCache.clear(); + } + + //If we are waiting for another prompt, drop every output + //until a prompt is found + if(m_isInitialized&&m_waitingForPrompt) + { + qDebug()<<"waiting for prompt"; + if(m_outputCache.contains(QLatin1String(SagePrompt))) + m_waitingForPrompt=false; + + m_outputCache.clear(); + return; + } + + if(m_isInitialized) + { + if (!expressionQueue().isEmpty()) + { + auto* expr = expressionQueue().first(); + expr->parseOutput(m_outputCache); + } + m_outputCache.clear(); + } +} + +void SageSession::readStdErr() +{ + qDebug()<<"reading stdErr"; + QString out = QLatin1String(m_process->readAllStandardError()); + qDebug()<<"err: "<parseError(out); + } +} + +void SageSession::processFinished(int exitCode, QProcess::ExitStatus exitStatus) +{ + Q_UNUSED(exitCode); + if(exitStatus==QProcess::CrashExit) + { + if(!expressionQueue().isEmpty()) + { + static_cast(expressionQueue().last()) + ->onProcessError(i18n("The Sage process crashed while evaluating this expression")); + }else + { + //We don't have an actual command. it crashed for some other reason, just show a plain error message box + KMessageBox::error(nullptr, i18n("The Sage process crashed"), i18n("Cantor")); + } + }else + { + if(!expressionQueue().isEmpty()) + { + static_cast(expressionQueue().last()) + ->onProcessError(i18n("The Sage process exited while evaluating this expression")); + }else + { + //We don't have an actual command. it crashed for some other reason, just show a plain error message box + KMessageBox::error(nullptr, i18n("The Sage process exited"), i18n("Cantor")); + } + } +} + +void SageSession::reportProcessError(QProcess::ProcessError e) +{ + if(e==QProcess::FailedToStart) + { + changeStatus(Cantor::Session::Done); + emit error(i18n("Failed to start Sage")); + } +} + +void SageSession::runFirstExpression() +{ + if(!expressionQueue().isEmpty()) + { + auto* expr = expressionQueue().first(); + if (m_isInitialized) + { + connect(expr, &Cantor::Expression::statusChanged, this, &Session::currentExpressionStatusChanged); + + QString command = expr->command(); + if(command.endsWith(QLatin1Char('?')) && !command.endsWith(QLatin1String("??"))) + command=QLatin1String("help(")+command.left(command.size()-1)+QLatin1Char(')'); + if(command.startsWith(QLatin1Char('?'))) + command=QLatin1String("help(")+command.mid(1)+QLatin1Char(')'); + command.append(QLatin1String("\n\n")); + + qDebug()<<"writing "<setStatus(Cantor::Expression::Computing); + m_process->pty()->write(command.toUtf8()); + } + else if (expressionQueue().size() == 1) + + // If queue contains one expression, it means, what we run this expression immediately (drop setting queued status) + // TODO: Sage login is slow, so, maybe better mark this expression as queued for a login time + expr->setStatus(Cantor::Expression::Queued); + } +} + +void SageSession::interrupt() +{ + if(!expressionQueue().isEmpty()) + { + qDebug()<<"interrupting " << expressionQueue().first()->command(); + if(m_process && m_process->state() != QProcess::NotRunning) + { +#ifndef Q_OS_WIN + const int pid=m_process->processId(); + kill(pid, SIGINT); +#else + ; //TODO: interrupt the process on windows +#endif + } + for (auto* expression : expressionQueue()) + expression->setStatus(Cantor::Expression::Interrupted); + + expressionQueue().clear(); + + m_outputCache.clear(); + + qDebug()<<"done interrupting"; + } + + changeStatus(Cantor::Session::Done); +} + +void SageSession::sendInputToProcess(const QString& input) +{ + m_process->pty()->write(input.toUtf8()); +} + +void SageSession::fileCreated( const QString& path ) +{ + qDebug()<<"got a file "<(expressionQueue().first()); + if (expr) + expr->addFileResult( path ); + } +} + +void SageSession::setTypesettingEnabled(bool enable) +{ + if (m_process) + { + //tell the sage server to enable/disable pretty_print + const QString cmd = QLatin1String("__cantor_enable_typesetting(%1)"); + evaluateExpression(cmd.arg(enable ? QLatin1String("true"):QLatin1String("false")), Cantor::Expression::DeleteOnFinish); + } + + Cantor::Session::setTypesettingEnabled(enable); +} + +void SageSession::setWorksheetPath(const QString& path) +{ + m_worksheetPath = path; +} + +Cantor::CompletionObject* SageSession::completionFor(const QString& command, int index) +{ + return new SageCompletionObject(command, index, this); +} + +QSyntaxHighlighter* SageSession::syntaxHighlighter(QObject* parent) +{ + return new SageHighlighter(parent); +} + +SageSession::VersionInfo SageSession::sageVersion() +{ + return m_sageVersion; +} + +void SageSession::defineCustomFunctions() +{ + //typesetting + QString cmd = QLatin1String("def __cantor_enable_typesetting(enable):\n"); + if(m_sageVersion VersionInfo(5, 7) && m_sageVersion< VersionInfo(5, 12)) + { + cmd+=QLatin1String("\t sage.misc.latex.pretty_print_default(enable)\n\n"); + }else + { + cmd+=QLatin1String("\t if(enable==true):\n "\ + "\t \t %display typeset \n"\ + "\t else: \n" \ + "\t \t %display simple \n\n"); + } + + sendInputToProcess(cmd); +} + +bool SageSession::updateSageVersion() +{ + QProcess get_sage_version; + get_sage_version.setProgram(SageSettings::self()->path().toLocalFile()); + get_sage_version.setArguments(QStringList()< +*/ + +#ifndef _SAGESESSION_H +#define _SAGESESSION_H + +#include "session.h" +#include "expression.h" + +#include +#include + +class SageExpression; +class KPtyProcess; + +class SageSession : public Cantor::Session +{ + Q_OBJECT + public: + static const QByteArray SagePrompt; + static const QByteArray SageAlternativePrompt; + + //small helper class to deal with sage versions + //Note: major version -1 is treated as most current + class VersionInfo{ + public: + explicit VersionInfo(int major = -1, int minor = -1); + + //bool operator <=(VersionInfo v2); + bool operator <(VersionInfo other) const; + bool operator <=(VersionInfo other) const; + bool operator >(VersionInfo other) const; + bool operator >=(VersionInfo other) const; + bool operator ==( VersionInfo other) const; + + // These are not called major() and minor() because some libc's have + // macros with those names. + int majorVersion() const; + int minorVersion() const; + private: + int m_major; + int m_minor; + }; + + explicit SageSession(Cantor::Backend*); + ~SageSession() override; + + void login() override; + void logout() override; + + Cantor::Expression* evaluateExpression(const QString& command,Cantor::Expression::FinishingBehavior behave = Cantor::Expression::FinishingBehavior::DoNotDelete, bool internal = false) override; + + void runFirstExpression() override; + + void interrupt() override; + + void sendInputToProcess(const QString& input); + + void setTypesettingEnabled(bool) override; + void setWorksheetPath(const QString&) override; + + Cantor::CompletionObject* completionFor(const QString& command, int index=-1) override; + QSyntaxHighlighter* syntaxHighlighter(QObject* parent) override; + + VersionInfo sageVersion(); + + public Q_SLOTS: + void readStdOut(); + void readStdErr(); + + private Q_SLOTS: + void processFinished(int exitCode, QProcess::ExitStatus); + void reportProcessError(QProcess::ProcessError); + void fileCreated(const QString& path); + + private: + void defineCustomFunctions(); + bool updateSageVersion(); + + KPtyProcess* m_process; + bool m_isInitialized; + QString m_tmpPath; + KDirWatch m_dirWatch; + bool m_waitingForPrompt; + QString m_outputCache; + VersionInfo m_sageVersion; + bool m_haveSentInitCmd; + QString m_worksheetPath; +}; + +#endif /* _SAGESESSION_H */ diff --git a/src/backends/sage/sagesettingswidget.cpp b/src/backends/sage/sagesettingswidget.cpp new file mode 100644 index 0000000..a8119d7 --- /dev/null +++ b/src/backends/sage/sagesettingswidget.cpp @@ -0,0 +1,33 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020-2022 Alexander Semke + */ + +#include "sagesettingswidget.h" + +SageSettingsWidget::SageSettingsWidget(QWidget* parent, const QString& id) : BackendSettingsWidget(parent, id) +{ + setupUi(this); + + m_tabWidget = tabWidget; + m_tabDocumentation = tabDocumentation; + m_urlRequester = kcfg_Path; + + connect(tabWidget, &QTabWidget::currentChanged, this, &BackendSettingsWidget::tabChanged); + connect(kcfg_Path, &KUrlRequester::textChanged, this, &BackendSettingsWidget::fileNameChanged); +} diff --git a/src/backends/sage/sagesettingswidget.h b/src/backends/sage/sagesettingswidget.h new file mode 100644 index 0000000..4bd9db0 --- /dev/null +++ b/src/backends/sage/sagesettingswidget.h @@ -0,0 +1,35 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020 Alexander Semke + */ + +#ifndef SAGESETTINGSWIDGET_H +#define SAGESETTINGSWIDGET_H + +#include "ui_settings.h" +#include "../backendsettingswidget.h" + +class SageSettingsWidget : public BackendSettingsWidget, public Ui::SageSettingsBase +{ + Q_OBJECT + + public: + explicit SageSettingsWidget(QWidget* parent = nullptr, const QString& id = QString()); +}; + +#endif /* SAGESETTINGSWIDGET_H */ diff --git a/src/backends/sage/settings.kcfgc b/src/backends/sage/settings.kcfgc new file mode 100644 index 0000000..57d8220 --- /dev/null +++ b/src/backends/sage/settings.kcfgc @@ -0,0 +1,3 @@ +File=sagebackend.kcfg +ClassName=SageSettings +Singleton=true diff --git a/src/backends/sage/settings.ui b/src/backends/sage/settings.ui new file mode 100644 index 0000000..228d3ef --- /dev/null +++ b/src/backends/sage/settings.ui @@ -0,0 +1,113 @@ + + + SageSettingsBase + + + + 0 + 0 + 420 + 302 + + + + + + + 0 + + + + General + + + + + + LaTeX typesetting: + + + + + + + Sage LaTeX output not always correct, so latex typesetting can be disabled for better experience + + + Enabled + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 118 + + + + + + + + Executable: + + + + + + + + Autorun + + + + + + Commands to autorun + + + Qt::AlignCenter + + + + + + + + + + + Documentation + + + + + + + + + KUrlRequester + QWidget +
      kurlrequester.h
      + 1 +
      + + KEditListWidget + QWidget +
      keditlistwidget.h
      +
      +
      + + +
      diff --git a/src/backends/sage/testsage.cpp b/src/backends/sage/testsage.cpp new file mode 100644 index 0000000..5f243e2 --- /dev/null +++ b/src/backends/sage/testsage.cpp @@ -0,0 +1,136 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "testsage.h" + +#include "session.h" +#include "backend.h" +#include "expression.h" +#include "result.h" +#include "imageresult.h" +#include "textresult.h" + +#include + +QString TestSage::backendName() +{ + return QLatin1String("sage"); +} + +void TestSage::testSimpleCommand() +{ + Cantor::Expression* e=evalExp( QLatin1String("2+2") ); + + QVERIFY( e!=nullptr ); + QVERIFY( e->result()!=nullptr ); + QCOMPARE( e->result()->data().toString(), QLatin1String(("4")) ); +} + +void TestSage::testCommandQueue() +{ + //only wait for the last Expression to return, so the queue gets + //actually filled + + Cantor::Expression* e1=session()->evaluateExpression(QLatin1String("0+1")); + Cantor::Expression* e2=session()->evaluateExpression(QLatin1String("1+1")); + Cantor::Expression* e3=evalExp(QLatin1String("1+2")); + + QVERIFY(e1!=nullptr); + QVERIFY(e2!=nullptr); + QVERIFY(e3!=nullptr); + + QVERIFY(e1->result()); + QVERIFY(e2->result()); + QVERIFY(e3->result()); + + QCOMPARE(cleanOutput(e1->result()->data().toString()), QLatin1String("1")); + QCOMPARE(cleanOutput(e2->result()->data().toString()), QLatin1String("2")); + QCOMPARE(cleanOutput(e3->result()->data().toString()), QLatin1String("3")); +} + +void TestSage::testMultilineCommand() +{ + Cantor::Expression* e=evalExp( QLatin1String("2+2 \n simplify(1 - x + x)") ); + + QVERIFY( e!=nullptr ); + QVERIFY( e->result()!=nullptr ); + QCOMPARE( e->result()->data().toString(), QLatin1String("4\n1") ); +} + +void TestSage::testDefineFunction() +{ + const char* cmd="def func1(param) : \n" \ + " return param*param\n\n"; + + Cantor::Expression* e1=evalExp( QLatin1String(cmd) ); + + QVERIFY( e1!=nullptr ); + + Cantor::Expression* e2=evalExp( QLatin1String("func1(2)") ); + QVERIFY( e2!=nullptr ); + QVERIFY( e2->result()!=nullptr ); + QCOMPARE( e2->result()->data().toString(), QLatin1String("4") ); +} + +void TestSage::testPlot() +{ + Cantor::Expression* e=evalExp( QLatin1String("plot(sin(x))") ); + + QVERIFY( e!=nullptr ); + QCOMPARE( e->results().size(), 2); + QVERIFY( e->results()[0]->type() == Cantor::TextResult::Type); + QCOMPARE( e->results()[0]->data().toString(), QLatin1String("Launched png viewer for Graphics object consisting of 1 graphics primitive")); + + QVERIFY( e->results()[1]->type() == Cantor::ImageResult::Type); + QVERIFY( !e->results()[1]->data().isNull() ); +} + +void TestSage::testInvalidSyntax() +{ + Cantor::Expression* e=evalExp( QLatin1String("2+2*(") ); + + QVERIFY( e!=nullptr ); + QVERIFY( e->errorMessage()== QLatin1String("Syntax Error") ); +} + +void TestSage::testNoOutput() +{ + Cantor::Expression* e=evalExp( QLatin1String("f(x)=x^2+3*x+2\nf(0)") ); + + QVERIFY( e!=nullptr ); + QVERIFY( e->result() != nullptr ); + QCOMPARE( e->result()->data().toString(), QLatin1String("2") ); +} + +void TestSage::testLoginLogout() +{ + // Logout from session twice and all must works fine + session()->logout(); + session()->logout(); + + // Login in session twice and all must works fine + session()->login(); + session()->login(); +} + +void TestSage::testRestartWhileRunning() +{ + Cantor::Expression* e1=session()->evaluateExpression(QLatin1String("import time; time.sleep(5)")); + + session()->logout(); + QCOMPARE(e1->status(), Cantor::Expression::Interrupted); + session()->login(); + + Cantor::Expression* e2=evalExp( QLatin1String("2+2") ); + + QVERIFY(e2 != nullptr); + QVERIFY(e2->result() != nullptr); + + QCOMPARE(e2->result()->data().toString(), QLatin1String("4")); +} + + +QTEST_MAIN( TestSage ) + diff --git a/src/backends/sage/testsage.h b/src/backends/sage/testsage.h new file mode 100644 index 0000000..500436e --- /dev/null +++ b/src/backends/sage/testsage.h @@ -0,0 +1,50 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _TESTSAGE_H +#define _TESTSAGE_H + +#include "backendtest.h" + +/** This class test some of the basic functions of the sage backend + The different tests represent some general expressions, as well + as expressions, that are known to have caused problems in earlier + versions +**/ +class TestSage : public BackendTest +{ + Q_OBJECT + +private Q_SLOTS: + //tests evaluating a simple command + void testSimpleCommand(); + + //tests if the backend gets confused if more than + //one command is in the queue + void testCommandQueue(); + //tests a command, containing more than 1 line + void testMultilineCommand(); + + //tests defining and calling a function + void testDefineFunction(); + + //tests doing a plot + void testPlot(); + + //tests a syntax error (not closing bracket) + void testInvalidSyntax(); + + //tests a two-line command, where one doesn't deliver output + //(source of problem in earlier versions) + void testNoOutput(); + + void testLoginLogout(); + void testRestartWhileRunning(); +private: + QString backendName() override; + +}; + +#endif /* _TESTSAGE_H */ diff --git a/src/backends/scilab/CMakeLists.txt b/src/backends/scilab/CMakeLists.txt new file mode 100644 index 0000000..30354fc --- /dev/null +++ b/src/backends/scilab/CMakeLists.txt @@ -0,0 +1,35 @@ +set( ScilabBackend_SRCS + scilabbackend.cpp + scilabsession.cpp + scilabexpression.cpp + scilabextensions.cpp + scilabkeywords.cpp + scilabhighlighter.cpp + scilabcompletionobject.cpp + scilabsettingswidget.cpp + ../backendsettingswidget.cpp +) + +kconfig_add_kcfg_files(ScilabBackend_SRCS settings.kcfgc) +install(FILES scilabbackend.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) + +ki18n_wrap_ui(ScilabBackend_SRCS settings.ui) + +add_backend(scilabbackend ${ScilabBackend_SRCS}) + +target_link_libraries(cantor_scilabbackend cantor_help + KF5::KIOCore + KF5::SyntaxHighlighting +) + +if(BUILD_TESTING) + add_executable(testscilab testscilab.cpp) + add_test(NAME testscilab COMMAND testscilab) + target_link_libraries(testscilab + Qt5::Test + cantorlibs + cantortest + ) +endif(BUILD_TESTING) + +install(FILES cantor_scilab.knsrc DESTINATION ${KDE_INSTALL_KNSRCDIR}) diff --git a/src/backends/scilab/cantor_scilab.knsrc b/src/backends/scilab/cantor_scilab.knsrc new file mode 100644 index 0000000..35e4bd6 --- /dev/null +++ b/src/backends/scilab/cantor_scilab.knsrc @@ -0,0 +1,7 @@ +[KNewStuff3] +ProvidersUrl=https://autoconfig.kde.org/ocs/providers.xml +Categories=Cantor (Maxima),Cantor (Sage),Cantor (KAlgebra),Cantor (Qalculate),Cantor (Python 2),Cantor (Python 3),Cantor (Scilab),Cantor (Octave),Cantor (R),Cantor (Lua) +UploadCategories=Cantor (Scilab) +TargetDir=cantor/examples +Uncompress=never +CustomName=true diff --git a/src/backends/scilab/scilabbackend.cpp b/src/backends/scilab/scilabbackend.cpp new file mode 100644 index 0000000..5dacd68 --- /dev/null +++ b/src/backends/scilab/scilabbackend.cpp @@ -0,0 +1,78 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Filipe Saraiva +*/ + +#include "scilabbackend.h" +#include "scilabsession.h" +#include "scilabextensions.h" +#include "scilabsettingswidget.h" +#include "settings.h" + +#include + +ScilabBackend::ScilabBackend(QObject* parent,const QList args) : Cantor::Backend(parent, args) +{ + new ScilabVariableManagementExtension(this); + new ScilabScriptExtension(this); +} + +ScilabBackend::~ScilabBackend() +{ + qDebug()<<"Destroying ScilabBackend"; +} + +QString ScilabBackend::id() const +{ + return QLatin1String("scilab"); +} + +QString ScilabBackend::version() const +{ + return QLatin1String("5.5, 6.0"); +} + +Cantor::Session* ScilabBackend::createSession() +{ + qDebug()<<"Spawning a new Scilab session"; + + return new ScilabSession(this); +} + +Cantor::Backend::Capabilities ScilabBackend::capabilities() const +{ + return Cantor::Backend::SyntaxHighlighting | + Cantor::Backend::Completion | + Cantor::Backend::VariableManagement; +} + +bool ScilabBackend::requirementsFullfilled(QString* const reason) const +{ + const QString& path = ScilabSettings::self()->path().toLocalFile(); + return Cantor::Backend::checkExecutable(QLatin1String("Scilab"), path, reason); +} + +QWidget* ScilabBackend::settingsWidget(QWidget* parent) const +{ + return new ScilabSettingsWidget(parent, id()); +} + +KConfigSkeleton* ScilabBackend::config() const +{ + return ScilabSettings::self(); +} + +QUrl ScilabBackend::helpUrl() const +{ + return QUrl(i18nc("The url to the documentation of Scilab, please check if there is a translated version and use the correct url", + "https://www.scilab.org/support/documentation")); +} + +QString ScilabBackend::description() const +{ + return i18n("Scilab is a free software, cross-platform numerical computational package and a high-level, numerically oriented programming language." \ + "Scilab is distributed under CeCILL license (GPL compatible)."); +} + +K_PLUGIN_FACTORY_WITH_JSON(scilabbackend, "scilabbackend.json", registerPlugin();) +#include "scilabbackend.moc" diff --git a/src/backends/scilab/scilabbackend.h b/src/backends/scilab/scilabbackend.h new file mode 100644 index 0000000..3b6377d --- /dev/null +++ b/src/backends/scilab/scilabbackend.h @@ -0,0 +1,32 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Filipe Saraiva +*/ + +#ifndef _SCILABBACKEND_H +#define _SCILABBACKEND_H + +#include "backend.h" + +class ScilabBackend : public Cantor::Backend +{ + Q_OBJECT + + public: + explicit ScilabBackend( QObject* parent = nullptr,const QList args = QList()); + ~ScilabBackend() override; + + QString id() const override; + QString version() const override; + Cantor::Session *createSession() override; + Cantor::Backend::Capabilities capabilities() const override; + bool requirementsFullfilled(QString* const reason = nullptr) const override; + + QWidget* settingsWidget(QWidget* parent) const override; + KConfigSkeleton* config() const override; + + QUrl helpUrl() const override; + QString description() const override; +}; + +#endif /* _SCILABBACKEND_H */ diff --git a/src/backends/scilab/scilabbackend.json b/src/backends/scilab/scilabbackend.json new file mode 100644 index 0000000..9e03797 --- /dev/null +++ b/src/backends/scilab/scilabbackend.json @@ -0,0 +1,69 @@ +{ + "KPlugin": { + "Description": "Backend for the Scilab Scientific Programming Environment", + "Description[ca@valencia]": "Dorsal per a l'entorn de programació científic Scilab", + "Description[ca]": "Dorsal per a l'entorn de programació científic Scilab", + "Description[cs]": "Podpůrná vrstva pro vědecké programovací prostředí Scilab", + "Description[de]": "Modul für die wissenschaftliche Programmierumgebung Scilab", + "Description[el]": "Σύστημα υποστήριξης για το περιβάλλον επιστημονικού προγραμματισμού Scilab", + "Description[en_GB]": "Backend for the Scilab Scientific Programming Environment", + "Description[es]": "Motor para el entorno de programación científico Scilab", + "Description[et]": "Scilabi teadusliku programmeerimise keskkonna taustaprogramm", + "Description[fi]": "Scilabin, tieteellisen ohjelmointiympäristön, taustajärjestelmä", + "Description[fr]": "Moteur pour l'environnement de programmation scientifique « Scilab »", + "Description[gl]": "Infraestrutura para o ambiente científico de programación Scilab", + "Description[ia]": "Retroadministration per le Ambiente de Programmar Scientific de Scilab", + "Description[it]": "Motore per l'ambiente scientifico di programmazione Scilab", + "Description[ka]": "Scilab Scientific Programming Environment-ის უკანაბოლო", + "Description[ko]": "Scilab 과학 프로그래밍 환경 백엔드", + "Description[nl]": "Backend voor de Scilab wetenschappelijke programmeeromgeving", + "Description[nn]": "Motor for det Scilab «Scientific Programming Environment»", + "Description[pl]": "Silnika dla naukowego środowiska programistycznego Scilab", + "Description[pt]": "Infra-Estrutura do Ambiente de Programação Científica com o Scilab", + "Description[pt_BR]": "Infraestrutura do ambiente de programação científica Scilab", + "Description[ru]": "Поддержка программного окружения Scilab для инженерных и научных расчётов", + "Description[sk]": "Backend pre vedecké programovacie prostredie Scilab", + "Description[sl]": "Zaledje za znanstveno programersko okolje Scilab", + "Description[sv]": "Bakgrundsprogram för Scilab vetenskaplig programmeringsmiljö", + "Description[tr]": "Scilab Bilimsel Programlama Ortamı için arka uç", + "Description[uk]": "Модуль наукового середовища програмування Scilab", + "Description[x-test]": "xxBackend for the Scilab Scientific Programming Environmentxx", + "Description[zh_CN]": "Scilab 科学编程环境的后端", + "Description[zh_TW]": "Scilab 科學程式環境的後端介面", + "Icon": "scilabbackend", + "Id": "Scilab", + "License": "GPL", + "Name": "Scilab", + "Name[ar]": "سايلاب", + "Name[ca@valencia]": "Scilab", + "Name[ca]": "Scilab", + "Name[cs]": "Scilab", + "Name[de]": "Scilab", + "Name[el]": "Scilab", + "Name[en_GB]": "Scilab", + "Name[es]": "Scilab", + "Name[et]": "Scilab", + "Name[fi]": "Scilab", + "Name[fr]": "Scilab", + "Name[gl]": "Scilab", + "Name[ia]": "Scilab", + "Name[it]": "Scilab", + "Name[ka]": "Scilab", + "Name[ko]": "Scilab", + "Name[nl]": "Scilab", + "Name[nn]": "Scilab", + "Name[pl]": "Scilab", + "Name[pt]": "Scilab", + "Name[pt_BR]": "Scilab", + "Name[ru]": "Scilab", + "Name[sk]": "Scilab", + "Name[sl]": "Scilab", + "Name[sv]": "Scilab", + "Name[tr]": "Scilab", + "Name[uk]": "Scilab", + "Name[x-test]": "xxScilabxx", + "Name[zh_CN]": "Scilab", + "Name[zh_TW]": "Scilab", + "Website": "https://scilab.org/" + } +} diff --git a/src/backends/scilab/scilabbackend.kcfg b/src/backends/scilab/scilabbackend.kcfg new file mode 100644 index 0000000..7f6a0e8 --- /dev/null +++ b/src/backends/scilab/scilabbackend.kcfg @@ -0,0 +1,29 @@ + + + QStandardPaths + + + + + + [this] { + #ifdef Q_OS_WIN + return QUrl::fromLocalFile(QStandardPaths::findExecutable( QLatin1String("WScilex-cli.exe") )); + #else + return QUrl::fromLocalFile(QStandardPaths::findExecutable( QLatin1String("scilab-adv-cli") )); + #endif + } () + + + + + false + + + + + + diff --git a/src/backends/scilab/scilabcompletionobject.cpp b/src/backends/scilab/scilabcompletionobject.cpp new file mode 100644 index 0000000..709686c --- /dev/null +++ b/src/backends/scilab/scilabcompletionobject.cpp @@ -0,0 +1,57 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Filipe Saraiva +*/ + +#include "scilabcompletionobject.h" + +#include + +#include "scilabsession.h" +#include "scilabkeywords.h" + +ScilabCompletionObject::ScilabCompletionObject(const QString& command, int index, ScilabSession* session) : Cantor::CompletionObject(session) +{ + setLine(command, index); +} + +void ScilabCompletionObject::fetchCompletions() +{ + // A more elegant approach would be to use Scilab's completion() function, + // similarly to how fetching is done in OctaveCompletionObject. + // Unfortunately its interactive behavior is not handled well by cantor. + QStringList allCompletions; + + allCompletions << ScilabKeywords::instance()->variables(); + allCompletions << ScilabKeywords::instance()->functions(); + allCompletions << ScilabKeywords::instance()->keywords(); + + setCompletions(allCompletions); + + emit fetchingDone(); +} + +void ScilabCompletionObject::fetchIdentifierType() +{ + // Scilab's typeof function could be used here, but as long as these lists + // are used just looking up the name is easier. + + if (std::binary_search(ScilabKeywords::instance()->functions().begin(), ScilabKeywords::instance()->functions().end(), + identifier())) + emit fetchingTypeDone(FunctionType); + else if (std::binary_search(ScilabKeywords::instance()->keywords().begin(),ScilabKeywords::instance()->keywords().end(), + identifier())) + emit fetchingTypeDone(KeywordType); + else + emit fetchingTypeDone(VariableType); +} + +bool ScilabCompletionObject::mayIdentifierContain(QChar c) const +{ + return c.isLetter() || c.isDigit() || c == QLatin1Char('_') || c == QLatin1Char('%') || c == QLatin1Char('$'); +} + +bool ScilabCompletionObject::mayIdentifierBeginWith(QChar c) const +{ + return c.isLetter() || c == QLatin1Char('_') || c == QLatin1Char('%') || c == QLatin1Char('$'); +} diff --git a/src/backends/scilab/scilabcompletionobject.h b/src/backends/scilab/scilabcompletionobject.h new file mode 100644 index 0000000..a0b61c2 --- /dev/null +++ b/src/backends/scilab/scilabcompletionobject.h @@ -0,0 +1,28 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Filipe Saraiva +*/ + +#ifndef _SCILABCOMPLETIONOBJECT_H +#define _SCILABCOMPLETIONOBJECT_H + +#include "completionobject.h" + +class ScilabSession; + +class ScilabCompletionObject : public Cantor::CompletionObject +{ + public: + ScilabCompletionObject(const QString& cmd, int index, ScilabSession* session) ; + ~ScilabCompletionObject() override = default; + + protected: + bool mayIdentifierContain(QChar c) const override; + bool mayIdentifierBeginWith(QChar c) const override; + + protected Q_SLOTS: + void fetchCompletions() override; + void fetchIdentifierType() override; +}; + +#endif /* _SCILABCOMPLETIONOBJECT_H */ diff --git a/src/backends/scilab/scilabexpression.cpp b/src/backends/scilab/scilabexpression.cpp new file mode 100644 index 0000000..54de031 --- /dev/null +++ b/src/backends/scilab/scilabexpression.cpp @@ -0,0 +1,147 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Filipe Saraiva +*/ + +#include "scilabexpression.h" + +#include + +#include "textresult.h" +#include "imageresult.h" +#include "helpresult.h" + +#include +#include +#include + +#include + +#include "settings.h" +#include "defaultvariablemodel.h" + +using ScilabPlotResult = Cantor::ImageResult; + +ScilabExpression::ScilabExpression( Cantor::Session* session, bool internal ) : Cantor::Expression(session, internal), +m_finished(false), +m_plotPending(false) +{ + qDebug() << "ScilabExpression constructor"; +} + +void ScilabExpression::evaluate() +{ + if((ScilabSettings::integratePlots()) && (command().contains(QLatin1String("plot")))){ + + qDebug() << "Preparing export figures property"; + + QString exportCommand; + + QStringList commandList = command().split(QLatin1String("\n")); + + for(int count = 0; count < commandList.size(); count++){ + + if(commandList.at(count).toLocal8Bit().contains("plot")){ + + exportCommand = QString::fromLatin1("\nxs2png(gcf(), 'cantor-export-scilab-figure-%1.png');\ndelete(gcf());").arg(qrand()); + + commandList[count].append(exportCommand); + + exportCommand.clear(); + } + + qDebug() << "Command " << count << ": " << commandList.at(count).toLocal8Bit().constData(); + } + + QString newCommand = commandList.join(QLatin1String("\n")); + newCommand.prepend(QLatin1String("clf();\n")); + newCommand.append(QLatin1String("\n")); + + this->setCommand(newCommand); + + qDebug() << "New Command " << command(); + + } + + session()->enqueueExpression(this); +} + +void ScilabExpression::parseOutput(const QString& output) +{ + qDebug() << "output: " << output; + const QStringList lines = output.split(QLatin1String("\n")); + bool isPrefixLines = true; + for (const QString& line : lines) + { + if (isPrefixLines && line.isEmpty()) + continue; + + m_output += line + QLatin1String("\n"); + isPrefixLines = false; + } + + if (!m_output.simplified().isEmpty()) + setResult(new Cantor::TextResult(m_output)); + + evalFinished(); + setStatus(Cantor::Expression::Done); +} + +void ScilabExpression::parseError(const QString& error) +{ + qDebug() << "error" << error; + + setErrorMessage(error); + + evalFinished(); + setStatus(Cantor::Expression::Error); +} + +void ScilabExpression::parsePlotFile(QString filename) +{ + qDebug() << "parsePlotFile"; + + qDebug() << "ScilabExpression::parsePlotFile: " << filename; + + setResult(new ScilabPlotResult(QUrl::fromLocalFile(filename))); + + setPlotPending(false); + + if (m_finished){ + qDebug() << "ScilabExpression::parsePlotFile: done"; + setStatus(Done); + } +} + +void ScilabExpression::interrupt() +{ + qDebug()<<"interruptinging command"; + setStatus(Cantor::Expression::Interrupted); +} + +void ScilabExpression::evalFinished() +{ + qDebug()<<"evaluation finished"; + + foreach (const QString& line, m_output.simplified().split(QLatin1Char('\n'), QString::SkipEmptyParts)){ + if (m_output.contains(QLatin1Char('='))){ + + qDebug() << line; + + QStringList parts = line.split(QLatin1Char('=')); + + if (parts.size() >= 2){ + Cantor::DefaultVariableModel* model = dynamic_cast(session()->variableModel()); + + if (model){ + model->addVariable(parts.first().trimmed(), parts.last().trimmed()); + } + } + } + } +} + +void ScilabExpression::setPlotPending(bool plot) +{ + m_plotPending = plot; +} diff --git a/src/backends/scilab/scilabexpression.h b/src/backends/scilab/scilabexpression.h new file mode 100644 index 0000000..ef65bd8 --- /dev/null +++ b/src/backends/scilab/scilabexpression.h @@ -0,0 +1,36 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Filipe Saraiva +*/ + +#ifndef _SCILABEXPRESSION_H +#define _SCILABEXPRESSION_H + +#include "expression.h" +#include + +class ScilabExpression : public Cantor::Expression +{ + Q_OBJECT + + public: + explicit ScilabExpression(Cantor::Session* session, bool internal = false); + ~ScilabExpression() override = default; + + void evaluate() override; + void interrupt() override; + void parseOutput(const QString&) override; + void parseError(const QString&) override; + void parsePlotFile(QString filename); + void setPlotPending(bool plot); + + public Q_SLOTS: + void evalFinished(); + + private: + QString m_output; + bool m_finished; + bool m_plotPending; +}; + +#endif /* _SCILABEXPRESSION_H */ diff --git a/src/backends/scilab/scilabextensions.cpp b/src/backends/scilab/scilabextensions.cpp new file mode 100644 index 0000000..21f0ad9 --- /dev/null +++ b/src/backends/scilab/scilabextensions.cpp @@ -0,0 +1,66 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2013 Filipe Saraiva +*/ + +#include "scilabextensions.h" +#include + +#include + +#define SCILAB_EXT_CDTOR(name) Scilab##name##Extension::Scilab##name##Extension(QObject* parent) : name##Extension(parent) {} \ + Scilab##name##Extension::~Scilab##name##Extension() {} + +SCILAB_EXT_CDTOR(Script) + +QString ScilabScriptExtension::runExternalScript(const QString& path) +{ + return QString::fromLatin1("exec(\"%1\", -1)").arg(path); +} + +QString ScilabScriptExtension::scriptFileFilter() +{ + return i18n(";;Scilab script file (*.sce);;Scilab function file (*.sci)"); +} + +QString ScilabScriptExtension::highlightingMode() +{ + return QLatin1String("scilab"); +} + +QString ScilabScriptExtension::commandSeparator() +{ + return QLatin1String(";"); +} + +SCILAB_EXT_CDTOR(VariableManagement) + +QString ScilabVariableManagementExtension::addVariable(const QString& name, const QString& value) +{ + return setValue(name,value); +} + +QString ScilabVariableManagementExtension::setValue(const QString& name, const QString& value) +{ + return QString::fromLatin1("%1 = %2").arg(name).arg(value); +} + +QString ScilabVariableManagementExtension::removeVariable(const QString& name) +{ + return QString::fromLatin1("clear %1;").arg(name); +} + +QString ScilabVariableManagementExtension::clearVariables() +{ + return QLatin1String("clear;"); +} + +QString ScilabVariableManagementExtension::saveVariables(const QString& fileName) +{ + return QString::fromLatin1("save('%1');").arg(fileName); +} + +QString ScilabVariableManagementExtension::loadVariables(const QString& fileName) +{ + return QString::fromLatin1("load('%1');").arg(fileName); +} diff --git a/src/backends/scilab/scilabextensions.h b/src/backends/scilab/scilabextensions.h new file mode 100644 index 0000000..458c376 --- /dev/null +++ b/src/backends/scilab/scilabextensions.h @@ -0,0 +1,36 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2013 Filipe Saraiva +*/ + +#ifndef SCILABEXTENSIONS_H +#define SCILABEXTENSIONS_H + +#include + +#define SCILAB_EXT_CDTOR_DECL(name) Scilab##name##Extension(QObject* parent); \ + ~Scilab##name##Extension(); + +class ScilabScriptExtension : public Cantor::ScriptExtension +{ + public: + SCILAB_EXT_CDTOR_DECL(Script) + QString scriptFileFilter() override; + QString highlightingMode() override; + QString runExternalScript(const QString& path) override; + QString commandSeparator() override; +}; + +class ScilabVariableManagementExtension : public Cantor::VariableManagementExtension +{ + public: + SCILAB_EXT_CDTOR_DECL(VariableManagement) + QString addVariable(const QString& name, const QString& value) override; + QString setValue(const QString& name, const QString& value) override; + QString removeVariable(const QString& name) override; + QString saveVariables(const QString& fileName) override; + QString loadVariables(const QString& fileName) override; + QString clearVariables() override; +}; + +#endif // SCILABEXTENSIONS_H diff --git a/src/backends/scilab/scilabhighlighter.cpp b/src/backends/scilab/scilabhighlighter.cpp new file mode 100644 index 0000000..54dec14 --- /dev/null +++ b/src/backends/scilab/scilabhighlighter.cpp @@ -0,0 +1,68 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Filipe Saraiva +*/ + +#include "scilabhighlighter.h" +#include "scilabkeywords.h" +#include "result.h" +#include "textresult.h" +#include "session.h" + +#include +#include + +ScilabHighlighter::ScilabHighlighter(QObject* parent, Cantor::Session* session) : Cantor::DefaultHighlighter(parent), m_session(session) +{ + addKeywords(ScilabKeywords::instance()->keywords()); + addFunctions(ScilabKeywords::instance()->functions()); + addVariables(ScilabKeywords::instance()->variables()); + + addRule(QRegularExpression(QStringLiteral("\\b[A-Za-z0-9_]+(?=\\()")), functionFormat()); + + addRule(QLatin1String("FIXME"), commentFormat()); + addRule(QLatin1String("TODO"), commentFormat()); + + addRule(QRegularExpression(QStringLiteral("\"[^\"]*\"")), stringFormat()); + addRule(QRegularExpression(QStringLiteral("'[^']*'")), stringFormat()); + addRule(QRegularExpression(QStringLiteral("//[^\n]*")), commentFormat()); + + commentStartExpression = QRegularExpression(QStringLiteral("/\\*")); + commentEndExpression = QRegularExpression(QStringLiteral("\\*/")); +} + +void ScilabHighlighter::highlightBlock(const QString& text) +{ + if (skipHighlighting(text)){ + return; + } + + //Do some backend independent highlighting (brackets etc.) + DefaultHighlighter::highlightBlock(text); + + setCurrentBlockState(0); + + int startIndex = 0; + if (previousBlockState() != 1) + startIndex = text.indexOf(commentStartExpression); + + while (startIndex >= 0){ + QRegularExpressionMatch endMatch; + const int endIndex = text.indexOf(commentEndExpression, startIndex, &endMatch); + int commentLength; + if (endIndex == -1) { // no match found + setCurrentBlockState(1); + commentLength = text.length() - startIndex; + } else { // match found + // endMatch.catpuredEnd(0) is endIndex + endMatch.capturedLength(0) + commentLength = endMatch.capturedEnd(0) - startIndex; + } + setFormat(startIndex, commentLength, commentFormat()); + startIndex = text.indexOf(commentStartExpression, startIndex + commentLength); + } +} + +QString ScilabHighlighter::nonSeparatingCharacters() const +{ + return QLatin1String("[%]"); +} diff --git a/src/backends/scilab/scilabhighlighter.h b/src/backends/scilab/scilabhighlighter.h new file mode 100644 index 0000000..a3f264c --- /dev/null +++ b/src/backends/scilab/scilabhighlighter.h @@ -0,0 +1,32 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Filipe Saraiva +*/ + +#ifndef _SCILABHIGHLIGHTER_H +#define _SCILABHIGHLIGHTER_H + +#include + +#include "defaulthighlighter.h" +#include "scilabexpression.h" + +class ScilabHighlighter : public Cantor::DefaultHighlighter +{ + Q_OBJECT + + public: + ScilabHighlighter(QObject* parent, Cantor::Session* session); + ~ScilabHighlighter() override = default; + + protected: + void highlightBlock(const QString&) override; + QString nonSeparatingCharacters() const override; + + private: + Cantor::Session* m_session; + QRegularExpression commentStartExpression; + QRegularExpression commentEndExpression; +}; + +#endif /* _SCILABHIGHLIGHTER_H */ diff --git a/src/backends/scilab/scilabkeywords.cpp b/src/backends/scilab/scilabkeywords.cpp new file mode 100644 index 0000000..f8ec8ec --- /dev/null +++ b/src/backends/scilab/scilabkeywords.cpp @@ -0,0 +1,63 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Filipe Saraiva +*/ + +#include "scilabkeywords.h" + +#include +#include +#include + +#include +#include + +ScilabKeywords::ScilabKeywords() +{ + KSyntaxHighlighting::Repository m_repository; + KSyntaxHighlighting::Definition definition = m_repository.definitionForName(QLatin1String("scilab")); + + m_keywords << definition.keywordList(QLatin1String("Structure-keywords")); + m_keywords << definition.keywordList(QLatin1String("Control-keywords")); + m_keywords << definition.keywordList(QLatin1String("Function-keywords")); + m_keywords << definition.keywordList(QLatin1String("Warning-keywords")); + m_keywords << definition.keywordList(QLatin1String("Function-keywords")); + + //TODO: This keywords missing in scilab syntax file + m_keywords << QLatin1String("case") << QLatin1String("catch") << QLatin1String("continue"); + m_keywords << QLatin1String("try"); + + m_functions << definition.keywordList(QLatin1String("functions")); + + //TODO: Should we use this keywordList as variables? + m_variables << definition.keywordList(QLatin1String("Constants-keyword")); +} + +ScilabKeywords* ScilabKeywords::instance() +{ + static ScilabKeywords* inst = nullptr; + + if(inst == nullptr){ + inst = new ScilabKeywords(); + std::sort(inst->m_variables.begin(), inst->m_variables.end()); + std::sort(inst->m_functions.begin(), inst->m_functions.end()); + std::sort(inst->m_keywords.begin(), inst->m_keywords.end()); + } + + return inst; +} + +const QStringList& ScilabKeywords::variables() const +{ + return m_variables; +} + +const QStringList& ScilabKeywords::functions() const +{ + return m_functions; +} + +const QStringList& ScilabKeywords::keywords() const +{ + return m_keywords; +} diff --git a/src/backends/scilab/scilabkeywords.h b/src/backends/scilab/scilabkeywords.h new file mode 100644 index 0000000..836d6d3 --- /dev/null +++ b/src/backends/scilab/scilabkeywords.h @@ -0,0 +1,27 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Filipe Saraiva +*/ + +#ifndef _SCILABKEYWORDS_H +#define _SCILABKEYWORDS_H + +#include + +class ScilabKeywords +{ + public: + static ScilabKeywords* instance(); + + const QStringList& functions() const; + const QStringList& keywords() const; + const QStringList& variables() const; + + private: + ScilabKeywords(); + ~ScilabKeywords() = default; + QStringList m_functions; + QStringList m_keywords; + QStringList m_variables; +}; +#endif /* _SCILABKEYWORDS_H */ diff --git a/src/backends/scilab/scilabsession.cpp b/src/backends/scilab/scilabsession.cpp new file mode 100644 index 0000000..6d11d90 --- /dev/null +++ b/src/backends/scilab/scilabsession.cpp @@ -0,0 +1,297 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Filipe Saraiva +*/ + +#include "scilabsession.h" +#include "scilabhighlighter.h" +#include "scilabcompletionobject.h" + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +#ifndef Q_OS_WIN +#include +#endif + +ScilabSession::ScilabSession( Cantor::Backend* backend) : Session(backend), +m_process(nullptr), +m_watch(nullptr), +m_variableModel(new Cantor::DefaultVariableModel(this)) +{ +} + +ScilabSession::~ScilabSession() +{ + if (m_process) + { + m_process->kill(); + m_process->deleteLater(); + m_process = nullptr; + } +} + +void ScilabSession::login() +{ + qDebug()<<"login"; + if (m_process) + return; + + emit loginStarted(); + + QStringList args; + + args << QLatin1String("-nb"); + + m_process = new QProcess(this); + m_process->setArguments(args); + m_process->setProgram(ScilabSettings::self()->path().toLocalFile()); + + qDebug() << m_process->program(); + + m_process->setProcessChannelMode(QProcess::SeparateChannels); + m_process->start(); + m_process->waitForStarted(); + + if(ScilabSettings::integratePlots()){ + + qDebug() << "integratePlots"; + + QString tempPath = QDir::tempPath(); + + QString pathScilabOperations = tempPath; + pathScilabOperations.prepend(QLatin1String("chdir('")); + pathScilabOperations.append(QLatin1String("');\n")); + + qDebug() << "Processing command to change chdir in Scilab. Command " << pathScilabOperations.toLocal8Bit(); + + m_process->write(pathScilabOperations.toLocal8Bit()); + + m_watch = new KDirWatch(this); + m_watch->setObjectName(QLatin1String("ScilabDirWatch")); + + m_watch->addDir(tempPath, KDirWatch::WatchFiles); + + qDebug() << "addDir " << tempPath << "? " << m_watch->contains(QLatin1String(tempPath.toLocal8Bit())); + + QObject::connect(m_watch, &KDirWatch::created, this, &ScilabSession::plotFileChanged); + } + + if(!ScilabSettings::self()->autorunScripts().isEmpty()){ + QString autorunScripts = ScilabSettings::self()->autorunScripts().join(QLatin1String("\n")); + m_process->write(autorunScripts.toLocal8Bit()); + } + + QObject::connect(m_process, &QProcess::readyReadStandardOutput, this, &ScilabSession::readOutput); + QObject::connect(m_process, &QProcess::readyReadStandardError, this, &ScilabSession::readError); + + m_process->readAllStandardOutput(); + m_process->readAllStandardError(); + + changeStatus(Cantor::Session::Done); + + emit loginDone(); +} + +void ScilabSession::logout() +{ + qDebug()<<"logout"; + + if(!m_process) + return; + + disconnect(m_process, nullptr, this, nullptr); + + if(status() == Cantor::Session::Running) + interrupt(); + + m_process->write("exit\n"); + + if(!m_process->waitForFinished(1000)) + m_process->kill(); + m_process->deleteLater(); + m_process = nullptr; + + QDir removePlotFigures; + QListIterator i(m_listPlotName); + + while(i.hasNext()){ + removePlotFigures.remove(QLatin1String(i.next().toLocal8Bit().constData())); + } + + Session::logout(); +} + +void ScilabSession::interrupt() +{ + if(!expressionQueue().isEmpty()) + { + qDebug()<<"interrupting " << expressionQueue().first()->command(); + if(m_process && m_process->state() != QProcess::NotRunning) + { +#ifndef Q_OS_WIN + const int pid = m_process->processId(); + kill(pid, SIGINT); +#else + ; //TODO: interrupt the process on windows +#endif + } + foreach (Cantor::Expression* expression, expressionQueue()) + expression->setStatus(Cantor::Expression::Interrupted); + expressionQueue().clear(); + + // Cleanup inner state and call octave prompt printing + // If we move this code for interruption to Session, we need add function for + // cleaning before setting Done status + m_output.clear(); + m_process->write("\n"); + + qDebug()<<"done interrupting"; + } + + changeStatus(Cantor::Session::Done); +} + +Cantor::Expression* ScilabSession::evaluateExpression(const QString& cmd, Cantor::Expression::FinishingBehavior behave, bool internal) +{ + qDebug() << "evaluating: " << cmd; + ScilabExpression* expr = new ScilabExpression(this, internal); + + expr->setFinishingBehavior(behave); + expr->setCommand(cmd); + expr->evaluate(); + + return expr; +} + +void ScilabSession::runFirstExpression() +{ + qDebug() <<"call runFirstExpression"; + qDebug() << "m_process: " << m_process; + qDebug() << "status: " << (status() == Cantor::Session::Running ? "Running" : "Done"); + + if (!m_process) + return; + + qDebug()<<"running next expression"; + + if(!expressionQueue().isEmpty()) + { + auto* expr = expressionQueue().first(); + + QString command; + command.prepend(QLatin1String("\nprintf('begin-cantor-scilab-command-processing')\n")); + command += expr->command(); + command += QLatin1String("\nprintf('terminated-cantor-scilab-command-processing')\n"); + + connect(expr, &Cantor::Expression::statusChanged, this, &ScilabSession::currentExpressionStatusChanged); + expr->setStatus(Cantor::Expression::Computing); + + qDebug() << "Writing command to process" << command; + + m_process->write(command.toLocal8Bit()); + } +} + +void ScilabSession::readError() +{ + qDebug() << "readError"; + + QString error = QLatin1String(m_process->readAllStandardError()); + + qDebug() << "error: " << error; + if (!expressionQueue().isEmpty()) + expressionQueue().first()->parseError(error); +} + +void ScilabSession::readOutput() +{ + qDebug() << "readOutput"; + + while(m_process->bytesAvailable() > 0) + m_output.append(QString::fromLocal8Bit(m_process->readLine())); + + qDebug() << "output.isNull? " << m_output.isNull(); + qDebug() << "output: " << m_output; + + if(status() != Running || m_output.isNull()) + return; + + if(m_output.contains(QLatin1String("begin-cantor-scilab-command-processing")) && + m_output.contains(QLatin1String("terminated-cantor-scilab-command-processing"))){ + + m_output.remove(QLatin1String("begin-cantor-scilab-command-processing")); + m_output.remove(QLatin1String("terminated-cantor-scilab-command-processing")); + + expressionQueue().first()->parseOutput(m_output); + + m_output.clear(); + } +} + +void ScilabSession::plotFileChanged(const QString& filename) +{ + qDebug() << "plotFileChanged filename:" << filename; + + if (!expressionQueue().isEmpty() && (filename.contains(QLatin1String("cantor-export-scilab-figure")))){ + qDebug() << "Calling parsePlotFile"; + static_cast(expressionQueue().first())->parsePlotFile(filename); + + m_listPlotName.append(filename); + } +} + +//TODO: unify with the funcion in the base class +void ScilabSession::currentExpressionStatusChanged(Cantor::Expression::Status status) +{ + qDebug() << "currentExpressionStatusChanged: " << status; + + switch (status){ + case Cantor::Expression::Computing: + case Cantor::Expression::Interrupted: + case Cantor::Expression::Queued: + break; + + case Cantor::Expression::Done: + case Cantor::Expression::Error: + expressionQueue().removeFirst(); + + if (expressionQueue().isEmpty()) + changeStatus(Done); + else + runFirstExpression(); + + break; + } +} + +QSyntaxHighlighter* ScilabSession::syntaxHighlighter(QObject* parent) +{ + + ScilabHighlighter *highlighter = new ScilabHighlighter(parent, this); + + return highlighter; +} + +Cantor::CompletionObject* ScilabSession::completionFor(const QString& command, int index) +{ + return new ScilabCompletionObject(command, index, this); +} + +Cantor::DefaultVariableModel* ScilabSession::variableModel() const +{ + return m_variableModel; +} + diff --git a/src/backends/scilab/scilabsession.h b/src/backends/scilab/scilabsession.h new file mode 100644 index 0000000..7f40ed4 --- /dev/null +++ b/src/backends/scilab/scilabsession.h @@ -0,0 +1,59 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Filipe Saraiva +*/ + +#ifndef _SCILABSESSION_H +#define _SCILABSESSION_H + +#include "session.h" +#include "scilabexpression.h" +#include +#include + +namespace Cantor { + class DefaultVariableModel; +} + +class ScilabExpression; +class KDirWatch; +class QProcess; + +class ScilabSession : public Cantor::Session +{ + Q_OBJECT + + public: + explicit ScilabSession(Cantor::Backend* backend); + ~ScilabSession() override; + + void login() override; + void logout() override; + + void interrupt() override; + void runExpression(ScilabExpression* expr); + + QSyntaxHighlighter* syntaxHighlighter(QObject* parent) override; + + Cantor::Expression* evaluateExpression(const QString& command, Cantor::Expression::FinishingBehavior behave = Cantor::Expression::FinishingBehavior::DoNotDelete, bool internal = false) override; + Cantor::CompletionObject* completionFor(const QString& command, int index=-1) override; + void runFirstExpression() override; + Cantor::DefaultVariableModel* variableModel() const override; + + public Q_SLOTS: + void readOutput(); + void readError(); + void plotFileChanged(const QString& filename); + + private: + QProcess* m_process; + KDirWatch* m_watch; + QStringList m_listPlotName; + QString m_output; + Cantor::DefaultVariableModel* m_variableModel; + private Q_SLOTS: + void currentExpressionStatusChanged(Cantor::Expression::Status status); + +}; + +#endif /* _SCILABSESSION_H */ diff --git a/src/backends/scilab/scilabsettingswidget.cpp b/src/backends/scilab/scilabsettingswidget.cpp new file mode 100644 index 0000000..87ce74f --- /dev/null +++ b/src/backends/scilab/scilabsettingswidget.cpp @@ -0,0 +1,33 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020-2022 Alexander Semke + */ + +#include "scilabsettingswidget.h" + +ScilabSettingsWidget::ScilabSettingsWidget(QWidget* parent, const QString& id) : BackendSettingsWidget(parent, id) +{ + setupUi(this); + + m_tabWidget = tabWidget; + m_tabDocumentation = tabDocumentation; + m_urlRequester = kcfg_Path; + + connect(tabWidget, &QTabWidget::currentChanged, this, &BackendSettingsWidget::tabChanged); + connect(kcfg_Path, &KUrlRequester::textChanged, this, &BackendSettingsWidget::fileNameChanged); +} diff --git a/src/backends/scilab/scilabsettingswidget.h b/src/backends/scilab/scilabsettingswidget.h new file mode 100644 index 0000000..4e6df45 --- /dev/null +++ b/src/backends/scilab/scilabsettingswidget.h @@ -0,0 +1,35 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2020 Alexander Semke + */ + +#ifndef SCILABSETTINGSWIDGET_H +#define SCILABSETTINGSWIDGET_H + +#include "ui_settings.h" +#include "../backendsettingswidget.h" + +class ScilabSettingsWidget : public BackendSettingsWidget, public Ui::ScilabSettingsBase +{ + Q_OBJECT + + public: + explicit ScilabSettingsWidget(QWidget* parent = nullptr, const QString& id = QString()); +}; + +#endif /* SCILABSETTINGSWIDGET_H */ diff --git a/src/backends/scilab/settings.kcfgc b/src/backends/scilab/settings.kcfgc new file mode 100644 index 0000000..005a5bd --- /dev/null +++ b/src/backends/scilab/settings.kcfgc @@ -0,0 +1,3 @@ +File=scilabbackend.kcfg +ClassName=ScilabSettings +Singleton=true diff --git a/src/backends/scilab/settings.ui b/src/backends/scilab/settings.ui new file mode 100644 index 0000000..17c2681 --- /dev/null +++ b/src/backends/scilab/settings.ui @@ -0,0 +1,110 @@ + + + ScilabSettingsBase + + + + 0 + 0 + 420 + 302 + + + + + + + 0 + + + + General + + + + + + Executable: + + + + + + + + + + Plot Integration: + + + + + + + If enabled, plots will be shown inside of the worksheet. Otherwise, plots will be shown in an external window. + + + Enabled + + + + + + + Qt::Vertical + + + + 20 + 162 + + + + + + + + + Autorun + + + + + + Commands to autorun + + + Qt::AlignCenter + + + + + + + + + + + Documentation + + + + + + + + + KUrlRequester + QWidget +
      kurlrequester.h
      + 1 +
      + + KEditListWidget + QWidget +
      keditlistwidget.h
      +
      +
      + + +
      diff --git a/src/backends/scilab/testscilab.cpp b/src/backends/scilab/testscilab.cpp new file mode 100644 index 0000000..f0239f5 --- /dev/null +++ b/src/backends/scilab/testscilab.cpp @@ -0,0 +1,83 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Shubham +*/ + +#include "backend.h" +#include "expression.h" +#include "imageresult.h" +#include "result.h" +#include "session.h" +#include "testscilab.h" + +#include + +QString TestScilab::backendName() +{ + return QLatin1String("scilab"); +} + +void TestScilab::testSimpleCommand() +{ + Cantor::Expression* e = evalExp(QLatin1String("printf(\"Testing\")\n")); + + QVERIFY(e != nullptr); + QVERIFY(e->result() != nullptr); + + QCOMPARE(cleanOutput(e->result()->data().toString()), QLatin1String("Testing")); +} + +void TestScilab::testVariableDefinition() +{ + Cantor::Expression* e = evalExp(QLatin1String("test = 100 disp(test)")); + + QVERIFY(e != nullptr); + QVERIFY(e->result() != nullptr); + + QCOMPARE(cleanOutput(e->result()->data().toString()), QLatin1String("100")); +} + +void TestScilab::testInvalidSyntax() +{ + Cantor::Expression* e = evalExp(QLatin1String("^invalidvar = 100")); // invalid variable name, since it starts with ^ + + QVERIFY(e != nullptr); + QCOMPARE(e->status(), Cantor::Expression::Error); +} + +void TestScilab::testLoginLogout() +{ + // Logout from session twice and all must works fine + session()->logout(); + session()->logout(); + + // Login in session twice and all must works fine + session()->login(); + session()->login(); +} + +void TestScilab::testPlot() +{ + Cantor::Expression* e = evalExp(QLatin1String("x = [0:0.1:2*%pi] plot(x, sin(x))")); + + int cnt = 0; + //give some time to create the image + while(e->result() == nullptr || e->result()->type() != (int)Cantor::ImageResult::Type) + { + QTest::qWait(250); + cnt += 250; + if(cnt > 5000) + break; + } + + QVERIFY(e != nullptr); + QVERIFY(e->result() != nullptr); + + QCOMPARE(e->result()->type(), (int)Cantor::ImageResult::Type); + + QVERIFY(!e->result()->data().isNull()); + QVERIFY(e->errorMessage().isNull()); +} + +QTEST_MAIN(TestScilab) + diff --git a/src/backends/scilab/testscilab.h b/src/backends/scilab/testscilab.h new file mode 100644 index 0000000..dd9d737 --- /dev/null +++ b/src/backends/scilab/testscilab.h @@ -0,0 +1,28 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Shubham +*/ + +#ifndef TESTSCILAB_H +#define TESTSCILAB_H + +#include "backendtest.h" + +// This class tests some of the basic functions of the Scilab backend + +class TestScilab : public BackendTest +{ + Q_OBJECT + +private Q_SLOTS: + void testSimpleCommand(); + void testVariableDefinition(); + void testInvalidSyntax(); + void testLoginLogout(); + void testPlot(); + +private: + QString backendName() override; +}; + +#endif // TESTSCILAB_H diff --git a/src/cantor-documentation.knsrc b/src/cantor-documentation.knsrc new file mode 100644 index 0000000..8280cf5 --- /dev/null +++ b/src/cantor-documentation.knsrc @@ -0,0 +1,32 @@ +[KNewStuff3] +Name=Documentation +Name[ar]=التّوثيق +Name[bg]=Документация +Name[ca]=Documentació +Name[ca@valencia]=Documentació +Name[cs]=Dokumentace +Name[de]=Dokumentation +Name[el]=Τεκμηρίωση +Name[en_GB]=Documentation +Name[es]=Documentación +Name[fr]=Documentation +Name[ia]=Documentation +Name[it]=Documentazione +Name[ka]=დოკუმენტაცია +Name[ko]=문서 +Name[nl]=Documentatie +Name[pl]=Dokumentacja +Name[pt]=Documentação +Name[pt_BR]=Documentação +Name[ru]=Документация +Name[sl]=Dokumentacija +Name[sv]=Dokumentation +Name[ta]=கையேடு +Name[tr]=Belgelendirme +Name[uk]=Документація +Name[x-test]=xxDocumentationxx +Name[zh_CN]=文档 +ProvidersUrl=https://autoconfig.kde.org/ocs/providers.xml +Categories=Cantor Documentation (Maxima),Cantor Documentation (Sage),Cantor Documentation (KAlgebra),Cantor Documentation (Qalculate),Cantor Documentation (Python),Cantor Documentation (Scilab),Cantor Documentation (Octave),Cantor Documentation (R),Cantor Documentation (Lua),Cantor Documentation (Julia) +TargetDir=cantor/documentation +Uncompress=archive diff --git a/src/cantor.cpp b/src/cantor.cpp new file mode 100644 index 0000000..3cdbc08 --- /dev/null +++ b/src/cantor.cpp @@ -0,0 +1,908 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2018-2022 Alexander Semke +*/ +#include "cantor.h" +#include "lib/session.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "lib/backend.h" +#include "lib/worksheetaccess.h" + +#include "backendchoosedialog.h" +#include "settings.h" +#include "ui_settings.h" +#include "ui_formating.h" +#include "backendchoosedialog.h" +#include + +CantorShell::CantorShell() : KParts::MainWindow(), m_tabWidget(new QTabWidget(this)) +{ + // set the shell's ui resource file + setXMLFile(QLatin1String("cantor_shell.rc")); + + // then, setup our actions + setupActions(); + + createGUI(nullptr); + + m_tabWidget->setTabsClosable(true); + m_tabWidget->setMovable(true); + m_tabWidget->setDocumentMode(true); + setCentralWidget(m_tabWidget); + + connect(m_tabWidget, &QTabWidget::currentChanged, this, &CantorShell::activateWorksheet); + connect(m_tabWidget, &QTabWidget::tabCloseRequested, this, &CantorShell::closeTab); + + // apply the saved mainwindow settings, if any, and ask the mainwindow + // to automatically save settings if changed: window size, toolbar + // position, icon size, etc. + setAutoSaveSettings(); + + setDockOptions(QMainWindow::AnimatedDocks|QMainWindow::AllowTabbedDocks|QMainWindow::VerticalTabs); + + initPanels(); + + updateNewSubmenu(); +} + +CantorShell::~CantorShell() +{ + if (m_recentProjectsAction) + m_recentProjectsAction->saveEntries(KSharedConfig::openConfig()->group(QLatin1String("Recent Files"))); + + if (!m_newBackendActions.isEmpty()) + { + unplugActionList(QLatin1String("new_worksheet_with_backend_list")); + qDeleteAll(m_newBackendActions); + m_newBackendActions.clear(); + } + + unplugActionList(QLatin1String("view_show_panel_list")); + qDeleteAll(m_panels); + m_panels.clear(); +} + +void CantorShell::load(const QUrl& url) +{ + // If the url already opened, then don't open the url in another tab, but + // just activate the already existed tab + for (int i = 0; i < m_parts.size(); i++) + { + auto* part = m_parts[i]; + if (part && part->url() == url) + { + if (m_tabWidget->currentIndex() != i) + activateWorksheet(i); + else + KMessageBox::information(this, i18n("The file %1 is already opened.", QFileInfo(url.toLocalFile()).fileName()), i18n("Open file")); + return; + } + } + + if (!m_part || !m_part->url().isEmpty() || m_part->isModified()) + { + addWorksheet(QString()); + m_tabWidget->setCurrentIndex(m_parts.size() - 1); + } + + if (m_part->openUrl(url)) { + if (m_recentProjectsAction) + m_recentProjectsAction->addUrl(url); + + updateWindowTitle(m_part->url().fileName()); + } else + closeTab(m_tabWidget->currentIndex()); +} + +void CantorShell::setupActions() +{ + QAction* openNew = KStandardAction::openNew(this, SLOT(fileNew()), actionCollection()); + openNew->setPriority(QAction::LowPriority); + QAction* open = KStandardAction::open(this, SLOT(fileOpen()), actionCollection()); + open->setPriority(QAction::LowPriority); + m_recentProjectsAction = KStandardAction::openRecent(this, &CantorShell::load, actionCollection()); + m_recentProjectsAction->setPriority(QAction::LowPriority); + m_recentProjectsAction->loadEntries(KSharedConfig::openConfig()->group(QLatin1String("Recent Files"))); + + KStandardAction::close(this, SLOT(closeTab()), actionCollection()); + + KStandardAction::quit(qApp, SLOT(closeAllWindows()), actionCollection()); + + createStandardStatusBarAction(); + //setStandardToolBarMenuEnabled(true); + + KStandardAction::keyBindings(this, SLOT(optionsConfigureKeys()), actionCollection()); + KStandardAction::configureToolbars(this, SLOT(configureToolbars()), actionCollection()); + + KStandardAction::preferences(this, SLOT(showSettings()), actionCollection()); + + KNSWidgets::Action* downloadExamples = new KNSWidgets::Action(i18n("Download Examples"), QStringLiteral("cantor.knsrc"), actionCollection()); + actionCollection()->addAction(QLatin1String("file_example_download"), downloadExamples); + + QAction* openExample = new QAction(i18n("&Open Example"), actionCollection()); + openExample->setIcon(QIcon::fromTheme(QLatin1String("document-open"))); + actionCollection()->addAction(QLatin1String("file_example_open"), openExample); + connect(openExample, &QAction::triggered, this, &CantorShell::openExample); + + QAction* toPreviousTab = new QAction(i18n("Go to previous worksheet"), actionCollection()); + actionCollection()->addAction(QLatin1String("go_to_previous_tab"), toPreviousTab); + actionCollection()->setDefaultShortcut(toPreviousTab, Qt::CTRL+Qt::Key_PageDown); + connect(toPreviousTab, &QAction::triggered, toPreviousTab, [this](){ + const int index = m_tabWidget->currentIndex()-1; + if (index >= 0) + m_tabWidget->setCurrentIndex(index); + else + m_tabWidget->setCurrentIndex(m_tabWidget->count()-1); + }); + addAction(toPreviousTab); + + QAction* toNextTab = new QAction(i18n("Go to next worksheet"), actionCollection()); + actionCollection()->addAction(QLatin1String("go_to_next_tab"), toNextTab); + actionCollection()->setDefaultShortcut(toNextTab, Qt::CTRL+Qt::Key_PageUp); + connect(toNextTab, &QAction::triggered, toNextTab, [this](){ + const int index = m_tabWidget->currentIndex()+1; + if (index < m_tabWidget->count()) + m_tabWidget->setCurrentIndex(index); + else + m_tabWidget->setCurrentIndex(0); + }); + addAction(toNextTab); +} + +void CantorShell::saveProperties(KConfigGroup & /*config*/) +{ + // the 'config' object points to the session managed + // config file. anything you write here will be available + // later when this app is restored +} + +void CantorShell::readProperties(const KConfigGroup & /*config*/) +{ + // the 'config' object points to the session managed + // config file. this function is automatically called whenever + // the app is being restored. read in here whatever you wrote + // in 'saveProperties' +} + +/*! + * called when one of the "new backend" action or the "New" action are called + * adds a new worksheet with the backend assossiated with the called action + * or opens the "Choose Backend" dialog, respectively. + */ +void CantorShell::fileNew() +{ + QAction* a = static_cast(sender()); + const QString& backendName = a->data().toString(); + if (!backendName.isEmpty()) + { + addWorksheet(backendName); + return; + } + + //"New" action was called -> open the "Choose Backend" dialog. + addWorksheet(); +} + +void CantorShell::optionsConfigureKeys() +{ + KShortcutsDialog dlg( KShortcutsEditor::AllActions, KShortcutsEditor::LetterShortcutsDisallowed, this ); + dlg.addCollection( actionCollection(), i18n("Cantor") ); + if (m_part) + dlg.addCollection( m_part->actionCollection(), i18n("Cantor") ); + dlg.configure( true ); +} + +void CantorShell::fileOpen() +{ + // this slot is called whenever the File->Open menu is selected, + // the Open shortcut is pressed (usually CTRL+O) or the Open toolbar + // button is clicked + static const QString& filter = i18n("All supported files (*.cws *ipynb);;Cantor Worksheet (*.cws);;Jupyter Notebook (*.ipynb)"); + const QUrl& url = QFileDialog::getOpenFileUrl(this, i18n("Open file"), QUrl(), filter, &m_previousFilter); + + if (url.isEmpty() == false) + { + // About this function, the style guide + // says that it should open a new window if the document is _not_ + // in its initial state. This is what we do here.. + /*if ( m_part->url().isEmpty() && ! m_part->isModified() ) + { + // we open the file in this window... + load( url ); + } + else + { + // we open the file in a new window... + CantorShell* newWin = new CantorShell; + newWin->load( url ); + newWin->show(); + }*/ + load(url); + } +} + +void CantorShell::addWorksheet() +{ + bool hasBackend = false; + for (auto* b : Cantor::Backend::availableBackends()) + { + if(b->isEnabled()) + { + hasBackend = true; + break; + } + } + + if(hasBackend) //There is no point in asking for the backend, if no one is available + { + QString backend = Settings::self()->defaultBackend(); + if (backend.isEmpty()) + { + QPointer dlg=new BackendChooseDialog(this); + if(dlg->exec()) + { + backend = dlg->backendName(); + addWorksheet(backend); + } + + delete dlg; + } + else + { + addWorksheet(backend); + } + + }else + { + QTextBrowser* browser = new QTextBrowser(this); + QString backendList = QLatin1String("
        "); + int backendListSize = 0; + for (auto* backend : Cantor::Backend::availableBackends()) + { + if(!backend->requirementsFullfilled()) //It's disabled because of missing dependencies, not because of some other reason(like eg. nullbackend) + { + backendList += QString::fromLatin1("
      • %1: %2
      • ").arg(backend->name(), backend->url()); + ++backendListSize; + } + } + browser->setHtml(i18np("

        No Backend Found

        \n" \ + "
        You could try:\n" \ + "
          " \ + "
        • Changing the settings in the config dialog;
        • " \ + "
        • Installing packages for the following program:
        • " \ + " %2 " \ + "
        " \ + "
        " + , "

        No Backend Found

        \n" \ + "
        You could try:\n" \ + "
          " \ + "
        • Changing the settings in the config dialog;
        • " \ + "
        • Installing packages for one of the following programs:
        • " \ + " %2 " \ + "
        " \ + "
        " + , backendListSize, backendList + )); + + browser->setObjectName(QLatin1String("ErrorMessage")); + m_tabWidget->addTab(browser, i18n("Error")); + } +} + +void CantorShell::addWorksheet(const QString& backendName) +{ + static int sessionCount=1; + + // this routine will find and load our Part. it finds the Part by + // name which is a bad idea usually.. but it's alright in this + // case since our Part is made for this Shell + + const auto partResult = KPluginFactory::instantiatePlugin(KPluginMetaData(QStringLiteral("kf5/parts/cantorpart")), m_tabWidget, {backendName}); + + if (partResult) + { + Cantor::Backend* backend = nullptr; + if (!backendName.isEmpty()) + { + backend = Cantor::Backend::getBackend(backendName); + if (!backend) + { + KMessageBox::error(this, i18n("Backend %1 is not installed", backendName), i18n("Cantor")); + return; + } + else + { + if (!backend->isEnabled()) + { + KMessageBox::error(this, i18n("%1 backend installed, but inactive. Please check installation and Cantor settings", backendName), i18n("Cantor")); + return; + } + } + } + + // now that the Part is loaded, we cast it to a Part to get our hands on it + auto part = partResult.plugin; + + connect(part, SIGNAL(setCaption(QString,QIcon)), this, SLOT(setTabCaption(QString,QIcon))); + connect(part, SIGNAL(worksheetSave(QUrl)), this, SLOT(onWorksheetSave(QUrl))); + connect(part, SIGNAL(showHelp(QString)), this, SIGNAL(showHelp(QString))); + connect(part, SIGNAL(hierarchyChanged(QStringList, QStringList, QList)), this, SIGNAL(hierarchyChanged(QStringList, QStringList, QList))); + connect(part, SIGNAL(hierarhyEntryNameChange(QString, QString, int)), this, SIGNAL(hierarhyEntryNameChange(QString, QString, int))); + connect(this, SIGNAL(requestScrollToHierarchyEntry(QString)), part, SIGNAL(requestScrollToHierarchyEntry(QString))); + connect(this, SIGNAL(settingsChanges()), part, SIGNAL(settingsChanges())); + connect(part, SIGNAL(requestDocumentation(QString)), this, SIGNAL(requestDocumentation(QString))); + + m_parts.append(part); + if (backend) {// If backend empty (loading worksheet from file), then we connect to signal and wait + m_parts2Backends[part] = backend->id(); + + //show the default help string in the help panel + emit showHelp(backend->defaultHelp()); + } else + { + m_parts2Backends[part] = QString(); + connect(part, SIGNAL(setBackendName(QString)), this, SLOT(updateBackendForPart(QString))); + } + int tab = m_tabWidget->addTab(part->widget(), i18n("Session %1", sessionCount++)); + m_tabWidget->setCurrentIndex(tab); + // Setting focus on worksheet view, because Qt clear focus of added widget inside addTab + // This fix https://bugs.kde.org/show_bug.cgi?id=395976 + part->widget()->findChild()->setFocus(); + + // Force run updateCaption for getting proper backend icon + QMetaObject::invokeMethod(part, "updateCaption"); + } + else + { + // if we couldn't find our Part, we exit since the Shell by + // itself can't do anything useful + KMessageBox::error(this, i18n("Failed to find the Cantor Part with error %1", partResult.errorString)); + qApp->quit(); + // we return here, cause qApp->quit() only means "exit the + // next time we enter the event loop... + return; + } + +} + +void CantorShell::activateWorksheet(int index) +{ + // Save part panels states before change worksheet + if (m_part) + { + QStringList visiblePanelNames; + for (auto* doc : m_panels) + { + if (doc->widget() && doc->widget()->isVisible()) + visiblePanelNames << doc->objectName(); + } + m_pluginsVisibility[m_part] = visiblePanelNames; + + auto* wa = m_part->findChild(Cantor::WorksheetAccessInterface::Name); + assert(wa); + Cantor::PanelPluginHandler::PanelStates states; + auto plugins = m_panelHandler.plugins(wa->session()); + for(auto* plugin : plugins) + { + states.insert(plugin->name(), plugin->saveState()); + } + m_pluginsStates[m_part] = states; + } + + if (index != -1) + { + m_part = findPart(m_tabWidget->widget(index)); + if(m_part) + { + createGUI(m_part); + + //update the status bar + auto* wa = m_part->findChild(Cantor::WorksheetAccessInterface::Name); + if (wa->session()) + { + auto status = wa->session()->status(); + switch (status) { + case Cantor::Session::Running: + statusBar()->showMessage(i18n("Calculating...")); + break; + case Cantor::Session::Done: + statusBar()->showMessage(i18n("Ready")); + break; + case Cantor::Session::Disable: + statusBar()->showMessage(QString()); + break; + } + } + + updateWindowTitle(m_part->url().fileName(), m_part->isModified()); + + updatePanel(); + } + else + qDebug()<<"selected part doesn't exist"; + + m_tabWidget->setCurrentIndex(index); + } +} + +void CantorShell::setTabCaption(const QString& caption, const QIcon& icon) +{ + auto* part = dynamic_cast(sender()); + if (part) + { + const int index = m_tabWidget->indexOf(part->widget()); + if (!caption.isEmpty()) + { + if (part->isModified()) + m_tabWidget->setTabText(index, caption + QLatin1String(" *")); + else + m_tabWidget->setTabText(index, caption); + + if (part == m_part) + updateWindowTitle(m_part->url().fileName(), m_part->isModified()); + } + m_tabWidget->setTabIcon(index, icon); + } +} + +void CantorShell::updateWindowTitle(const QString& fileName, bool modified) +{ + QFileInfo info(fileName); + QString title = info.baseName(); + if (modified) + title += QLatin1String(" [") + i18n("Changed") + QLatin1Char(']'); + + setWindowTitle(title); +} + +void CantorShell::closeTab(int index) +{ + if (index != -1) + { + QWidget* widget = m_tabWidget->widget(index); + if (widget) + { + auto* part = findPart(widget); + if (part && !reallyCloseThisPart(part)) + return; + } + } + else + { + if (!reallyClose(false)) + return; + } + + QWidget* widget = nullptr; + if (index >= 0) + { + widget = m_tabWidget->widget(index); + } + else if (m_part) + { + widget = m_part->widget(); + } + + if (!widget) + { + qWarning() << "Could not find widget by tab index" << index; + return; + } + + + m_tabWidget->removeTab(index); + + bool isCurrectPartClosed = m_part ? widget == m_part->widget() : false; + if(widget->objectName() == QLatin1String("ErrorMessage")) + { + widget->deleteLater(); + }else + { + auto* part = findPart(widget); + if(part) + { + saveDockPanelsState(part); + + m_parts.removeAll(part); + m_pluginsVisibility.remove(part); + m_parts2Backends.remove(part); + m_pluginsStates.remove(part); + + if (m_part == part) + m_part = nullptr; //the current worksheet/part is being closed, set to null + + delete part; + } + } + + if (m_tabWidget->count() == 0) + setCaption(QString()); + + if (isCurrectPartClosed || m_part == nullptr) + updatePanel(); +} + +bool CantorShell::reallyClose(bool checkAllParts) { + if(checkAllParts && m_parts.count() > 1) { + bool modified = false; + for (auto* part : m_parts) + { + if(part->isModified()) { + modified = true; + break; + } + } + if(!modified) return true; + int want_save = KMessageBox::warningYesNo( this, + i18n("Multiple unsaved Worksheets are opened. Do you want to close them?"), + i18n("Close Cantor")); + switch (want_save) { + case KMessageBox::Yes: + return true; + case KMessageBox::No: + return false; + } + } + + return reallyCloseThisPart(m_part); +} + +bool CantorShell::reallyCloseThisPart(KParts::ReadWritePart* part) +{ + if (part && part->isModified() ) { + int want_save = KMessageBox::warningYesNoCancel( this, + i18n("The current project has been modified. Do you want to save it?"), + i18n("Save Project")); + switch (want_save) { + case KMessageBox::Yes: + part->save(); + if(part->waitSaveComplete()) { + return true; + } else { + part->setModified(true); + return false; + } + case KMessageBox::Cancel: + return false; + case KMessageBox::No: + return true; + } + } + return true; +} + + +void CantorShell::closeEvent(QCloseEvent* event) { + if (!reallyClose()) { + event->ignore(); + } else { + for (auto* part : m_parts) + saveDockPanelsState(part); + + KParts::MainWindow::closeEvent(event); + } +} + +void CantorShell::showSettings() +{ + KConfigDialog *dialog = new KConfigDialog(this, QLatin1String("settings"), Settings::self()); + + QWidget *generalSettings = new QWidget; + Ui::SettingsBase base; + base.setupUi(generalSettings); + + QWidget *formattingSettings = new QWidget; + Ui::SettingsFormatting formatting; + formatting.setupUi(formattingSettings); + + base.kcfg_DefaultBackend->addItems(Cantor::Backend::listAvailableBackends()); + + dialog->addPage(generalSettings, i18n("General"), QLatin1String("preferences-other")); + dialog->addPage(formattingSettings, i18n("Formatting"), QLatin1String("preferences-other")); + for (auto* backend : Cantor::Backend::availableBackends()) + { + if (backend->config()) //It has something to configure, so add it to the dialog + dialog->addPage(backend->settingsWidget(dialog), backend->config(), backend->name(), backend->icon()); + } + + dialog->show(); + connect(dialog, &KConfigDialog::settingsChanged, this, &CantorShell::settingsChanges); +} + +void CantorShell::openExample() +{ + QString dir = QStandardPaths::writableLocation(QStandardPaths::DataLocation) + QLatin1String("/examples"); + if (dir.isEmpty()) + return; + + QDir().mkpath(dir); + + QStringList files = QDir(dir).entryList(QDir::Files); + QPointer dlg = new QDialog(this); + QListWidget* list = new QListWidget(dlg); + for (const QString& file : files) + { + QString name = file; + name.remove(QRegularExpression(QStringLiteral("-.*\\.hotstuff-access$"))); + list->addItem(name); + } + + QVBoxLayout *mainLayout = new QVBoxLayout; + dlg->setLayout(mainLayout); + mainLayout->addWidget(list); + + auto* buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + + mainLayout->addWidget(buttonBox); + + buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + + connect(buttonBox, &QDialogButtonBox::accepted, dlg, &QDialog::accept); + connect(buttonBox, &QDialogButtonBox::rejected, dlg, &QDialog::reject); + + if (dlg->exec() == QDialog::Accepted&&list->currentRow()>=0) + { + const QString& selectedFile = files[list->currentRow()]; + const QUrl& url = QUrl::fromLocalFile(QDir(dir).absoluteFilePath(selectedFile)); + + qDebug()<<"loading file "<widget() == widget) + return part; + } + return nullptr; +} + +void CantorShell::initPanels() +{ + m_panelHandler.loadPlugins(); + + for (auto* plugin : m_panelHandler.allPlugins()) + { + if (!plugin) + { + qDebug()<<"invalid panel found, skipping it."; + continue; + } + + qDebug()<<"adding panel for "<name(); + plugin->setParentWidget(this); + plugin->connectToShell(this); + + QDockWidget* docker = new QDockWidget(plugin->name(), this); + docker->setObjectName(plugin->name()); + docker->setWidget(plugin->widget()); + docker->setWindowIcon(QIcon::fromTheme(QStringLiteral("format-text-bold"))); + addDockWidget(Qt::RightDockWidgetArea, docker); + + docker->hide(); + + connect(plugin, &Cantor::PanelPlugin::visibilityRequested, this, &CantorShell::pluginVisibilityRequested); + connect(plugin, &Cantor::PanelPlugin::requestRunCommand, this, &CantorShell::pluginCommandRunRequested); + + m_panels.append(docker); + } +} + +void CantorShell::updatePanel() +{ + unplugActionList(QLatin1String("view_show_panel_list")); + + QList panelActions; + + bool isNewWorksheet = !m_pluginsVisibility.contains(m_part); + if (isNewWorksheet) + { + KConfigGroup panelStatusGroup(KSharedConfig::openConfig(), QLatin1String("PanelsStatus")); + if (m_parts2Backends.contains(m_part) && panelStatusGroup.hasKey(m_parts2Backends[m_part])) + { + const QStringList& plugins = panelStatusGroup.readEntry(m_parts2Backends[m_part]).split(QLatin1Char('\n')); + m_pluginsVisibility[m_part] = plugins; + isNewWorksheet = false; + } + } + + Cantor::WorksheetAccessInterface* wa = nullptr; + if (m_part) + wa = m_part->findChild(Cantor::WorksheetAccessInterface::Name); + + // Worksheet interface can be missing on m_part clossing (and m_part on this moment can be nullptr) + QList plugins; + if (wa) + { + QDockWidget* last = nullptr; + plugins = m_panelHandler.activePluginsForSession(wa->session(), m_pluginsStates.contains(m_part) ? m_pluginsStates[m_part] : Cantor::PanelPluginHandler::PanelStates()); + for (auto* plugin : plugins) + { + QDockWidget* foundDocker = nullptr; + for (auto* docker : m_panels) + if (docker->objectName() == plugin->name()) + { + foundDocker = docker; + break; + } + + if (!foundDocker) + { + qDebug() << "something wrong: can't find panel for plugin \"" << plugin->name() << "\""; + continue; + } + + // Set visibility for dock from saved info + if (isNewWorksheet) + { + if (plugin->showOnStartup()) + foundDocker->show(); + else + foundDocker->hide(); + } + else + { + if (m_pluginsVisibility[m_part].contains(plugin->name())) + foundDocker->show(); + else + foundDocker->hide(); + } + + if(last!=nullptr) + tabifyDockWidget(last, foundDocker); + last = foundDocker; + + //Create the action to show/hide this panel + panelActions<toggleViewAction(); + + } + } + + // Hide plugins, which don't supported on current session + QList allPlugins=m_panelHandler.allPlugins(); + for(auto* plugin : allPlugins) + { + if (plugins.indexOf(plugin) == -1) + for (QDockWidget* docker : m_panels) + if (docker->objectName() == plugin->name()) + { + docker->hide(); + break; + } + } + + plugActionList(QLatin1String("view_show_panel_list"), panelActions); + + updateNewSubmenu(); +} + +void CantorShell::updateNewSubmenu() +{ + unplugActionList(QLatin1String("new_worksheet_with_backend_list")); + qDeleteAll(m_newBackendActions); + m_newBackendActions.clear(); + + for (auto* backend : Cantor::Backend::availableBackends()) + { + if (!backend->isEnabled()) + continue; + QAction* action = new QAction(QIcon::fromTheme(backend->icon()), backend->name(), nullptr); + action->setData(backend->name()); + connect(action, SIGNAL(triggered()), this, SLOT(fileNew())); + m_newBackendActions << action; + } + plugActionList(QLatin1String("new_worksheet_with_backend_list"), m_newBackendActions); +} + +Cantor::WorksheetAccessInterface* CantorShell::currentWorksheetAccessInterface() +{ + auto* wa = m_part->findChild(Cantor::WorksheetAccessInterface::Name); + return wa; +} + +void CantorShell::pluginVisibilityRequested() +{ + auto* plugin = static_cast(sender()); + for (auto* docker : m_panels) + { + if (plugin->name() == docker->objectName()) + { + if (docker->isHidden()) + docker->show(); + docker->raise(); + } + } +} + +void CantorShell::onWorksheetSave(const QUrl& url) +{ + if (m_recentProjectsAction) + m_recentProjectsAction->addUrl(url); + + updateWindowTitle(m_part->url().fileName()); +} + +void CantorShell::saveDockPanelsState(KParts::ReadWritePart* part) +{ + if (m_parts2Backends.contains(part)) + { + QStringList visiblePanelNames; + if (part == m_part) + { + for (auto* doc : m_panels) + { + if (doc->widget() && doc->widget()->isVisible()) + visiblePanelNames << doc->objectName(); + } + } + else if (m_pluginsVisibility.contains(part)) + visiblePanelNames = m_pluginsVisibility[part]; + + KConfigGroup panelStatusGroup(KSharedConfig::openConfig(), QLatin1String("PanelsStatus")); + panelStatusGroup.writeEntry(m_parts2Backends[part], visiblePanelNames.join(QLatin1Char('\n'))); + } +} + +void CantorShell::updateBackendForPart(const QString& backendName) +{ + auto* part = dynamic_cast(sender()); + if (part && m_parts2Backends.contains(part) && m_parts2Backends[part].isEmpty()) + { + m_parts2Backends[part] = backendName; + + KConfigGroup panelStatusGroup(KSharedConfig::openConfig(), QLatin1String("PanelsStatus")); + if (m_part == part && panelStatusGroup.hasKey(backendName)) + { + const QStringList& plugins = panelStatusGroup.readEntry(m_parts2Backends[m_part]).split(QLatin1Char('\n')); + m_pluginsVisibility[m_part] = plugins; + + updatePanel(); + } + + auto* backend = Cantor::Backend::getBackend(backendName); + if (backend) + { + //show the default help string in the help panel + emit showHelp(backend->defaultHelp()); + } + } +} + +void CantorShell::pluginCommandRunRequested(const QString& cmd) +{ + if (m_part) + QMetaObject::invokeMethod(m_part, "runCommand", Qt::QueuedConnection, Q_ARG(QString, cmd)); +} diff --git a/src/cantor.h b/src/cantor.h new file mode 100644 index 0000000..7dedac0 --- /dev/null +++ b/src/cantor.h @@ -0,0 +1,129 @@ +/* + SPDX-FileCopyrightText: 2009 Alexander Rieder + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + + +#ifndef CANTOR_H +#define CANTOR_H + +#include +#include + +#include +#include +#include + +#include "lib/panelpluginhandler.h" +#include "lib/panelplugin.h" + +class QTabWidget; +class KRecentFilesAction; + +namespace Cantor{ +class WorksheetAccessInterface; +} + +namespace KParts{ + class ReadWritePart; +} + +/** + * This is the application "Shell". It has a menubar, toolbar, and + * statusbar but relies on the "Part" to do all the real work. + */ +class CantorShell : public KParts::MainWindow +{ + Q_OBJECT +public: + /** + * Default Constructor + */ + CantorShell(); + + /** + * Default Destructor + */ + ~CantorShell() override; + + Cantor::WorksheetAccessInterface* currentWorksheetAccessInterface(); + void addWorksheet(); + +protected: + /** + * This method is called when it is time for the app to save its + * properties for session management purposes. + */ + void saveProperties(KConfigGroup &) override; + + /** + * This method is called when this app is restored. The KConfig + * object points to the session management config file that was saved + * with @ref saveProperties + */ + void readProperties(const KConfigGroup &) override; + +Q_SIGNALS: + void showHelp(QString); + void hierarchyChanged(QStringList, QStringList, QList); + void hierarhyEntryNameChange(QString, QString, int); + void requestScrollToHierarchyEntry(QString); + void settingsChanges(); + void requestDocumentation(const QString&); + +public Q_SLOTS: + void addWorksheet(const QString&); + /// Use this method/slot to load whatever file/URL you have + void load(const QUrl&); + +private Q_SLOTS: + void fileNew(); + void fileOpen(); + void onWorksheetSave(const QUrl&); + void optionsConfigureKeys(); + + void activateWorksheet(int index); + + void setTabCaption(const QString&, const QIcon&); + void updateBackendForPart(const QString&); + void closeTab(int index = -1); + + void showSettings(); + + void openExample(); + + void initPanels(); + void updatePanel(); + void updateNewSubmenu(); + + void pluginVisibilityRequested(); + void pluginCommandRunRequested(const QString&); + +private: + void setupActions(); + void closeEvent(QCloseEvent*) override; + bool reallyClose(bool checkAllParts = true); + bool reallyCloseThisPart(KParts::ReadWritePart*); + void updateWindowTitle(const QString&, bool modified = false); + void saveDockPanelsState(KParts::ReadWritePart*); + KParts::ReadWritePart* findPart(QWidget*); + +private: + QMap m_pluginsVisibility; + QMap m_pluginsStates; + QList m_parts; + QMap m_parts2Backends; + KParts::ReadWritePart* m_part{nullptr}; + QTabWidget* m_tabWidget; + QList m_panels; + QList m_newBackendActions; + KRecentFilesAction* m_recentProjectsAction; + + Cantor::PanelPluginHandler m_panelHandler{nullptr}; + + // For better UX: set previous used filter in "Open" action as default filter + QString m_previousFilter; +}; + +#endif // CANTOR_H diff --git a/src/cantor.kcfg b/src/cantor.kcfg new file mode 100644 index 0000000..d2c18ce --- /dev/null +++ b/src/cantor.kcfg @@ -0,0 +1,161 @@ + + + cantor_export.h + QUrl + QApplication + + + + + + + + + true + + + + true + + + + true + + + + false + + + + true + + + + true + + + + false + + + + true + + + + true + + + + false + + + + true + + + + 0 + + + + QApplication::font() + + + + QApplication::font().pointSize() + + + + false + + + + false + + + + QApplication::font() + + + + QApplication::font().pointSize() + + + + false + + + + false + + + + QApplication::font() + + + + QApplication::font().pointSize() + + + + false + + + + false + + + + QApplication::font() + + + + QApplication::font().pointSize() + + + + false + + + + false + + + + QApplication::font() + + + + QApplication::font().pointSize() + + + + false + + + + false + + + + QApplication::font() + + + + QApplication::font().pointSize() + + + + false + + + + false + + + + diff --git a/src/cantor.knsrc b/src/cantor.knsrc new file mode 100644 index 0000000..b8855e7 --- /dev/null +++ b/src/cantor.knsrc @@ -0,0 +1,6 @@ +[KNewStuff3] +ProvidersUrl=https://autoconfig.kde.org/ocs/providers.xml +Categories=Cantor (Maxima),Cantor (Sage),Cantor (KAlgebra),Cantor (Qalculate),Cantor (Python),Cantor (Scilab),Cantor (Octave),Cantor (R),Cantor (Lua),Cantor (Julia) +TargetDir=cantor/examples +Uncompress=never +CustomName=true diff --git a/src/cantor.xml b/src/cantor.xml new file mode 100644 index 0000000..86d5dbf --- /dev/null +++ b/src/cantor.xml @@ -0,0 +1,34 @@ + + + + Cantor worksheet + ورقة العمل كانتور + Работен лист на Cantor + Full de treball del Cantor + Full de treball de Cantor + Pracovní list Cantoru + Cantor-Arbeitsblatt + Cantor φύλλο εργασίας + Cantor worksheet + Hoja de ejercicios de Cantor + Cantor-työkirja + Feuille de travail pour Cantor + Folio de labor de Cantor + Foglio di lavoro di Cantor + Cantor-ის სამუშაო ფურცელი + Cantor 워크시트 + Cantor werkblad + Arkusz pracy Cantor + Área de trabalho do Cantor + Planilha do Cantor + Pracovný list Cantor + Cantorjev delovni list + Cantor-arbetsblad + Cantor çalışma sayfası + робочий аркуш Cantor + Cantor 工作表 + + + + + diff --git a/src/cantor_part.cpp b/src/cantor_part.cpp new file mode 100644 index 0000000..5b44804 --- /dev/null +++ b/src/cantor_part.cpp @@ -0,0 +1,1011 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2017-2022 Alexander Semke + SPDX-FileCopyrightText: 2019 Sirgienko Nikita +*/ + +#include + +#include +#include + +#include "cantor_part.h" +#include "lib/assistant.h" +#include "lib/backend.h" +#include "lib/extension.h" +#include "lib/worksheetaccess.h" +#include "scripteditor/scripteditorwidget.h" +#include "searchbar.h" +#include "settings.h" +#include "worksheet.h" +#include "worksheetview.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//A concrete implementation of the WorksheetAccesssInterface +class WorksheetAccessInterfaceImpl : public Cantor::WorksheetAccessInterface +{ + + public: + WorksheetAccessInterfaceImpl(QObject* parent, Worksheet* worksheet) : WorksheetAccessInterface(parent), m_worksheet(worksheet) + { + qDebug()<<"new worksheetaccess interface"; + connect(worksheet, &Worksheet::modified, this, &WorksheetAccessInterfaceImpl::modified); + } + + ~WorksheetAccessInterfaceImpl() override = default; + + QByteArray saveWorksheetToByteArray() override + { + return m_worksheet->saveToByteArray(); + } + + void loadWorksheetFromByteArray(QByteArray* data) override + { + m_worksheet->load(data); + } + + Cantor::Session* session() override + { + return m_worksheet->session(); + } + + void evaluate() override + { + m_worksheet->evaluate(); + } + + void interrupt() override + { + m_worksheet->interrupt(); + } + + private: + Worksheet* m_worksheet; +}; + +CantorPart::CantorPart(QWidget* parentWidget, QObject* parent, const QVariantList& args ): KParts::ReadWritePart(parent) +{ + QString backendName; + if(!args.isEmpty()) + backendName = args.first().toString(); + + Cantor::Backend* b = nullptr; + if (!backendName.isEmpty()) + { + b = Cantor::Backend::getBackend(backendName); + if (b) + qDebug()<<"Backend "<name()<<" offers extensions: "<extensions(); + } + + //central widget + QWidget* widget = new QWidget(parentWidget); + QVBoxLayout* layout = new QVBoxLayout(widget); + m_worksheet = new Worksheet(b, widget); + m_worksheetview = new WorksheetView(m_worksheet, widget); + m_worksheetview->setEnabled(false); //disable input until the session has successfully logged in and emits the ready signal + connect(m_worksheet, &Worksheet::modified, this, static_cast(&KParts::ReadWritePart::setModified)); + connect(m_worksheet, &Worksheet::modified, this, &CantorPart::updateCaption); + connect(m_worksheet, &Worksheet::showHelp, this, &CantorPart::showHelp); + connect(m_worksheet, &Worksheet::loaded, this, &CantorPart::initialized); + connect(m_worksheet, &Worksheet::hierarchyChanged, this, &CantorPart::hierarchyChanged); + connect(m_worksheet, &Worksheet::hierarhyEntryNameChange, this, &CantorPart::hierarhyEntryNameChange); + connect(this, &CantorPart::requestScrollToHierarchyEntry, m_worksheet, &Worksheet::requestScrollToHierarchyEntry); + connect(this, &CantorPart::settingsChanges, m_worksheet, &Worksheet::handleSettingsChanges); + connect(m_worksheet, &Worksheet::requestDocumentation, this, &CantorPart::documentationRequested); + + layout->addWidget(m_worksheetview); + setWidget(widget); + + //create WorksheetAccessInterface, used at the moment by LabPlot only to access Worksheet's API + Cantor::WorksheetAccessInterface* iface = new WorksheetAccessInterfaceImpl(this, m_worksheet); + Q_UNUSED(iface); + + //initialize actions + auto* collection = actionCollection(); + connect(collection, &KActionCollection::inserted, m_worksheet, &Worksheet::registerShortcut); + m_worksheet->setActionCollection(collection); + + KStandardAction::saveAs(this, SLOT(fileSaveAs()), collection); + m_save = KStandardAction::save(this, SLOT(save()), collection); + m_save->setPriority(QAction::LowPriority); + + QAction* savePlain = new QAction(i18n("Save Plain Text"), collection); + collection->addAction(QLatin1String("file_save_plain"), savePlain); + savePlain->setIcon(QIcon::fromTheme(QLatin1String("document-save"))); + connect(savePlain, &QAction::triggered, this, &CantorPart::fileSavePlain); + + QAction* undo = KStandardAction::undo(m_worksheet, SIGNAL(undo()), collection); + undo->setPriority(QAction::LowPriority); + connect(m_worksheet, &Worksheet::undoAvailable, undo, &QAction::setEnabled); + m_editActions.push_back(undo); + + QAction* redo = KStandardAction::redo(m_worksheet, SIGNAL(redo()), collection); + redo->setPriority(QAction::LowPriority); + connect(m_worksheet, &Worksheet::redoAvailable, redo, &QAction::setEnabled); + m_editActions.push_back(redo); + + QAction* cut = KStandardAction::cut(m_worksheet, SIGNAL(cut()), collection); + cut->setPriority(QAction::LowPriority); + connect(m_worksheet, &Worksheet::cutAvailable, cut, &QAction::setEnabled); + m_editActions.push_back(cut); + + QAction* copy = KStandardAction::copy(m_worksheet, SIGNAL(copy()), collection); + copy->setPriority(QAction::LowPriority); + connect(m_worksheet, &Worksheet::copyAvailable, copy, &QAction::setEnabled); + + QAction* paste = KStandardAction::paste(m_worksheet, SLOT(paste()), collection); + paste->setPriority(QAction::LowPriority); + connect(m_worksheet, &Worksheet::pasteAvailable, paste, &QAction::setEnabled); + m_editActions.push_back(paste); + + QAction* find = KStandardAction::find(this, SLOT(showSearchBar()), collection); + find->setPriority(QAction::LowPriority); + + QAction* replace = KStandardAction::replace(this, SLOT(showExtendedSearchBar()), collection); + replace->setPriority(QAction::LowPriority); + m_editActions.push_back(replace); + + m_findNext = KStandardAction::findNext(this, SLOT(findNext()), collection); + m_findNext->setEnabled(false); + + m_findPrev = KStandardAction::findPrev(this, SLOT(findPrev()), collection); + m_findPrev->setEnabled(false); + + QAction* latexExport = new QAction(i18n("Export to LaTeX"), collection); + collection->addAction(QLatin1String("file_export_latex"), latexExport); + latexExport->setIcon(QIcon::fromTheme(QLatin1String("document-export"))); + connect(latexExport, &QAction::triggered, this, &CantorPart::exportToLatex); + + QAction* print = KStandardAction::print(this, SLOT(print()), collection); + print->setPriority(QAction::LowPriority); + + QAction* printPreview = KStandardAction::printPreview(this, SLOT(printPreview()), collection); + printPreview->setPriority(QAction::LowPriority); + + KStandardAction::zoomIn(m_worksheetview, SLOT(zoomIn()), collection); + KStandardAction::zoomOut(m_worksheetview, SLOT(zoomOut()), collection); + KStandardAction::actualSize(m_worksheetview, SLOT(actualSize()), collection); + connect(m_worksheetview, &WorksheetView::scaleFactorChanged, this, &CantorPart::updateZoomWidgetValue); + + m_evaluate = new QAction(i18n("Evaluate Worksheet"), collection); + collection->addAction(QLatin1String("evaluate_worksheet"), m_evaluate); + m_evaluate->setIcon(QIcon::fromTheme(QLatin1String("system-run"))); + collection->setDefaultShortcut(m_evaluate, Qt::CTRL+Qt::Key_E); + connect(m_evaluate, &QAction::triggered, this, &CantorPart::evaluateOrInterrupt); + m_editActions.push_back(m_evaluate); + + // + m_zoom = new KSelectAction(QIcon::fromTheme(QLatin1String("page-zoom")), i18n("Zoom"), collection); + connect(m_zoom, static_cast(&KSelectAction::triggered), this, &CantorPart::zoomValueEdited); + static constexpr std::array ZoomValues = {0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 2.0, 4.0}; + QStringList zoomNames; + for (double zoomValue : ZoomValues) + { + const std::string& zoomName = std::to_string(static_cast(zoomValue * 100)) + "%"; + zoomNames << i18n(zoomName.c_str()); + } + m_zoom->setItems(zoomNames); + m_zoom->setEditable(true); + Q_ASSERT(std::find(ZoomValues.begin(), ZoomValues.end(), 1.0) != ZoomValues.end()); + m_zoom->setCurrentItem(std::distance(ZoomValues.begin(), std::find(ZoomValues.begin(), ZoomValues.end(), 1.0))); + collection->addAction(QLatin1String("zoom_selection_action"), m_zoom); + + m_typeset = new KToggleAction(i18n("Typeset using LaTeX"), collection); + m_typeset->setChecked(Settings::self()->typesetDefault()); + collection->addAction(QLatin1String("enable_typesetting"), m_typeset); + connect(m_typeset, &KToggleAction::toggled, this, &CantorPart::enableTypesetting); + + m_highlight = new KToggleAction(i18n("Syntax Highlighting"), collection); + m_highlight->setChecked(Settings::self()->highlightDefault()); + collection->addAction(QLatin1String("enable_highlighting"), m_highlight); + connect(m_highlight, &KToggleAction::toggled, m_worksheet, &Worksheet::enableHighlighting); + + m_completion = new KToggleAction(i18n("Completion"), collection); + m_completion->setChecked(Settings::self()->completionDefault()); + collection->addAction(QLatin1String("enable_completion"), m_completion); + connect(m_completion, &KToggleAction::toggled, m_worksheet, &Worksheet::enableCompletion); + + m_exprNumbering = new KToggleAction(i18n("Line Numbers"), collection); + m_exprNumbering->setChecked(Settings::self()->expressionNumberingDefault()); + collection->addAction(QLatin1String("enable_expression_numbers"), m_exprNumbering); + connect(m_exprNumbering, &KToggleAction::toggled, m_worksheet, &Worksheet::enableExpressionNumbering); + + m_animateWorksheet = new KToggleAction(i18n("Animations"), collection); + m_animateWorksheet->setChecked(Settings::self()->animationDefault()); + collection->addAction(QLatin1String("enable_animations"), m_animateWorksheet); + connect(m_animateWorksheet, &KToggleAction::toggled, m_worksheet, &Worksheet::enableAnimations); + + if (MathRenderer::mathRenderAvailable()) + { + m_embeddedMath= new KToggleAction(i18n("Embedded Math"), collection); + m_embeddedMath->setChecked(Settings::self()->embeddedMathDefault()); + collection->addAction(QLatin1String("enable_embedded_math"), m_embeddedMath); + connect(m_embeddedMath, &KToggleAction::toggled, m_worksheet, &Worksheet::enableEmbeddedMath); + } + + m_restart = new QAction(i18n("Restart Backend"), collection); + collection->addAction(QLatin1String("restart_backend"), m_restart); + m_restart->setIcon(QIcon::fromTheme(QLatin1String("system-reboot"))); + connect(m_restart, &QAction::triggered, this, &CantorPart::restartBackend); + m_restart->setEnabled(false); // No need show restart button before login + m_editActions.push_back(m_restart); + + QAction* evaluateCurrent = new QAction(QIcon::fromTheme(QLatin1String("media-playback-start")), i18n("Evaluate Entry"), collection); + collection->addAction(QLatin1String("evaluate_current"), evaluateCurrent); + collection->setDefaultShortcut(evaluateCurrent, Qt::SHIFT + Qt::Key_Return); + connect(evaluateCurrent, &QAction::triggered, m_worksheet, &Worksheet::evaluateCurrentEntry); + m_editActions.push_back(evaluateCurrent); + + QAction* insertCommandEntry = new QAction(QIcon::fromTheme(QLatin1String("run-build")), i18n("Insert Command Entry"), collection); + collection->addAction(QLatin1String("insert_command_entry"), insertCommandEntry); + collection->setDefaultShortcut(insertCommandEntry, Qt::CTRL + Qt::Key_Return); + connect(insertCommandEntry, SIGNAL(triggered()), m_worksheet, SLOT(insertCommandEntry())); + m_editActions.push_back(insertCommandEntry); + + QAction* insertTextEntry = new QAction(QIcon::fromTheme(QLatin1String("draw-text")), i18n("Insert Text Entry"), collection); + collection->addAction(QLatin1String("insert_text_entry"), insertTextEntry); + connect(insertTextEntry, SIGNAL(triggered()), m_worksheet, SLOT(insertTextEntry())); + m_editActions.push_back(insertTextEntry); + +#ifdef Discount_FOUND + QAction* insertMarkdownEntry = new QAction(QIcon::fromTheme(QLatin1String("text-x-markdown")), i18n("Insert Markdown Entry"), collection); + collection->addAction(QLatin1String("insert_markdown_entry"), insertMarkdownEntry); + connect(insertMarkdownEntry, SIGNAL(triggered()), m_worksheet, SLOT(insertMarkdownEntry())); + m_editActions.push_back(insertMarkdownEntry); +#endif + +#ifdef WITH_EPS + QAction* insertLatexEntry = new QAction(QIcon::fromTheme(QLatin1String("text-x-tex")), i18n("Insert LaTeX Entry"), collection); + collection->addAction(QLatin1String("insert_latex_entry"), insertLatexEntry); + connect(insertLatexEntry, SIGNAL(triggered()), m_worksheet, SLOT(insertLatexEntry())); + m_editActions.push_back(insertLatexEntry); +#endif + + QAction* insertPageBreakEntry = new QAction(QIcon::fromTheme(QLatin1String("go-next-view-page")), i18n("Insert Page Break"), collection); + collection->addAction(QLatin1String("insert_page_break_entry"), insertPageBreakEntry); + connect(insertPageBreakEntry, SIGNAL(triggered()), m_worksheet, SLOT(insertPageBreakEntry())); + m_editActions.push_back(insertPageBreakEntry); + + QAction* insertImageEntry = new QAction(QIcon::fromTheme(QLatin1String("image-x-generic")), i18n("Insert Image"), collection); + collection->addAction(QLatin1String("insert_image_entry"), insertImageEntry); + connect(insertImageEntry, SIGNAL(triggered()), m_worksheet, SLOT(insertImageEntry())); + m_editActions.push_back(insertImageEntry); + + QAction* collapseAllEntries = new QAction(QIcon(), i18n("Collapse All Results"), collection); + collection->addAction(QLatin1String("all_entries_collapse_results"), collapseAllEntries); + connect(collapseAllEntries, &QAction::triggered, m_worksheet, &Worksheet::collapseAllResults); + m_editActions.push_back(collapseAllEntries); + + QAction* uncollapseAllEntries = new QAction(QIcon(), i18n("Expand All Results"), collection); + collection->addAction(QLatin1String("all_entries_uncollapse_results"), uncollapseAllEntries ); + connect(uncollapseAllEntries , &QAction::triggered, m_worksheet, &Worksheet::uncollapseAllResults); + m_editActions.push_back(uncollapseAllEntries); + + QAction* removeAllResults = new QAction(QIcon(), i18n("Remove All Results"), collection); + collection->addAction(QLatin1String("all_entries_remove_all_results"), removeAllResults); + connect(removeAllResults, &QAction::triggered, m_worksheet, &Worksheet::removeAllResults); + m_editActions.push_back(removeAllResults); + + QAction* removeCurrent = new QAction(QIcon::fromTheme(QLatin1String("edit-delete")), i18n("Remove current Entry"), collection); + collection->addAction(QLatin1String("remove_current"), removeCurrent); + collection->setDefaultShortcut(removeCurrent, Qt::ShiftModifier + Qt::Key_Delete); + connect(removeCurrent, &QAction::triggered, m_worksheet, &Worksheet::removeCurrentEntry); + m_editActions.push_back(removeCurrent); + + // Disabled, because uploading to kde store from program don't work + // See https://phabricator.kde.org/T9980 for details + // If this situation will changed, then uncomment this action + /* + QAction* publishWorksheet = new QAction(i18n("Publish Worksheet"), collection); + publishWorksheet->setIcon(QIcon::fromTheme(QLatin1String("get-hot-new-stuff"))); + collection->addAction(QLatin1String("file_publish_worksheet"), publishWorksheet); + connect(publishWorksheet, &QAction::triggered, this, SLOT(publishWorksheet())); + */ + + KToggleAction* showEditor = new KToggleAction(i18n("Show Script Editor"), collection); + showEditor->setChecked(false); + collection->addAction(QLatin1String("show_editor"), showEditor); + connect(showEditor, &KToggleAction::toggled, this, &CantorPart::showScriptEditor); + + QAction* showCompletion = new QAction(i18n("Show Completion"), collection); + collection->addAction(QLatin1String("show_completion"), showCompletion); + collection->setDefaultShortcut(showCompletion, Qt::CTRL + Qt::Key_Space); + connect(showCompletion, &QAction::triggered, m_worksheet, &Worksheet::showCompletion); + m_editActions.push_back(showCompletion); + + // set our XML-UI resource file + setXMLFile(QLatin1String("cantor_part.rc")); + + // we are read-write by default + setReadWrite(true); + + // we are not modified since we haven't done anything yet + setModified(false); + + if (b) + { + showEditor->setEnabled(b->extensions().contains(QLatin1String("ScriptExtension"))); + initialized(); + } +} + +CantorPart::~CantorPart() +{ + if (m_scriptEditor) + { + disconnect(m_scriptEditor, SIGNAL(destroyed()), this, SLOT(scriptEditorClosed())); + delete m_scriptEditor; + } + if (m_searchBar) + delete m_searchBar; +} + +void CantorPart::setReadWrite(bool rw) +{ + // notify your internal widget of the read-write state + m_worksheetview->setInteractive(rw); + + ReadWritePart::setReadWrite(rw); +} + +void CantorPart::setReadOnly() +{ + for (QAction* action : m_editActions) + action->setEnabled(false); +} + +void CantorPart::setModified(bool modified) +{ + // get a handle on our Save action and make sure it is valid + if (!m_save) + return; + + // if so, we either enable or disable it based on the current state + m_save->setEnabled(modified); + + // in any event, we want our parent to do it's thing + ReadWritePart::setModified(modified); +} + +KAboutData& CantorPart::createAboutData() +{ + // the non-i18n name here must be the same as the directory in + // which the part's rc file is installed ('partrcdir' in the Makefile) + static KAboutData about(QLatin1String("cantorpart"), + QLatin1String("Cantor"), + QLatin1String(CANTOR_VERSION), + i18n("CantorPart"), + KAboutLicense::GPL, + i18n("(C) 2009-2015 Alexander Rieder"), + QString(), + QLatin1String("https://edu.kde.org/cantor/")); + + about.addAuthor( i18n("Alexander Rieder"), QString(), QLatin1String("alexanderrieder@gmail.com") ); + return about; +} + +bool CantorPart::openFile() +{ + //don't crash if for some reason the worksheet is invalid + if(!m_worksheet) + { + qWarning()<<"trying to open in an invalid cantor part"; + return false; + } + + QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); + QElapsedTimer timer; + timer.start(); + const bool rc = m_worksheet->load(localFilePath()); + QApplication::restoreOverrideCursor(); + + if (rc) { + qDebug()<< "Worksheet successfully loaded in " << (float)timer.elapsed()/1000 << " seconds"; + updateCaption(); + if (m_worksheet->session() && m_worksheet->session()->backend()) + setBackendName(m_worksheet->session()->backend()->id()); + // We modified, but it we load file now, so no need in save option + setModified(false); + } + + return rc; +} + +bool CantorPart::saveFile() +{ + // if we aren't read-write, return immediately + if (isReadWrite() == false) + return false; + + qDebug()<<"saving to: "<save( localFilePath() ); + setModified(false); + updateCaption(); + + emit worksheetSave(QUrl::fromLocalFile(localFilePath())); + return true; +} + +void CantorPart::fileSaveAs() +{ + // this slot is called whenever the File->Save As menu is selected + static const QString& worksheetFilter = i18n("Cantor Worksheet (*.cws)"); + static const QString& notebookFilter = i18n("Jupyter Notebook (*.ipynb)"); + QString filter = worksheetFilter + QLatin1String(";;") + notebookFilter; + + if (!m_worksheet->isReadOnly()) + { + //if the backend supports scripts, also append their scriptFile endings to the filter + auto* const backend = m_worksheet->session()->backend(); + if (backend->extensions().contains(QLatin1String("ScriptExtension"))) + { + auto* e = dynamic_cast(backend->extension(QLatin1String("ScriptExtension"))); + if (e) + filter += QLatin1String(";;") + e->scriptFileFilter(); + } + } + + QString selectedFilter; + QString file_name = QFileDialog::getSaveFileName(widget(), i18n("Save as"), QString(), filter, &selectedFilter); + if (file_name.isEmpty()) + return; + + static const QString jupyterExtension = QLatin1String(".ipynb"); + static const QString cantorExtension = QLatin1String(".cws"); + // Append file extension, if it isn't specified + // And change filter, if it specified to supported extension + if (file_name.contains(QLatin1String("."))) + { + if (file_name.endsWith(cantorExtension)) + selectedFilter = worksheetFilter; + else if (file_name.endsWith(jupyterExtension)) + selectedFilter = notebookFilter; + } + else + { + if (selectedFilter == worksheetFilter) + file_name += cantorExtension; + else if (selectedFilter == notebookFilter) + file_name += jupyterExtension; + } + + //depending on user's selection, save as a worksheet, as a Jupyter notebook or as a plain script file + if (selectedFilter == worksheetFilter) + { + m_worksheet->setType(Worksheet::CantorWorksheet); + const QUrl& url = QUrl::fromLocalFile(file_name); + saveAs(url); + emit worksheetSave(url); + } + else if (selectedFilter == notebookFilter) + { + m_worksheet->setType(Worksheet::JupyterNotebook); + const QUrl& url = QUrl::fromLocalFile(file_name); + saveAs(url); + emit worksheetSave(url); + } + else + m_worksheet->savePlain(file_name); + + updateCaption(); +} + +void CantorPart::fileSavePlain() +{ + QString file_name = QFileDialog::getSaveFileName(widget(), i18n("Save"), QString(), QString()); + if (!file_name.isEmpty()) + m_worksheet->savePlain(file_name); +} + +void CantorPart::exportToLatex() +{ + QString file_name = QFileDialog::getSaveFileName(widget(), i18n("Export to LaTeX"), QString(), QString()); + + if (file_name.isEmpty() == false) + { + if (!file_name.endsWith(QLatin1String(".tex"))) + file_name += QLatin1String(".tex"); + m_worksheet->saveLatex(file_name); + } +} + +void CantorPart::guiActivateEvent( KParts::GUIActivateEvent * event ) +{ + KParts::ReadWritePart::guiActivateEvent(event); + if(event->activated()) + { + if(m_scriptEditor) + m_scriptEditor->show(); + }else + { + if(m_scriptEditor) + m_scriptEditor->hide(); + } +} + +void CantorPart::evaluateOrInterrupt() +{ + qDebug()<<"evalorinterrupt"; + if(m_worksheet->isRunning()) + m_worksheet->interrupt(); + else + m_worksheet->evaluate(); +} +void CantorPart::restartBackend() +{ + bool restart = false; + if (Settings::self()->warnAboutSessionRestart()) + { + KMessageBox::ButtonCode tmp; + + // If we want the question box, but it is disable, then enable it + if (!KMessageBox::shouldBeShownYesNo(QLatin1String("WarnAboutSessionRestart"), tmp)) + KMessageBox::enableMessage(QLatin1String("WarnAboutSessionRestart")); + + const QString& name = m_worksheet->session()->backend()->name(); + KMessageBox::ButtonCode rc = KMessageBox::questionYesNo(widget(), + i18n("All the available calculation results will be lost. Do you really want to restart %1?", name), + i18n("Restart %1?", name), + KStandardGuiItem::yes(), + KStandardGuiItem::no(), + QLatin1String("WarnAboutSessionRestart") + ); + + // Update setting's value + // I don't know, that should I do with "No" with "Don't ask me again" + // So hide warning only on "Yes" + Settings::self()->setWarnAboutSessionRestart( + KMessageBox::shouldBeShownYesNo(QLatin1String("WarnAboutSessionRestart"), tmp) + || rc == KMessageBox::ButtonCode::No + ); + Settings::self()->save(); + + restart = (rc == KMessageBox::ButtonCode::Yes); + } + else + { + restart = true; + } + + if (restart) + { + m_worksheet->session()->logout(); + m_worksheet->loginToSession(); + } +} + +void CantorPart::worksheetStatusChanged(Cantor::Session::Status status) +{ + qDebug()<<"worksheet status changed:" << status; + unsigned int count = ++m_sessionStatusCounter; + switch (status) { + case Cantor::Session::Running: + { + // Useless add a interrupt action without delay, because user physically can't interrupt fast commands + QTimer::singleShot(100, this, [this, count] () { + if(m_worksheet->session()->status() == Cantor::Session::Running && m_sessionStatusCounter == count) + { + m_evaluate->setText(i18n("Interrupt")); + m_evaluate->setShortcut(Qt::CTRL+Qt::Key_I); + m_evaluate->setIcon(QIcon::fromTheme(QLatin1String("dialog-close"))); + setStatusMessage(i18n("Calculating...")); + } + }); + break; + } + case Cantor::Session::Done: + { + m_evaluate->setText(i18n("Evaluate Worksheet")); + m_evaluate->setShortcut(Qt::CTRL+Qt::Key_E); + m_evaluate->setIcon(QIcon::fromTheme(QLatin1String("system-run"))); + + setStatusMessage(i18n("Ready")); + break; + } + case Cantor::Session::Disable: + setStatusMessage(QString()); //clean the status bar to remove the potential "Calculating...", etc. after the session was closed + } +} + +void CantorPart::showSessionError(const QString& message) +{ + qDebug()<<"Error: "<isReadOnly()) + { + connect(m_worksheet->session(), &Cantor::Session::statusChanged, this, &CantorPart::worksheetStatusChanged); + connect(m_worksheet->session(), &Cantor::Session::loginStarted,this, &CantorPart::worksheetSessionLoginStarted); + connect(m_worksheet->session(), &Cantor::Session::loginDone,this, &CantorPart::worksheetSessionLoginDone); + connect(m_worksheet->session(), &Cantor::Session::error, this, &CantorPart::showSessionError); + + loadAssistants(); + adjustGuiToSession(); + + // Don't set modification flag, if we add command entry in empty worksheet + const bool modified = this->isModified(); + if (m_worksheet->isEmpty()) + m_worksheet->appendCommandEntry(); + setModified(modified); + } + else + { + setReadOnly(); + // Clear assistants + for (KXMLGUIClient* client: childClients()) + { + Cantor::Assistant* assistant = dynamic_cast(client); + if (assistant) + { + if (factory()) + factory()->removeClient(client); + removeChildClient(client); + assistant->deleteLater(); + } + } + } + + m_worksheetview->setEnabled(true); + m_worksheetview->setFocus(); + + setStatusMessage(i18n("Initialization complete")); + updateCaption(); +} + +void CantorPart::worksheetSessionLoginStarted() { + setStatusMessage(i18n("Initializing...")); + QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); +} + +void CantorPart::worksheetSessionLoginDone() { + setStatusMessage(i18n("Ready")); + m_restart->setEnabled(true); + QApplication::restoreOverrideCursor(); +} + +void CantorPart::enableTypesetting(bool enable) +{ + m_worksheet->session()->setTypesettingEnabled(enable); +} + +/*! + * called when the current worksheet has requested to show the documentation for \c keyword. + * In case the local documentation is available for the current backend, the signal is + * forwarded to the shell to show the documentation plugin/widget. + * If no local documentation is available, the defaul online URL for the backend documentation + * is openned. + */ +void CantorPart::documentationRequested(const QString& keyword) { + auto* backend = m_worksheet->session()->backend(); + const auto& group = KSharedConfig::openConfig(QStringLiteral("cantorrc"))->group(backend->name().toLower()); + const auto& docNames = group.readEntry(QLatin1String("Names"), QStringList()); + if (!docNames.isEmpty()) + emit requestDocumentation(keyword); + else + showBackendHelp(); +} + +void CantorPart::showBackendHelp() +{ + auto* backend = m_worksheet->session()->backend(); + auto* job = new KIO::OpenUrlJob(backend->helpUrl()); + job->setUiDelegate(new KIO::JobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, widget())); + job->start(); + delete job; +} + +Worksheet* CantorPart::worksheet() +{ + return m_worksheet; +} + +void CantorPart::updateCaption() +{ + QString filename = url().fileName(); + //strip away the extension + filename=filename.left(filename.lastIndexOf(QLatin1Char('.'))); + + if (!m_worksheet->isReadOnly()) + { + if (m_worksheet->session()) + emit setCaption(filename, QIcon::fromTheme(m_worksheet->session()->backend()->icon())); + } + else + emit setCaption(filename+QLatin1Char(' ') + i18n("[read-only]"), QIcon()); +} + +void CantorPart::loadAssistants() +{ + qDebug()<<"loading assistants..."; + + const QVector plugins = KPluginMetaData::findPlugins(QStringLiteral("cantor/assistants")); + + for (const KPluginMetaData &plugin : plugins) { + + const auto result = KPluginFactory::instantiatePlugin(plugin, this); + + if (!result) { + qDebug() << "Error while loading assistant plugin: " << result.errorText; + continue; + } + + Cantor::Assistant *assistant = result.plugin; + auto* backend=worksheet()->session()->backend(); + assistant->setPluginInfo(plugin); + assistant->setBackend(backend); + + bool supported=true; + for (const QString& req : assistant->requiredExtensions()) + supported = supported && backend->extensions().contains(req); + + if(supported) + { + qDebug() << "plugin " << plugin.name() << " is supported by " << backend->name() << ", requires extensions " << assistant->requiredExtensions(); + assistant->initActions(); + connect(assistant, &Cantor::Assistant::requested, this, &CantorPart::runAssistant); + }else + { + qDebug() << "plugin " << plugin.name() << " is not supported by "<name(); + removeChildClient(assistant); + assistant->deleteLater(); + } + } +} + +void CantorPart::runAssistant() +{ + Cantor::Assistant* a = qobject_cast(sender()); + QStringList cmds = a->run(widget()); + if(!cmds.isEmpty()) + runCommand(cmds.join(QLatin1String("\n"))); +} + +void CantorPart::runCommand(const QString& cmd) +{ + m_worksheet->appendCommandEntry(cmd); +} + +void CantorPart::showSearchBar() +{ + if (!m_searchBar) { + m_searchBar = new SearchBar(widget(), m_worksheet); + widget()->layout()->addWidget(m_searchBar); + connect(m_searchBar, &SearchBar::destroyed, this, &CantorPart::searchBarDeleted); + } + + m_findNext->setEnabled(true); + m_findPrev->setEnabled(true); + + m_searchBar->showStandard(); + m_searchBar->setFocus(); +} + +void CantorPart::showExtendedSearchBar() +{ + if (!m_searchBar) { + m_searchBar = new SearchBar(widget(), m_worksheet); + widget()->layout()->addWidget(m_searchBar); + connect(m_searchBar, &SearchBar::destroyed, this, &CantorPart::searchBarDeleted); + } + + m_findNext->setEnabled(true); + m_findPrev->setEnabled(true); + + m_searchBar->showExtended(); + m_searchBar->setFocus(); +} + +void CantorPart::findNext() +{ + if (m_searchBar) + m_searchBar->next(); +} + +void CantorPart::findPrev() +{ + if (m_searchBar) + m_searchBar->prev(); +} + +void CantorPart::searchBarDeleted() +{ + m_searchBar = nullptr; + m_findNext->setEnabled(false); + m_findPrev->setEnabled(false); +} + +void CantorPart::adjustGuiToSession() +{ + auto capabilities = m_worksheet->session()->backend()->capabilities(); +#ifdef WITH_EPS + if (Cantor::LatexRenderer::isLatexAvailable()) + m_typeset->setVisible(capabilities.testFlag(Cantor::Backend::LaTexOutput)); +#else + m_typeset->setVisible(false); +#endif + m_completion->setVisible(capabilities.testFlag(Cantor::Backend::Completion)); +} + +void CantorPart::publishWorksheet() +{ + int ret = KMessageBox::questionYesNo(widget(), + i18n("Do you want to upload current Worksheet to public web server?"), + i18n("Question - Cantor")); + if (ret != KMessageBox::Yes) return; + + if (isModified()||url().isEmpty()) + { + ret = KMessageBox::warningContinueCancel(widget(), + i18n("The Worksheet is not saved. You should save it before uploading."), + i18n("Warning - Cantor"), KStandardGuiItem::save(), KStandardGuiItem::cancel()); + if (ret != KMessageBox::Continue) return; + if (!saveFile()) return; + } + + qDebug()<<"uploading file "<session()->backend()->id().toLower()), widget()); + dialog.setUploadFile(url()); + Q_UNUSED(dialog.exec()); +} + +void CantorPart::print() +{ + QPrinter printer; + QPointer dialog = new QPrintDialog(&printer, widget()); + + // TODO: Re-enable print selection + //if (m_worksheet->textCursor().hasSelection()) + // dialog->addEnabledOption(QAbstractPrintDialog::PrintSelection); + + if (dialog->exec() == QDialog::Accepted) + m_worksheet->print(&printer); + + delete dialog; +} + +void CantorPart::printPreview() +{ + QPrintPreviewDialog* dialog = new QPrintPreviewDialog(widget()); + connect(dialog, &QPrintPreviewDialog::paintRequested, m_worksheet, &Worksheet::print); + Q_UNUSED(dialog->exec()); +} + +void CantorPart::showScriptEditor(bool show) +{ + if(show) + { + if (m_scriptEditor) + return; + + auto* scriptE = dynamic_cast(m_worksheet->session()->backend()->extension(QLatin1String("ScriptExtension"))); + if (!scriptE) + return; + + m_scriptEditor = new ScriptEditorWidget(scriptE->scriptFileFilter(), scriptE->highlightingMode(), widget()->window()); + connect(m_scriptEditor, &ScriptEditorWidget::runScript, this, &CantorPart::runScript); + connect(m_scriptEditor, &ScriptEditorWidget::destroyed, this, &CantorPart::scriptEditorClosed); + m_scriptEditor->show(); + }else + { + m_scriptEditor->deleteLater(); + } +} + +void CantorPart::scriptEditorClosed() +{ + QAction* showEditor = actionCollection()->action(QLatin1String("show_editor")); + if (showEditor) + { + showEditor->setChecked(false); + } +} + +void CantorPart::runScript(const QString& file) +{ + auto* backend = m_worksheet->session()->backend(); + if(!backend->extensions().contains(QLatin1String("ScriptExtension"))) + { + KMessageBox::error(widget(), i18n("This backend does not support scripts."), i18n("Error - Cantor")); + return; + } + + auto* scriptE = dynamic_cast(backend->extension(QLatin1String("ScriptExtension"))); + if (scriptE) + m_worksheet->appendCommandEntry(scriptE->runExternalScript(file)); +} + +void CantorPart::blockStatusBar() +{ + m_statusBarBlocked=true; +} + +void CantorPart::unblockStatusBar() +{ + m_statusBarBlocked = false; + if(!m_cachedStatusMessage.isNull()) + setStatusMessage(m_cachedStatusMessage); + m_cachedStatusMessage.clear(); +} + +void CantorPart::setStatusMessage(const QString& message) +{ + if(!m_statusBarBlocked) + emit setStatusBarText(message); + else + m_cachedStatusMessage = message; +} + +void CantorPart::showImportantStatusMessage(const QString& message) +{ + setStatusMessage(message); + blockStatusBar(); + QTimer::singleShot(3000, this, SLOT(unblockStatusBar())); +} + +void CantorPart::zoomValueEdited(const QString& text) +{ + static const QRegularExpression zoomRegexp(QLatin1String("(?:(\\d+)%|(\\d+))")); + QRegularExpressionMatch match = zoomRegexp.match(text); + if (match.hasMatch()) + { + double zoom = match.captured(1).toDouble() / 100.0; + if (m_worksheetview) + m_worksheetview->setScaleFactor(zoom, false); + } +} + +void CantorPart::updateZoomWidgetValue(double zoom) +{ + if (m_zoom) + { + double scale = zoom; + scale = round(scale * 100); + const QString& searchText = QString::number((int)scale) + QLatin1String("%"); + if (m_currectZoomAction) + m_currectZoomAction->setText(searchText); + else + m_currectZoomAction = m_zoom->addAction(searchText); + m_zoom->setCurrentAction(m_currectZoomAction); + } +} + +K_PLUGIN_FACTORY_WITH_JSON(CantorPartFactory, "cantor_part.json", registerPlugin();) +#include "cantor_part.moc" diff --git a/src/cantor_part.h b/src/cantor_part.h new file mode 100644 index 0000000..c68458a --- /dev/null +++ b/src/cantor_part.h @@ -0,0 +1,181 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef CANTORPART_H +#define CANTORPART_H + +#include +#include + +#include +#include "lib/session.h" + +class QWidget; +class Worksheet; +class WorksheetView; +class SearchBar; +class ScriptEditorWidget; +class KAboutData; +class QAction; +class KToggleAction; +class KSelectAction; + +namespace Cantor{ + class PanelPluginHandler; +} + +/** + * This is a "Part". It that does all the real work in a KPart + * application. + * + * @short Main Part + * @author Alexander Rieder + */ +class CantorPart : public KParts::ReadWritePart +{ + Q_OBJECT +public: + /** + * Default constructor + */ + CantorPart(QWidget* , QObject*, const QVariantList& args); + + /** + * Destructor + */ + ~CantorPart() override; + + /** + * This is a virtual function inherited from KParts::ReadWritePart. + * A shell will use this to inform this Part if it should act + * read-only + */ + void setReadWrite(bool) override; + + /** + * Reimplemented to disable and enable Save action + */ + void setModified(bool) override; + + KAboutData& createAboutData(); + + Worksheet* worksheet(); + +Q_SIGNALS: + void setCaption(const QString& caption, const QIcon& icon); + void showHelp(const QString&); + void hierarchyChanged(QStringList, QStringList, QList); + void hierarhyEntryNameChange(QString name, QString searchName, int depth); + void worksheetSave(const QUrl&); + void setBackendName(const QString&); + void requestScrollToHierarchyEntry(QString); + void settingsChanges(); + void requestDocumentation(const QString& keyword); + +public Q_SLOTS: + void updateCaption(); + +protected: + /** + * This must be implemented by each part + */ + bool openFile() override; + + /** + * This must be implemented by each read-write part + */ + bool saveFile() override; + + /** + * Called when this part becomes the active one, + * or if it looses activity + **/ + void guiActivateEvent(KParts::GUIActivateEvent*) override; + + void loadAssistants(); + void adjustGuiToSession(); + + void setReadOnly(); + +protected Q_SLOTS: + void fileSaveAs(); + void fileSavePlain(); + void exportToLatex(); + void evaluateOrInterrupt(); + void restartBackend(); + void zoomValueEdited(const QString&); + void updateZoomWidgetValue(double); + void enableTypesetting(bool); + void showBackendHelp(); + void print(); + void printPreview(); + + void worksheetStatusChanged(Cantor::Session::Status); + void showSessionError(const QString&); + void worksheetSessionLoginStarted(); + void worksheetSessionLoginDone(); + void initialized(); + + void runCommand(const QString&); + + void runAssistant(); + void publishWorksheet(); + + void showScriptEditor(bool); + void scriptEditorClosed(); + void runScript(const QString&); + + void showSearchBar(); + void showExtendedSearchBar(); + void findNext(); + void findPrev(); + void searchBarDeleted(); + + /** sets the status message, or cached it, if the StatusBar is blocked. + * Use this method instead of "emit setStatusBarText" + */ + void setStatusMessage(const QString&); + /** Shows an important status message. It makes sure the message is displayed, + * by blocking the statusbarText for 3 seconds + */ + void showImportantStatusMessage(const QString&); + /** Blocks the StatusBar for new messages, so the currently shown one won't be overridden + */ + void blockStatusBar(); + /** Removes the block from the StatusBar, and shows the last one of the StatusMessages that + where set during the block + **/ + void unblockStatusBar(); + +private: + Worksheet* m_worksheet{nullptr}; + WorksheetView* m_worksheetview{nullptr}; + SearchBar* m_searchBar{nullptr}; + QPointer m_scriptEditor; + + QAction* m_evaluate; + QAction* m_restart; + KSelectAction* m_zoom; + QAction* m_currectZoomAction{nullptr}; + QAction* m_save; + QAction* m_findNext; + QAction* m_findPrev; + KToggleAction* m_typeset; + KToggleAction* m_highlight; + KToggleAction* m_completion; + KToggleAction* m_exprNumbering; + KToggleAction* m_animateWorksheet; + KToggleAction* m_embeddedMath; + QVector m_editActions; + + QString m_cachedStatusMessage; + bool m_statusBarBlocked{false}; + unsigned int m_sessionStatusCounter{0}; + +private Q_SLOTS: + void documentationRequested(const QString&); +}; + +#endif // CANTORPART_H diff --git a/src/cantor_part.json b/src/cantor_part.json new file mode 100644 index 0000000..f9f145d --- /dev/null +++ b/src/cantor_part.json @@ -0,0 +1,40 @@ +{ + "KPlugin": { + "Name": "CantorPart", + "Name[ca@valencia]": "CantorPart", + "Name[ca]": "CantorPart", + "Name[cs]": "CantorPart", + "Name[da]": "CantorPart", + "Name[de]": "CantorPart", + "Name[el]": "CantorPart", + "Name[en_GB]": "CantorPart", + "Name[es]": "CantorPart", + "Name[et]": "Cantori komponent", + "Name[fi]": "CantorPart", + "Name[fr]": "Module Cantor", + "Name[gl]": "CantorPart", + "Name[ia]": "CantorPart", + "Name[it]": "CantorPart", + "Name[ka]": "CantorPart", + "Name[ko]": "CantorPart", + "Name[nl]": "CantorPart", + "Name[nn]": "Cantor-del", + "Name[pl]": "ModułCantor", + "Name[pt]": "CantorPart", + "Name[pt_BR]": "Componente do Cantor", + "Name[ru]": "Компонент Cantor", + "Name[sk]": "CantorPart", + "Name[sl]": "CantorPart", + "Name[sv]": "Cantor-delprogram", + "Name[tr]": "CantorPart", + "Name[uk]": "CantorPart", + "Name[x-test]": "xxCantorPartxx", + "Name[zh_CN]": "Cantor 组件", + "Name[zh_TW]": "Cantor 部件", + "ServiceTypes": [ + "KParts/ReadOnlyPart", + "KParts/ReadWritePart" + ] + }, + "MimeType": "application/x-cantor;" +} diff --git a/src/cantor_part.rc b/src/cantor_part.rc new file mode 100644 index 0000000..b32f884 --- /dev/null +++ b/src/cantor_part.rc @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + &Edit + + + + + + + + + + + + + &View + + + + + + &Worksheet + + + + + + + + + + + + + + + + + Settings + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/cantor_scripteditor.rc b/src/cantor_scripteditor.rc new file mode 100644 index 0000000..dd9a33d --- /dev/null +++ b/src/cantor_scripteditor.rc @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/cantor_shell.rc b/src/cantor_shell.rc new file mode 100644 index 0000000..dc7b1ec --- /dev/null +++ b/src/cantor_shell.rc @@ -0,0 +1,45 @@ + + + + &File + + &New + + + + + + + + + + + + + &Edit + + + &View + + Panels + + + + + &Settings + + + + + + + + + + + + + + + + diff --git a/src/commandentry.cpp b/src/commandentry.cpp new file mode 100644 index 0000000..b0f8512 --- /dev/null +++ b/src/commandentry.cpp @@ -0,0 +1,1631 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2012 Martin Kuettler + SPDX-FileCopyrightText: 2016-2021 Alexander Semke +*/ + +#include "commandentry.h" +#include "resultitem.h" +#include "loadedexpression.h" +#include "worksheetview.h" +#include "lib/jupyterutils.h" +#include "lib/result.h" +#include "lib/helpresult.h" +#include "lib/epsresult.h" +#include "lib/latexresult.h" +#include "lib/completionobject.h" +#include "lib/syntaxhelpobject.h" +#include "lib/session.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +const QString CommandEntry::Prompt = QLatin1String(">>> "); +const QString CommandEntry::MidPrompt = QLatin1String(">> "); +const QString CommandEntry::HidePrompt = QLatin1String("> "); +const double CommandEntry::VerticalSpacing = 4; + + +CommandEntry::CommandEntry(Worksheet* worksheet) : WorksheetEntry(worksheet), + m_promptItem(new WorksheetTextItem(this, Qt::NoTextInteraction)), + m_commandItem(new WorksheetTextItem(this, Qt::TextEditorInteraction)), + m_resultsCollapsed(false), + m_errorItem(nullptr), + m_expression(nullptr), + m_completionObject(nullptr), + m_syntaxHelpObject(nullptr), + m_evaluationOption(DoNothing), + m_menusInitialized(false), + m_textColorCustom(false), + m_backgroundColorCustom(false), + m_backgroundColorActionGroup(nullptr), + m_backgroundColorMenu(nullptr), + m_textColorActionGroup(nullptr), + m_textColorMenu(nullptr), + m_fontMenu(nullptr), + m_isExecutionEnabled(true) +{ + m_promptItem->setPlainText(Prompt); + m_promptItem->setItemDragable(true); + m_commandItem->enableCompletion(true); + + KColorScheme scheme = KColorScheme(QPalette::Normal, KColorScheme::View); + m_commandItem->setBackgroundColor(scheme.background(KColorScheme::AlternateBackground).color()); + + m_promptItemAnimation = new QPropertyAnimation(m_promptItem, "opacity", this); + m_promptItemAnimation->setDuration(600); + m_promptItemAnimation->setStartValue(1); + m_promptItemAnimation->setKeyValueAt(0.5, 0); + m_promptItemAnimation->setEndValue(1); + connect(m_promptItemAnimation, &QPropertyAnimation::finished, this, &CommandEntry::animatePromptItem); + + m_promptItem->setDoubleClickBehaviour(WorksheetTextItem::DoubleClickEventBehaviour::Simple); + connect(m_promptItem, &WorksheetTextItem::doubleClick, this, &CommandEntry::changeResultCollapsingAction); + + connect(&m_controlElement, &WorksheetControlItem::doubleClick, this, &CommandEntry::changeResultCollapsingAction); + + connect(m_commandItem, &WorksheetTextItem::tabPressed, this, &CommandEntry::handleTabPress); + connect(m_commandItem, &WorksheetTextItem::backtabPressed, this, &CommandEntry::handleBacktabPress); + connect(m_commandItem, &WorksheetTextItem::applyCompletion, this, &CommandEntry::applySelectedCompletion); + connect(m_commandItem, &WorksheetTextItem::execute, this, [=]() { evaluate();} ); + connect(m_commandItem, &WorksheetTextItem::moveToPrevious, this, &CommandEntry::moveToPreviousItem); + connect(m_commandItem, &WorksheetTextItem::moveToNext, this, &CommandEntry::moveToNextItem); + connect(m_commandItem, &WorksheetTextItem::receivedFocus, worksheet, &Worksheet::highlightItem); + connect(m_promptItem, &WorksheetTextItem::drag, this, &CommandEntry::startDrag); + connect(worksheet, &Worksheet::updatePrompt, this, [=]() { updatePrompt();} ); + + m_defaultDefaultTextColor = m_commandItem->defaultTextColor(); +} + +CommandEntry::~CommandEntry() +{ + if (m_completionBox) + m_completionBox->deleteLater(); + + if (m_menusInitialized) + { + m_backgroundColorMenu->deleteLater(); + m_textColorMenu->deleteLater(); + m_fontMenu->deleteLater(); + } +} + +int CommandEntry::type() const +{ + return Type; +} + +void CommandEntry::initMenus() { + //background color + m_backgroundColorActionGroup = new QActionGroup(this); + m_backgroundColorActionGroup->setExclusive(true); + connect(m_backgroundColorActionGroup, &QActionGroup::triggered, this, &CommandEntry::backgroundColorChanged); + + m_backgroundColorMenu = new QMenu(i18n("Background Color")); + m_backgroundColorMenu->setIcon(QIcon::fromTheme(QLatin1String("format-fill-color"))); + + QPixmap pix(16,16); + QPainter p(&pix); + + // Create default action + KColorScheme scheme = KColorScheme(QPalette::Normal, KColorScheme::View); + p.fillRect(pix.rect(), scheme.background(KColorScheme::AlternateBackground).color()); + QAction* action = new QAction(QIcon(pix), i18n("Default"), m_backgroundColorActionGroup); + action->setCheckable(true); + m_backgroundColorMenu->addAction(action); + if (!m_backgroundColorCustom) + action->setChecked(true); + + for (int i=0; isetCheckable(true); + m_backgroundColorMenu->addAction(action); + + const QColor& backgroundColor = (m_isExecutionEnabled ? m_commandItem->backgroundColor() : m_activeExecutionBackgroundColor); + if (m_backgroundColorCustom && backgroundColor == colors[i]) + action->setChecked(true); + } + + //text color + m_textColorActionGroup = new QActionGroup(this); + m_textColorActionGroup->setExclusive(true); + connect(m_textColorActionGroup, &QActionGroup::triggered, this, &CommandEntry::textColorChanged); + + m_textColorMenu = new QMenu(i18n("Text Color")); + m_textColorMenu->setIcon(QIcon::fromTheme(QLatin1String("format-text-color"))); + + // Create default action + p.fillRect(pix.rect(), m_defaultDefaultTextColor); + action = new QAction(QIcon(pix), i18n("Default"), m_textColorActionGroup); + action->setCheckable(true); + m_textColorMenu->addAction(action); + if (!m_textColorCustom) + action->setChecked(true); + + for (int i=0; isetCheckable(true); + m_textColorMenu->addAction(action); + + const QColor& textColor = (m_isExecutionEnabled ? m_commandItem->defaultTextColor() : m_activeExecutionTextColor); + if (m_textColorCustom && textColor == colors[i]) + action->setChecked(true); + } + + //font + QFont font = m_commandItem->font(); + m_fontMenu = new QMenu(i18n("Font")); + m_fontMenu->setIcon(QIcon::fromTheme(QLatin1String("preferences-desktop-font"))); + + action = new QAction(QIcon::fromTheme(QLatin1String("format-text-bold")), i18n("Bold")); + action->setCheckable(true); + connect(action, &QAction::triggered, this, &CommandEntry::fontBoldTriggered); + m_fontMenu->addAction(action); + if (font.bold()) + action->setChecked(true); + + action = new QAction(QIcon::fromTheme(QLatin1String("format-text-italic")), i18n("Italic")); + action->setCheckable(true); + connect(action, &QAction::triggered, this, &CommandEntry::fontItalicTriggered); + m_fontMenu->addAction(action); + if (font.italic()) + action->setChecked(true); + m_fontMenu->addSeparator(); + + action = new QAction(QIcon::fromTheme(QLatin1String("format-font-size-less")), i18n("Increase Size")); + connect(action, &QAction::triggered, this, &CommandEntry::fontIncreaseTriggered); + m_fontMenu->addAction(action); + + action = new QAction(QIcon::fromTheme(QLatin1String("format-font-size-more")), i18n("Decrease Size")); + connect(action, &QAction::triggered, this, &CommandEntry::fontDecreaseTriggered); + m_fontMenu->addAction(action); + m_fontMenu->addSeparator(); + + action = new QAction(QIcon::fromTheme(QLatin1String("preferences-desktop-font")), i18n("Select")); + connect(action, &QAction::triggered, this, &CommandEntry::fontSelectTriggered); + m_fontMenu->addAction(action); + + action = new QAction(QIcon::fromTheme(QLatin1String("preferences-desktop-font")), i18n("Reset to Default")); + connect(action, &QAction::triggered, this, &CommandEntry::resetFontTriggered); + m_fontMenu->addAction(action); + + m_menusInitialized = true; +} + +void CommandEntry::backgroundColorChanged(QAction* action) { + int index = m_backgroundColorActionGroup->actions().indexOf(action); + if (index == -1 || index>=colorsCount) + index = 0; + + QColor color; + if (index == 0) + { + KColorScheme scheme = KColorScheme(QPalette::Normal, KColorScheme::View); + color = scheme.background(KColorScheme::AlternateBackground).color(); + } + else + color = colors[index-1]; + + if (m_isExecutionEnabled) + m_commandItem->setBackgroundColor(color); + else + m_activeExecutionBackgroundColor = color; +} + +void CommandEntry::textColorChanged(QAction* action) { + int index = m_textColorActionGroup->actions().indexOf(action); + if (index == -1 || index>=colorsCount) + index = 0; + + QColor color; + if (index == 0) + { + color = m_defaultDefaultTextColor; + } + else + color = colors[index-1]; + + if (m_isExecutionEnabled) + m_commandItem->setDefaultTextColor(color); + else + m_activeExecutionTextColor = color; +} + +void CommandEntry::fontBoldTriggered() +{ + QAction* action = static_cast(QObject::sender()); + QFont font = m_commandItem->font(); + font.setBold(action->isChecked()); + m_commandItem->setFont(font); +} + +void CommandEntry::resetFontTriggered() +{ + m_commandItem->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); +} + +void CommandEntry::fontItalicTriggered() +{ + QAction* action = static_cast(QObject::sender()); + QFont font = m_commandItem->font(); + font.setItalic(action->isChecked()); + m_commandItem->setFont(font); +} + +void CommandEntry::fontIncreaseTriggered() +{ + QFont font = m_commandItem->font(); + const int currentSize = font.pointSize(); + QFontDatabase fdb; + QList sizes = fdb.pointSizes(font.family(), font.styleName()); + + for (int i = 0; i < sizes.size(); ++i) + { + const int size = sizes.at(i); + if (currentSize == size) + { + if (i + 1 < sizes.size()) + { + font.setPointSize(sizes.at(i+1)); + m_commandItem->setFont(font); + } + + break; + } + } +} + +void CommandEntry::fontDecreaseTriggered() +{ + QFont font = m_commandItem->font(); + const int currentSize = font.pointSize(); + QFontDatabase fdb; + QList sizes = fdb.pointSizes(font.family(), font.styleName()); + + for (int i = 0; i < sizes.size(); ++i) + { + const int size = sizes.at(i); + if (currentSize == size) + { + if (i - 1 >= 0) + { + font.setPointSize(sizes.at(i-1)); + m_commandItem->setFont(font); + } + + break; + } + } +} + +void CommandEntry::fontSelectTriggered() +{ + bool ok; + QFont font = QFontDialog::getFont(&ok, m_commandItem->font(), nullptr); + + if (ok) + m_commandItem->setFont(font); +} + +void CommandEntry::populateMenu(QMenu* menu, QPointF pos) +{ + if (!m_menusInitialized) + initMenus(); + + if (!m_resultItems.isEmpty()) { + if (m_resultsCollapsed) + menu->addAction(i18n("Show Results"), this, &CommandEntry::expandResults); + else + menu->addAction(i18n("Hide Results"), this, &CommandEntry::collapseResults); + } + + if (!m_commandItem->toPlainText().simplified().isEmpty()) + { + QAction* action = new QAction(QIcon::fromTheme(QLatin1String("help-hint")), i18n("Show Help")); + connect(action, &QAction::triggered, this, &CommandEntry::showHelp); + menu->addAction(action); + menu->addSeparator(); + } + + QAction* enabledAction = new QAction(QIcon::fromTheme(QLatin1String("checkmark")), i18n("Enabled")); + enabledAction->setCheckable(true); + enabledAction->setChecked(m_isExecutionEnabled); + menu->addSeparator(); + menu->addAction(enabledAction); + connect(enabledAction, &QAction::triggered, this, &CommandEntry::toggleEnabled); + + QMenu* appearanceMenu = new QMenu(i18n("Appearance")); + appearanceMenu->setIcon(QIcon::fromTheme(QLatin1String("configure"))); + appearanceMenu->addMenu(m_backgroundColorMenu); + appearanceMenu->addMenu(m_textColorMenu); + appearanceMenu->addMenu(m_fontMenu); + menu->addMenu(appearanceMenu); + menu->addSeparator(); + + WorksheetEntry::populateMenu(menu, pos); + menu->addSeparator(); +} + +void CommandEntry::moveToNextItem(int pos, qreal x) +{ + WorksheetTextItem* item = qobject_cast(sender()); + + if (!item) + return; + + if (item == m_commandItem) { + if (m_informationItems.isEmpty() || + !currentInformationItem()->isEditable()) + moveToNextEntry(pos, x); + else + currentInformationItem()->setFocusAt(pos, x); + } else if (item == currentInformationItem()) { + moveToNextEntry(pos, x); + } +} + +void CommandEntry::moveToPreviousItem(int pos, qreal x) +{ + WorksheetTextItem* item = qobject_cast(sender()); + + if (!item) + return; + + if (item == m_commandItem || item == nullptr) { + moveToPreviousEntry(pos, x); + } else if (item == currentInformationItem()) { + m_commandItem->setFocusAt(pos, x); + } +} + +QString CommandEntry::command() +{ + QString cmd = m_commandItem->toPlainText(); + cmd.replace(QChar::ParagraphSeparator, QLatin1Char('\n')); //Replace the U+2029 paragraph break by a Normal Newline + cmd.replace(QChar::LineSeparator, QLatin1Char('\n')); //Replace the line break by a Normal Newline + return cmd; +} + +void CommandEntry::setExpression(Cantor::Expression* expr) +{ + /* + if ( m_expression ) { + if (m_expression->status() == Cantor::Expression::Computing) { + qDebug() << "OLD EXPRESSION STILL ACTIVE"; + m_expression->interrupt(); + } + m_expression->deleteLater(); + }*/ + + // Delete any previous error + if(m_errorItem) + { + m_errorItem->deleteLater(); + m_errorItem = nullptr; + } + + for (auto* item : m_informationItems) + { + item->deleteLater(); + } + m_informationItems.clear(); + + // Delete any previous result + clearResultItems(); + + m_expression = expr; + m_resultsCollapsed = false; + + connect(expr, &Cantor::Expression::gotResult, this, &CommandEntry::updateEntry); + connect(expr, &Cantor::Expression::resultsCleared, this, &CommandEntry::clearResultItems); + connect(expr, &Cantor::Expression::resultRemoved, this, &CommandEntry::removeResultItem); + connect(expr, &Cantor::Expression::resultReplaced, this, &CommandEntry::replaceResultItem); + connect(expr, &Cantor::Expression::idChanged, this, [=]() { updatePrompt();} ); + connect(expr, &Cantor::Expression::statusChanged, this, &CommandEntry::expressionChangedStatus); + connect(expr, &Cantor::Expression::needsAdditionalInformation, this, &CommandEntry::showAdditionalInformationPrompt); + connect(expr, &Cantor::Expression::statusChanged, this, [=]() { updatePrompt();} ); + + updatePrompt(); + + if(expr->result()) + { + worksheet()->gotResult(expr); + updateEntry(); + } + + expressionChangedStatus(expr->status()); +} + +Cantor::Expression* CommandEntry::expression() +{ + return m_expression; +} + +bool CommandEntry::acceptRichText() +{ + return false; +} + +void CommandEntry::setContent(const QString& content) +{ + m_commandItem->setPlainText(content); +} + +void CommandEntry::setContent(const QDomElement& content, const KZip& file) +{ + m_commandItem->setPlainText(content.firstChildElement(QLatin1String("Command")).text()); + + LoadedExpression* expr = new LoadedExpression( worksheet()->session() ); + expr->loadFromXml(content, file); + + //background color + QDomElement backgroundElem = content.firstChildElement(QLatin1String("Background")); + if (!backgroundElem.isNull()) + { + QColor color; + color.setRed(backgroundElem.attribute(QLatin1String("red")).toInt()); + color.setGreen(backgroundElem.attribute(QLatin1String("green")).toInt()); + color.setBlue(backgroundElem.attribute(QLatin1String("blue")).toInt()); + m_commandItem->setBackgroundColor(color); + m_backgroundColorCustom = true; + } + + //text properties + QDomElement textElem = content.firstChildElement(QLatin1String("Text")); + if (!textElem.isNull()) + { + //text color + QDomElement colorElem = textElem.firstChildElement(QLatin1String("Color")); + if (!colorElem.isNull() && !colorElem.hasAttribute(QLatin1String("default"))) + { + m_defaultDefaultTextColor = m_commandItem->defaultTextColor(); + QColor color; + color.setRed(colorElem.attribute(QLatin1String("red")).toInt()); + color.setGreen(colorElem.attribute(QLatin1String("green")).toInt()); + color.setBlue(colorElem.attribute(QLatin1String("blue")).toInt()); + m_commandItem->setDefaultTextColor(color); + m_textColorCustom = true; + } + + //font properties + QDomElement fontElem = textElem.firstChildElement(QLatin1String("Font")); + if (!fontElem.isNull() && !fontElem.hasAttribute(QLatin1String("default"))) + { + QFont font; + font.setFamily(fontElem.attribute(QLatin1String("family"))); + font.setPointSize(fontElem.attribute(QLatin1String("pointSize")).toInt()); + font.setWeight(fontElem.attribute(QLatin1String("weight")).toInt()); + font.setItalic(fontElem.attribute(QLatin1String("italic")).toInt()); + m_commandItem->setFont(font); + } + } + + m_isExecutionEnabled = !(bool)(content.attribute(QLatin1String("ExecutionDisabled"), QLatin1String("0")).toInt()); + if (m_isExecutionEnabled == false) + excludeFromExecution(); + + setExpression(expr); +} + +void CommandEntry::setContentFromJupyter(const QJsonObject& cell) +{ + m_commandItem->setPlainText(Cantor::JupyterUtils::getSource(cell)); + + LoadedExpression* expr=new LoadedExpression( worksheet()->session() ); + expr->loadFromJupyter(cell); + setExpression(expr); + + // https://nbformat.readthedocs.io/en/latest/format_description.html#cell-metadata + // 'collapsed': + + // 'scrolled', 'deletable', 'name', 'tags' don't supported Cantor, so ignore them + // 'source_hidden' don't supported + // 'format' for raw entry, so ignore + // I haven't found 'outputs_hidden' inside Jupyter notebooks, and difference from 'collapsed' + // not clear, so also ignore + const QJsonObject& metadata = Cantor::JupyterUtils::getMetadata(cell); + const QJsonValue& collapsed = metadata.value(QLatin1String("collapsed")); + if (collapsed.isBool() && collapsed.toBool() == true && !m_resultItems.isEmpty()) + { + // Disable animation for hiding results, we don't need animation on document load stage + bool animationValue = worksheet()->animationsEnabled(); + worksheet()->enableAnimations(false); + collapseResults(); + worksheet()->enableAnimations(animationValue); + } + + setJupyterMetadata(metadata); +} + +QJsonValue CommandEntry::toJupyterJson() +{ + QJsonObject entry; + + entry.insert(QLatin1String("cell_type"), QLatin1String("code")); + + QJsonValue executionCountValue; + if (expression() && expression()->id() != -1) + executionCountValue = QJsonValue(expression()->id()); + entry.insert(QLatin1String("execution_count"), executionCountValue); + + QJsonObject metadata(jupyterMetadata()); + if (m_resultsCollapsed) + metadata.insert(QLatin1String("collapsed"), true); + + entry.insert(QLatin1String("metadata"), metadata); + + Cantor::JupyterUtils::setSource(entry, command()); + + QJsonArray outputs; + if (expression()) + { + Cantor::Expression::Status status = expression()->status(); + if (status == Cantor::Expression::Error || status == Cantor::Expression::Interrupted) + { + QJsonObject errorOutput; + errorOutput.insert(Cantor::JupyterUtils::outputTypeKey, QLatin1String("error")); + errorOutput.insert(QLatin1String("ename"), QLatin1String("Unknown")); + errorOutput.insert(QLatin1String("evalue"), QLatin1String("Unknown")); + + QJsonArray traceback; + if (status == Cantor::Expression::Error) + { + const QStringList& error = expression()->errorMessage().split(QLatin1Char('\n')); + for (const QString& line: error) + traceback.append(line); + } + else + { + traceback.append(i18n("Interrupted")); + } + errorOutput.insert(QLatin1String("traceback"), traceback); + + outputs.append(errorOutput); + } + + for (auto* result : expression()->results()) + { + const QJsonValue& resultJson = result->toJupyterJson(); + + if (!resultJson.isNull()) + outputs.append(resultJson); + } + } + entry.insert(QLatin1String("outputs"), outputs); + + return entry; +} + +void CommandEntry::handleTabPress() +{ + const QString& line = currentLine(); + + // When the auto completion is disabled, we insert 'Tab' and exit immediately + // When the auto completion is enabled, the logic is more complicated + if(!worksheet()->completionEnabled()) + { + if (m_commandItem->hasFocus()) + m_commandItem->insertTab(); + return; + } + + if (isShowingCompletionPopup()) + handleExistedCompletionBox(); + else + { + QTextCursor cursor = m_commandItem->textCursor(); + int p = m_commandItem->textCursor().positionInBlock(); + + if (cursor.hasSelection()) + { + int count = 1 + cursor.selectedText().count(QChar(0x2029)); + cursor.setPosition(cursor.selectionEnd()); + cursor.beginEditBlock(); + for (int i = 0; i < count; i++) + { + cursor.movePosition(QTextCursor::StartOfLine); + cursor.insertText(QLatin1String(" ")); + cursor.movePosition(QTextCursor::StartOfLine); + cursor.movePosition(QTextCursor::PreviousCharacter); + } + cursor.endEditBlock(); + } + else if(line.left(p).trimmed().isEmpty()) + { + if (m_commandItem->hasFocus()) + m_commandItem->insertTab(); + } + else + makeCompletion(line, p); + } +} + +void CommandEntry::showCompletion() +{ + if(!worksheet()->completionEnabled()) + return; + + if (isShowingCompletionPopup()) + handleExistedCompletionBox(); + else + { + int p = m_commandItem->textCursor().positionInBlock(); + makeCompletion(currentLine(), p); + } +} + +void CommandEntry::handleExistedCompletionBox() +{ + QString comp = m_completionObject->completion(); + if (comp != m_completionObject->command() || !m_completionObject->hasMultipleMatches()) + { + if (m_completionObject->hasMultipleMatches()) + completeCommandTo(comp, PreliminaryCompletion); + else + { + completeCommandTo(comp, FinalCompletion); + m_completionBox->hide(); + } + } + else + { + m_completionBox->down(); + } +} + +void CommandEntry::makeCompletion(const QString& line, int position) +{ + Cantor::CompletionObject* tco=worksheet()->session()->completionFor(line, position); + if(tco) + setCompletion(tco); +} + +void CommandEntry::handleBacktabPress() +{ + QTextCursor cursor = m_commandItem->textCursor(); + + if (isShowingCompletionPopup()) + m_completionBox->up(); + else if (cursor.hasSelection()) + { + int count = 1 + cursor.selectedText().count(QChar(0x2029)); + cursor.setPosition(cursor.selectionEnd()); + cursor.beginEditBlock(); + for (int i = 0; i < count; i++) + { + const QString& line = cursor.block().text(); + cursor.movePosition(QTextCursor::StartOfLine); + int counter = 0; + // 4 spaces is Cantor tabulation size, so we remove also 4 characters or less + while (cursor.positionInBlock() < line.length() && line[cursor.positionInBlock()] == QLatin1Char(' ') && counter < 4) + { + cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor); + counter++; + } + cursor.removeSelectedText(); + cursor.movePosition(QTextCursor::PreviousCharacter); + } + cursor.endEditBlock(); + } + else + { + const QString& line = currentLine(); + if (line.length() >= 4) + { + cursor.movePosition(QTextCursor::StartOfLine); + int counter = 0; + // 4 spaces is Cantor tabulation size, so we remove also 4 characters or less + while (cursor.positionInBlock() < line.length() && line[cursor.positionInBlock()] == QLatin1Char(' ') && counter < 4) + { + cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor); + counter++; + } + cursor.removeSelectedText(); + } + } +} + +QString CommandEntry::toPlain(const QString& commandSep, const QString& commentStartingSeq, const QString& commentEndingSeq) +{ + Q_UNUSED(commentStartingSeq); + Q_UNUSED(commentEndingSeq); + + if (command().isEmpty()) + return QString(); + return command() + commandSep; +} + +QDomElement CommandEntry::toXml(QDomDocument& doc, KZip* archive) +{ + QDomElement exprElem = doc.createElement( QLatin1String("Expression") ); + QDomElement cmdElem = doc.createElement( QLatin1String("Command") ); + cmdElem.appendChild(doc.createTextNode( command() )); + exprElem.appendChild(cmdElem); + + if (!m_isExecutionEnabled) + exprElem.setAttribute(QLatin1String("ExecutionDisabled"), true); + + // save results of the expression if they exist + if (expression()) + { + const QString& errorMessage = expression()->errorMessage(); + if (!errorMessage.isEmpty()) + { + QDomElement errorElem = doc.createElement( QLatin1String("Error") ); + errorElem.appendChild(doc.createTextNode(errorMessage)); + exprElem.appendChild(errorElem); + } + for (auto* result : expression()->results()) + { + const QDomElement& resultElem = result->toXml(doc); + exprElem.appendChild(resultElem); + + if (archive) + result->saveAdditionalData(archive); + } + } + + bool isBackgroundColorNotDefault = false; + // If user can change value from menu (menus have been inited) - check via menu + // If use don't have menu, check if loaded color was custom color + if (m_backgroundColorActionGroup) + isBackgroundColorNotDefault = m_backgroundColorActionGroup->actions().indexOf(m_backgroundColorActionGroup->checkedAction()) != 0; + else + isBackgroundColorNotDefault = m_backgroundColorCustom; + if (isBackgroundColorNotDefault) + { + QColor backgroundColor = (m_isExecutionEnabled ? m_commandItem->backgroundColor() : m_activeExecutionBackgroundColor); + QDomElement colorElem = doc.createElement( QLatin1String("Background") ); + colorElem.setAttribute(QLatin1String("red"), QString::number(backgroundColor.red())); + colorElem.setAttribute(QLatin1String("green"), QString::number(backgroundColor.green())); + colorElem.setAttribute(QLatin1String("blue"), QString::number(backgroundColor.blue())); + exprElem.appendChild(colorElem); + } + + //save the text properties if they differ from default values + const QFont& font = m_commandItem->font(); + const QColor& textColor = (m_isExecutionEnabled ? m_commandItem->defaultTextColor() : m_activeExecutionTextColor); + bool isFontNotDefault = font != QFontDatabase::systemFont(QFontDatabase::FixedFont); + + bool isTextColorNotDefault = false; + if (m_textColorActionGroup) + isTextColorNotDefault = m_textColorActionGroup->actions().indexOf(m_textColorActionGroup->checkedAction()) != 0; + else + isTextColorNotDefault = m_textColorCustom; + + // Setting both values is necessary for previous Cantor versions compability + // Value, added only for compability reason, marks with attribute + if (isFontNotDefault || isTextColorNotDefault) + { + QDomElement textElem = doc.createElement(QLatin1String("Text")); + + //font properties + QDomElement fontElem = doc.createElement(QLatin1String("Font")); + if (!isFontNotDefault) + fontElem.setAttribute(QLatin1String("default"), true); + fontElem.setAttribute(QLatin1String("family"), font.family()); + fontElem.setAttribute(QLatin1String("pointSize"), QString::number(font.pointSize())); + fontElem.setAttribute(QLatin1String("weight"), QString::number(font.weight())); + fontElem.setAttribute(QLatin1String("italic"), QString::number(font.italic())); + textElem.appendChild(fontElem); + + //text color + QDomElement colorElem = doc.createElement( QLatin1String("Color") ); + if (!isTextColorNotDefault) + colorElem.setAttribute(QLatin1String("default"), true); + colorElem.setAttribute(QLatin1String("red"), QString::number(textColor.red())); + colorElem.setAttribute(QLatin1String("green"), QString::number(textColor.green())); + colorElem.setAttribute(QLatin1String("blue"), QString::number(textColor.blue())); + textElem.appendChild(colorElem); + + exprElem.appendChild(textElem); + } + + return exprElem; +} + +QString CommandEntry::currentLine() +{ + if (!m_commandItem->hasFocus()) + return QString(); + + return m_commandItem->textCursor().block().text(); +} + +bool CommandEntry::evaluateCurrentItem() +{ + // we can't use m_commandItem->hasFocus() here, because + // that doesn't work when the scene doesn't have the focus, + // e.g. when an assistant is used. + if (m_commandItem == worksheet()->focusItem()) { + return evaluate(); + } else if (informationItemHasFocus()) { + addInformation(); + return true; + } + + return false; +} + +bool CommandEntry::evaluate(EvaluationOption evalOp) +{ + if (m_isExecutionEnabled) + { + if (worksheet()->session()->status() == Cantor::Session::Disable) + worksheet()->loginToSession(); + + removeContextHelp(); + QToolTip::hideText(); + + QString cmd = command(); + m_evaluationOption = evalOp; + + if(cmd.isEmpty()) { + removeResults(); + for (auto* item : m_informationItems) { + item->deleteLater(); + } + m_informationItems.clear(); + recalculateSize(); + + evaluateNext(m_evaluationOption); + return false; + } + + auto* expr = worksheet()->session()->evaluateExpression(cmd); + connect(expr, &Cantor::Expression::gotResult, this, [=]() { worksheet()->gotResult(expr); }); + + setExpression(expr); + + return true; + } + else + { + evaluateNext(m_evaluationOption); + return true; + } +} + +void CommandEntry::interruptEvaluation() +{ + auto* expr = expression(); + if(expr) + expr->interrupt(); +} + +void CommandEntry::updateEntry() +{ + qDebug() << "update Entry"; + auto* expr = expression(); + if (expr == nullptr || expr->results().isEmpty()) + return; + + if (expr->results().last()->type() == Cantor::HelpResult::Type) + return; // Help is handled elsewhere + + //CommandEntry::updateEntry() is only called if the worksheet view is resized + //or when we got a new result(s). + //In the second case the number of results and the number of result graphic objects is different + //and we add a new graphic objects for the new result(s) (new result(s) are located in the end). + // NOTE: LatexResult could request update (change from rendered to code, for example) + // So, just update results, if we haven't new results or something similar + if (m_resultItems.size() < expr->results().size()) + { + if (m_resultsCollapsed) + expandResults(); + + for (int i = m_resultItems.size(); i < expr->results().size(); i++) + m_resultItems << ResultItem::create(this, expr->results()[i]); + } + else + { + for (ResultItem* item: m_resultItems) + item->update(); + } + + m_controlElement.isCollapsable = m_errorItem != nullptr + || m_informationItems.size() > 0 + || m_resultItems.size() > 0; + + animateSizeChange(); +} + +void CommandEntry::expressionChangedStatus(Cantor::Expression::Status status) +{ + switch (status) + { + case Cantor::Expression::Computing: + { + //change the background of the promt item and start animating it (fade in/out). + //don't start the animation immediately in order to avoid unwanted flickering for "short" commands, + //start the animation after 1 second passed. + if (worksheet()->animationsEnabled()) + { + const int id = m_expression->id(); + QTimer::singleShot(1000, this, [this, id] () { + if(m_expression->status() == Cantor::Expression::Computing && m_expression->id() == id) + m_promptItemAnimation->start(); + }); + } + break; + } + case Cantor::Expression::Error: + case Cantor::Expression::Interrupted: + m_promptItemAnimation->stop(); + m_promptItem->setOpacity(1.); + + m_commandItem->setFocusAt(WorksheetTextItem::BottomRight, 0); + + if(!m_errorItem) + { + m_errorItem = new WorksheetTextItem(this, Qt::TextSelectableByMouse); + } + + if (status == Cantor::Expression::Error) + { + QString error = m_expression->errorMessage().toHtmlEscaped(); + while (error.endsWith(QLatin1Char('\n'))) + error.chop(1); + error.replace(QLatin1String("\n"), QLatin1String("
        ")); + error.replace(QLatin1String(" "), QLatin1String(" ")); + m_errorItem->setHtml(error); + } + else + m_errorItem->setHtml(i18n("Interrupted")); + + recalculateSize(); + // Mostly we handle setting of modification in WorksheetEntry inside ::evaluateNext. + // But command entry wouldn't triger ::evaluateNext for Error and Interrupted states + // So, we set it here + worksheet()->setModified(); + break; + case Cantor::Expression::Done: + m_promptItemAnimation->stop(); + m_promptItem->setOpacity(1.); + evaluateNext(m_evaluationOption); + m_evaluationOption = DoNothing; + break; + default: + break; + } +} + +void CommandEntry::animatePromptItem() { + if(m_expression->status() == Cantor::Expression::Computing) + m_promptItemAnimation->start(); +} + +bool CommandEntry::isEmpty() +{ + if (m_commandItem->toPlainText().trimmed().isEmpty()) { + if (!m_resultItems.isEmpty()) + return false; + return true; + } + return false; +} + +bool CommandEntry::focusEntry(int pos, qreal xCoord) +{ + if (aboutToBeRemoved()) + return false; + WorksheetTextItem* item; + if (pos == WorksheetTextItem::TopLeft || pos == WorksheetTextItem::TopCoord) + item = m_commandItem; + else if (m_informationItems.size() && currentInformationItem()->isEditable()) + item = currentInformationItem(); + else + item = m_commandItem; + + item->setFocusAt(pos, xCoord); + return true; +} + +void CommandEntry::setCompletion(Cantor::CompletionObject* tc) +{ + if (m_completionObject) + delete m_completionObject; + + m_completionObject = tc; + connect(m_completionObject, &Cantor::CompletionObject::done, this, &CommandEntry::showCompletions); + connect(m_completionObject, &Cantor::CompletionObject::lineDone, this, &CommandEntry::completeLineTo); +} + +void CommandEntry::showCompletions() +{ + disconnect(m_completionObject, &Cantor::CompletionObject::done, this, &CommandEntry::showCompletions); + QString completion = m_completionObject->completion(); + qDebug()<<"completion: "<allMatches(); + + if(m_completionObject->hasMultipleMatches()) + { + completeCommandTo(completion); + + QToolTip::showText(QPoint(), QString(), worksheetView()); + if (!m_completionBox) + m_completionBox = new KCompletionBox(worksheetView()); + + m_completionBox->clear(); + m_completionBox->setItems(m_completionObject->allMatches()); + QList items = m_completionBox->findItems(m_completionObject->command(), Qt::MatchFixedString|Qt::MatchCaseSensitive); + if (!items.empty()) + m_completionBox->setCurrentItem(items.first()); + m_completionBox->setTabHandling(false); + m_completionBox->setActivateOnSelect(true); + + connect(m_completionBox.data(), &KCompletionBox::activated, this, &CommandEntry::applySelectedCompletion); + connect(m_commandItem->document(), &QTextDocument::contentsChanged, this, &CommandEntry::completedLineChanged); + connect(m_completionObject, &Cantor::CompletionObject::done, this, &CommandEntry::updateCompletions); + + m_commandItem->activateCompletion(true); + m_completionBox->popup(); + m_completionBox->move(getPopupPosition()); + } else + { + completeCommandTo(completion, FinalCompletion); + } +} + +bool CommandEntry::isShowingCompletionPopup() +{ + return m_completionBox && m_completionBox->isVisible(); +} + +void CommandEntry::applySelectedCompletion() +{ + QListWidgetItem* item = m_completionBox->currentItem(); + if(item) + completeCommandTo(item->text(), FinalCompletion); + m_completionBox->hide(); +} + +void CommandEntry::completedLineChanged() +{ + if (!isShowingCompletionPopup()) { + // the completion popup is not visible anymore, so let's clean up + removeContextHelp(); + return; + } + const QString line = currentLine(); + //FIXME: For some reason, this slot constantly triggeres, so I have added checking, is this update really needed + if (line != m_completionObject->command()) + m_completionObject->updateLine(line, m_commandItem->textCursor().positionInBlock()); +} + +void CommandEntry::updateCompletions() +{ + if (!m_completionObject) + return; + QString completion = m_completionObject->completion(); + qDebug()<<"completion: "<allMatches(); + + if(m_completionObject->hasMultipleMatches() || !completion.isEmpty()) + { + QToolTip::showText(QPoint(), QString(), worksheetView()); + m_completionBox->setItems(m_completionObject->allMatches()); + QList items = m_completionBox->findItems(m_completionObject->command(), Qt::MatchFixedString|Qt::MatchCaseSensitive); + if (!items.empty()) + m_completionBox->setCurrentItem(items.first()); + else if (m_completionBox->items().count() == 1) + m_completionBox->setCurrentRow(0); + else + m_completionBox->clearSelection(); + + m_completionBox->move(getPopupPosition()); + } else + { + removeContextHelp(); + } +} + +void CommandEntry::completeCommandTo(const QString& completion, CompletionMode mode) +{ + qDebug() << "completion: " << completion; + + Cantor::CompletionObject::LineCompletionMode cmode; + if (mode == FinalCompletion) { + cmode = Cantor::CompletionObject::FinalCompletion; + Cantor::SyntaxHelpObject* obj = worksheet()->session()->syntaxHelpFor(completion); + if(obj) + setSyntaxHelp(obj); + } else { + cmode = Cantor::CompletionObject::PreliminaryCompletion; + if(m_syntaxHelpObject) + m_syntaxHelpObject->deleteLater(); + m_syntaxHelpObject=nullptr; + } + + m_completionObject->completeLine(completion, cmode); +} + +void CommandEntry::completeLineTo(const QString& line, int index) +{ + qDebug() << "line completion: " << line; + QTextCursor cursor = m_commandItem->textCursor(); + cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::MoveAnchor); + cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); + int startPosition = cursor.position(); + cursor.insertText(line); + cursor.setPosition(startPosition + index); + m_commandItem->setTextCursor(cursor); + + if (m_syntaxHelpObject) { + m_syntaxHelpObject->fetchSyntaxHelp(); + // If we are about to show syntax help, then this was the final + // completion, and we should clean up. + removeContextHelp(); + } +} + +void CommandEntry::setSyntaxHelp(Cantor::SyntaxHelpObject* sh) +{ + if(m_syntaxHelpObject) + m_syntaxHelpObject->deleteLater(); + + m_syntaxHelpObject=sh; + connect(sh, SIGNAL(done()), this, SLOT(showSyntaxHelp())); +} + +void CommandEntry::showSyntaxHelp() +{ + QString msg = m_syntaxHelpObject->toHtml(); + const QPointF cursorPos = m_commandItem->cursorPosition(); + + // QToolTip doesn't support  , but support multiple spaces + msg.replace(QLatin1String(" "), QLatin1String(" ")); + // Doesn't support ", neither; + msg.replace(QLatin1String("""), QLatin1String("\"")); + + QToolTip::showText(toGlobalPosition(cursorPos), msg, worksheetView()); +} + +void CommandEntry::resultDeleted() +{ + qDebug()<<"result got removed..."; +} + +void CommandEntry::addInformation() +{ + auto* answerItem = currentInformationItem(); + answerItem->setTextInteractionFlags(Qt::TextSelectableByMouse); + + QString inf = answerItem->toPlainText(); + inf.replace(QChar::ParagraphSeparator, QLatin1Char('\n')); + inf.replace(QChar::LineSeparator, QLatin1Char('\n')); + + qDebug()<<"adding information: "<addInformation(inf); +} + +void CommandEntry::showAdditionalInformationPrompt(const QString& question) +{ + auto* questionItem = new WorksheetTextItem(this, Qt::TextSelectableByMouse); + auto* answerItem = new WorksheetTextItem(this, Qt::TextEditorInteraction); + + //change the color and the font for when asking for additional information in order to + //better discriminate from the usual input in the command entry + KColorScheme scheme = KColorScheme(QPalette::Normal, KColorScheme::View); + QColor color = scheme.foreground(KColorScheme::PositiveText).color(); + + QFont font; + font.setItalic(true); + + questionItem->setFont(font); + questionItem->setDefaultTextColor(color); + answerItem->setFont(font); + answerItem->setDefaultTextColor(color); + + questionItem->setPlainText(question); + + m_informationItems.append(questionItem); + m_informationItems.append(answerItem); + connect(answerItem, &WorksheetTextItem::moveToPrevious, this, &CommandEntry::moveToPreviousItem); + connect(answerItem, &WorksheetTextItem::moveToNext, this, &CommandEntry::moveToNextItem); + connect(answerItem, &WorksheetTextItem::execute, this, &CommandEntry::addInformation); + answerItem->setFocus(); + + recalculateSize(); +} + +void CommandEntry::removeResults() +{ + //clear the Result objects + if(m_expression) + m_expression->clearResults(); +} + +void CommandEntry::removeResult(Cantor::Result* result) +{ + if (m_expression) + m_expression->removeResult(result); +} + +void CommandEntry::removeResultItem(int index) +{ + fadeOutItem(m_resultItems[index]->graphicsObject()); + m_resultItems.remove(index); + recalculateSize(); +} + +void CommandEntry::clearResultItems() +{ + //fade out all result graphic objects + for(auto* item : m_resultItems) + fadeOutItem(item->graphicsObject()); + + m_resultItems.clear(); + recalculateSize(); +} + +void CommandEntry::replaceResultItem(int index) +{ + auto* previousItem = m_resultItems[index]; + m_resultItems[index] = ResultItem::create(this, m_expression->results()[index]); + previousItem->deleteLater(); + recalculateSize(); +} + +void CommandEntry::removeContextHelp() +{ + disconnect(m_commandItem->document(), SIGNAL(contentsChanged()), this, SLOT(completedLineChanged())); + + m_commandItem->activateCompletion(false); + if (m_completionBox) + m_completionBox->hide(); +} + +void CommandEntry::updatePrompt(const QString& postfix) +{ + KColorScheme color = KColorScheme(QPalette::Normal, KColorScheme::View); + + m_promptItem->setPlainText(QString()); + QTextCursor c = m_promptItem->textCursor(); + QTextCharFormat cformat = c.charFormat(); + + cformat.clearForeground(); + c.setCharFormat(cformat); + cformat.setFontWeight(QFont::Bold); + + //insert the session id if available + if(m_expression && worksheet()->showExpressionIds()&&m_expression->id()!=-1) + c.insertText(QString::number(m_expression->id()),cformat); + + //detect the correct color for the prompt, depending on the + //Expression state + if(m_expression) + { + if(m_expression ->status() == Cantor::Expression::Computing&&worksheet()->isRunning()) + cformat.setForeground(color.foreground(KColorScheme::PositiveText)); + else if(m_expression ->status() == Cantor::Expression::Queued) + cformat.setForeground(color.foreground(KColorScheme::InactiveText)); + else if(m_expression ->status() == Cantor::Expression::Error) + cformat.setForeground(color.foreground(KColorScheme::NegativeText)); + else if(m_expression ->status() == Cantor::Expression::Interrupted) + cformat.setForeground(color.foreground(KColorScheme::NeutralText)); + else + cformat.setFontWeight(QFont::Normal); + } + + c.insertText(postfix, cformat); + recalculateSize(); +} + +WorksheetTextItem* CommandEntry::currentInformationItem() +{ + if (m_informationItems.isEmpty()) + return nullptr; + return m_informationItems.last(); +} + +bool CommandEntry::informationItemHasFocus() +{ + if (m_informationItems.isEmpty()) + return false; + return m_informationItems.last()->hasFocus(); +} + +bool CommandEntry::focusWithinThisItem() +{ + return focusItem() != nullptr; +} + +QPoint CommandEntry::getPopupPosition() +{ + const QPointF cursorPos = m_commandItem->cursorPosition(); + const QPoint globalPos = toGlobalPosition(cursorPos); + const QScreen* desktop = QGuiApplication::primaryScreen(); + const QRect screenRect = desktop->geometry(); + if (globalPos.y() + m_completionBox->height() < screenRect.bottom()) { + return (globalPos); + } else { + QTextBlock block = m_commandItem->textCursor().block(); + QTextLayout* layout = block.layout(); + int pos = m_commandItem->textCursor().position() - block.position(); + QTextLine line = layout->lineForTextPosition(pos); + int dy = - m_completionBox->height() - line.height() - line.leading(); + return QPoint(globalPos.x(), globalPos.y() + dy); + } +} + +void CommandEntry::invalidate() +{ + qDebug() << "ToDo: Invalidate here"; +} + +bool CommandEntry::wantToEvaluate() +{ + return !isEmpty(); +} + +QPoint CommandEntry::toGlobalPosition(QPointF localPos) +{ + const QPointF scenePos = mapToScene(localPos); + const QPoint viewportPos = worksheetView()->mapFromScene(scenePos); + return worksheetView()->viewport()->mapToGlobal(viewportPos); +} + +WorksheetCursor CommandEntry::search(const QString& pattern, unsigned flags, + QTextDocument::FindFlags qt_flags, + const WorksheetCursor& pos) +{ + if (pos.isValid() && pos.entry() != this) + return WorksheetCursor(); + + WorksheetCursor p = pos; + QTextCursor cursor; + if (flags & WorksheetEntry::SearchCommand) { + cursor = m_commandItem->search(pattern, qt_flags, p); + if (!cursor.isNull()) + return WorksheetCursor(this, m_commandItem, cursor); + } + + if (p.textItem() == m_commandItem) + p = WorksheetCursor(); + + if (m_errorItem && flags & WorksheetEntry::SearchError) { + cursor = m_errorItem->search(pattern, qt_flags, p); + if (!cursor.isNull()) + return WorksheetCursor(this, m_errorItem, cursor); + } + + if (p.textItem() == m_errorItem) + p = WorksheetCursor(); + + for (auto* resultItem : m_resultItems) + { + auto* textResult = dynamic_cast(resultItem); + if (textResult && flags & WorksheetEntry::SearchResult) { + cursor = textResult->search(pattern, qt_flags, p); + if (!cursor.isNull()) + return WorksheetCursor(this, textResult, cursor); + } + } + + return WorksheetCursor(); +} + +void CommandEntry::layOutForWidth(qreal entry_zone_x, qreal w, bool force) +{ + if (w == size().width() && m_commandItem->pos().x() == entry_zone_x && !force) + return; + + m_promptItem->setPos(0, 0); + double x = std::max(0 + m_promptItem->width() + HorizontalSpacing, entry_zone_x); + double y = 0; + double width = 0; + + const qreal margin = worksheet()->isPrinting() ? 0 : RightMargin; + + m_commandItem->setGeometry(x, y, w - x - margin); + width = qMax(width, m_commandItem->width()+margin); + + y += qMax(m_commandItem->height(), m_promptItem->height()); + + for (auto* item : m_informationItems) { + y += VerticalSpacing; + y += item->setGeometry(x, y, w - x - margin); + width = qMax(width, item->width() + margin); + } + + if (m_errorItem) { + y += VerticalSpacing; + y += m_errorItem->setGeometry(x,y,w - x - margin); + width = qMax(width, m_errorItem->width() + margin); + } + + for (auto* resultItem : m_resultItems) + { + if (!resultItem || !resultItem->graphicsObject()->isVisible()) + continue; + y += VerticalSpacing; + y += resultItem->setGeometry(x, y, w - x - margin); + width = qMax(width, resultItem->width() + margin); + } + y += VerticalMargin; + + QSizeF s(x+ width, y); + if (animationActive()) { + updateSizeAnimation(s); + } else { + setSize(s); + } +} + +void CommandEntry::startRemoving() +{ + m_promptItem->setItemDragable(false); + WorksheetEntry::startRemoving(); +} + +WorksheetTextItem* CommandEntry::highlightItem() +{ + return m_isExecutionEnabled ? m_commandItem : nullptr; +} + +void CommandEntry::collapseResults() +{ + if (m_resultsCollapsed) + return; + + for(auto* item : m_informationItems) { + fadeOutItem(item, nullptr); + item->hide(); + } + + for(auto* item : m_resultItems) { + fadeOutItem(item->graphicsObject(), nullptr); + item->graphicsObject()->hide(); + } + + m_resultsCollapsed = true; + + if (worksheet()->animationsEnabled()) + { + QTimer::singleShot(100, this, &CommandEntry::setMidPrompt); + QTimer::singleShot(200, this, &CommandEntry::setHidePrompt); + } + else + setHidePrompt(); + + m_controlElement.isCollapsed = true; + animateSizeChange(); +} + +void CommandEntry::expandResults() +{ + if(!m_resultsCollapsed) + return; + + for(auto* item : m_informationItems) { + fadeInItem(item, nullptr); + item->show(); + } + + for(auto* item : m_resultItems) { + fadeInItem(item->graphicsObject(), nullptr); + item->graphicsObject()->show(); + } + + m_resultsCollapsed = false; + + if (worksheet()->animationsEnabled()) + { + QTimer::singleShot(100, this, &CommandEntry::setMidPrompt); + QTimer::singleShot(200, this, SLOT(updatePrompt())); + } + else + this->updatePrompt(); + + m_controlElement.isCollapsed = false; + animateSizeChange(); +} + +void CommandEntry::setHidePrompt() +{ + updatePrompt(HidePrompt); +} + +void CommandEntry::setMidPrompt() +{ + updatePrompt(MidPrompt); +} + +void CommandEntry::changeResultCollapsingAction() +{ + if (m_resultItems.size() == 0) + return; + + if (m_resultsCollapsed) + expandResults(); + else + collapseResults(); +} + +qreal CommandEntry::promptItemWidth() +{ + return m_promptItem->width(); +} + +/*! + * called when the "Get Help" action is triggered in the context menu. + * requests the worksheet to show the current keyword in the documentation panel. + * the current keyword is either the currenly selected text or the text under + * the cursor if there is no selection. + */ +void CommandEntry::showHelp() +{ + QString keyword; + const QTextCursor& cursor = m_commandItem->textCursor(); + if (cursor.hasSelection()) + keyword = cursor.selectedText(); + else + keyword = cursor.block().text(); + + if (!keyword.simplified().isEmpty()) + emit worksheet()->requestDocumentation(keyword); +} + +void CommandEntry::toggleEnabled() { + auto* action = static_cast(QObject::sender()); + if (action->isChecked()) + addToExecution(); + else + excludeFromExecution(); +} + +void CommandEntry::excludeFromExecution() +{ + m_isExecutionEnabled = false; + + KColorScheme scheme = KColorScheme(QPalette::Inactive, KColorScheme::View); + + m_activeExecutionBackgroundColor = m_commandItem->backgroundColor(); + m_activeExecutionTextColor = m_commandItem->defaultTextColor(); + + disconnect(m_commandItem, &WorksheetTextItem::receivedFocus, worksheet(), &Worksheet::highlightItem); + + m_commandItem->setBackgroundColor(scheme.background(KColorScheme::AlternateBackground).color()); + m_commandItem->setDefaultTextColor(scheme.foreground(KColorScheme::InactiveText).color()); +} + +void CommandEntry::addToExecution() +{ + m_isExecutionEnabled = true; + + m_commandItem->setBackgroundColor(m_activeExecutionBackgroundColor); + m_commandItem->setDefaultTextColor(m_activeExecutionTextColor); + + connect(m_commandItem, &WorksheetTextItem::receivedFocus, worksheet(), &Worksheet::highlightItem); + worksheet()->highlightItem(m_commandItem); +} + +bool CommandEntry::isExcludedFromExecution() +{ + return m_isExecutionEnabled == false; +} + +bool CommandEntry::isResultCollapsed() +{ + return m_resultsCollapsed; +} diff --git a/src/commandentry.h b/src/commandentry.h new file mode 100644 index 0000000..f9636e6 --- /dev/null +++ b/src/commandentry.h @@ -0,0 +1,184 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2012 Martin Kuettler + SPDX-FileCopyrightText: 2018-2021 Alexander Semke +*/ + +#ifndef COMMANDENTRY_H +#define COMMANDENTRY_H + +#include +#include + +#include "worksheetentry.h" +#include "lib/expression.h" + +class Worksheet; +class ResultItem; +class QTimer; +class QJsonObject; + +namespace Cantor{ + class Result; + class CompletionObject; + class SyntaxHelpObject; +} + +class CommandEntry : public WorksheetEntry +{ + Q_OBJECT + public: + static const QString Prompt; + static const QString MidPrompt; + static const QString HidePrompt; + + explicit CommandEntry(Worksheet*); + ~CommandEntry() override; + + enum {Type = UserType + 2}; + int type() const override; + + QString command(); + void setExpression(Cantor::Expression*); + Cantor::Expression* expression(); + + QString currentLine(); + + bool isEmpty() override; + bool isExcludedFromExecution(); + bool isResultCollapsed(); + + void setContent(const QString&) override; + void setContent(const QDomElement&, const KZip&) override; + void setContentFromJupyter(const QJsonObject&) override; + + QDomElement toXml(QDomDocument&, KZip*) override; + QJsonValue toJupyterJson() override; + QString toPlain(const QString& commandSep, const QString& commentStartingSeq, const QString& commentEndingSeq) override; + + void setCompletion(Cantor::CompletionObject* tc); + void setSyntaxHelp(Cantor::SyntaxHelpObject* sh); + + bool acceptRichText() override; + + void removeContextHelp(); + + void interruptEvaluation() override; + bool isShowingCompletionPopup(); + + bool focusEntry(int pos = WorksheetTextItem::TopLeft, qreal xCoord = 0) override; + + void layOutForWidth(qreal entry_zone_x, qreal w, bool force = false) override; + qreal promptItemWidth(); + + WorksheetTextItem* highlightItem() override; + + WorksheetCursor search(const QString& pattern, unsigned flags, + QTextDocument::FindFlags qt_flags, + const WorksheetCursor& pos = WorksheetCursor()) override; + + public Q_SLOTS: + bool evaluateCurrentItem() override; + bool evaluate(WorksheetEntry::EvaluationOption evalOp = FocusNext) override; + void addInformation(); + void removeResults(); + void removeResult(Cantor::Result* result); + void collapseResults(); + void expandResults(); + void excludeFromExecution(); + void addToExecution(); + + void showCompletion() override; + void handleTabPress(); + void handleBacktabPress(); + void updateEntry() override; + void updatePrompt(const QString& postfix = CommandEntry::Prompt); + void expressionChangedStatus(Cantor::Expression::Status); + void showAdditionalInformationPrompt(const QString&); + void showCompletions(); + void applySelectedCompletion(); + void completedLineChanged(); + void showSyntaxHelp(); + void completeLineTo(const QString& line, int index); + + void startRemoving() override; + + void moveToNextItem(int pos, qreal x); + void moveToPreviousItem(int pos, qreal x); + + void populateMenu(QMenu*, QPointF) override; + + protected: + bool wantToEvaluate() override; + + private: + WorksheetTextItem* currentInformationItem(); + bool informationItemHasFocus(); + bool focusWithinThisItem(); + QPoint getPopupPosition(); + QPoint toGlobalPosition(QPointF); + void initMenus(); + void handleExistedCompletionBox(); + void makeCompletion(const QString& line, int position); + + enum CompletionMode {PreliminaryCompletion, FinalCompletion}; + static const double VerticalSpacing; + + WorksheetTextItem* m_promptItem; + WorksheetTextItem* m_commandItem; + QVector m_resultItems; + bool m_resultsCollapsed; + WorksheetTextItem* m_errorItem; + QList m_informationItems; + Cantor::Expression* m_expression; + + Cantor::CompletionObject* m_completionObject; + QPointer m_completionBox; + Cantor::SyntaxHelpObject* m_syntaxHelpObject; + + EvaluationOption m_evaluationOption; + QPropertyAnimation* m_promptItemAnimation; + bool m_menusInitialized; + bool m_textColorCustom; + bool m_backgroundColorCustom; + + //formatting + QActionGroup* m_backgroundColorActionGroup; + QMenu* m_backgroundColorMenu; + QActionGroup* m_textColorActionGroup; + QColor m_defaultDefaultTextColor; + QMenu* m_textColorMenu; + QMenu* m_fontMenu; + + bool m_isExecutionEnabled; + QColor m_activeExecutionTextColor; + QColor m_activeExecutionBackgroundColor; + + private Q_SLOTS: + void invalidate(); + void resultDeleted(); + void clearResultItems(); + void removeResultItem(int index); + void replaceResultItem(int index); + void updateCompletions(); + void completeCommandTo(const QString& completion, CommandEntry::CompletionMode mode = PreliminaryCompletion); + void changeResultCollapsingAction(); + void showHelp(); + void toggleEnabled(); + + void backgroundColorChanged(QAction*); + void textColorChanged(QAction*); + void fontBoldTriggered(); + void fontItalicTriggered(); + void fontIncreaseTriggered(); + void fontDecreaseTriggered(); + void fontSelectTriggered(); + void resetFontTriggered(); + + void animatePromptItem(); + void setMidPrompt(); + void setHidePrompt(); +}; + +#endif // COMMANDENTRY_H diff --git a/src/config-cantor.h.cmake b/src/config-cantor.h.cmake new file mode 100644 index 0000000..5fb21b5 --- /dev/null +++ b/src/config-cantor.h.cmake @@ -0,0 +1,7 @@ +#include + +#define CANTOR_VERSION "${RELEASE_SERVICE_VERSION}" + +#cmakedefine Discount_FOUND 1 + +#define PATH_TO_CANTOR_PLUGINS "${PATH_TO_CANTOR_BACKENDS}" diff --git a/src/extendedsearchbar.ui b/src/extendedsearchbar.ui new file mode 100644 index 0000000..522cbf7 --- /dev/null +++ b/src/extendedsearchbar.ui @@ -0,0 +1,203 @@ + + + ExtendedSearchBar + + + + 0 + 0 + 995 + 97 + + + + SearchBar + + + + + + + + ... + + + true + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + Find: + + + + + + + true + + + + + + + &Next + + + + + + + &Previous + + + + + + + + + ... + + + true + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + Replace: + + + + + + + true + + + + + + + &Replace + + + + + + + Replace &All + + + + + + + Qt::Horizontal + + + + + + + + + Search in: + + + + + + + + 4 + 0 + + + + true + + + + + + + ... + + + + + + + ... + + + + + + + &Match case + + + + + + + + 1 + 0 + + + + Qt::AlignCenter + + + + + + + + + + KSqueezedTextLabel + QLabel +
        ksqueezedtextlabel.h
        +
        +
        + + +
        diff --git a/src/formating.ui b/src/formating.ui new file mode 100644 index 0000000..078b166 --- /dev/null +++ b/src/formating.ui @@ -0,0 +1,412 @@ + + + SettingsFormatting + + + + 0 + 0 + 946 + 511 + + + + + + + Qt::Horizontal + + + + + 0 + 0 + + + + Hierarchy Fonts + + + + + + 0 + + + + Chapter Font + + + + + + + + Font Family: + + + + + + + + + + + + + + Font Size: + + + + + + + 8 + + + 40 + + + 14 + + + + + + + + + Bold + + + + + + + Italic + + + + + + + + Subchapter Font + + + + + + + + Font Family: + + + + + + + + + + + + + + Font Size: + + + + + + + 8 + + + 40 + + + 14 + + + + + + + + + Bold + + + + + + + Italic + + + + + + + + Section Font + + + + + + + + Font Family: + + + + + + + + + + + + + + Font Size: + + + + + + + 8 + + + 40 + + + 14 + + + + + + + + + Bold + + + + + + + Italic + + + + + + + + Subsection Font + + + + + + + + Font Family: + + + + + + + + + + + + + + Font Size: + + + + + + + 8 + + + 40 + + + 14 + + + + + + + + + Bold + + + + + + + Italic + + + + + + + + Paragraph Font + + + + + + + + Font Family: + + + + + + + + + + + + + + Font Size: + + + + + + + 8 + + + 40 + + + 14 + + + + + + + + + Bold + + + + + + + Italic + + + + + + + + Subparagraph Font + + + + + + + + Font Family: + + + + + + + + + + + + + + Font Size: + + + + + + + 8 + + + 40 + + + 14 + + + + + + + + + Bold + + + + + + + Italic + + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + diff --git a/src/hierarchyentry.cpp b/src/hierarchyentry.cpp new file mode 100644 index 0000000..ac39cb3 --- /dev/null +++ b/src/hierarchyentry.cpp @@ -0,0 +1,554 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Nikita Sirgienko +*/ + +#include "hierarchyentry.h" +#include "settings.h" +#include "worksheetview.h" +#include "lib/jupyterutils.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +static QStringList hierarchyLevelNames = {i18n("Chapter"), i18n("Subchapter"), i18n("Section"), i18n("Subsection"), i18n("Paragraph"), i18n("Subparagraph")}; + +HierarchyEntry::HierarchyEntry(Worksheet* worksheet) : WorksheetEntry(worksheet) + , m_hierarchyLevelItem(new WorksheetTextItem(this, Qt::NoTextInteraction)) + , m_textItem(new WorksheetTextItem(this, Qt::TextEditorInteraction)) + , m_depth(HierarchyLevel::Chapter) + , m_hierarchyNumber(1) + , m_hidedSubentries(nullptr) +{ + // Font and sizes should be regulated from future Settings "Styles" option + m_textItem->enableRichText(false); + + connect(m_textItem, &WorksheetTextItem::moveToPrevious, this, &HierarchyEntry::moveToPreviousEntry); + connect(m_textItem, &WorksheetTextItem::moveToNext, this, &HierarchyEntry::moveToNextEntry); + // Modern syntax of signal/stots don't work on this connection (arguments don't match) + connect(m_textItem, SIGNAL(execute()), this, SLOT(evaluate())); + + connect(this, &HierarchyEntry::hierarhyEntryNameChange, worksheet, &Worksheet::hierarhyEntryNameChange); + + connect(&m_controlElement, &WorksheetControlItem::doubleClick, this, &HierarchyEntry::handleControlElementDoubleClick); + + m_setLevelActionGroup = new QActionGroup(this); + m_setLevelActionGroup->setExclusive(true); + connect(m_setLevelActionGroup, &QActionGroup::triggered, this, &HierarchyEntry::setLevelTriggered); + + Q_ASSERT(hierarchyLevelNames.size() == (int)HierarchyLevel::EndValue-1); + m_setLevelMenu = new QMenu(i18n("Set Hierarchy Level")); + for (int i = 1; i < (int)HierarchyLevel::EndValue; i++) + { + QAction* action = new QAction(hierarchyLevelNames[i-1], m_setLevelActionGroup); + action->setCheckable(true); + m_setLevelMenu->addAction(action); + } + + updateFonts(true); +} + +HierarchyEntry::~HierarchyEntry() +{ + m_setLevelMenu->deleteLater(); +} + +void HierarchyEntry::populateMenu(QMenu* menu, QPointF pos) +{ + menu->addMenu(m_setLevelMenu); + //menu->addSeparator(); + WorksheetEntry::populateMenu(menu, pos); +} + +bool HierarchyEntry::isEmpty() +{ + return m_textItem->document()->isEmpty(); +} + +int HierarchyEntry::type() const +{ + return Type; +} + +bool HierarchyEntry::acceptRichText() +{ + return false; +} + +bool HierarchyEntry::focusEntry(int pos, qreal xCoord) +{ + if (aboutToBeRemoved()) + return false; + m_textItem->setFocusAt(pos, xCoord); + return true; +} + + +void HierarchyEntry::setContent(const QString& content) +{ + m_textItem->setPlainText(content); +} + +void HierarchyEntry::setContent(const QDomElement& content, const KZip& file) +{ + Q_UNUSED(file); + if(content.firstChildElement(QLatin1String("body")).isNull()) + return; + + m_textItem->setPlainText(content.firstChildElement(QLatin1String("body")).text()); + + const QDomElement& subentriesMainElem = content.firstChildElement(QLatin1String("HidedSubentries")); + if (!subentriesMainElem.isNull()) + { + m_controlElement.isCollapsable = true; + m_controlElement.isCollapsed = true; + + const QDomNodeList& entries = subentriesMainElem.childNodes(); + + WorksheetEntry* tail = nullptr; + for (int i = 0; i < entries.size(); i++) + { + const QDomElement& entryElem = entries.at(i).toElement(); + int type = Worksheet::typeForTagName(entryElem.tagName()); + Q_ASSERT(type != 0); + + WorksheetEntry* entry = WorksheetEntry::create(type, worksheet()); + entry->setContent(entryElem, file); + entry->hide(); + + // set m_hidedSubentries to head element + if (!m_hidedSubentries) + m_hidedSubentries = entry; + + if (tail) + { + entry->setPrevious(tail); + tail->setNext(entry); + tail = entry; + } + else + { + entry->setPrevious(nullptr); + tail = entry; + } + } + } + + m_depth = (HierarchyLevel)content.attribute(QLatin1String("level")).toInt(); + m_hierarchyNumber = content.attribute(QLatin1String("level-number")).toInt(); + + updateFonts(true); +} + +void HierarchyEntry::setContentFromJupyter(const QJsonObject& cell) +{ + if (Cantor::JupyterUtils::isMarkdownCell(cell)) + { + QJsonObject cantorMetadata = Cantor::JupyterUtils::getCantorMetadata(cell); + m_textItem->setPlainText(cantorMetadata.value(QLatin1String("hierarchy_entry_content")).toString()); + + m_depth = (HierarchyLevel)cantorMetadata.value(QLatin1String("level")).toInt(); + m_hierarchyNumber= cantorMetadata.value(QLatin1String("level-number")).toInt(); + + updateFonts(true); + } +} + +QJsonValue HierarchyEntry::toJupyterJson() +{ + QTextDocument* doc = m_textItem->document(); + + QJsonObject metadata(jupyterMetadata()); + + QString entryData; + QString entryType; + + entryType = QLatin1String("markdown"); + + // Add raw text of entry to metadata, for situation when + // Cantor opens .ipynb converted from our .cws format + QJsonObject cantorMetadata; + + if (Settings::storeTextEntryFormatting()) + { + entryData = doc->toPlainText(); + + cantorMetadata.insert(QLatin1String("hierarchy_entry_content"), entryData); + } + else + entryData = doc->toPlainText(); + + cantorMetadata.insert(QLatin1String("level"), (int)m_depth); + cantorMetadata.insert(QLatin1String("level-number"), m_hierarchyNumber); + + // Don't store subentriesMainElem, because actually too complex + // Maybe this is a place for future work + + metadata.insert(Cantor::JupyterUtils::cantorMetadataKey, cantorMetadata); + + QJsonObject entry; + entry.insert(QLatin1String("cell_type"), entryType); + entry.insert(QLatin1String("metadata"), metadata); + Cantor::JupyterUtils::setSource(entry, entryData); + + return entry; +} + +bool HierarchyEntry::isConvertableToHierarchyEntry(const QJsonObject& cell) +{ + if (!Cantor::JupyterUtils::isMarkdownCell(cell)) + return false; + + QJsonObject cantorMetadata = Cantor::JupyterUtils::getCantorMetadata(cell); + const QJsonValue& textContentValue = cantorMetadata.value(QLatin1String("hierarchy_entry_content")); + + if (!textContentValue.isString()) + return false; + + const QString& textContent = textContentValue.toString(); + const QString& source = Cantor::JupyterUtils::getSource(cell); + + return textContent == source; +} + +QDomElement HierarchyEntry::toXml(QDomDocument& doc, KZip* archive) +{ + Q_UNUSED(archive); + QDomElement el = doc.createElement(QLatin1String("Hierarchy")); + + QDomElement textBodyEl = doc.createElement(QLatin1String("body")); + const QString& text = m_textItem->document()->toPlainText(); + textBodyEl.appendChild(doc.createTextNode(text)); + el.appendChild(textBodyEl); + + if(m_hidedSubentries) + { + QDomElement entriesElem = doc.createElement(QLatin1String("HidedSubentries")); + for (WorksheetEntry* entry = m_hidedSubentries; entry; entry = entry->next()) + entriesElem.appendChild(entry->toXml(doc, archive)); + el.appendChild(entriesElem); + } + + el.setAttribute(QLatin1String("level"), (int)m_depth); + el.setAttribute(QLatin1String("level-number"), m_hierarchyNumber); + + return el; +} + +QString HierarchyEntry::toPlain(const QString& commandSep, const QString& commentStartingSeq, const QString& commentEndingSeq) +{ + Q_UNUSED(commandSep); + + if (commentStartingSeq.isEmpty()) + return QString(); + + QString text = m_hierarchyLevelItem->toPlainText() + QLatin1String(" ") + m_textItem->toPlainText(); + if (!commentEndingSeq.isEmpty()) + return commentStartingSeq + text + commentEndingSeq + QLatin1String("\n"); + return commentStartingSeq + text.replace(QLatin1String("\n"), QLatin1String("\n") + commentStartingSeq) + QLatin1String("\n"); + +} + +bool HierarchyEntry::evaluate(EvaluationOption evalOp) +{ + emit hierarhyEntryNameChange(text(), hierarchyText(), ((int)m_depth)-1); + evaluateNext(evalOp); + + return true; +} + +void HierarchyEntry::updateEntry() +{ +} + +int HierarchyEntry::searchText(const QString& text, const QString& pattern, + QTextDocument::FindFlags qt_flags) +{ + Qt::CaseSensitivity caseSensitivity; + if (qt_flags & QTextDocument::FindCaseSensitively) + caseSensitivity = Qt::CaseSensitive; + else + caseSensitivity = Qt::CaseInsensitive; + + int position; + if (qt_flags & QTextDocument::FindBackward) + position = text.lastIndexOf(pattern, -1, caseSensitivity); + else + position = text.indexOf(pattern, 0, caseSensitivity); + + return position; +} + +WorksheetCursor HierarchyEntry::search(const QString& pattern, unsigned flags, + QTextDocument::FindFlags qt_flags, + const WorksheetCursor& pos) +{ + if (!(flags & WorksheetEntry::SearchText) || + (pos.isValid() && pos.entry() != this)) + return WorksheetCursor(); + + QTextCursor textCursor = m_textItem->search(pattern, qt_flags, pos); + + if (textCursor.isNull()) + return WorksheetCursor(); + else + return WorksheetCursor(this, m_textItem, textCursor); +} + + +void HierarchyEntry::layOutForWidth(qreal entry_zone_x, qreal w, bool force) +{ + if (size().width() == w && m_textItem->pos().x() == entry_zone_x && !force) + return; + + const qreal margin = worksheet()->isPrinting() ? 0 : RightMargin; + + m_hierarchyLevelItem->setPos(entry_zone_x - m_hierarchyLevelItem->width() - HorizontalSpacing, 0); + + m_textItem->setGeometry(entry_zone_x, 0, w - margin - entry_zone_x); + setSize(QSizeF(m_textItem->width() + margin + entry_zone_x, std::max(m_textItem->height(), m_hierarchyLevelItem->height()) + VerticalMargin)); +} + +bool HierarchyEntry::wantToEvaluate() +{ + return false; +} + +QString HierarchyEntry::text() const +{ + return m_textItem->toPlainText(); +} + +QString HierarchyEntry::hierarchyText() const +{ + return m_hierarchyLevelItem->toPlainText(); +} + +HierarchyEntry::HierarchyLevel HierarchyEntry::level() const +{ + return m_depth; +} + +void HierarchyEntry::setLevel(HierarchyEntry::HierarchyLevel depth) +{ + m_depth = depth; +} + +int HierarchyEntry::hierarchyNumber() const +{ + return m_hierarchyNumber; +} + +void HierarchyEntry::updateControlElementForHierarchy(qreal responsibilityZoneYEnd, int maxHierarchyDepth, bool haveSubElements) +{ + if (!m_hidedSubentries) + m_controlElement.isCollapsable = haveSubElements; + + qreal controlZoneStart = m_textItem->x() + m_textItem->width() + HorizontalSpacing; + qreal controlElemenXPos = controlZoneStart + static_cast(maxHierarchyDepth - (int)m_depth + 1) * (ControlElementWidth + ControlElementBorder); + + m_controlElement.setRect( + controlElemenXPos, 0, + ControlElementWidth, responsibilityZoneYEnd-y() + ); + m_controlElement.update(); + update(); +} + + +void HierarchyEntry::updateHierarchyLevel(std::vector& currectNumbers) +{ + HierarchyLevel nextLevel = (HierarchyLevel)(currectNumbers.size()+1); + if (m_depth >= nextLevel) + { + for (int i = (int)nextLevel; i <= (int)m_depth; i++) + currectNumbers.push_back(1); + m_hierarchyNumber = 1; + } + else + { + int idx = (int)m_depth - 1; + size_t size = currectNumbers.size(); + for (size_t i = (size_t)idx+1; i < size; i++) + currectNumbers.pop_back(); + currectNumbers[idx] += 1; + m_hierarchyNumber = currectNumbers[idx]; + } + + QString s; + Q_ASSERT(currectNumbers.size() != 0); + s += QString::number(currectNumbers.front()); + for (size_t i = 1U; i < currectNumbers.size(); i++) + s += QLatin1String(".") + QString::number(currectNumbers[i]); + + qreal previousWidth = m_hierarchyLevelItem->width(); + m_hierarchyLevelItem->setPlainText(s); + m_hierarchyLevelItem->setPos(m_hierarchyLevelItem->x() - (m_hierarchyLevelItem->width() - previousWidth), 0); + updateFonts(); +} + +qreal HierarchyEntry::hierarchyItemWidth() +{ + return m_hierarchyLevelItem->width() + HorizontalSpacing; +} + +void HierarchyEntry::setLevelTriggered(QAction* action) +{ + int idx = m_setLevelActionGroup->actions().indexOf(action); + m_depth = (HierarchyLevel)(idx + 1); + + worksheet()->updateHierarchyLayout(); + worksheet()->updateLayout(); +} + +void HierarchyEntry::recalculateControlGeometry() +{ + // do nothing, update the control elements will be done in ;;updateControlElementForHierarchy +} + +void HierarchyEntry::startDrag(QPointF grabPos) +{ + // We need reset entry cursor manually, because otherwise the entry cursor will be visible on dragable item + worksheet()->resetEntryCursor(); + + QDrag* drag = new QDrag(worksheetView()); + const qreal scale = worksheet()->renderer()->scale(); + + QRectF hierarchyBound(boundingRect().x(), boundingRect().y(), boundingRect().width(), m_controlElement.boundingRect().height()); + QSizeF hierarchyZoneSize(size().width(), m_controlElement.boundingRect().height()); + + QPixmap pixmap((hierarchyZoneSize*scale).toSize()); + pixmap.fill(QColor(255, 255, 255, 0)); + + QPainter painter(&pixmap); + const QRectF sceneRect = mapRectToScene(hierarchyBound); + worksheet()->render(&painter, pixmap.rect(), sceneRect); + painter.end(); + + QBitmap mask = pixmap.createMaskFromColor(QColor(255, 255, 255), Qt::MaskInColor); + pixmap.setMask(mask); + + drag->setPixmap(pixmap); + if (grabPos.isNull()) { + const QPointF scenePos = worksheetView()->sceneCursorPos(); + drag->setHotSpot((mapFromScene(scenePos) * scale).toPoint()); + } else { + drag->setHotSpot((grabPos * scale).toPoint()); + } + drag->setMimeData(new QMimeData()); + + worksheet()->startDragWithHierarchy(this, drag, hierarchyZoneSize); +} + +void HierarchyEntry::updateFonts(bool force) +{ + QFont font; + switch(m_depth) + { + case HierarchyLevel::Chapter: + font = Settings::chapterFontFamily(); + font.setPointSize(Settings::chapterFontSize()); + font.setItalic(Settings::chapterFontItalic()); + font.setBold(Settings::chapterFontBold()); + break; + + case HierarchyLevel::Subchapter: + font = Settings::subchapterFontFamily(); + font.setPointSize(Settings::subchapterFontSize()); + font.setItalic(Settings::subchapterFontItalic()); + font.setBold(Settings::subchapterFontBold()); + break; + + case HierarchyLevel::Section: + font = Settings::sectionFontFamily(); + font.setPointSize(Settings::sectionFontSize()); + font.setItalic(Settings::sectionFontItalic()); + font.setBold(Settings::sectionFontBold()); + break; + + case HierarchyLevel::Subsection: + font = Settings::subsectionFontFamily(); + font.setPointSize(Settings::subsectionFontSize()); + font.setItalic(Settings::subsectionFontItalic()); + font.setBold(Settings::subsectionFontBold()); + break; + + case HierarchyLevel::Paragraph: + font = Settings::paragraphFontFamily(); + font.setPointSize(Settings::paragraphFontSize()); + font.setItalic(Settings::paragraphFontItalic()); + font.setBold(Settings::paragraphFontBold()); + break; + + case HierarchyLevel::Subparagraph: + font = Settings::subparagraphFontFamily(); + font.setPointSize(Settings::subparagraphFontSize()); + font.setItalic(Settings::subparagraphFontItalic()); + font.setBold(Settings::subparagraphFontBold()); + break; + + default: + Q_ASSERT(false); + break; + } + + const QFont& currectFont = m_textItem->font(); + bool isSameFont = + currectFont.family() == font.family() + && currectFont.pointSize() == font.pointSize() + && currectFont.bold() == font.bold() + && currectFont.italic() == font.italic(); + + if (force || !isSameFont) + { + m_hierarchyLevelItem->setFont(font); + m_hierarchyLevelItem->testSize(); + + m_textItem->setFont(font); + // And update current text of item + QTextCursor cursor = m_textItem->textCursor(); + cursor.select(QTextCursor::Document); + QTextCharFormat format = cursor.charFormat(); + format.setFont(font); + cursor.setCharFormat(format); + m_textItem->testSize(); + + // Recalculate size (because it can changed due font changes) and update worksheet layout + recalculateSize(); + worksheet()->updateEntrySize(this); + } +} + + +void HierarchyEntry::handleControlElementDoubleClick() +{ + qDebug() << "HierarchyEntry::handleControlElementDoubleClick"; + if (m_controlElement.isCollapsed) + { + worksheet()->insertSubentriesForHierarchy(this, m_hidedSubentries); + m_controlElement.isCollapsed = false; + } + else + { + m_hidedSubentries = worksheet()->cutSubentriesForHierarchy(this); + m_controlElement.isCollapsed = true; + } + + m_controlElement.update(); + + worksheet()->updateLayout(); + worksheet()->updateHierarchyLayout(); +} + +void HierarchyEntry::updateAfterSettingsChanges() +{ + updateFonts(); +} diff --git a/src/hierarchyentry.h b/src/hierarchyentry.h new file mode 100644 index 0000000..247896e --- /dev/null +++ b/src/hierarchyentry.h @@ -0,0 +1,110 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Nikita Sirgienko +*/ + +#ifndef HIEARARCHYENTRY_H +#define HIEARARCHYENTRY_H + +#include +#include +#include +#include + +#include "worksheetentry.h" +#include "worksheettextitem.h" + +class QActionGroup; +class QMenu; + +class HierarchyEntry : public WorksheetEntry +{ + Q_OBJECT + public: + // Should be plane and int: "1, 2, 3", but not "1, 2, 4" + enum class HierarchyLevel { + Chapter = 1, + Subchapter = 2, + Section = 3, + Subsection = 4, + Paragraph = 5, + Subparagraph = 6, + + EndValue = 7 + }; + + explicit HierarchyEntry(Worksheet* worksheet); + ~HierarchyEntry() override; + + enum {Type = UserType + 9}; + int type() const override; + + QString text() const; + QString hierarchyText() const; + + HierarchyLevel level() const; + void setLevel(HierarchyLevel); + int hierarchyNumber() const; + + void updateHierarchyLevel(std::vector& currectNumbers); + qreal hierarchyItemWidth(); + + void updateControlElementForHierarchy(qreal responsibilityZoneYEnd, int maxHierarchyDepth, bool haveSubElements); + + bool isEmpty() override; + + bool acceptRichText() override; + + bool focusEntry(int pos = WorksheetTextItem::TopLeft, qreal xCoord=0) override; + + void setContent(const QString& content) override; + void setContent(const QDomElement& content, const KZip& file) override; + void setContentFromJupyter(const QJsonObject& cell) override; + static bool isConvertableToHierarchyEntry(const QJsonObject& cell); + + QDomElement toXml(QDomDocument& doc, KZip* archive) override; + QJsonValue toJupyterJson() override; + QString toPlain(const QString& commandSep, const QString& commentStartingSeq, const QString& commentEndingSeq) override; + + void layOutForWidth(qreal entry_zone_x, qreal w, bool force = false) override; + + int searchText(const QString& text, const QString& pattern, + QTextDocument::FindFlags qt_flags); + WorksheetCursor search(const QString& pattern, unsigned flags, + QTextDocument::FindFlags qt_flags, + const WorksheetCursor& pos = WorksheetCursor()) override; + + void startDrag(QPointF grabPos = QPointF()) override; + + Q_SIGNALS: + void hierarhyEntryNameChange(QString name, QString searchName, int depth); + + public Q_SLOTS: + bool evaluate(WorksheetEntry::EvaluationOption evalOp = FocusNext) override; + void updateEntry() override; + void populateMenu(QMenu* menu, QPointF pos) override; + void handleControlElementDoubleClick(); + void updateAfterSettingsChanges() override; + + protected: + bool wantToEvaluate() override; + void recalculateControlGeometry() override; + + private Q_SLOTS: + void setLevelTriggered(QAction*); + + private: + void updateFonts(bool force = false); + + private: + + WorksheetTextItem* m_hierarchyLevelItem; + WorksheetTextItem* m_textItem; + HierarchyLevel m_depth; + int m_hierarchyNumber; + QActionGroup* m_setLevelActionGroup; + QMenu* m_setLevelMenu; + WorksheetEntry* m_hidedSubentries; +}; + +#endif // HIEARARCHYENTRY_H diff --git a/src/horizontalruleentry.cpp b/src/horizontalruleentry.cpp new file mode 100644 index 0000000..3289532 --- /dev/null +++ b/src/horizontalruleentry.cpp @@ -0,0 +1,361 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Sirgienko Nikita +*/ + +#include "horizontalruleentry.h" + +#include +#include +#include +#include +#include + +#include + +#include + +const qreal HorizontalRuleEntry::LineVerticalMargin = 10; + +const QString HorizontalRuleEntry::styleNames[] = {i18n("Solid Line Style"), i18n("Dash Line Style"), i18n("Dot Line Style"), i18n("Dash Dot Line Style"), i18n("Dash Dot Dot Line Style")}; +const Qt::PenStyle HorizontalRuleEntry::styles[] = {Qt::SolidLine, Qt::DashLine, Qt::DotLine, Qt::DashDotLine, Qt::DashDotDotLine}; + +HorizontalRuleEntry::HorizontalRuleEntry(Worksheet* worksheet) + : WorksheetEntry(worksheet), m_type(LineType::Medium), m_color(QApplication::palette().color(QPalette::Text)), m_entry_zone_offset_x(0), m_width(0), m_style(Qt::SolidLine), + m_menusInitialized(false), m_lineTypeActionGroup(nullptr), m_lineTypeMenu(nullptr), m_lineColorCustom(false), m_lineColorActionGroup(nullptr), m_lineColorMenu(nullptr), + m_lineStyleActionGroup(nullptr), m_lineStyleMenu(nullptr) +{ +} + +HorizontalRuleEntry::~HorizontalRuleEntry() +{ + if (m_menusInitialized) + { + m_lineColorActionGroup->deleteLater(); + m_lineColorMenu->deleteLater(); + m_lineTypeActionGroup->deleteLater(); + m_lineTypeMenu->deleteLater(); + m_lineStyleActionGroup->deleteLater(); + m_lineStyleMenu->deleteLater(); + } +} + +int HorizontalRuleEntry::type() const +{ + return Type; +} + +void HorizontalRuleEntry::setLineType(HorizontalRuleEntry::LineType type) +{ + m_type = type; + + setSize(QSizeF(m_width, lineWidth(m_type) + 2*LineVerticalMargin)); +} + +int HorizontalRuleEntry::lineWidth(HorizontalRuleEntry::LineType type) +{ + return type == LineType::Thick ? 4 : ((int)type) + 1; +} + +void HorizontalRuleEntry::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + Q_UNUSED(option); + Q_UNUSED(widget); + + painter->setPen(QPen(m_color, lineWidth(m_type), m_style)); + + const qreal margin = worksheet()->isPrinting() ? 0 : RightMargin; + + painter->drawLine(m_entry_zone_offset_x, LineVerticalMargin, m_width - margin, LineVerticalMargin); +} + +bool HorizontalRuleEntry::isEmpty() +{ + return true; +} + +bool HorizontalRuleEntry::acceptRichText() +{ + return false; +} + +void HorizontalRuleEntry::setContent(const QString&) +{ +} + +void HorizontalRuleEntry::setContent(const QDomElement& content, const KZip& archive) +{ + Q_UNUSED(archive); + + m_type = (LineType)(content.attribute(QLatin1String("thickness"), QString::number((int)LineType::Medium)).toInt()); + m_style = (Qt::PenStyle)(content.attribute(QLatin1String("style"), QString::number((int)Qt::SolidLine)).toInt()); + + QDomElement backgroundElem = content.firstChildElement(QLatin1String("lineColor")); + if (!backgroundElem.isNull()) + { + m_color.setRed(backgroundElem.attribute(QLatin1String("red")).toInt()); + m_color.setGreen(backgroundElem.attribute(QLatin1String("green")).toInt()); + m_color.setBlue(backgroundElem.attribute(QLatin1String("blue")).toInt()); + m_lineColorCustom = true; + } +} + +void HorizontalRuleEntry::setContentFromJupyter(const QJsonObject& cell) +{ + QJsonObject cantorMetadata = Cantor::JupyterUtils::getCantorMetadata(cell); + QJsonValue typeValue = cantorMetadata.value(QLatin1String("type")); + if (typeValue.isDouble()) + setLineType(static_cast(static_cast(typeValue.toDouble()))); + + QJsonValue styleValue = cantorMetadata.value(QLatin1String("style")); + if (styleValue.isDouble()) + m_style = static_cast(static_cast(styleValue.toDouble())); + + QJsonValue colorValue = cantorMetadata.value(QLatin1String("lineColor")); + if (colorValue.isObject()) + { + m_color.setRed(colorValue.toObject().value(QLatin1String("red")).toInt()); + m_color.setGreen(colorValue.toObject().value(QLatin1String("green")).toInt()); + m_color.setBlue(colorValue.toObject().value(QLatin1String("blue")).toInt()); + m_lineColorCustom = true; + } + + setJupyterMetadata(Cantor::JupyterUtils::getMetadata(cell)); +} + +QJsonValue HorizontalRuleEntry::toJupyterJson() +{ + QJsonObject entry; + + entry.insert(QLatin1String("cell_type"), QLatin1String("markdown")); + QJsonObject metadata(jupyterMetadata()); + + QJsonObject cantor; + cantor.insert(QLatin1String("type"), m_type); + cantor.insert(QLatin1String("style"), m_style); + + if (m_lineColorCustom) + { + QJsonObject color; + color.insert(QLatin1String("red"), m_color.red()); + color.insert(QLatin1String("green"), m_color.green()); + color.insert(QLatin1String("blue"), m_color.blue()); + cantor.insert(QLatin1String("lineColor"), color); + } + + metadata.insert(Cantor::JupyterUtils::cantorMetadataKey, cantor); + + entry.insert(Cantor::JupyterUtils::metadataKey, metadata); + + Cantor::JupyterUtils::setSource(entry, QLatin1String("----")); + return entry; +} + + +QDomElement HorizontalRuleEntry::toXml(QDomDocument& doc, KZip* archive) +{ + Q_UNUSED(archive); + + QDomElement el = doc.createElement(QLatin1String("HorizontalRule")); + el.setAttribute(QLatin1String("thickness"), (int)m_type); + el.setAttribute(QLatin1String("style"), (int)m_style); + + if (m_lineColorCustom) + { + QColor backgroundColor = m_color; + QDomElement colorElem = doc.createElement( QLatin1String("lineColor") ); + colorElem.setAttribute(QLatin1String("red"), QString::number(backgroundColor.red())); + colorElem.setAttribute(QLatin1String("green"), QString::number(backgroundColor.green())); + colorElem.setAttribute(QLatin1String("blue"), QString::number(backgroundColor.blue())); + el.appendChild(colorElem); + } + + return el; +} + +QString HorizontalRuleEntry::toPlain(const QString&, const QString&, const QString&){ + return QString(); +} + +void HorizontalRuleEntry::layOutForWidth(qreal entry_zone_x, qreal w, bool force) +{ + Q_UNUSED(force); + + m_entry_zone_offset_x = entry_zone_x; + m_width = w; + + setSize(QSizeF(w, lineWidth(m_type) + 2*LineVerticalMargin)); +} + +bool HorizontalRuleEntry::evaluate(EvaluationOption evalOp) +{ + evaluateNext(evalOp); + return true; +} + +void HorizontalRuleEntry::updateEntry() +{ +} + +bool HorizontalRuleEntry::wantToEvaluate() +{ + return false; +} + +void HorizontalRuleEntry::changeSize(QSizeF s) +{ + if (!worksheet()->animationsEnabled()) { + setSize(s); + worksheet()->updateEntrySize(this); + return; + } + if (aboutToBeRemoved()) + return; + + if (animationActive()) + endAnimation(); + + QPropertyAnimation* sizeAn = sizeChangeAnimation(s); + + sizeAn->setEasingCurve(QEasingCurve::InOutQuad); + sizeAn->start(QAbstractAnimation::DeleteWhenStopped); +} + +void HorizontalRuleEntry::populateMenu(QMenu* menu, QPointF pos) +{ + if (!m_menusInitialized) + { + initMenus(); + m_menusInitialized = true; + } + + menu->addMenu(m_lineTypeMenu); + menu->addMenu(m_lineColorMenu); + menu->addMenu(m_lineStyleMenu); + WorksheetEntry::populateMenu(menu, pos); +} + +void HorizontalRuleEntry::lineTypeChanged(QAction* action) +{ + int index = m_lineTypeActionGroup->actions().indexOf(action); + setLineType((LineType)(index % LineType::Count)); +} + +bool HorizontalRuleEntry::isConvertableToHorizontalRuleEntry(const QJsonObject& cell) +{ + if (!Cantor::JupyterUtils::isMarkdownCell(cell)) + return false; + + const QString& trimmedSource = Cantor::JupyterUtils::getSource(cell).trimmed(); + + int sourceLength = trimmedSource.length(); + if (sourceLength < 3) + return false; + + int hyphensCount = trimmedSource.count(QLatin1Char('-')); + int asteriksCount = trimmedSource.count(QLatin1Char('*')); + int underscoreCount = trimmedSource.count(QLatin1Char('_')); + + return sourceLength == hyphensCount || sourceLength == asteriksCount || sourceLength == underscoreCount; +} + +void HorizontalRuleEntry::lineColorChanged(QAction* action) { + int index = m_lineColorActionGroup->actions().indexOf(action); + if (index == -1 || index>=colorsCount) + index = 0; + + if (index == 0) + { + m_color = QApplication::palette().color(QPalette::Text); + m_lineColorCustom = false; + } + else + { + m_color = colors[index-1]; + m_lineColorCustom = true; + } + update(); +} + +void HorizontalRuleEntry::lineStyleChanged(QAction* action) +{ + unsigned int index = static_cast(m_lineStyleActionGroup->actions().indexOf(action)); + if (index > 0 && index < styleCount) + { + m_style = styles[index]; + update(); + } +} + + +void HorizontalRuleEntry::initMenus() +{ + m_lineTypeActionGroup = new QActionGroup(this); + m_lineTypeActionGroup->setExclusive(true); + connect(m_lineTypeActionGroup, &QActionGroup::triggered, this, &HorizontalRuleEntry::lineTypeChanged); + + m_lineTypeMenu = new QMenu(i18n("Line Thickness")); + + QAction* action = new QAction(i18n("Thin"), m_lineTypeActionGroup); + action->setCheckable(true); + m_lineTypeMenu->addAction(action); + + action = new QAction(i18n("Medium"), m_lineTypeActionGroup); + action->setCheckable(true); + m_lineTypeMenu->addAction(action); + + action = new QAction(i18n("Thick"), m_lineTypeActionGroup); + action->setCheckable(true); + m_lineTypeMenu->addAction(action); + + // Set default menu value + m_lineTypeActionGroup->actions()[(int)m_type]->setChecked(true); + + + + m_lineColorActionGroup = new QActionGroup(this); + m_lineColorActionGroup->setExclusive(true); + connect(m_lineColorActionGroup, &QActionGroup::triggered, this, &HorizontalRuleEntry::lineColorChanged); + + m_lineColorMenu = new QMenu(i18n("Line Color")); + m_lineColorMenu->setIcon(QIcon::fromTheme(QLatin1String("format-fill-color"))); + + QPixmap pix(16,16); + QPainter p(&pix); + + // Create default action + p.fillRect(pix.rect(), QApplication::palette().color(QPalette::Text)); + action = new QAction(QIcon(pix), i18n("Default"), m_lineColorActionGroup); + action->setCheckable(true); + m_lineColorMenu->addAction(action); + if (!m_lineColorCustom) + action->setChecked(true); + + + for (int i=0; isetCheckable(true); + m_lineColorMenu->addAction(action); + + if (m_lineColorCustom && m_color == colors[i]) + action->setChecked(true); + } + + + + m_lineStyleActionGroup = new QActionGroup(this); + m_lineStyleActionGroup->setExclusive(true); + connect(m_lineStyleActionGroup, &QActionGroup::triggered, this, &HorizontalRuleEntry::lineStyleChanged); + + m_lineStyleMenu = new QMenu(i18n("Line Style")); + + for (unsigned int i = 0; i < styleCount; i++) + { + action = new QAction(styleNames[i], m_lineStyleActionGroup); + action->setCheckable(true); + m_lineStyleMenu->addAction(action); + if (styles[i] == m_style) + action->setChecked(true); + } +} diff --git a/src/horizontalruleentry.h b/src/horizontalruleentry.h new file mode 100644 index 0000000..0eee35f --- /dev/null +++ b/src/horizontalruleentry.h @@ -0,0 +1,82 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Sirgienko Nikita +*/ + +#ifndef HORIZONTALLINEENTRY_H +#define HORIZONTALLINEENTRY_H + +#include "worksheetentry.h" + +class HorizontalRuleEntry : public WorksheetEntry +{ + public: + enum LineType {Thin = 0, Medium = 1, Thick = 2, Count = 3}; + + HorizontalRuleEntry(Worksheet* worksheet); + ~HorizontalRuleEntry() override; + + enum {Type = UserType + 8}; + int type() const override; + + void setLineType(LineType type); + void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = nullptr) override; + + static bool isConvertableToHorizontalRuleEntry(const QJsonObject& cell); + + bool isEmpty() override; + bool acceptRichText() override; + void setContent(const QString&) override; + void setContent(const QDomElement&, const KZip&) override; + void setContentFromJupyter(const QJsonObject & cell) override; + QDomElement toXml(QDomDocument&, KZip*) override; + QJsonValue toJupyterJson() override; + QString toPlain(const QString&, const QString&, const QString&) override; + void layOutForWidth(qreal entry_zone_x, qreal w, bool force = false) override; + void populateMenu(QMenu* menu, QPointF pos) override; + + public Q_SLOTS: + bool evaluate(WorksheetEntry::EvaluationOption evalOp = FocusNext) override; + void updateEntry() override; + + void changeSize(QSizeF s); + + protected: + bool wantToEvaluate() override; + + private: + static int lineWidth(LineType type); + void initMenus(); + + private Q_SLOTS: + void lineTypeChanged(QAction* action); + void lineColorChanged(QAction* action); + void lineStyleChanged(QAction* action); + + public: + static const qreal LineVerticalMargin; + static constexpr unsigned int styleCount = 5; + static const QString styleNames[styleCount]; + static const Qt::PenStyle styles[styleCount]; + + private: + LineType m_type; + QColor m_color; + qreal m_entry_zone_offset_x; + qreal m_width; + Qt::PenStyle m_style; + + bool m_menusInitialized; + + QActionGroup* m_lineTypeActionGroup; + QMenu* m_lineTypeMenu; + bool m_lineColorCustom; + + QActionGroup* m_lineColorActionGroup; + QMenu* m_lineColorMenu; + + QActionGroup* m_lineStyleActionGroup; + QMenu* m_lineStyleMenu; +}; + +#endif //HORIZONTALLINEENTRY_H diff --git a/src/imageentry.cpp b/src/imageentry.cpp new file mode 100644 index 0000000..ac9c2ab --- /dev/null +++ b/src/imageentry.cpp @@ -0,0 +1,408 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 martin Kuettler +*/ + +#include "imageentry.h" +#include "actionbar.h" +#include "worksheetimageitem.h" +#include "worksheetview.h" +#include "lib/jupyterutils.h" + +#include +#include +#include +#include +#include +#include + +#include +#include + +ImageEntry::ImageEntry(Worksheet* worksheet) : WorksheetEntry(worksheet) +{ + m_imageItem = nullptr; + m_textItem = new WorksheetTextItem(this); + m_imageWatcher = new QFileSystemWatcher(this); + m_displaySize.width = -1; + m_displaySize.height = -1; + m_printSize.width = -1; + m_printSize.height = -1; + m_displaySize.widthUnit = ImageSize::Auto; + m_displaySize.heightUnit = ImageSize::Auto; + m_printSize.widthUnit = ImageSize::Auto; + m_printSize.heightUnit = ImageSize::Auto; + m_useDisplaySizeForPrinting = true; + connect(m_imageWatcher, &QFileSystemWatcher::fileChanged, this, &ImageEntry::updateEntry); + + setFlag(QGraphicsItem::ItemIsFocusable); + updateEntry(); +} + +void ImageEntry::populateMenu(QMenu* menu, QPointF pos) +{ + WorksheetEntry::populateMenu(menu, pos); + auto* firstAction = menu->actions().at(0); + + auto* action = new QAction(QIcon::fromTheme(QLatin1String("configure")), i18n("Configure Image")); + menu->insertAction(firstAction, action); + connect(action, &QAction::triggered, this, &ImageEntry::startConfigDialog); + menu->insertSeparator(firstAction); +} + +bool ImageEntry::isEmpty() +{ + return false; +} + +int ImageEntry::type() const +{ + return Type; +} + +bool ImageEntry::acceptRichText() +{ + return false; +} + +void ImageEntry::setContent(const QString& content) +{ + Q_UNUSED(content); + return; +} + +void ImageEntry::setContent(const QDomElement& content, const KZip& file) +{ + Q_UNUSED(file); + + QDomElement fileName = content.firstChildElement(QLatin1String("FileName")); + if (!fileName.isNull()) { + m_fileName = fileName.text(); + + const KArchiveEntry* imageEntry = file.directory()->entry(m_fileName); + if (imageEntry && imageEntry->isFile()) + { + const KArchiveFile* imageFile = static_cast(imageEntry); + const QString& dir = QStandardPaths::writableLocation(QStandardPaths::TempLocation); + imageFile->copyTo(dir); + } + } + + static QStringList unitNames; + if (unitNames.isEmpty()) + unitNames << QLatin1String("(auto)") << QLatin1String("px") << QLatin1String("%"); + + QDomElement pathElement = content.firstChildElement(QLatin1String("Path")); + QDomElement displayElement = content.firstChildElement(QLatin1String("Display")); + QDomElement printElement = content.firstChildElement(QLatin1String("Print")); + m_imagePath = pathElement.text(); + m_displaySize.width = displayElement.attribute(QLatin1String("width")).toDouble(); + m_displaySize.height = displayElement.attribute(QLatin1String("height")).toDouble(); + m_displaySize.widthUnit = unitNames.indexOf(displayElement.attribute(QLatin1String("widthUnit"))); + m_displaySize.heightUnit = unitNames.indexOf(displayElement.attribute(QLatin1String("heightUnit"))); + m_useDisplaySizeForPrinting = printElement.attribute(QLatin1String("useDisplaySize")).toInt(); + m_printSize.width = printElement.attribute(QLatin1String("width")).toDouble(); + m_printSize.height = printElement.attribute(QLatin1String("height")).toDouble(); + m_printSize.widthUnit = unitNames.indexOf(printElement.attribute(QLatin1String("widthUnit"))); + m_printSize.heightUnit = unitNames.indexOf(printElement.attribute(QLatin1String("heightUnit"))); + updateEntry(); +} + +void ImageEntry::setContentFromJupyter(const QJsonObject& cell) +{ + // No need use ImageEntry because without file this entry type are useless + Q_UNUSED(cell); + return; +} + +QJsonValue ImageEntry::toJupyterJson() +{ + QJsonValue value; + + if (!m_imagePath.isEmpty() && m_imageItem) + { + const QImage& image = m_imageItem->pixmap().toImage(); + if (!image.isNull()) + { + QJsonObject entry; + entry.insert(QLatin1String("cell_type"), QLatin1String("markdown")); + + QJsonObject metadata; + QJsonObject size; + size.insert(QLatin1String("width"), image.size().width()); + size.insert(QLatin1String("height"), image.size().height()); + metadata.insert(Cantor::JupyterUtils::pngMime, size); + entry.insert(Cantor::JupyterUtils::metadataKey, metadata); + + QString text(QLatin1String("")); + + QJsonObject attachments; + attachments.insert(QLatin1String("image.png"), Cantor::JupyterUtils::packMimeBundle(image, Cantor::JupyterUtils::pngMime)); + entry.insert(QLatin1String("attachments"), attachments); + + Cantor::JupyterUtils::setSource(entry, text); + + value = entry; + } + } + + return value; +} + +QDomElement ImageEntry::toXml(QDomDocument& doc, KZip* archive) +{ + Q_UNUSED(archive); + + static QStringList unitNames; + if (unitNames.isEmpty()) + unitNames << QLatin1String("(auto)") << QLatin1String("px") << QLatin1String("%"); + + archive->addLocalFile(m_imagePath, QUrl::fromLocalFile(m_imagePath).fileName()); + + QDomElement image = doc.createElement(QLatin1String("Image")); + QDomElement path = doc.createElement(QLatin1String("Path")); + QDomElement fileName = doc.createElement(QLatin1String("FileName")); + QDomText pathText = doc.createTextNode(m_imagePath); + QDomText fileNameText = doc.createTextNode(QUrl::fromLocalFile(m_imagePath).fileName()); + path.appendChild(pathText); + fileName.appendChild(fileNameText); + image.appendChild(fileName); + image.appendChild(path); + + QDomElement display = doc.createElement(QLatin1String("Display")); + display.setAttribute(QLatin1String("width"), m_displaySize.width); + display.setAttribute(QLatin1String("widthUnit"), unitNames[m_displaySize.widthUnit]); + display.setAttribute(QLatin1String("height"), m_displaySize.height); + display.setAttribute(QLatin1String("heightUnit"), unitNames[m_displaySize.heightUnit]); + image.appendChild(display); + + QDomElement print = doc.createElement(QLatin1String("Print")); + print.setAttribute(QLatin1String("useDisplaySize"), m_useDisplaySizeForPrinting); + print.setAttribute(QLatin1String("width"), m_printSize.width); + print.setAttribute(QLatin1String("widthUnit"), unitNames[m_printSize.widthUnit]); + print.setAttribute(QLatin1String("height"), m_printSize.height); + print.setAttribute(QLatin1String("heightUnit"), unitNames[m_printSize.heightUnit]); + image.appendChild(print); + + // For the conversion to latex + QDomElement latexSize = doc.createElement(QLatin1String("LatexSizeString")); + QString sizeString; + if (m_useDisplaySizeForPrinting) + sizeString = latexSizeString(m_displaySize); + else + sizeString = latexSizeString(m_printSize); + QDomText latexSizeString = doc.createTextNode(sizeString); + latexSize.appendChild(latexSizeString); + image.appendChild(latexSize); + + return image; +} + +QString ImageEntry::toPlain(const QString& commandSep, const QString& commentStartingSeq, const QString& commentEndingSeq) +{ + Q_UNUSED(commandSep); + + return commentStartingSeq + QLatin1String("image: ") + m_imagePath + commentEndingSeq; +} + +QString ImageEntry::latexSizeString(const ImageSize& imgSize) +{ + // We use the transformation 1 px = 1/72 in ( = 1 pt in Latex) + + QString sizeString=QLatin1String(""); + if (imgSize.widthUnit == ImageSize::Auto && + imgSize.heightUnit == ImageSize::Auto) + return QLatin1String(""); + + if (imgSize.widthUnit == ImageSize::Percent) { + if (imgSize.heightUnit == ImageSize::Auto || + (imgSize.heightUnit == ImageSize::Percent && + imgSize.width == imgSize.height)) + return QLatin1String("[scale=") + QString::number(imgSize.width / 100) + QLatin1String("]"); + // else? We could set the size based on the actual image size + } else if (imgSize.widthUnit == ImageSize::Auto && + imgSize.heightUnit == ImageSize::Percent) { + return QLatin1String("[scale=") + QString::number(imgSize.height / 100) + QLatin1String("]"); + } + + if (imgSize.heightUnit == ImageSize::Pixel) + sizeString = QLatin1String("height=") + QString::number(imgSize.height) + QLatin1String("pt"); + if (imgSize.widthUnit == ImageSize::Pixel) { + if (!sizeString.isEmpty()) + sizeString += QLatin1String(","); + sizeString += QLatin1String("width=") + QString::number(imgSize.width) + QLatin1String("pt"); + } + return QLatin1String("[") + sizeString + QLatin1String("]"); +} + +bool ImageEntry::evaluate(EvaluationOption evalOp) +{ + evaluateNext(evalOp); + return true; +} + +qreal ImageEntry::height() +{ + if (m_imageItem && m_imageItem->isVisible()) + return m_imageItem->height(); + else + return m_textItem->height(); +} + +void ImageEntry::updateEntry() +{ + qreal oldHeight = height(); + if (m_imagePath.isEmpty()) { + m_textItem->setPlainText(i18n("Double click here to configure image settings")); + m_textItem->setVisible(true); + if (m_imageItem) + m_imageItem->setVisible(false); + } + + else { + if (!m_imageItem) + m_imageItem = new WorksheetImageItem(this); + + // This if-else block was used for backward compability for *cws files + // without FileName tag. After some releases from 20.08 version, it will + // be possible to remove the else part and strip the m_imagePath from the + // code and Path tag from the CWS format + if (!m_fileName.isNull()) { + QString imagePath = QStandardPaths::writableLocation(QStandardPaths::TempLocation) + QDir::separator() + m_fileName; + if (imagePath.endsWith(QLatin1String(".eps"), Qt::CaseInsensitive)) { + m_imageItem->setEps(QUrl::fromLocalFile(imagePath)); + } else { + QImage img(imagePath); + m_imageItem->setImage(img); + } + } else { + if (m_imagePath.endsWith(QLatin1String(".eps"), Qt::CaseInsensitive)) { + m_imageItem->setEps(QUrl::fromLocalFile(m_imagePath)); + } else { + QImage img(m_imagePath); + m_imageItem->setImage(img); + } + } + + if (!m_imageItem->imageIsValid()) { + const QString msg = i18n("Cannot load image %1", m_imagePath); + m_textItem->setPlainText(msg); + m_textItem->setVisible(true); + m_imageItem->setVisible(false); + } else { + QSizeF size; + if (worksheet()->isPrinting() && ! m_useDisplaySizeForPrinting) + size = imageSize(m_printSize); + else + size = imageSize(m_displaySize); + // Hack: Eps images need to be scaled + if (m_imagePath.endsWith(QLatin1String(".eps"), Qt::CaseInsensitive)) + size /= worksheet()->renderer()->scale(); + m_imageItem->setSize(size); + m_textItem->setVisible(false); + m_imageItem->setVisible(true); + } + } + + if (oldHeight != height()) + recalculateSize(); +} + +QSizeF ImageEntry::imageSize(const ImageSize& imgSize) +{ + const QSize& srcSize = m_imageItem->imageSize(); + qreal w = 0.0; + qreal h = 0.0; + if (imgSize.heightUnit == ImageSize::Percent) + h = srcSize.height() * imgSize.height / 100; + else if (imgSize.heightUnit == ImageSize::Pixel) + h = imgSize.height; + if (imgSize.widthUnit == ImageSize::Percent) + w = srcSize.width() * imgSize.width / 100; + else if (imgSize.widthUnit == ImageSize::Pixel) + w = imgSize.width; + + if (imgSize.widthUnit == ImageSize::Auto) { + if (imgSize.heightUnit == ImageSize::Auto) + return QSizeF(srcSize.width(), srcSize.height()); + else if (h == 0) + w = 0; + else + w = h / srcSize.height() * srcSize.width(); + } else if (imgSize.heightUnit == ImageSize::Auto) { + if (w == 0) + h = 0; + else + h = w / srcSize.width() * srcSize.height(); + } + + return QSizeF(w,h); +} + +void ImageEntry::startConfigDialog() +{ + ImageSettingsDialog* dialog = new ImageSettingsDialog(worksheet()->worksheetView()); + dialog->setData(m_imagePath, m_displaySize, m_printSize, + m_useDisplaySizeForPrinting); + connect(dialog, &ImageSettingsDialog::dataChanged, this, &ImageEntry::setImageData); + dialog->show(); +} + +void ImageEntry::setImageData(const QString& path, + const ImageSize& displaySize, + const ImageSize& printSize, + bool useDisplaySizeForPrinting) +{ + if (path != m_imagePath) { + m_imageWatcher->removePath(m_imagePath); + m_imageWatcher->addPath(path); + m_imagePath = path; + } + + m_displaySize = displaySize; + m_printSize = printSize; + m_useDisplaySizeForPrinting = useDisplaySizeForPrinting; + + updateEntry(); +} + +void ImageEntry::addActionsToBar(ActionBar* actionBar) +{ + actionBar->addButton(QIcon::fromTheme(QLatin1String("configure")), i18n("Configure Image"), + this, SLOT(startConfigDialog())); +} + +void ImageEntry::layOutForWidth(qreal entry_zone_x, qreal w, bool force) +{ + if (size().width() == w && m_textItem->pos().x() == entry_zone_x && !force) + return; + + //TODO somethinkg wrong with geometry and control element: control element appears in wrong place + const qreal margin = worksheet()->isPrinting() ? 0 : RightMargin; + + double width; + if (m_imageItem && m_imageItem->isVisible()) { + m_imageItem->setGeometry(entry_zone_x, 0, w - margin - entry_zone_x, true); + width = m_imageItem->width(); + } else { + m_textItem->setGeometry(entry_zone_x, 0, w - margin - entry_zone_x, true); + width = m_textItem->width(); + } + + setSize(QSizeF(width + margin + entry_zone_x, height() + VerticalMargin)); +} + +bool ImageEntry::wantToEvaluate() +{ + return false; +} + +bool ImageEntry::wantFocus() +{ + return false; +} + +void ImageEntry::mouseDoubleClickEvent(QGraphicsSceneMouseEvent*) +{ + startConfigDialog(); +} diff --git a/src/imageentry.h b/src/imageentry.h new file mode 100644 index 0000000..70258c6 --- /dev/null +++ b/src/imageentry.h @@ -0,0 +1,74 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#ifndef IMAGEENTRY_H +#define IMAGEENTRY_H + +#include "worksheetentry.h" +#include "imagesettingsdialog.h" + +#include + +class Worksheet; +class ActionBar; +class WorksheetImageItem; +class QFileSystemWatcher; +class QGraphicsSceneMouseEvent; + +class ImageEntry : public WorksheetEntry +{ + Q_OBJECT + + public: + explicit ImageEntry(Worksheet* worksheet); + ~ImageEntry() override = default; + + enum {Type = UserType + 4}; + int type() const override; + + bool isEmpty() override; + bool acceptRichText() override; + void setContent(const QString& content) override; + void setContent(const QDomElement& content, const KZip& file) override; + void setContentFromJupyter(const QJsonObject & cell) override; + QDomElement toXml(QDomDocument& doc, KZip* archive) override; + QJsonValue toJupyterJson() override; + QString toPlain(const QString& commandSep, const QString& commentStartingSeq, const QString& commentEndingSeq) override; + + QSizeF imageSize(const ImageSize& imgSize); + + void layOutForWidth(qreal entry_zone_x, qreal w, bool force = false) override; + + public Q_SLOTS: + bool evaluate(WorksheetEntry::EvaluationOption evalOp = FocusNext) override; + void updateEntry() override; + + void populateMenu(QMenu* menu, QPointF pos) override; + void startConfigDialog(); + void setImageData(const QString& path, const ImageSize& displaySize, + const ImageSize& printSize, bool useDisplaySizeForPrinting); + + protected: + bool wantToEvaluate() override; + bool wantFocus() override; + qreal height(); + + QString latexSizeString(const ImageSize& imgSize); + void addActionsToBar(ActionBar* actionBar) override; + + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*) override; + + private: + QString m_imagePath; + QString m_fileName; + ImageSize m_displaySize; + ImageSize m_printSize; + bool m_useDisplaySizeForPrinting; + WorksheetImageItem* m_imageItem; + WorksheetTextItem* m_textItem; + QFileSystemWatcher* m_imageWatcher; +}; + +#endif /* IMAGEENTRY_H */ diff --git a/src/imageresultitem.cpp b/src/imageresultitem.cpp new file mode 100644 index 0000000..db168f9 --- /dev/null +++ b/src/imageresultitem.cpp @@ -0,0 +1,107 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#include "imageresultitem.h" +#include "commandentry.h" +#include "worksheetview.h" +#include "lib/imageresult.h" +#include "lib/epsresult.h" + +#include + +#include +#include +#include + +ImageResultItem::ImageResultItem(QGraphicsObject* parent, Cantor::Result* result) + : WorksheetImageItem(parent), ResultItem(result) +{ + update(); +} + +double ImageResultItem::setGeometry(double x, double y, double w) +{ + Q_UNUSED(w); + setPos(x,y); + return height(); +} + +void ImageResultItem::populateMenu(QMenu* menu, QPointF pos) +{ + ResultItem::addCommonActions(this, menu); + + menu->addSeparator(); + emit menuCreated(menu, mapToParent(pos)); +} + +void ImageResultItem::update() +{ + Q_ASSERT(m_result->type() == Cantor::ImageResult::Type || m_result->type() == Cantor::EpsResult::Type); + switch(m_result->type()) { + case Cantor::ImageResult::Type: + { + QSize displaySize = static_cast(m_result)->displaySize(); + if (displaySize.isValid()) + setImage(m_result->data().value(), displaySize); + else + setImage(m_result->data().value()); + } + break; + case Cantor::EpsResult::Type: + { + Cantor::EpsResult* epsResult = static_cast(m_result); +#ifdef WITH_EPS + bool cacheVersionEnough = worksheet()->renderer()->scale() == 1.0 && !worksheet()->isPrinting(); + if (!epsResult->image().isNull() && cacheVersionEnough) + setImage(epsResult->image()); + else + setEps(m_result->data().toUrl()); +#else + setImage(epsResult->image()); +#endif + } + break; + default: + break; + } +} + +QRectF ImageResultItem::boundingRect() const +{ + return QRectF(0, 0, width(), height()); +} + +double ImageResultItem::width() const +{ + return WorksheetImageItem::width(); +} + +double ImageResultItem::height() const +{ + return WorksheetImageItem::height(); +} + +void ImageResultItem::saveResult() +{ + QString formats; + for (const auto& format : QImageReader::supportedImageFormats()) { + QString f = QLatin1String("*.") + QLatin1String(format.constData()); + if (f == QLatin1String("*.svg")) // TODO: add SVG after we've switched internally to PDF/SVG for backend's output + continue; + formats += f + QLatin1Char(' '); + } + + const auto& fileName = QFileDialog::getSaveFileName(worksheet()->worksheetView(), + i18n("Save image result"), + /*dir*/ QString(), + i18n("Images (%1)", formats)); + if (!fileName.isEmpty()) + result()->save(fileName); +} + +void ImageResultItem::deleteLater() +{ + WorksheetImageItem::deleteLater(); +} diff --git a/src/imageresultitem.h b/src/imageresultitem.h new file mode 100644 index 0000000..48b7307 --- /dev/null +++ b/src/imageresultitem.h @@ -0,0 +1,38 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#ifndef IMAGERESULTITEM_H +#define IMAGERESULTITEM_H + +#include "resultitem.h" +#include "worksheetimageitem.h" + +class CommandEntry; +class EpsRenderer; + +class ImageResultItem : public WorksheetImageItem, public ResultItem +{ + Q_OBJECT + public: + explicit ImageResultItem(QGraphicsObject* parent, Cantor::Result* result); + ~ImageResultItem() override = default; + + using WorksheetImageItem::setGeometry; + double setGeometry(double x, double y, double w) override; + void populateMenu(QMenu* menu, QPointF pos) override; + + void update() override; + + QRectF boundingRect() const override; + double width() const override; + double height() const override; + + void deleteLater() override; + + protected Q_SLOTS: + void saveResult(); +}; + +#endif // IMAGERESULTITEM_H diff --git a/src/imagesettings.ui b/src/imagesettings.ui new file mode 100644 index 0000000..aa473c9 --- /dev/null +++ b/src/imagesettings.ui @@ -0,0 +1,167 @@ + + + ImageSettingsBase + + + + 0 + 0 + 586 + 364 + + + + Image Settings + + + + + + + + true + + + + + + + Open + + + + + + + + + Display Size + + + false + + + + + + Width + + + + + + + + + + + + + Height + + + + + + + + + + + + + + + + Preview + + + + + + + + + + + + Print Size + + + + + + Use Display Size + + + + + + + Width + + + + + + + + + + + + + Height + + + + + + + + + + + + + + + + QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + KComboBox + QComboBox +
        kcombobox.h
        +
        + + KLineEdit + QLineEdit +
        klineedit.h
        +
        + + KImageFilePreview + QWidget +
        kimagefilepreview.h
        +
        +
        + + pathEdit + openDialogButton + displayWidthInput + displayWidthCombo + displayHeightInput + displayHeightCombo + printWidthInput + printWidthCombo + printHeightInput + printHeightCombo + + + +
        diff --git a/src/imagesettingsdialog.cpp b/src/imagesettingsdialog.cpp new file mode 100644 index 0000000..be688b0 --- /dev/null +++ b/src/imagesettingsdialog.cpp @@ -0,0 +1,205 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Martin Kuettler + SPDX-FileCopyrightText: 2016-2021 Alexander Semke +*/ + +#include "imagesettingsdialog.h" + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +ImageSettingsDialog::ImageSettingsDialog(QWidget* parent) : QDialog(parent) +{ + setWindowTitle(i18nc("@title:window", "Image Settings")); + setWindowIcon(QIcon::fromTheme(QLatin1String("viewimage"))); + setAttribute(Qt::WA_DeleteOnClose); + + auto* w = new QWidget(this); + m_ui.setupUi(w); + + auto* vLayout = new QVBoxLayout(this); + vLayout->setSpacing(0); + vLayout->setContentsMargins(0,0,0,0); + vLayout->addWidget(w); + + m_ui.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + m_ui.buttonBox->button(QDialogButtonBox::Apply)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogApplyButton)); + m_ui.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + m_ui.openDialogButton->setIcon(QApplication::style()->standardIcon(QStyle::SP_DirOpenIcon)); + + m_unitNames << i18n("(auto)") << i18n("px") << i18n("%"); + + m_ui.displayWidthCombo->addItems(m_unitNames); + m_ui.displayHeightCombo->addItems(m_unitNames); + m_ui.printWidthCombo->addItems(m_unitNames); + m_ui.printHeightCombo->addItems(m_unitNames); + + auto* completer = new KUrlCompletion(KUrlCompletion::FileCompletion); + completer->setCompletionMode(KCompletion::CompletionMan); + m_ui.pathEdit->setCompletionObject(completer); + m_ui.pathEdit->setAutoDeleteCompletionObject( true ); + + m_ui.displayWidthInput->setMinimum(0); + m_ui.displayHeightInput->setMinimum(0); + m_ui.printWidthInput->setMinimum(0); + m_ui.printHeightInput->setMinimum(0); + m_ui.displayWidthInput->setSingleStep(1); + m_ui.displayHeightInput->setSingleStep(1); + m_ui.printWidthInput->setSingleStep(1); + m_ui.printHeightInput->setSingleStep(1); + + connect(m_ui.buttonBox, &QDialogButtonBox::accepted, this, &ImageSettingsDialog::sendChangesAndClose); + connect(m_ui.buttonBox->button(QDialogButtonBox::Apply), &QPushButton::clicked, this, &ImageSettingsDialog::sendChanges); + connect(m_ui.buttonBox, &QDialogButtonBox::rejected, this, &ImageSettingsDialog::close); + + connect(m_ui.openDialogButton, &QPushButton::clicked, this, &ImageSettingsDialog::openDialog); + connect(m_ui.pathEdit, &QLineEdit::textChanged, this, &ImageSettingsDialog::updatePreview); + + connect(m_ui.displayWidthCombo, QOverload::of(&KComboBox::currentIndexChanged), this, &ImageSettingsDialog::updateInputWidgets); + connect(m_ui.displayHeightCombo, QOverload::of(&KComboBox::currentIndexChanged), this, &ImageSettingsDialog::updateInputWidgets); + connect(m_ui.printWidthCombo, QOverload::of(&KComboBox::currentIndexChanged), this, &ImageSettingsDialog::updateInputWidgets); + connect(m_ui.printHeightCombo, QOverload::of(&KComboBox::currentIndexChanged), this, &ImageSettingsDialog::updateInputWidgets); + + connect(m_ui.useDisplaySize, &QCheckBox::stateChanged, this, &ImageSettingsDialog::updatePrintingGroup); +} + +ImageSettingsDialog::~ImageSettingsDialog() { + KConfigGroup dialogConfig = KSharedConfig::openConfig()->group("ImageSettingsDialog"); + KWindowConfig::saveWindowSize(windowHandle(), dialogConfig); +} + +void ImageSettingsDialog::setData(const QString& file, const ImageSize& displaySize, const ImageSize& printSize, bool useDisplaySizeForPrinting) +{ + m_ui.pathEdit->setText(file); + if (displaySize.width >= 0) + m_ui.displayWidthInput->setValue(displaySize.width); + + if (displaySize.height >= 0) + m_ui.displayHeightInput->setValue(displaySize.height); + + if (printSize.width >= 0) + m_ui.printWidthInput->setValue(printSize.width); + + if (printSize.height >= 0) + m_ui.printHeightInput->setValue(printSize.height); + + m_ui.displayWidthCombo->setCurrentIndex(displaySize.widthUnit); + m_ui.displayHeightCombo->setCurrentIndex(displaySize.heightUnit); + m_ui.printWidthCombo->setCurrentIndex(printSize.widthUnit); + m_ui.printHeightCombo->setCurrentIndex(printSize.heightUnit); + + if (useDisplaySizeForPrinting) + m_ui.useDisplaySize->setCheckState(Qt::Checked); + else + m_ui.useDisplaySize->setCheckState(Qt::Unchecked); + + updatePreview(); + updatePrintingGroup(useDisplaySizeForPrinting); + //updateInputWidgets(); + + //restore saved settings if available + create(); // ensure there's a window created + KConfigGroup conf(KSharedConfig::openConfig(), "ImageSettingsDialog"); + if (conf.exists()) { + KWindowConfig::restoreWindowSize(windowHandle(), conf); + resize(windowHandle()->size()); // workaround for QTBUG-40584 + } else + resize(QSize(0, 0).expandedTo(minimumSize())); +} + +void ImageSettingsDialog::sendChangesAndClose() +{ + sendChanges(); + close(); +} + +void ImageSettingsDialog::sendChanges() +{ + ImageSize displaySize, printSize; + displaySize.width = m_ui.displayWidthInput->value(); + displaySize.height = m_ui.displayHeightInput->value(); + displaySize.widthUnit = m_ui.displayWidthCombo->currentIndex(); + displaySize.heightUnit = m_ui.displayHeightCombo->currentIndex(); + printSize.width = m_ui.printWidthInput->value(); + printSize.height = m_ui.printHeightInput->value(); + printSize.widthUnit = m_ui.printWidthCombo->currentIndex(); + printSize.heightUnit = m_ui.printHeightCombo->currentIndex(); + + emit dataChanged(m_ui.pathEdit->text(), displaySize, printSize, m_ui.useDisplaySize->isChecked()); +} + +void ImageSettingsDialog::openDialog() +{ + KConfigGroup conf(KSharedConfig::openConfig(), QLatin1String("ImageSettingsDialog")); + const QString& dir = conf.readEntry(QLatin1String("LastImageDir"), QString()); + + QString formats; + for (const QByteArray& format : QImageReader::supportedImageFormats()) + formats += QLatin1String("*.") + QLatin1String(format.constData()) + QLatin1Char(' '); + + const QString& path = QFileDialog::getOpenFileName(this, + i18n("Open image file"), + dir, + i18n("Images (%1)", formats)); + if (path.isEmpty()) + return; //cancel was clicked in the file-dialog + + //save the last used directory, if changed + const int pos = path.lastIndexOf(QLatin1String("/")); + if (pos != -1) { + const QString& newDir = path.left(pos); + if (newDir != dir) + conf.writeEntry(QLatin1String("LastImageDir"), newDir); + } + + m_ui.pathEdit->setText(path); + updatePreview(); +} + +void ImageSettingsDialog::updatePreview() +{ + m_ui.imagePreview->clearPreview(); + if (!m_ui.pathEdit->text().isEmpty()) + m_ui.imagePreview->showPreview(QUrl::fromLocalFile(m_ui.pathEdit->text())); +} + +void ImageSettingsDialog::updateInputWidgets() +{ + if (m_ui.displayWidthCombo->currentIndex() == 0) + m_ui.displayWidthInput->setEnabled(false); + else + m_ui.displayWidthInput->setEnabled(true); + + if (m_ui.displayHeightCombo->currentIndex() == 0) + m_ui.displayHeightInput->setEnabled(false); + else + m_ui.displayHeightInput->setEnabled(true); + + if (m_ui.printWidthCombo->currentIndex() == 0 || !m_ui.printWidthCombo->isEnabled()) + m_ui.printWidthInput->setEnabled(false); + else + m_ui.printWidthInput->setEnabled(true); + + if (m_ui.printHeightCombo->currentIndex() == 0 || !m_ui.printHeightCombo->isEnabled()) + m_ui.printHeightInput->setEnabled(false); + else + m_ui.printHeightInput->setEnabled(true); +} + +void ImageSettingsDialog::updatePrintingGroup(int b) +{ + m_ui.printWidthCombo->setEnabled(!b); + m_ui.printHeightCombo->setEnabled(!b); + + updateInputWidgets(); +} diff --git a/src/imagesettingsdialog.h b/src/imagesettingsdialog.h new file mode 100644 index 0000000..bb098fd --- /dev/null +++ b/src/imagesettingsdialog.h @@ -0,0 +1,50 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Martin Kuettler + SPDX-FileCopyrightText: 2016-2021 Alexander Semke +*/ + +#ifndef IMAGESETTINGSDIALOG_H +#define IMAGESETTINGSDIALOG_H + +#include + +#include + +struct ImageSize +{ + enum {Auto = 0, Pixel = 1, Percent = 2}; + double width; + double height; + int widthUnit; + int heightUnit; +}; + +class ImageSettingsDialog : public QDialog +{ + Q_OBJECT + public: + explicit ImageSettingsDialog(QWidget*); + ~ImageSettingsDialog() override; + + void setData(const QString& file, const ImageSize& displaySize, const ImageSize& printSize, bool useDisplaySizeForPrinting); + + Q_SIGNALS: + void dataChanged(const QString& file, const ImageSize& displaySize, const ImageSize& printSize, bool useDisplaySizeForPrinting); + + private Q_SLOTS: + void sendChangesAndClose(); + void sendChanges(); + + void openDialog(); + void updatePreview(); + void updateInputWidgets(); + void updatePrintingGroup(int b); + + private: + QList m_unitNames; + Ui_ImageSettingsBase m_ui; + +}; + +#endif //IMAGESETTINGSDIALOG_H diff --git a/src/latexentry.cpp b/src/latexentry.cpp new file mode 100644 index 0000000..9a8047c --- /dev/null +++ b/src/latexentry.cpp @@ -0,0 +1,568 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#include "latexentry.h" + +#include "worksheet.h" +#include "lib/renderer.h" +#include "lib/jupyterutils.h" +#include "lib/defaulthighlighter.h" +#include "lib/latexrenderer.h" +#include "config-cantor.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +LatexEntry::LatexEntry(Worksheet* worksheet) : WorksheetEntry(worksheet), m_textItem(new WorksheetTextItem(this, Qt::TextEditorInteraction)) +{ + m_textItem->installEventFilter(this); + + connect(m_textItem, &WorksheetTextItem::moveToPrevious, this, &LatexEntry::moveToPreviousEntry); + connect(m_textItem, &WorksheetTextItem::moveToNext, this, &LatexEntry::moveToNextEntry); + connect(m_textItem, SIGNAL(execute()), this, SLOT(evaluate())); +} + +void LatexEntry::populateMenu(QMenu* menu, QPointF pos) +{ + bool imageSelected = false; + QTextCursor cursor = m_textItem->textCursor(); + const QChar repl = QChar::ObjectReplacementCharacter; + if (cursor.hasSelection()) { + QString selection = m_textItem->textCursor().selectedText(); + imageSelected = selection.contains(repl); + } else { + // we need to try both the current cursor and the one after the that + cursor = m_textItem->cursorForPosition(pos); + for (int i = 2; i; --i) { + int p = cursor.position(); + if (m_textItem->document()->characterAt(p-1) == repl && + cursor.charFormat().hasProperty(Cantor::Renderer::CantorFormula)) { + m_textItem->setTextCursor(cursor); + imageSelected = true; + break; + } + cursor.movePosition(QTextCursor::NextCharacter); + } + } + if (imageSelected) { + menu->addAction(i18n("Show LaTeX code"), this, SLOT(resolveImagesAtCursor())); + menu->addSeparator(); + } + WorksheetEntry::populateMenu(menu, pos); +} + +int LatexEntry::type() const +{ + return Type; +} + +bool LatexEntry::isEmpty() +{ + return m_textItem->document()->isEmpty(); +} + +bool LatexEntry::acceptRichText() +{ + return false; +} + +bool LatexEntry::focusEntry(int pos, qreal xCoord) +{ + if (aboutToBeRemoved()) + return false; + m_textItem->setFocusAt(pos, xCoord); + return true; +} + +void LatexEntry::setContent(const QString& content) +{ + m_latex = content; + m_textItem->setPlainText(m_latex); +} + +void LatexEntry::setContent(const QDomElement& content, const KZip& file) +{ + m_latex = content.text(); + qDebug() << m_latex; + + m_textItem->document()->clear(); + QTextCursor cursor = m_textItem->textCursor(); + cursor.movePosition(QTextCursor::Start); + + QString imagePath; + bool useLatexCode = true; + + if(content.hasAttribute(QLatin1String("filename"))) + { + const KArchiveEntry* imageEntry=file.directory()->entry(content.attribute(QLatin1String("filename"))); + if (imageEntry&&imageEntry->isFile()) + { + const KArchiveFile* imageFile=static_cast(imageEntry); + const QString& dir=QStandardPaths::writableLocation(QStandardPaths::TempLocation); + imageFile->copyTo(dir); + imagePath = dir + QDir::separator() + imageFile->name(); + +#ifdef LIBSPECTRE_FOUND + QString uuid = Cantor::LatexRenderer::genUuid(); + m_renderedFormat = worksheet()->renderer()->render(m_textItem->document(), Cantor::Renderer::EPS, QUrl::fromLocalFile(imagePath), uuid); + qDebug()<<"rendering successful? " << !m_renderedFormat.name().isEmpty(); + + m_renderedFormat.setProperty(Cantor::Renderer::CantorFormula, Cantor::Renderer::LatexFormula); + m_renderedFormat.setProperty(Cantor::Renderer::ImagePath, imagePath); + m_renderedFormat.setProperty(Cantor::Renderer::Code, m_latex); + + cursor.insertText(QString(QChar::ObjectReplacementCharacter), m_renderedFormat); + useLatexCode = false; + m_textItem->denyEditing(); +#endif + } + } + + if (useLatexCode && content.hasAttribute(QLatin1String("image"))) + { + const QByteArray& ba = QByteArray::fromBase64(content.attribute(QLatin1String("image")).toLatin1()); + QImage image; + if (image.loadFromData(ba)) + { + // Create unique internal url for this loaded image + QUrl internal; + internal.setScheme(QLatin1String("internal")); + internal.setPath(QUuid::createUuid().toString()); + + m_textItem->document()->addResource(QTextDocument::ImageResource, internal, QVariant(image)); + + m_renderedFormat.setName(internal.url()); + m_renderedFormat.setWidth(image.width()); + m_renderedFormat.setHeight(image.height()); + + m_renderedFormat.setProperty(Cantor::Renderer::CantorFormula, Cantor::Renderer::LatexFormula); + if (!imagePath.isEmpty()) + m_renderedFormat.setProperty(Cantor::Renderer::ImagePath, imagePath); + m_renderedFormat.setProperty(Cantor::Renderer::Code, m_latex); + + cursor.insertText(QString(QChar::ObjectReplacementCharacter), m_renderedFormat); + useLatexCode = false; + m_textItem->denyEditing(); + } + } + + if (useLatexCode) + cursor.insertText(m_latex); +} + +void LatexEntry::setContentFromJupyter(const QJsonObject& cell) +{ + if (!Cantor::JupyterUtils::isCodeCell(cell)) + return; + + m_textItem->document()->clear(); + QTextCursor cursor = m_textItem->textCursor(); + cursor.movePosition(QTextCursor::Start); + + bool useLatexCode = true; + + QString source = Cantor::JupyterUtils::getSource(cell); + m_latex = source.remove(QLatin1String("%%latex\n")); + + QJsonArray outputs = cell.value(Cantor::JupyterUtils::outputsKey).toArray(); + if (outputs.size() == 1 && Cantor::JupyterUtils::isJupyterDisplayOutput(outputs[0])) + { + const QJsonObject data = outputs[0].toObject().value(Cantor::JupyterUtils::dataKey).toObject(); + const QImage& image = Cantor::JupyterUtils::loadImage(data, Cantor::JupyterUtils::pngMime); + if (!image.isNull()) + { + QUrl internal; + internal.setScheme(QLatin1String("internal")); + internal.setPath(QUuid::createUuid().toString()); + + m_textItem->document()->addResource(QTextDocument::ImageResource, internal, QVariant(image)); + + m_renderedFormat.setName(internal.url()); + m_renderedFormat.setWidth(image.width()); + m_renderedFormat.setHeight(image.height()); + + m_renderedFormat.setProperty(Cantor::Renderer::CantorFormula, Cantor::Renderer::LatexFormula); + m_renderedFormat.setProperty(Cantor::Renderer::Code, m_latex); + + cursor.insertText(QString(QChar::ObjectReplacementCharacter), m_renderedFormat); + useLatexCode = false; + m_textItem->denyEditing(); + } + } + + if (useLatexCode) + { + cursor.insertText(m_latex); + m_latex.clear(); // We don't render image, so clear latex code cache + } +} + +QJsonValue LatexEntry::toJupyterJson() +{ + QJsonObject entry; + entry.insert(Cantor::JupyterUtils::cellTypeKey, QLatin1String("code")); + entry.insert(Cantor::JupyterUtils::executionCountKey, QJsonValue()); + + QJsonObject metadata, cantorMetadata; + cantorMetadata.insert(QLatin1String("latex_entry"), true); + metadata.insert(Cantor::JupyterUtils::cantorMetadataKey, cantorMetadata); + entry.insert(Cantor::JupyterUtils::metadataKey, metadata); + + QJsonArray outputs; + + QTextCursor cursor = m_textItem->document()->find(QString(QChar::ObjectReplacementCharacter)); + if (!cursor.isNull()) + { + QTextImageFormat format=cursor.charFormat().toImageFormat(); + + QUrl internal; + internal.setUrl(format.name()); + const QImage& image = m_textItem->document()->resource(QTextDocument::ImageResource, internal).value(); + if (!image.isNull()) + { + QByteArray ba; + QBuffer buffer(&ba); + buffer.open(QIODevice::WriteOnly); + image.save(&buffer, "PNG"); + + // Add image result with latex rendered image to this Jupyter code cell + QJsonObject imageResult; + imageResult.insert(Cantor::JupyterUtils::outputTypeKey, QLatin1String("display_data")); + + QJsonObject data; + data.insert(Cantor::JupyterUtils::pngMime, Cantor::JupyterUtils::toJupyterMultiline(QString::fromLatin1(ba.toBase64()))); + imageResult.insert(QLatin1String("data"), data); + + imageResult.insert(Cantor::JupyterUtils::metadataKey, QJsonObject()); + + outputs.append(imageResult); + } + } + entry.insert(Cantor::JupyterUtils::outputsKey, outputs); + + const QString& latex = latexCode(); + Cantor::JupyterUtils::setSource(entry, QLatin1String("%%latex\n") + latex); + + return entry; +} + +QDomElement LatexEntry::toXml(QDomDocument& doc, KZip* archive) +{ + QDomElement el = doc.createElement(QLatin1String("Latex")); + el.appendChild( doc.createTextNode( latexCode() )); + + QTextCursor cursor = m_textItem->document()->find(QString(QChar::ObjectReplacementCharacter)); + if (!cursor.isNull()) + { + QTextImageFormat format=cursor.charFormat().toImageFormat(); + QString fileName = format.property(Cantor::Renderer::ImagePath).toString(); + // Check, if eps file exists, and if not true, rerender latex code + bool isEpsFileExists = QFile::exists(fileName); + +#ifdef LIBSPECTRE_FOUND + if (!isEpsFileExists && renderLatexCode()) + { + cursor = m_textItem->document()->find(QString(QChar::ObjectReplacementCharacter)); + format=cursor.charFormat().toImageFormat(); + fileName = format.property(Cantor::Renderer::ImagePath).toString(); + isEpsFileExists = QFile::exists(fileName); + } +#endif + + if (isEpsFileExists && archive) + { + const QUrl& url=QUrl::fromLocalFile(fileName); + archive->addLocalFile(url.toLocalFile(), url.fileName()); + el.setAttribute(QLatin1String("filename"), url.fileName()); + } + + // Save also rendered QImage, if exist. + QUrl internal; + internal.setUrl(format.name()); + + const QImage& image = m_textItem->document()->resource(QTextDocument::ImageResource, internal).value(); + if (!image.isNull()) + { + QByteArray ba; + QBuffer buffer(&ba); + buffer.open(QIODevice::WriteOnly); + image.save(&buffer, "PNG"); + el.setAttribute(QLatin1String("image"), QString::fromLatin1(ba.toBase64())); + } + } + + return el; +} + +QString LatexEntry::toPlain(const QString& commandSep, const QString& commentStartingSeq, const QString& commentEndingSeq) +{ + Q_UNUSED(commandSep); + + if (commentStartingSeq.isEmpty()) + return QString(); + + QString text = latexCode(); + if (!commentEndingSeq.isEmpty()) + return commentStartingSeq + text + commentEndingSeq + QLatin1String("\n"); + return commentStartingSeq + text.replace(QLatin1String("\n"), QLatin1String("\n") + commentStartingSeq) + QLatin1String("\n"); +} + +bool LatexEntry::evaluate(EvaluationOption evalOp) +{ + bool success = false; + + if (isOneImageOnly()) + { + success = true; + } + else + { + if (m_latex == latexCode()) + { + bool renderWasSuccessful = !m_renderedFormat.name().isEmpty(); + if (renderWasSuccessful) + { + QTextCursor cursor = m_textItem->textCursor(); + cursor.movePosition(QTextCursor::Start); + cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); + cursor.insertText(QString(QChar::ObjectReplacementCharacter), m_renderedFormat); + m_textItem->denyEditing(); + } + else + { + success = renderLatexCode(); + } + } + else + { + m_latex = latexCode(); + success = renderLatexCode(); + } + } + + qDebug()<<"rendering successful? "<document()->find(QString(QChar::ObjectReplacementCharacter)); + while (!cursor.isNull()) + { + qDebug()<<"found a formula... rendering the eps..."; + QTextImageFormat format=cursor.charFormat().toImageFormat(); + const QUrl& url=QUrl::fromLocalFile(format.property(Cantor::Renderer::ImagePath).toString()); + QSizeF s = worksheet()->renderer()->renderToResource(m_textItem->document(), Cantor::Renderer::EPS, url, QUrl(format.name())); + qDebug()<<"rendering successful? "<< s.isValid(); + + cursor.movePosition(QTextCursor::NextCharacter); + + cursor = m_textItem->document()->find(QString(QChar::ObjectReplacementCharacter), cursor); + } +} + +bool LatexEntry::eventFilter(QObject* object, QEvent* event) +{ + if(object == m_textItem) + { + if (event->type() == QEvent::GraphicsSceneMouseDoubleClick) + { + // One image if we have rendered entry + if (isOneImageOnly()) + { + QTextCursor cursor = m_textItem->textCursor(); + if (!cursor.hasSelection()) + cursor.movePosition(QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor); + + cursor.insertText(m_textItem->resolveImages(cursor)); + m_textItem->allowEditing(); + return true; + } + } + else if (event->type() == QEvent::KeyPress) + { + auto* key_event = static_cast(event); + if (key_event->matches(QKeySequence::Cancel)) + { + QTextCursor cursor = m_textItem->textCursor(); + cursor.movePosition(QTextCursor::Start); + cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); + cursor.insertText(QString(QChar::ObjectReplacementCharacter), m_renderedFormat); + m_textItem->denyEditing(); + return true; + } + } + } + return false; +} + +QString LatexEntry::latexCode() +{ + QTextCursor cursor = m_textItem->textCursor(); + cursor.movePosition(QTextCursor::Start); + cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); + + QString code = m_textItem->resolveImages(cursor); + code.replace(QChar::ParagraphSeparator, QLatin1Char('\n')); //Replace the U+2029 paragraph break by a Normal Newline + code.replace(QChar::LineSeparator, QLatin1Char('\n')); //Replace the line break by a Normal Newline + return code; +} + +bool LatexEntry::isOneImageOnly() +{ + QTextCursor cursor = m_textItem->textCursor(); + cursor.movePosition(QTextCursor::Start); + cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); + + return (cursor.selectionEnd() == 1 && cursor.selectedText() == QString(QChar::ObjectReplacementCharacter)); +} + +int LatexEntry::searchText(const QString& text, const QString& pattern, + QTextDocument::FindFlags qt_flags) +{ + Qt::CaseSensitivity caseSensitivity; + if (qt_flags & QTextDocument::FindCaseSensitively) + caseSensitivity = Qt::CaseSensitive; + else + caseSensitivity = Qt::CaseInsensitive; + + int position; + if (qt_flags & QTextDocument::FindBackward) + position = text.lastIndexOf(pattern, -1, caseSensitivity); + else + position = text.indexOf(pattern, 0, caseSensitivity); + + return position; +} + +WorksheetCursor LatexEntry::search(const QString& pattern, unsigned flags, + QTextDocument::FindFlags qt_flags, + const WorksheetCursor& pos) +{ + if (!(flags & WorksheetEntry::SearchLaTeX)) + return WorksheetCursor(); + if (pos.isValid() && (pos.entry() != this || pos.textItem() != m_textItem)) + return WorksheetCursor(); + + QTextCursor textCursor = m_textItem->search(pattern, qt_flags, pos); + int position = 0; + QString latex; + const QString repl = QString(QChar::ObjectReplacementCharacter); + QTextCursor latexCursor = m_textItem->search(repl, qt_flags, pos); + + while (!latexCursor.isNull()) { + latex = m_textItem->resolveImages(latexCursor); + position = searchText(latex, pattern, qt_flags); + if (position >= 0) { + break; + } + WorksheetCursor c(this, m_textItem, latexCursor); + latexCursor = m_textItem->search(repl, qt_flags, c); + } + + if (latexCursor.isNull()) { + if (textCursor.isNull()) + return WorksheetCursor(); + else + return WorksheetCursor(this, m_textItem, textCursor); + } else { + if (textCursor.isNull() || latexCursor < textCursor) { + int start = latexCursor.selectionStart(); + latexCursor.insertText(latex); + QTextCursor c = m_textItem->textCursor(); + c.setPosition(start + position); + c.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, + pattern.length()); + return WorksheetCursor(this, m_textItem, c); + } else { + return WorksheetCursor(this, m_textItem, textCursor); + } + } +} + +void LatexEntry::layOutForWidth(qreal entry_zone_x, qreal w, bool force) +{ + if (size().width() == w && m_textItem->pos().x() == entry_zone_x && !force) + return; + + const qreal margin = worksheet()->isPrinting() ? 0 : RightMargin; + + m_textItem->setGeometry(entry_zone_x, 0, w - margin - entry_zone_x); + setSize(QSizeF(m_textItem->width() + margin + entry_zone_x, m_textItem->height() + VerticalMargin)); +} + +bool LatexEntry::wantToEvaluate() +{ + return !isOneImageOnly(); +} + +bool LatexEntry::renderLatexCode() +{ + bool success = false; + QString latex = latexCode(); + m_renderedFormat = QTextImageFormat(); // clear rendered image + Cantor::LatexRenderer* renderer = new Cantor::LatexRenderer(this); + renderer->setLatexCode(latex); + renderer->setEquationOnly(false); + renderer->setMethod(Cantor::LatexRenderer::LatexMethod); + renderer->renderBlocking(); + + if (renderer->renderingSuccessful()) + { + Cantor::Renderer* epsRend = worksheet()->renderer(); + m_renderedFormat = epsRend->render(m_textItem->document(), renderer); + success = !m_renderedFormat.name().isEmpty(); + } + else + qWarning() << "Fail to render LatexEntry with error " << renderer->errorMessage(); + + if(success) + { + QTextCursor cursor = m_textItem->textCursor(); + cursor.movePosition(QTextCursor::Start); + cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); + cursor.insertText(QString(QChar::ObjectReplacementCharacter), m_renderedFormat); + m_textItem->denyEditing(); + } + + delete renderer; + return success; +} + +bool LatexEntry::isConvertableToLatexEntry(const QJsonObject& cell) +{ + if (!Cantor::JupyterUtils::isCodeCell(cell)) + return false; + + const QString& source = Cantor::JupyterUtils::getSource(cell); + + return source.startsWith(QLatin1String("%%latex\n")); +} + +void LatexEntry::resolveImagesAtCursor() +{ + QTextCursor cursor = m_textItem->textCursor(); + if (!cursor.hasSelection()) + cursor.movePosition(QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor); + cursor.insertText(m_textItem->resolveImages(cursor)); +} + +QString LatexEntry::plain() const +{ + return m_textItem->toPlainText(); +} diff --git a/src/latexentry.h b/src/latexentry.h new file mode 100644 index 0000000..15f500c --- /dev/null +++ b/src/latexentry.h @@ -0,0 +1,70 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#ifndef LATEXENTRY_H +#define LATEXENTRY_H + +#include "worksheetentry.h" +#include "worksheettextitem.h" + +class LatexEntry : public WorksheetEntry +{ + Q_OBJECT + + public: + explicit LatexEntry(Worksheet* worksheet); + ~LatexEntry() override = default; + + enum {Type = UserType + 5}; + int type() const override; + + bool isEmpty() override; + + QString plain() const; + + bool acceptRichText() override; + + bool focusEntry(int pos = WorksheetTextItem::TopLeft, qreal xCoord = 0) override; + + void setContent(const QString& content) override; + void setContent(const QDomElement& content, const KZip& file) override; + void setContentFromJupyter(const QJsonObject & cell) override; + static bool isConvertableToLatexEntry(const QJsonObject& cell); + + QDomElement toXml(QDomDocument& doc, KZip* archive) override; + QJsonValue toJupyterJson() override; + QString toPlain(const QString& commandSep, const QString& commentStartingSeq, const QString& commentEndingSeq) override; + + void layOutForWidth(qreal entry_zone_x, qreal w, bool force = false) override; + + int searchText(const QString& text, const QString& pattern, + QTextDocument::FindFlags qt_flags); + WorksheetCursor search(const QString& pattern, unsigned flags, + QTextDocument::FindFlags qt_flags, + const WorksheetCursor& pos = WorksheetCursor()) override; + + public Q_SLOTS: + bool evaluate(WorksheetEntry::EvaluationOption evalOp = FocusNext) override; + void resolveImagesAtCursor(); + void updateEntry() override; + void populateMenu(QMenu* menu, QPointF pos) override; + + protected: + bool wantToEvaluate() override; + bool eventFilter(QObject* object, QEvent* event) override; + + private: + QString latexCode(); + bool renderLatexCode(); + bool isOneImageOnly(); + + private: + WorksheetTextItem* m_textItem; + QTextImageFormat m_renderedFormat; + QString m_latex; +}; + +#endif // LATEXENTRY_H diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt new file mode 100644 index 0000000..2a9432b --- /dev/null +++ b/src/lib/CMakeLists.txt @@ -0,0 +1,122 @@ +if(LIBSPECTRE_FOUND) + include_directories(${LIBSPECTRE_INCLUDE_DIR}) +endif(LIBSPECTRE_FOUND) + +set( cantor_LIB_SRCS + session.cpp + expression.cpp + backend.cpp + result.cpp + textresult.cpp + imageresult.cpp + mimeresult.cpp + epsresult.cpp + latexresult.cpp + latexrenderer.cpp + renderer.cpp + helpresult.cpp + animationresult.cpp + htmlresult.cpp + extension.cpp + assistant.cpp + completionobject.cpp + syntaxhelpobject.cpp + defaulthighlighter.cpp + defaultvariablemodel.cpp + panelplugin.cpp + panelpluginhandler.cpp + worksheetaccess.cpp + directives/plotdirectives.cpp + jupyterutils.cpp + graphicpackage.cpp +) + +Set( cantor_LIB_HDRS + cantor_macros.h + #base classes + backend.h + session.h + expression.h + extension.h + syntaxhelpobject.h + completionobject.h + #results + animationresult.h + epsresult.h + helpresult.h + imageresult.h + latexresult.h + renderer.h + result.h + textresult.h + mimeresult.h + htmlresult.h + #helper classes + defaulthighlighter.h + defaultvariablemodel.h + worksheetaccess.h + jupyterutils.h + graphicpackage.h + # plugin classes + panelplugin.h + panelpluginhandler.h +) + +ki18n_wrap_ui(cantor_LIB_SRCS directives/axisrange.ui directives/plottitle.ui) + +kconfig_add_kcfg_files(cantor_LIB_SRCS settings.kcfgc) +install(FILES cantor_libs.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) + +configure_file (config-cantorlib.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-cantorlib.h ) + +add_library( cantorlibs SHARED ${cantor_LIB_SRCS} ) +generate_export_header(cantorlibs BASE_NAME cantor) + +kcoreaddons_desktop_to_json(cantorlibs cantor_assistant.desktop DEFAULT_SERVICE_TYPE) +kcoreaddons_desktop_to_json(cantorlibs cantor_backend.desktop DEFAULT_SERVICE_TYPE) +kcoreaddons_desktop_to_json(cantorlibs cantor_panelplugin.desktop DEFAULT_SERVICE_TYPE) + +target_link_libraries( cantorlibs + KF5::Completion + KF5::IconThemes + KF5::KIOCore + KF5::KIOFileWidgets + KF5::KIOWidgets + KF5::Archive + KF5::ConfigCore + KF5::ConfigGui + KF5::I18n + KF5::XmlGui + ${QT5_LIBRARIES} + Qt5::Xml + Qt5::Svg + Poppler::Qt5 +) + +if(LIBSPECTRE_FOUND) + target_link_libraries(cantorlibs ${LIBSPECTRE_LIBRARY}) +endif(LIBSPECTRE_FOUND) + +set (CANTORLIBS_SOVERSION 28) +set_target_properties( cantorlibs PROPERTIES VERSION ${RELEASE_SERVICE_VERSION} SOVERSION ${CANTORLIBS_SOVERSION}) + +ecm_setup_version(${RELEASE_SERVICE_VERSION} + VARIABLE_PREFIX CANTOR + SOVERSION ${CANTORLIBS_SOVERSION} + VERSION_HEADER ${CMAKE_CURRENT_BINARY_DIR}/cantorlibs_version.h +) + +install( TARGETS cantorlibs EXPORT CantorTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} ) + +install( + FILES + ${cantor_LIB_HDRS} + ${CMAKE_CURRENT_BINARY_DIR}/cantor_export.h + ${CMAKE_CURRENT_BINARY_DIR}/cantorlibs_version.h + DESTINATION ${KDE_INSTALL_INCLUDEDIR}/cantor + COMPONENT Devel +) + +if(BUILD_TESTING) + add_subdirectory(test) +endif() diff --git a/src/lib/Mainpage.dox b/src/lib/Mainpage.dox new file mode 100644 index 0000000..4feab43 --- /dev/null +++ b/src/lib/Mainpage.dox @@ -0,0 +1,28 @@ +/* + This program 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 2 + of the License, or (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + --- + Copyright (C) 2009 Alexander Rieder + */ + +/** + * Namespace collecting all Classes of the Cantor Libraries + */ +namespace Cantor { +/** @mainpage Cantor + +*/ +} diff --git a/src/lib/animationresult.cpp b/src/lib/animationresult.cpp new file mode 100644 index 0000000..ada828e --- /dev/null +++ b/src/lib/animationresult.cpp @@ -0,0 +1,118 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "animationresult.h" +using namespace Cantor; + +#include +#include +#include +#include +#include +#include +#include + +class Cantor::AnimationResultPrivate +{ + public: + AnimationResultPrivate() = default; + + QUrl url; + QMovie* movie; + QString alt; +}; + +AnimationResult::AnimationResult(const QUrl &url, const QString& alt ) : d(new AnimationResultPrivate) +{ + d->url=url; + d->alt=alt; + d->movie=new QMovie(); + d->movie->setFileName(url.toLocalFile()); +} + + +AnimationResult::~AnimationResult() +{ + delete d->movie; + delete d; +} + +QString AnimationResult::toHtml() +{ + return QStringLiteral("\"%2\"/").arg(d->url.toLocalFile(), d->alt); +} + +QVariant AnimationResult::data() +{ + return QVariant::fromValue(static_cast(d->movie)); +} + +QUrl AnimationResult::url() +{ + return d->url; +} + +int AnimationResult::type() +{ + return AnimationResult::Type; +} + +QString AnimationResult::mimeType() +{ + QMimeDatabase db; + QMimeType type = db.mimeTypeForUrl(d->url); + + return type.name(); +} + +QDomElement AnimationResult::toXml(QDomDocument& doc) +{ + qDebug()<<"saving imageresult "<url.fileName()); + qDebug()<<"done"; + + return e; +} + +QJsonValue Cantor::AnimationResult::toJupyterJson() +{ + QJsonObject root; + + if (executionIndex() != -1) + { + root.insert(QLatin1String("output_type"), QLatin1String("execute_result")); + root.insert(QLatin1String("execution_count"), executionIndex()); + } + else + root.insert(QLatin1String("output_type"), QLatin1String("display_data")); + + QJsonObject data; + data.insert(QLatin1String("text/plain"), d->alt); + + QFile file(d->url.toLocalFile()); + QByteArray bytes; + if (file.open(QIODevice::ReadOnly)) + bytes = file.readAll(); + data.insert(QLatin1String("image/gif"), QString::fromLatin1(bytes.toBase64())); + + root.insert(QLatin1String("data"), data); + // Not sure, but in Jupyter size of gif doesn't controlled by metadata unlike ImageResult + root.insert(QLatin1String("metadata"), jupyterMetadata()); + + return root; +} + +void AnimationResult::saveAdditionalData(KZip* archive) +{ + archive->addLocalFile(d->url.toLocalFile(), d->url.fileName()); +} + +void AnimationResult::save(const QString& filename) +{ + //just copy over the file.. + KIO::file_copy(d->url, QUrl::fromLocalFile(filename), -1, KIO::HideProgressInfo); +} diff --git a/src/lib/animationresult.h b/src/lib/animationresult.h new file mode 100644 index 0000000..2113754 --- /dev/null +++ b/src/lib/animationresult.h @@ -0,0 +1,41 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _ANIMATIONRESULT_H +#define _ANIMATIONRESULT_H + +#include "result.h" + +namespace Cantor +{ +class AnimationResultPrivate; + +class CANTOR_EXPORT AnimationResult : public Result +{ + public: + enum{Type=6}; + explicit AnimationResult( const QUrl& url, const QString& alt=QString() ); + ~AnimationResult() override; + + QString toHtml() override; + QVariant data() override; + QUrl url() override; + + int type() override; + QString mimeType() override; + + QDomElement toXml(QDomDocument& doc) override; + QJsonValue toJupyterJson() override; + void saveAdditionalData(KZip* archive) override; + + void save(const QString& filename) override; + private: + AnimationResultPrivate* d; + +}; + +} + +#endif /* _ANIMATIONRESULT_H */ diff --git a/src/lib/assistant.cpp b/src/lib/assistant.cpp new file mode 100644 index 0000000..451d906 --- /dev/null +++ b/src/lib/assistant.cpp @@ -0,0 +1,60 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "assistant.h" +using namespace Cantor; + +class Cantor::AssistantPrivate +{ + public: + QString name; + QString icon; + QStringList requiredExtensions; + Backend* backend; +}; + +Assistant::Assistant(QObject* parent) : QObject(parent), KXMLGUIClient(dynamic_cast(parent)), + d(new AssistantPrivate) +{ + +} + +Assistant::~Assistant() +{ + delete d; +} + +void Assistant::setBackend(Cantor::Backend* backend) +{ + d->backend=backend; +} + +void Assistant::setPluginInfo(const KPluginMetaData &info) +{ + d->name=info.name(); + d->icon=info.iconName(); + d->requiredExtensions=info.value(QStringLiteral("RequiredExtensions")).split(QLatin1Char(',')); +} + + +QStringList Assistant::requiredExtensions() +{ + return d->requiredExtensions; +} + +QString Assistant::icon() +{ + return d->icon; +} + +QString Assistant::name() +{ + return d->name; +} + +Backend* Assistant::backend() +{ + return d->backend; +} diff --git a/src/lib/assistant.h b/src/lib/assistant.h new file mode 100644 index 0000000..1196c64 --- /dev/null +++ b/src/lib/assistant.h @@ -0,0 +1,100 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _ASSISTANT_H +#define _ASSISTANT_H + +#include +#include +#include + +#include "cantor_export.h" + +namespace Cantor +{ +class Backend; +class AssistantPrivate; + +/** + * An Assistant is a dialog for simplifying common tasks, like integrating, solving, or running scripts + * To perform their task, they rely on one or more Extensions, to translate to the backends specific syntax. + * @see Extension + */ +class CANTOR_EXPORT Assistant : public QObject, public KXMLGUIClient +{ + Q_OBJECT + public: + /** + * Create a new assistant + * @param parent the parent Object @see QObject + **/ + explicit Assistant( QObject* parent ); + /** + * Destructor + */ + ~Assistant() override; + + /** + * Sets the backend, this Assistant operates on + * @param backend the new backend + */ + void setBackend(Backend* backend); + + /** + * Sets the properties of this Assistant + * according to KPluginMetaData + * @param info KPluginMetaData + */ + void setPluginInfo(const KPluginMetaData &info); + + /** + * Returns a list of all extensions, the current backend + * must provide to make this Assistant work. If it doesn't + * this Assistant won't be shown in the Menu + * @return list of required extensions + */ + QStringList requiredExtensions(); + + /** + * shows the assistants dialog or gui it offers, and returns a list of commands + * to be run, to achieve the desired effect + * @param parent the parent widget, each created Widget should use + */ + virtual QStringList run(QWidget* parent) = 0; + + /** + * initialize the needed KActions/integrate into the menu bars + */ + virtual void initActions() = 0; + + /** + * Returns the icon, this Assistant is using + * @return icon, this Assistant is using + */ + QString icon(); + /** + * Returns the name of the assistant + * @return name of the assistant + */ + QString name(); + /** + * Returns the backend, this assistant operates on + * @return backend, this assistant operates on + */ + Backend* backend(); + + Q_SIGNALS: + /** + * signal emitted, if the user has requested this Assistant to run + * e.g. by clicking on its action in the menu + */ + void requested(); + + private: + AssistantPrivate* d; +}; + +} +#endif /* _ASSISTANT_H */ diff --git a/src/lib/backend.cpp b/src/lib/backend.cpp new file mode 100644 index 0000000..289c71f --- /dev/null +++ b/src/lib/backend.cpp @@ -0,0 +1,247 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include + +#include "backend.h" +#include "extension.h" + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +using namespace Cantor; + +class Cantor::BackendPrivate +{ + public: + QString name; + QString comment; + QString icon; + QString url; + bool enabled{true}; + QList supportedGraphicPackagesCache; +}; + +Backend::Backend(QObject* parent, const QList& args) : QObject(parent), + d(new BackendPrivate) +{ + Q_UNUSED(args) +} + +Backend::~Backend() +{ + delete d; +} + +QString Backend::name() const +{ + return d->name; +} + +QString Backend::comment() const +{ + return d->comment; +} + +QString Backend::description() const +{ + return comment(); +} + +QString Backend::icon() const +{ + return d->icon; +} + +QString Backend::url() const +{ + return d->url; +} + +QString Backend::defaultHelp() const +{ + return QString(); +} + +bool Backend::isEnabled() const +{ + return d->enabled && requirementsFullfilled(); +} + +void Backend::setEnabled(bool enabled) +{ + d->enabled = enabled; +} + +QStringList Backend::listAvailableBackends() +{ + QStringList l; + for (Backend* b : availableBackends()) + { + if(b->isEnabled()) + l<name(); + } + + return l; +} + +QList Backend::availableBackends() +{ + static QList backendCache; + //if we already have all backends Cached, just return the cache. + //otherwise create the available backends + if(!backendCache.isEmpty()) + { + return backendCache; + } + + const QVector plugins = KPluginMetaData::findPlugins(QStringLiteral("cantor/backends")); + + for (const KPluginMetaData &plugin : plugins) { + + const auto result = KPluginFactory::instantiatePlugin(plugin, QCoreApplication::instance()); + + if (!result) { + qDebug() << "Error while loading backend: " << result.errorText; + continue; + } + + Backend *backend = result.plugin; + + backend->d->name = plugin.name(); + backend->d->comment = plugin.description(); + backend->d->icon = plugin.iconName(); + backend->d->url = plugin.website(); + backendCache << backend; + } + + return backendCache; +} + +Backend* Backend::getBackend(const QString& name) +{ + for (Backend* b : availableBackends()) + { + if(b->name().toLower()==name.toLower() || b->id().toLower()==name.toLower()) + return b; + } + + return nullptr; +} + +QStringList Backend::extensions() const +{ + QList extensions = findChildren(QRegularExpression(QLatin1String(".*Extension"))); + QStringList names; + for (Extension* e : extensions) + names << e->objectName(); + return names; +} + +Extension* Backend::extension(const QString& name) const +{ + return findChild(name); +} + +bool Backend::checkExecutable(const QString& name, const QString& path, QString* reason) +{ + if (path.isEmpty()) + { + if (reason) + *reason = i18n("No path for the %1 executable specified. " + "Please provide the correct path in the application settings and try again.", + name); + return false; + } + + QFileInfo info(path); + if (!info.exists()) + { + if (reason) + *reason = i18n("The specified file '%1' for the %2 executable doesn't exist. " + "Please provide the correct path in the application settings and try again.", + path, name); + return false; + } + + if (!info.isExecutable()) + { + if (reason) + *reason = i18n("The specified file '%1' doesn't point to an executable. " + "Please provide the correct path in the application settings and try again.", + path); + return false; + } + + return true; +} + +bool Cantor::Backend::testProgramWritable(const QString& program, const QStringList& args, const QString& filename, const QString& expectedContent, QString* reason, int timeOut) +{ + QProcess process; + process.setProgram(program); + process.setArguments(args); + process.start(); + + if (process.waitForFinished(timeOut) == false) + { + if (reason) + *reason = i18n("The program %1 didn't finish the execution after %2 milliseconds during the plot integration test.", QFileInfo(program).fileName(), timeOut); + + return false; + } + + QFile file(filename); + if (!file.open(QIODevice::ReadOnly)) + { + if (reason) + *reason = i18n("Failed to open the file %1 during the plot integration test.", filename); + return false; + } + + QString fileContent = QString::fromLocal8Bit(file.readAll()); + if (fileContent.trimmed() != expectedContent) + { + if (reason) + *reason = i18n("Failed to parse the result during the plot integration test."); + return false; + } + + file.close(); + file.remove(); + + return true; +} + +QList Backend::availableGraphicPackages() const +{ + if (d->supportedGraphicPackagesCache.size() != 0) + return d->supportedGraphicPackagesCache; + + if (!(capabilities() & Capability::IntegratedPlots)) + return QList(); // because this cache is empty + + QString packagesFile = id() + QLatin1String("/graphic_packages.xml"); + QString filename = QStandardPaths::locate(QStandardPaths::AppDataLocation, packagesFile, QStandardPaths::LocateFile); + + if (filename.isEmpty()) + filename = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QLatin1String("cantor/") + packagesFile, QStandardPaths::LocateFile); + + if (filename.isEmpty()) + return QList(); + + d->supportedGraphicPackagesCache = GraphicPackage::loadFromFile(filename); + + return d->supportedGraphicPackagesCache; +} diff --git a/src/lib/backend.h b/src/lib/backend.h new file mode 100644 index 0000000..4ba7db9 --- /dev/null +++ b/src/lib/backend.h @@ -0,0 +1,237 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _BACKEND_H +#define _BACKEND_H + +#include +#include +#include +#include + +#include "graphicpackage.h" + +#include "cantor_export.h" + +class KConfigSkeleton; +class QWidget; + +/** + * Namespace collecting all Classes of the Cantor Libraries + */ +namespace Cantor +{ +class Session; +class Extension; +class BackendPrivate; + +/** + * The Backend class provides access to information about the backend. + * It provides access to what features are supported by the backend, and + * a factory method to create a new Session + * It needs to be subclassed by all Backends. + * + * @author Alexander Rieder + */ + +class CANTOR_EXPORT Backend : public QObject, public KXMLGUIClient +{ + Q_OBJECT + public: + /** + * This enum is used to specify the Features, supported by a backend. + */ + enum Capability{ + Nothing = 0x0, ///< the Backend doesn't support any of the optional features + LaTexOutput = 0x1, ///< it can output results as LaTeX code + InteractiveMode = 0x2, /**< it supports an interactive workflow. (It means a command + can ask for additional input while running) + */ + SyntaxHighlighting = 0x4, ///< it offers a custom Syntax Highlighter + Completion = 0x8, ///< it offers completion of partially typed commands + SyntaxHelp = 0x10, /**< it offers help about a commands syntax, that will + be shown in a tooltip + */ + VariableManagement = 0x20, ///< it offers access to the variables (for variable management panel) + IntegratedPlots = 0x40, ///< it offers, that backend supports plot not only as separate window, but also image result + }; + Q_DECLARE_FLAGS(Capabilities, Capability) + + protected: + /** + * Create a new Backend. Normally the static createBackend factory method + * should be used. + * @param parent the Parent object + * @param args optional arguments (not used) + */ + explicit Backend( QObject* parent = nullptr,const QList& args=QList() ); + /** + * Destructor. Doesn't anything. + */ + ~Backend() override; + + public: + + /** + * Creates a new Session. It is the way to go to create a Session, + * don't call new Session on your own. + * @return a new Session of this Backend, or 0 if creating failed + */ + virtual Session* createSession() = 0; + /** + * Returns list of the supported optional features + * @return a list of features, containing items of the Capability enum, ORed together + */ + virtual Capabilities capabilities() const = 0; + /** + * Returns whether all of this backends requirements are fulfilled, or if some are missing. + * @param reason if set, backend write information about missing requirements, if they exists + * @return @c true if all the requirements needed to use this Backend are fulfilled + * @return @c false some requirements are missing. e.g. the maxima executable can not be found + * @see Capability + */ + virtual bool requirementsFullfilled(QString* const reason = nullptr) const = 0; + + /** + * Returns a unique string to identify this backend. + * In contrast to name() this string isn't translated + * @return string to identify backend + */ + virtual QString id() const = 0; + + /** + * Returns the recommended version of the backend supported by Cantor + * @return the recommended version of the backend + */ + virtual QString version() const = 0; + + //Stuff extracted from the .desktop file + /** + * Returns the name of the backend + * @return the backends name + */ + QString name() const; + + /** + * Returns a short comment about the backend. + * @return comment about the backend + */ + QString comment() const; + /** + * Returns the icon to use with this backend + * @return name of the icon + */ + QString icon() const; + /** + * Returns the Url of the Homepage for the Backend + * @return the url + */ + QString url() const; + /** + * Returns an Url pointing to the Help of the Backend + * The method should be overwritten by all Backends(who have an online help) + * You should make the returned Url translatable, e.g. by doing something like: + * return i18nc("the url to the documentation of KAlgebra, please check if there is a translated version and use the correct url", + * "https://docs.kde.org/?application=kalgebra"); + * @return Url of the help + */ + virtual QUrl helpUrl() const = 0; + + /** + * Returns the text that should be shown on default in the HelpPanel when it's initially created. + * This text can contain the information for who to use the integrated help available in some backends like Maxima and R. + */ + virtual QString defaultHelp() const; + + /** + * Returns if the backend should be enabled (shown in the Backend dialog) + * @return @c true, if the enabled flag is set to true, and the requirements are fulfilled + * @return @c false, if the backend was purposely disabled, or requirements are missing + * @see requirementsFullfilled() + */ + bool isEnabled() const; + /** + * Enables/disables this backend + * @param enabled true to enable backend false to disable + */ + void setEnabled(bool enabled); + + /** + * Returns a longer description of the Backend, e.g. purpose, strengths etc. + * It should help the user to decide between the different Backends + * @return a description of the backend. It can contain html + */ + virtual QString description() const; + /** + * Returns a Widget for configuring this backend + * @return Widget for usage in the Settings dialog + */ + virtual QWidget* settingsWidget(QWidget* parent) const = 0; + /** + * Returns a KConfig object, containing all the settings, + * the backend might need + * @return a KConfigSkeleton object, for configuring this backend + */ + virtual KConfigSkeleton* config() const = 0; + /** + * Returns a list of the names of all the Extensions supported by this backend + * @return a list of the names of all the Extensions supported by this backend + * @see extension(const QString& name) + */ + QStringList extensions() const; + /** + * Returns an Extension of this backend for the given name, or null + * if the Backend doesn't have an extension with this name. + * @return Pointer to the Extension object with the given name + */ + Extension* extension(const QString& name) const; + + /** + * Returns a list of the names of all the installed and enabled backends + * @return a list of the names of all the installed and enabled backends + * @see isEnabled() + */ + static QStringList listAvailableBackends(); + /** + * Returns Pointers to all the installed backends + * @return Pointers to all the installed backends + */ + static QList availableBackends(); + /** + * Returns the backend with the given name, or null if it isn't found + * @return the backend with the given name, or null if it isn't found + */ + static Backend* getBackend(const QString& name); + + /** + * @return @c true if all the requirements (the path is correct, the file is executable, etc.) are fulfilled + * for the backend @c Name with the path to the executable @c path and false otherwise. + * In case the requrements are not fulfilled, the reason is written to @c reason. + */ + static bool checkExecutable(const QString& name, const QString& path, QString* reason = nullptr); + + /** + * This is test function, which allow test, that run @p program with @p args produce output file @p filename + * with content @p expectedContent during time less that @p timeOut. + * If something go wrong, problem will be described in @p reason, if the parameter is not @p nullptr. + */ + static bool testProgramWritable( + const QString& program, const QStringList& args, const QString& filename, const QString& expectedContent, QString* reason = nullptr, int timeOut = 5000 + ); + + /** + * This function will return list of all available workable graphics packages for integrated graphics + */ + QList availableGraphicPackages() const; + + private: + BackendPrivate* d; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(Backend::Capabilities) + +} + +#endif /* _BACKEND_H */ diff --git a/src/lib/cantor_assistant.desktop b/src/lib/cantor_assistant.desktop new file mode 100644 index 0000000..a552b74 --- /dev/null +++ b/src/lib/cantor_assistant.desktop @@ -0,0 +1,55 @@ +[Desktop Entry] +Type=ServiceType +X-KDE-ServiceType=Cantor/Assistant +Comment=An Assistant for Cantor +Comment[ar]=مساعد لكنتور +Comment[bg]=Помощник за Cantor +Comment[bs]=Asistent za Cantor +Comment[ca]=Un assistent per al Cantor +Comment[ca@valencia]=Un assistent per a Cantor +Comment[cs]=Pomocník pro Cantor +Comment[da]=En assistent til Cantor +Comment[de]=Ein Assistent für Cantor +Comment[el]=Ένας βοηθός για το Cantor +Comment[en_GB]=An Assistant for Cantor +Comment[es]=Un asistente para Cantor +Comment[et]=Cantori abiline +Comment[eu]=Cantor-rerako laguntzaile bat +Comment[fa]=یک دستیار برای کانتور +Comment[fi]=Cantorin opastettu toiminto +Comment[fr]=Un assistant pour Cantor +Comment[ga]=Cúntóir Cantor +Comment[gl]=Un asistente para Cantor +Comment[hi]=केनटॉर के लिए सहायक +Comment[hr]=Pomoćnik za Cantor +Comment[hu]=Segéd a Cantorhoz +Comment[ia]=Un assistente per Cantor +Comment[it]=Un assistente per Cantor +Comment[ja]=Cantor のウィザード +Comment[ka]=Cantor-ის თანაშემწე +Comment[kk]=Cantor-дың көмекшісі +Comment[km]=An Assistant for Cantor +Comment[ko]=Cantor 마법사 +Comment[lv]=Cantor palÄ«gs +Comment[nb]=En assistent for Cantor +Comment[nds]=En Cantor-Hölper +Comment[nl]=Een assistent voor Cantor +Comment[nn]=Ein vegvisar til Cantor +Comment[pl]=Asystent programu Cantor +Comment[pt]=Um assistente para o Cantor +Comment[pt_BR]=Um assistente para o Cantor +Comment[ru]=Диалоговое окно для Cantor +Comment[sk]=Asistent pre Cantor +Comment[sl]=Pomočnik za Cantor +Comment[sv]=En guide för Cantor +Comment[ta]=கேண்ட்டொருக்கான உதவிநிரல் +Comment[th]=ตัวช่วยสำหรับ Cantor +Comment[tr]=Cantor için bir Yardımcı +Comment[ug]=Cantor ياردەمچىسى +Comment[uk]=Помічник Cantor +Comment[x-test]=xxAn Assistant for Cantorxx +Comment[zh_CN]=Cantor 助手 +Comment[zh_TW]=Cantor 小助手 + +[PropertyDef::RequiredExtensions] +Type=QStringList diff --git a/src/lib/cantor_backend.desktop b/src/lib/cantor_backend.desktop new file mode 100644 index 0000000..b8575be --- /dev/null +++ b/src/lib/cantor_backend.desktop @@ -0,0 +1,53 @@ +[Desktop Entry] +Type=ServiceType +X-KDE-ServiceType=Cantor/Backend +Comment=A Backend for Cantor +Comment[ar]=خلفية تشغيلية لكنتور +Comment[bg]=Ядро за Cantor +Comment[bs]=VrÅ¡i računanje za Cantora +Comment[ca]=Un dorsal per al Cantor +Comment[ca@valencia]=Un dorsal per a Cantor +Comment[cs]=Podpůrná vrstva Cantoru +Comment[da]=En backend til Cantor +Comment[de]=Ein Modul für Cantor +Comment[el]=Ένα σύστημα υποστήριξης για το Cantor +Comment[en_GB]=A Backend for Cantor +Comment[es]=Un motor para Cantor +Comment[et]=Cantori taustaprogramm +Comment[eu]=Cantor-rerako 'backend' bat +Comment[fa]=یک پشتیبان برای کانتور +Comment[fi]=Cantorin taustajärjestelmä +Comment[fr]=Un moteur pour Cantor +Comment[ga]=Inneall Cantor +Comment[gl]=Unha infraestrutura para Cantor +Comment[hi]=केनटॉर के लिए बेकएण्ड +Comment[hr]=Pozadinski servis za Cantor +Comment[hu]=Egy háttérprogram a Cantorhoz +Comment[ia]=U retro-administration per Cantor +Comment[it]=Un motore R per Cantor +Comment[ja]=Cantor のバックエンド +Comment[ka]=Cantor-ის უკანაბოლო +Comment[kk]=Cantor тетігі +Comment[km]=កម្មវិធី​ខាង​ក្រោយ​សម្រាប់​ Cantor +Comment[ko]=Cantor 백엔드 +Comment[lv]=Cantor aizmugure +Comment[nb]=En bakgrunnsmotor for Cantor +Comment[nds]=En Hülpprogramm för Cantor +Comment[nl]=Een backend voor Cantor +Comment[nn]=Ein Cantor-motor +Comment[pa]=ਕੇਨਟੋਰ ਲਈ ਬੈਕਐਂਡ +Comment[pl]=Silnik dla Cantor +Comment[pt]=Uma Infra-Estrutura para o Cantor +Comment[pt_BR]=Uma infraestrutura para o Cantor +Comment[ru]=Модуль поддержки системы компьютерной алгебры для Cantor +Comment[sk]=Backend pre Cantor +Comment[sl]=Zaledje za Cantor +Comment[sv]=Ett bakgrundsprogram för Cantor +Comment[ta]=கேண்ட்டொருக்கான பின்நிலை +Comment[th]=โปรแกรมเบื้องหลังสำหรับ Cantor +Comment[tr]=Bir Cantor arka ucu +Comment[ug]=Cantor ئارقا ئۇچى +Comment[uk]=Модуль Cantor +Comment[x-test]=xxA Backend for Cantorxx +Comment[zh_CN]=Cantor 后端 +Comment[zh_TW]=Cantor 後端介面 diff --git a/src/lib/cantor_libs.kcfg b/src/lib/cantor_libs.kcfg new file mode 100644 index 0000000..ca93fcf --- /dev/null +++ b/src/lib/cantor_libs.kcfg @@ -0,0 +1,19 @@ + + + QStandardPaths + + + + + QStandardPaths::findExecutable( QLatin1String("latex") ) + + + + QStandardPaths::findExecutable( QLatin1String("dvips") ) + + + + diff --git a/src/lib/cantor_macros.h b/src/lib/cantor_macros.h new file mode 100644 index 0000000..9fcb294 --- /dev/null +++ b/src/lib/cantor_macros.h @@ -0,0 +1,19 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _CANTOR_MACROS_H +#define _CANTOR_MACROS_H + +#include + +/** + Exports Backend plugin. +*/ +#define K_EXPORT_CANTOR_PLUGIN(libname, classname) \ + K_PLUGIN_FACTORY(factory, registerPlugin();) \ + K_EXPORT_PLUGIN(factory("cantor_" #libname)) \ + K_EXPORT_PLUGIN_VERSION(CANTOR_VERSION) + +#endif /* _CANTOR_MACROS_H */ diff --git a/src/lib/cantor_panelplugin.desktop b/src/lib/cantor_panelplugin.desktop new file mode 100644 index 0000000..10c36bb --- /dev/null +++ b/src/lib/cantor_panelplugin.desktop @@ -0,0 +1,54 @@ +[Desktop Entry] +Type=ServiceType +X-KDE-ServiceType=Cantor/PanelPlugin +Comment=A Plugin for Cantor's Panel +Comment[ar]=ملحق للوحة كنتور +Comment[bg]=Приставка за панела на Cantor +Comment[bs]=Dodatak za Cantor Panel +Comment[ca]=Un connector per al plafó del Cantor +Comment[ca@valencia]=Un connector per al quadro de Cantor +Comment[cs]=Modul pro panel Cantoru +Comment[da]=Et plugin til Cantor's panel +Comment[de]=Ein Modul für Cantors Kontrollleiste +Comment[el]=Ένα πρόσθετο για τον πίνακα του Cantor +Comment[en_GB]=A Plugin for Cantor's Panel +Comment[es]=Un complemento para el panel de Cantor +Comment[et]=Cantori paneeli plugin +Comment[eu]=Cantor-ren panelerako plugin bat +Comment[fa]=یک افزونه برای تابلوی کانتور +Comment[fi]=Cantorin paneeliliitännäinen +Comment[fr]=Un module externe pour le tableau de bord de Cantor +Comment[gl]=Un complemento para o panel de Cantor +Comment[hi]=केन्टॉर पटल के लिए प्लगिन +Comment[hu]=Egy bővítmény a Cantor paneléhez +Comment[ia]=Un plugin per le pannello de Cantor +Comment[it]=Un'estensione per il pannello di Cantor +Comment[ja]=Cantor のパネルのプラグイン +Comment[ka]=Cantor-ის პანელის დამატება +Comment[kk]=Cantor панелінің плагині +Comment[km]=កម្មវិធី​ជំនួយ​សម្រាប់​ផ្ទាំង​របស់​ Cantor +Comment[ko]=Cantor 패널 플러그인 +Comment[lv]=Spraudnis Cantor panelim +Comment[nb]=Et programtillegg for Cantors panel +Comment[nds]=En Moduul för't Cantor-Paneel +Comment[nl]=Een plugin voor het paneel van Cantor +Comment[nn]=Tillegg til Cantor-panel +Comment[pa]=ਕੇਨਟੋਰ ਦੇ ਪੈਨਲ ਲਈ ਪਲੱਗਇਨ +Comment[pl]=Wtyczka dla panelu Cantor +Comment[pt]=Um 'Plugin' para o Painel do Cantor +Comment[pt_BR]=Um plugin para o painel do Cantor +Comment[ru]=Модуль для панели Cantor +Comment[sk]=Plugin pre panel Cantor +Comment[sl]=Vstavek za pult Cantorja +Comment[sv]=Ett insticksprogram för Cantors panel +Comment[ta]=கேண்ட்டொரின் பலகைக்கான செருகுநிரல் +Comment[th]=ปลั๊กอินสำหรับพาแนลของ Cantor +Comment[tr]=Cantor Paneli için bir eklenti +Comment[ug]=Cantor كۆزنەكچىسىنىڭ قىستۇرمىسى +Comment[uk]=Додаток панелі Cantor +Comment[x-test]=xxA Plugin for Cantor's Panelxx +Comment[zh_CN]=Cantor 面板插件 +Comment[zh_TW]=Cantor 的面板外掛程式 + +[PropertyDef::RequiredExtensions] +Type=QStringList diff --git a/src/lib/completionobject.cpp b/src/lib/completionobject.cpp new file mode 100644 index 0000000..cf2c1d8 --- /dev/null +++ b/src/lib/completionobject.cpp @@ -0,0 +1,277 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "completionobject.h" +using namespace Cantor; + +#include +#include +#include + +#include "session.h" + +class Cantor::CompletionObjectPrivate +{ + public: + QStringList completions; + QString line; + QString command; + QString identifier; + QString completion; + int position; + Session* session; + bool parenCompletion; +}; + +CompletionObject::CompletionObject(Session* session) : + d(new CompletionObjectPrivate) +{ + setParent(session); + d->position = -1; + d->session=session; + + connect(this, &CompletionObject::fetchingDone, this, &CompletionObject::findCompletion); + connect(this, &CompletionObject::fetchingTypeDone, this, &CompletionObject::completeLineWithType); + + setCompletionMode(KCompletion::CompletionShell); +} + +CompletionObject::~CompletionObject() +{ + delete d; +} + +QString CompletionObject::command() const +{ + return d->command; +} + +Session* CompletionObject::session() const +{ + return d->session; +} + +QStringList CompletionObject::completions() const +{ + return d->completions; +} + +QString CompletionObject::identifier() const +{ + return d->identifier; +} + +QString CompletionObject::completion() const +{ + return d->completion; +} + +void CompletionObject::setLine(const QString& line, int index) +{ + d->parenCompletion = false; + d->line = line; + if (index < 0) + index = line.length(); + if (index > 1 && line[index-1] == QLatin1Char('(')) { + --index; // move before the parenthesis + d->parenCompletion = true; // but remember it was there + } + int cmd_index = locateIdentifier(line, index-1); + if (cmd_index < 0) + cmd_index = index; + d->position=cmd_index; + d->command=line.mid(cmd_index, index-cmd_index); + + //start a delayed fetch + QTimer::singleShot(0, this, &CompletionObject::fetchCompletions); +} + +void CompletionObject::updateLine(const QString& line, int index) +{ + d->line = line; + if (index < 0) + index = line.length(); + int cmd_index = locateIdentifier(line, index-1); + if (cmd_index < 0) + cmd_index = index; + d->command=line.mid(cmd_index, index-cmd_index); + + // start a delayed fetch + // For some backends this is a lot of unnecessary work... + QTimer::singleShot(0, this, &CompletionObject::fetchCompletions); +} + +void CompletionObject::completeLine(const QString& comp, CompletionObject::LineCompletionMode mode) +{ + d->identifier = comp; + if (comp.isEmpty()) { + int index = d->position + d->command.length(); + emit lineDone(d->line, index); + } else if (mode == PreliminaryCompletion) { + completeUnknownLine(); + } else /* mode == FinalCompletion */ { + QTimer::singleShot(0, this, &CompletionObject::fetchIdentifierType); + } +} + +void CompletionObject::fetchIdentifierType() +{ + emit fetchingTypeDone(UnknownType); +} + + +void CompletionObject::setCompletions(const QStringList& completions) +{ + d->completions=completions; + this->setItems(completions); +} + +void CompletionObject::setCommand(const QString& cmd) +{ + d->command=cmd; +} + +int CompletionObject::locateIdentifier(const QString& cmd, int index) const +{ + if (index < 0) + return -1; + + int i; + for (i=index; i>=0 && mayIdentifierContain(cmd[i]); --i) + {} + + if (i==index || !mayIdentifierBeginWith(cmd[i+1])) + return -1; + return i+1; +} + +bool CompletionObject::mayIdentifierContain(QChar c) const +{ + return c.isLetter() || c.isDigit() || c == QLatin1Char('_'); +} + +bool CompletionObject::mayIdentifierBeginWith(QChar c) const +{ + return c.isLetter() || c == QLatin1Char('_'); +} + +void CompletionObject::findCompletion() +{ + if (d->parenCompletion) { + disconnect(this, SIGNAL(fetchingTypeDone(IdentifierType)), nullptr, nullptr); + connect(this, &CompletionObject::fetchingTypeDone, this, &CompletionObject::handleParenCompletionWithType); + d->identifier = d->command; + fetchIdentifierType(); + return; + } + d->completion = makeCompletion(command()); + emit done(); +} + +void CompletionObject::handleParenCompletionWithType(IdentifierType type) +{ + disconnect(this, SIGNAL(fetchingTypeDone(IdentifierType)), nullptr, nullptr); + connect(this, &CompletionObject::fetchingTypeDone, this, &CompletionObject::completeLineWithType); + + if (type == FunctionWithArguments || type == FunctionWithoutArguments) { + d->completion = d->command; + emit done(); + } +} + +void CompletionObject::completeLineWithType(IdentifierType type) +{ + switch(type) { + case VariableType: + completeVariableLine(); + break; + case FunctionWithArguments: + case FunctionWithoutArguments: + completeFunctionLine(type); + break; + case KeywordType: + completeKeywordLine(); + break; + case UnknownType: + completeUnknownLine(); + break; + } +} + +void CompletionObject::completeFunctionLine(IdentifierType type) +{ + QString newline; + int newindex; + + QString func = d->identifier; + int after_command = d->position + d->command.length(); + QString part1 = d->line.left(d->position) + func; + int index = d->position + func.length() + 1; + if (after_command < d->line.length() && d->line.at(after_command) == QLatin1Char('(')) { + QString part2 = d->line.mid(after_command+1); + int i; + // search for next non-space position + for (i = after_command+1; + i < d->line.length() && d->line.at(i).isSpace(); + ++i) {} + if (type == FunctionWithArguments) { + if (i < d->line.length()) { + newline = part1+QLatin1Char('(')+part2; + newindex = index; + } else { + newline = part1+QLatin1String("()")+part2; + newindex = index; + } + } else /*type == FunctionWithoutArguments*/ { + if (i < d->line.length() && d->line.at(i) == QLatin1Char(')')) { + newline = part1+QLatin1Char('(')+part2; + newindex = index+i-after_command; + } else { + newline = part1+QLatin1String("()")+part2; + newindex = index+1; + } + } + } else { + QString part2 = d->line.mid(after_command); + if (type == FunctionWithArguments) { + newline = part1+QLatin1String("()")+part2; + newindex = index; + } else /*type == FunctionWithoutArguments*/ { + newline = part1+QLatin1String("()")+part2; + newindex = index+1; + } + } + emit lineDone(newline, newindex); +} + +void CompletionObject::completeKeywordLine() +{ + QString keyword = d->identifier; + int after_command = d->position + d->command.length(); + int newindex = d->position + keyword.length() + 1; + QString part1 = d->line.left(d->position) + keyword; + QString part2 = d->line.mid(after_command); + if (after_command < d->line.length() && d->line.at(after_command) == QLatin1Char(' ')) + emit lineDone(part1+part2, newindex); + else + emit lineDone(part1+QLatin1Char(' ')+part2, newindex); +} + +void CompletionObject::completeVariableLine() +{ + QString var = d->identifier; + int after_command = d->position + d->command.length(); + QString newline = d->line.left(d->position) + var + d->line.mid(after_command); + int newindex = d->position + var.length(); + emit lineDone(newline, newindex); +} + +void CompletionObject::completeUnknownLine() +{ + // identifiers of unknown type are completed like variables + completeVariableLine(); +} + + diff --git a/src/lib/completionobject.h b/src/lib/completionobject.h new file mode 100644 index 0000000..38f6d4f --- /dev/null +++ b/src/lib/completionobject.h @@ -0,0 +1,210 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _COMPLETIONOBJECT_H +#define _COMPLETIONOBJECT_H + +#include + +#include "cantor_export.h" + +namespace Cantor +{ +class CompletionObjectPrivate; +class Session; + +/** + * This Object is used to provide a Tab Completion, in an asynchronous way. + * Each backend, supporting tab completion, needs to provide their own + * CompletionObject, that reimplements the fetching of the completions + * and emits done() as soon as the completions are available + * + * @author Alexander Rieder + */ +class CANTOR_EXPORT CompletionObject : public KCompletion +{ + Q_OBJECT + public: + /** + * Constructor + * @param parent the session, this object belongs to + */ + explicit CompletionObject(Session* parent); + ///Destructor + ~CompletionObject() override; + + enum LineCompletionMode { + PreliminaryCompletion, ///< Only insert the completion + FinalCompletion ///< also add () for functions, etc + }; + + /** + * Returns a list of completions + * @return a list of completions + */ + QStringList completions() const; + /** + * Returns the last completion + * @return the last completion + */ + QString completion() const; + /** + * returns the command, this completion is for + * @return the command, this completion is for + */ + QString command() const; + /** + * returns the session, this object belongs to + * @return the session, this object belongs to + */ + Session* session() const; + + /** + * Sets the line and cursor index at which a completion should be found + * This triggers an asynchronous fetching of completions, + * which emits done() when done. + * @param line the line that is to be completed + * @param index the cursor position in line + */ + void setLine(const QString& line, int index); + /** + * Takes the changed line and updates the command accordingly. + * This triggers an asynchronous fetching of completions, + * which emits done() when done. + * @param line the line that is to be completed + * @param index the cursor position in line + */ + void updateLine(const QString& line, int index); + /** + * Takes a completion and a completion mode and triggers and calculates + * the new line with this completion. If the completion mode is + * FinalCompletion some postprocessing is done asynchronously. + * Emits lineDone when finished. + * @param comp the completion that's to be processed + * @param mode the mode of completion. Can be PreliminaryCompletion + * (insert only) or FinalCompletion (also add () for functions, etc.) + */ + void completeLine(const QString& comp, LineCompletionMode mode); + + protected: + + enum IdentifierType { + VariableType, ///< a variable + FunctionWithArguments, ///< a function that takes arguments + FunctionType = FunctionWithArguments, ///< an alias for function with arguments + FunctionWithoutArguments, ///< a function that takes no arguments + KeywordType, ///< a keyword + UnknownType ///< no identifier type was found + }; + /** + * returns the identifier for fetchIdentifierType + * @return the identifier for fetchIdentifierType + */ + QString identifier() const; + + /** + * Sets the completions + * @param completions list of possible completions + */ + void setCompletions(const QStringList& completions); + /** + * sets the command/command-part + * @param cmd the command/command-part + */ + void setCommand(const QString& cmd); + /** + * Find an identifier in cmd that ends at index + * @param cmd the command + * @param index the index to look at + */ + virtual int locateIdentifier(const QString& cmd, int index) const; + /** + * return true if c may be used in identifier names + * @param c the character + */ + virtual bool mayIdentifierContain(QChar c) const; + /** + * return true if identifier names can begin with c + * @param c the character + */ + virtual bool mayIdentifierBeginWith(QChar c) const; + /** + * Completes line with function identifier and emits lineDone with the + * completed line. Helper function for completeLine. + * @param type whether the function takes arguments, default: FunctionWithArguments + */ + void completeFunctionLine(IdentifierType type = FunctionWithArguments); + /** + * Completes line with keyword identifier and emits lineDone with the + * completed line. Helper function for completeLine. + */ + void completeKeywordLine(); + /** + * Completes line with variable identifier and emits lineDone with the + * completed line. Helper function for completeLine. + */ + void completeVariableLine(); + /** + * Completes line with identifier of unknown type and emits lineDone with + * the completed line. Helper function for completeLine. + */ + void completeUnknownLine(); + protected Q_SLOTS: + /** + * This function should be reimplemented to start the actual fetching + * of the completions. It can be asynchronous. + * Remember to emit fetchingDone, if the fetching is complete + */ + virtual void fetchCompletions() = 0; + /** + * Fetch the identifier type of d->identifier; reimplemented in + * the backends. Emit fetchingTypeDone when done. + */ + virtual void fetchIdentifierType(); + /** + * Find the completion. To be called when fetching is done. + * Emits done() when done. + */ + void findCompletion(); + /** + * Calls the appropriate complete*Line based on type + * @param type the identifier type found in line() + */ + void completeLineWithType(Cantor::CompletionObject::IdentifierType type); + /** + * Handle a completion request after a opening parenthesis. + * @param type the type of the identifier before the parenthesis + */ + void handleParenCompletionWithType(Cantor::CompletionObject::IdentifierType type); + Q_SIGNALS: + /** + * indicates that the fetching of completions is done + */ + void fetchingDone(); + /** + * indicates that the type of identifier() was found and passes the + * type as an argument + * @param type the identifier type + */ + void fetchingTypeDone(Cantor::CompletionObject::IdentifierType type); + /** + * indicates that the possible completions and a common completion string + * have been found + */ + void done(); + /** + * emitted when the line completion is done, passes the new line and + * the cursor index + * @param line the new line + * @param index the new cursor index + */ + void lineDone(const QString &line, int index); + private: + CompletionObjectPrivate* d; +}; + +} + +#endif /* _COMPLETIONOBJECT_H */ diff --git a/src/lib/config-cantorlib.h.cmake b/src/lib/config-cantorlib.h.cmake new file mode 100644 index 0000000..0003dd2 --- /dev/null +++ b/src/lib/config-cantorlib.h.cmake @@ -0,0 +1,3 @@ +#cmakedefine WITH_EPS 1 + +#cmakedefine LIBSPECTRE_FOUND 1 diff --git a/src/lib/defaulthighlighter.cpp b/src/lib/defaulthighlighter.cpp new file mode 100644 index 0000000..d9a7331 --- /dev/null +++ b/src/lib/defaulthighlighter.cpp @@ -0,0 +1,453 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2006 David Saxton +*/ + +#include "defaulthighlighter.h" +#include "session.h" + +#include +#include +#include +#include +#include +#include + +using namespace Cantor; + +struct HighlightingRule +{ + QRegularExpression regExp; + QTextCharFormat format; +}; + +bool operator==(const HighlightingRule& rule1, const HighlightingRule& rule2) +{ + return rule1.regExp == rule2.regExp; +} + +struct PairOpener { + PairOpener() : position(-1), type(-1) { } + PairOpener(int p, int t) : position(p), type(t) { } + + int position; + int type; +}; + +class Cantor::DefaultHighlighterPrivate +{ + public: + QTextCursor cursor; + + //Character formats to use for the highlighting + QTextCharFormat functionFormat; + QTextCharFormat variableFormat; + QTextCharFormat objectFormat; + QTextCharFormat keywordFormat; + QTextCharFormat numberFormat; + QTextCharFormat operatorFormat; + QTextCharFormat errorFormat; + QTextCharFormat commentFormat; + QTextCharFormat stringFormat; + QTextCharFormat matchingPairFormat; + QTextCharFormat mismatchingPairFormat; + + int lastBlockNumber = -1; + int lastPosition = -1; + bool suppressRuleChangedSignal = false; + + // each two consecutive items build a pair + QList pairs; + + QList regExpRules; + QHash wordRules; +}; + +DefaultHighlighter::DefaultHighlighter(QObject* parent) : QSyntaxHighlighter(parent), + d(new DefaultHighlighterPrivate) +{ + addPair(QLatin1Char('('), QLatin1Char(')')); + addPair(QLatin1Char('['), QLatin1Char(']')); + addPair(QLatin1Char('{'), QLatin1Char('}')); + + updateFormats(); + connect(qApp, &QGuiApplication::paletteChanged, + this, &DefaultHighlighter::updateFormats); +} + +DefaultHighlighter::DefaultHighlighter(QObject* parent, Session* session) + :DefaultHighlighter(parent) +{ + if (session) + { + auto* model = session->variableModel(); + if (model) + { + connect(model, &DefaultVariableModel::variablesAdded, this, &DefaultHighlighter::addVariables); + connect(model, &DefaultVariableModel::variablesRemoved, this, &DefaultHighlighter::removeRules); + connect(model, &DefaultVariableModel::functionsAdded, this, &DefaultHighlighter::addFunctions); + connect(model, &DefaultVariableModel::functionsRemoved, this, &DefaultHighlighter::removeRules); + + addVariables(model->variableNames()); + addFunctions(model->functions()); + } + } +} + +DefaultHighlighter::~DefaultHighlighter() +{ + delete d; +} + +void DefaultHighlighter::setTextItem(QGraphicsTextItem* item) +{ + d->cursor = item->textCursor(); + setDocument(item->document()); + + // make sure every item is connected only once + item->disconnect(this, SLOT(positionChanged(QTextCursor))); + + // QGraphicsTextItem has no signal cursorPositionChanged, but item really + // is a WorksheetTextItem + connect(item, SIGNAL(cursorPositionChanged(QTextCursor)), + this, SLOT(positionChanged(QTextCursor))); + + d->lastBlockNumber = -1; + d->lastPosition = -1; +} + +bool DefaultHighlighter::skipHighlighting(const QString& text) +{ + return text.isEmpty(); +} + +void DefaultHighlighter::highlightBlock(const QString& text) +{ + d->lastBlockNumber = d->cursor.blockNumber(); + if (skipHighlighting(text)) + return; + + highlightPairs(text); + highlightWords(text); + highlightRegExps(text); +} + +void DefaultHighlighter::addPair(QChar openSymbol, QChar closeSymbol) +{ + Q_ASSERT(!d->pairs.contains(openSymbol)); + Q_ASSERT(!d->pairs.contains(closeSymbol)); + d->pairs << openSymbol << closeSymbol; +} +void DefaultHighlighter::highlightPairs(const QString& text) +{ + const auto& cursor = d->cursor; + int cursorPos = -1; + if (cursor.blockNumber() == currentBlock().blockNumber() ) { + cursorPos = cursor.position() - currentBlock().position(); + // when text changes, this will be called before the positionChanged signal + // gets emitted. Hence update the position so we don't highlight twice + d->lastPosition = cursor.position(); + } + + QStack opened; + + for (int i = 0; i < text.size(); ++i) { + int idx = d->pairs.indexOf(text[i]); + if (idx == -1) + continue; + if (idx % 2 == 0) { //opener of a pair + opened.push(PairOpener(i, idx)); + } else if (opened.isEmpty()) { //closer with no previous opener + setFormat(i, 1, errorFormat()); + } else if (opened.top().type == idx - 1) { //closer with matched opener + int openPos = opened.pop().position; + if (cursorPos != -1 && + (openPos == cursorPos || openPos == cursorPos - 1 || + i == cursorPos || i == cursorPos - 1)) { + setFormat(openPos, 1, matchingPairFormat()); + setFormat(i, 1, matchingPairFormat()); + } + } else { //closer with mismatching opener + int openPos = opened.pop().position; + setFormat(openPos, 1, mismatchingPairFormat()); + setFormat(i, 1, mismatchingPairFormat()); + } + } + + // handled unterminated pairs + while (!opened.isEmpty()) { + int position = opened.pop().position; + setFormat(position, 1, errorFormat()); + } +} + +QStringList Cantor::DefaultHighlighter::parseBlockTextToWords(const QString& text) +{ + return text.split(QRegularExpression(QStringLiteral("\\b")), QString::SkipEmptyParts); +} + +void DefaultHighlighter::highlightWords(const QString& text) +{ + //qDebug() << "DefaultHighlighter::highlightWords"; + + const QStringList& words = parseBlockTextToWords(text); + int count; + int pos = 0; + + const int n = words.size(); + for (int i = 0; i < n; ++i) + { + count = words[i].size(); + QString word = words[i]; + + //kind of a HACK: + //look at previous words, if they end with allowed characters, + //prepend them to the current word. This allows for example + //to highlight words that start with a "Non-word"-character + //e.g. %pi in the scilab backend. + //qDebug() << "nonSeparatingCharacters().isNull(): " << nonSeparatingCharacters().isNull(); + if(!nonSeparatingCharacters().isNull()) + { + for(int j = i - 1; j >= 0; j--) + { + //qDebug() << "j: " << j << "w: " << words[j]; + const QString& w = words[j]; + const QString exp = QStringLiteral("(%1)*$").arg(nonSeparatingCharacters()); + //qDebug() << "exp: " << exp; + int idx = w.indexOf(QRegularExpression(exp)); + const QString& s = w.mid(idx); + //qDebug() << "s: " << s; + + if(s.size() > 0) + { + pos -= s.size(); + count += s.size(); + word = s + word; + } else{ + break; + } + } + } + + word = word.trimmed(); + + //qDebug() << "highlighting: " << word; + + if (d->wordRules.contains(word)) + { + setFormat(pos, count, d->wordRules[word]); + } + + pos += count; + } +} + +void DefaultHighlighter::highlightRegExps(const QString& text) +{ + for (const auto& rule : d->regExpRules) + { + auto iter = rule.regExp.globalMatch(text); + while (iter.hasNext()) { + auto match = iter.next(); + setFormat(match.capturedStart(0), match.capturedLength(0), rule.format); + } + } +} + +QTextCharFormat DefaultHighlighter::functionFormat() const +{ + return d->functionFormat; +} + +QTextCharFormat DefaultHighlighter::variableFormat() const +{ + return d->variableFormat; +} + +QTextCharFormat DefaultHighlighter::objectFormat() const +{ + return d->objectFormat; +} + +QTextCharFormat DefaultHighlighter::keywordFormat() const +{ + return d->keywordFormat; +} + +QTextCharFormat DefaultHighlighter::numberFormat() const +{ + return d->numberFormat; +} + +QTextCharFormat DefaultHighlighter::operatorFormat() const +{ + return d->operatorFormat; +} + +QTextCharFormat DefaultHighlighter::errorFormat() const +{ + return d->errorFormat; +} + +QTextCharFormat DefaultHighlighter::commentFormat() const +{ + return d->commentFormat; +} + +QTextCharFormat DefaultHighlighter::stringFormat() const +{ + return d->stringFormat; +} + +QTextCharFormat DefaultHighlighter::matchingPairFormat() const +{ + return d->matchingPairFormat; +} + +QTextCharFormat DefaultHighlighter::mismatchingPairFormat() const +{ + return d->mismatchingPairFormat; +} + +void DefaultHighlighter::updateFormats() +{ + //initialize char-formats + KColorScheme scheme(QPalette::Active); + + d->functionFormat.setForeground(scheme.foreground(KColorScheme::LinkText)); + d->functionFormat.setFontWeight(QFont::DemiBold); + + d->variableFormat.setForeground(scheme.foreground(KColorScheme::ActiveText)); + + d->objectFormat.setForeground(scheme.foreground(KColorScheme::NormalText)); + d->objectFormat.setFontWeight(QFont::Bold); + + d->keywordFormat.setForeground(scheme.foreground(KColorScheme::NeutralText)); + d->keywordFormat.setFontWeight(QFont::Bold); + + d->numberFormat.setForeground(scheme.foreground(KColorScheme::NeutralText)); + + d->operatorFormat.setForeground(scheme.foreground(KColorScheme::NormalText)); + d->operatorFormat.setFontWeight(QFont::Bold); + + d->errorFormat.setForeground(scheme.foreground(KColorScheme::NormalText)); + d->errorFormat.setUnderlineColor(scheme.foreground(KColorScheme::NegativeText).color()); + d->errorFormat.setUnderlineStyle(QTextCharFormat::SpellCheckUnderline); + + d->commentFormat.setForeground(scheme.foreground(KColorScheme::InactiveText)); + + d->stringFormat.setForeground(scheme.foreground(KColorScheme::PositiveText)); + + d->matchingPairFormat.setForeground(scheme.foreground(KColorScheme::NeutralText)); + d->matchingPairFormat.setBackground(scheme.background(KColorScheme::NeutralBackground)); + + d->mismatchingPairFormat.setForeground(scheme.foreground(KColorScheme::NegativeText)); + d->mismatchingPairFormat.setBackground(scheme.background(KColorScheme::NegativeBackground)); +} + + +void DefaultHighlighter::positionChanged(const QTextCursor& cursor) +{ + if (!cursor.isNull() && cursor.document() != document()) + // A new item notified us, but we did not yet change our document. + // We are waiting for that to happen. + return; + + d->cursor = cursor; + if ( (cursor.isNull() || cursor.blockNumber() != d->lastBlockNumber) && + d->lastBlockNumber >= 0 ) { + // remove highlight from last focused block + rehighlightBlock(document()->findBlockByNumber(d->lastBlockNumber)); + } + + if (cursor.isNull()) { + d->lastBlockNumber = -1; + d->lastPosition = -1; + return; + } + + d->lastBlockNumber = cursor.blockNumber(); + + if ( d->lastPosition == cursor.position() ) { + return; + } + + rehighlightBlock(cursor.block()); + d->lastPosition = cursor.position(); +} + +void DefaultHighlighter::addRule(const QString& word, const QTextCharFormat& format) +{ + d->wordRules[word] = format; + if (!d->suppressRuleChangedSignal) + emit rulesChanged(); +} + +void DefaultHighlighter::addRule(const QRegularExpression& regexp, const QTextCharFormat& format) +{ + HighlightingRule rule = { regexp, format }; + d->regExpRules.removeAll(rule); + d->regExpRules.append(rule); + if (!d->suppressRuleChangedSignal) + emit rulesChanged(); +} + +void DefaultHighlighter::removeRule(const QString& word) +{ + d->wordRules.remove(word); + if (!d->suppressRuleChangedSignal) + emit rulesChanged(); +} + +void DefaultHighlighter::removeRule(const QRegularExpression& regexp) +{ + HighlightingRule rule = { regexp, QTextCharFormat() }; + d->regExpRules.removeAll(rule); + if (!d->suppressRuleChangedSignal) + emit rulesChanged(); +} + +void DefaultHighlighter::addRules(const QStringList& conditions, const QTextCharFormat& format) +{ + auto i = conditions.constBegin(); + d->suppressRuleChangedSignal = true; + for (;i != conditions.constEnd(); ++i) + { + addRule(*i, format); + } + d->suppressRuleChangedSignal = false; + emit rulesChanged(); +} + +void DefaultHighlighter::addFunctions(const QStringList& functions) +{ + addRules(functions, functionFormat()); +} + +void DefaultHighlighter::addKeywords(const QStringList& keywords) +{ + addRules(keywords, keywordFormat()); +} + +void DefaultHighlighter::addVariables(const QStringList& variables) +{ + addRules(variables, variableFormat()); +} + +void DefaultHighlighter::removeRules(const QStringList& conditions) +{ + auto i = conditions.constBegin(); + d->suppressRuleChangedSignal = true; + for (;i != conditions.constEnd(); ++i) + { + removeRule(*i); + } + d->suppressRuleChangedSignal = false; + emit rulesChanged(); +} + +QString DefaultHighlighter::nonSeparatingCharacters() const +{ + return QString(); +} diff --git a/src/lib/defaulthighlighter.h b/src/lib/defaulthighlighter.h new file mode 100644 index 0000000..701ea20 --- /dev/null +++ b/src/lib/defaulthighlighter.h @@ -0,0 +1,175 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef DEFAULTHIGHLIGHTER_H +#define DEFAULTHIGHLIGHTER_H + +#include "cantor_export.h" + +#include +#include + +class QGraphicsTextItem; + +namespace Cantor +{ +class DefaultHighlighterPrivate; +class Session; + +/** + * The DefaultHighlighter is an implementation QSyntaxHighlighter. + * It covers most common cases of syntax highlighting for Cantor's command entries. + * + * When creating a custom highlighter, for example for a new backend, you should use + * the provided functions addPairs(), addRule() and/or addRules(). + * + * If you need more specific functionality, subclass highlightBlock(). Usually it's a good idea to also call + * DefaultHighlighter's implementation from it. + * + * @author Alexander Rieder + */ + +class CANTOR_EXPORT DefaultHighlighter : public QSyntaxHighlighter +{ + Q_OBJECT + public: + explicit DefaultHighlighter(QObject* parent); + explicit DefaultHighlighter(QObject* parent, Session* session); + virtual ~DefaultHighlighter() override; + + /** + * Change the item being highlighted. + */ + void setTextItem(QGraphicsTextItem* item); + + public Q_SLOTS: + /** + * Called when the cursor moved. Rehighlights accordingly. + */ + void positionChanged(const QTextCursor&); + + protected Q_SLOTS: + /** + * Convenience method, equivalent to @code addRules(functions, functionFormat()) @endcode + */ + void addFunctions(const QStringList& functions); + /** + * Convenience method, equivalent to @code addRules(variables, variableFormat()) @endcode + */ + void addVariables(const QStringList& variables); + /** + * Removes any rules previously added for the word @p word + */ + void removeRule(const QString& word); + /** + * Convenience method, removes all rules with conditions from @p conditions + * @sa removeRule, addRules + */ + void removeRules(const QStringList& conditions); + + protected: + /** + * This method is called by Cantor's KTextEdit and is where all the highlighting must take place. + * The default implementation calls highlightPairs(), highlightWords() and highlightRegExps(). + * + */ + void highlightBlock(const QString& text) override; + + virtual QStringList parseBlockTextToWords(const QString& text); + + bool skipHighlighting(const QString& text); + + QTextCharFormat functionFormat() const; + QTextCharFormat variableFormat() const; + QTextCharFormat objectFormat() const; + QTextCharFormat keywordFormat() const; + QTextCharFormat numberFormat() const; + QTextCharFormat operatorFormat() const; + QTextCharFormat errorFormat() const; + QTextCharFormat commentFormat() const; + QTextCharFormat stringFormat() const; + QTextCharFormat matchingPairFormat() const; + QTextCharFormat mismatchingPairFormat() const; + + /** + * Call this to add a pair of symbols for highlighting. + * The default implementation of the class already adds (), {} and [], so no need to add those. + * For example, if you wanted to highlight angle-brackets, you would use: + * @code + * addPair('<', '>'); + * @endcode + * @param openSymbol the opening symbol of the pair + * @param closeSymbol the closing symbol of the pair + * @sa highlightPairs + */ + void addPair(QChar openSymbol, QChar closeSymbol); + /** + * Highlights all instances of the @p word in the text with the specified @p format + * @param word the word to highlight + * @param format the format to be used for displaying the word + */ + void addRule(const QString& word, const QTextCharFormat& format); + /** + * Highlights all parts of the text matched by the regular expression @p regexp in the text + * with the specified @p format + * @param regexp the regular expression used to look for matches + * @param format the format used to display the matching parts of the text + */ + void addRule(const QRegularExpression& regexp, const QTextCharFormat& format); + + /** + * Convenience method, highlights all items in @p conditions with the specified @p format + * @code + * QStringList greenWords; + * greenWords << "tree" << "forest" << "grass"; + * addRules(greenWords, greenWordFormat); + * @endcode + * @param conditions any Qt container of QRegularExpression or QString. + * @param format the format used to display the matching parts of the text + */ + void addRules(const QStringList& conditions, const QTextCharFormat& format); + /** + * Convenience method, equivalent to @code addRules(keywords, keywordFormat()) @endcode + */ + void addKeywords(const QStringList& keywords); + /** + * Removes any rules previously added for the regular expression @p regexp + */ + void removeRule(const QRegularExpression& regex); + + /** + * Highlight pairs added with addPair() + * @sa addPair + */ + void highlightPairs(const QString& text); + /** + * Highlights words added with addRule() + * @sa addRule, addRules + */ + void highlightWords(const QString& text); + /** + * Highlights all matches from regular expressions added with addRule() + * @sa addRule, addRules + */ + void highlightRegExps(const QString& text); + + /** + * Returns a string that contains a regular expression that matches for characters thar are allowed inside + * words for this backend. For example, maxima or scilab allow % at the beginning of variable names + */ + virtual QString nonSeparatingCharacters() const; + + private Q_SLOTS: + void updateFormats(); + + Q_SIGNALS: + void rulesChanged(); + + private: + DefaultHighlighterPrivate* d; +}; +} + +#endif diff --git a/src/lib/defaultvariablemodel.cpp b/src/lib/defaultvariablemodel.cpp new file mode 100644 index 0000000..932c3b3 --- /dev/null +++ b/src/lib/defaultvariablemodel.cpp @@ -0,0 +1,344 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Miha Čančula +*/ + +#include "defaultvariablemodel.h" +#include +#include +#include "extension.h" +#include "backend.h" + +namespace Cantor +{ + +class DefaultVariableModelPrivate +{ +public: + QList variables; + QStringList functions; + + Session* session; + VariableManagementExtension* extension; +}; + +DefaultVariableModel::DefaultVariableModel(Session* session): QAbstractTableModel(session), +d_ptr(new DefaultVariableModelPrivate) +{ + Q_D(DefaultVariableModel); + d->session = session; + if (session) + { + d->extension = dynamic_cast(session->backend()->extension(QStringLiteral("VariableManagementExtension"))); + } + qDebug() << d->session << d->extension; +} + +DefaultVariableModel::~DefaultVariableModel() +{ + Q_D(DefaultVariableModel); + delete d; +} + +int DefaultVariableModel::columnCount(const QModelIndex& parent) const +{ + Q_UNUSED(parent); + return ColumnCount; +} + +int DefaultVariableModel::rowCount(const QModelIndex& parent) const +{ + if (parent.isValid()) + { + return 0; + } + else + { + Q_D(const DefaultVariableModel); + return d->variables.size(); + } +} + +QVariant DefaultVariableModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if(role==Qt::DisplayRole && orientation==Qt::Horizontal) { + switch(section) { + case NameColumn: + return i18nc("@title:column", "Name"); + + case ValueColumn: + return i18nc("@title:column", "Value"); + break; + } + } + return QVariant(); +} + +Qt::ItemFlags DefaultVariableModel::flags(const QModelIndex& index) const +{ + return QAbstractItemModel::flags(index) | Qt::ItemIsEditable; +} + +QVariant DefaultVariableModel::data(const QModelIndex& index, int role) const +{ + if ((role != Qt::DisplayRole && role != DataRole) || !index.isValid()) + { + return QVariant(); + } + + Q_D(const DefaultVariableModel); + switch (index.column()) + { + case NameColumn: + return QVariant(d->variables[index.row()].name); + case ValueColumn: + { + const Variable& var = d->variables[index.row()]; + if (var.value.size() < 1000 || role == DefaultVariableModel::DataRole) + return QVariant(var.value); + else + { + if (var.size != 0) + return QVariant(i18n("<%1 bytes>", QString::number(var.size))); + else + return QVariant(i18n("")); + } + } + default: + return QVariant(); + } +} + +bool DefaultVariableModel::setData(const QModelIndex& index, const QVariant& value, int role) +{ + if(role!=Qt::EditRole || !value.isValid() || !index.isValid()) + { + return false; + } + + Q_D(const DefaultVariableModel); + if(index.column() == ValueColumn) + { + // Changing values + QString name = data(index.sibling(index.row(), NameColumn)).toString(); + d->session->evaluateExpression(d->extension->setValue(name, value.toString()), Expression::DeleteOnFinish); + emit dataChanged(index, index); + return true; + } + else if(index.column() == NameColumn) + { + // Renaming => copy it, then delete the old one + QString oldName = data(index).toString(); + QString variableValue = data(index.sibling(index.row(), ValueColumn)).toString(); + d->session->evaluateExpression(d->extension->addVariable(value.toString(), variableValue), Expression::DeleteOnFinish); + d->session->evaluateExpression(d->extension->removeVariable(oldName), Expression::DeleteOnFinish); + emit dataChanged(index, index); + return true; + } + return false; +} + +void DefaultVariableModel::addVariable(const QString& name, const QString& value) +{ + Variable v(name, value); + addVariable(v); +} + +void DefaultVariableModel::addVariable(const Cantor::DefaultVariableModel::Variable& variable) +{ + Q_D(DefaultVariableModel); + int index = d->variables.indexOf(variable); + if (index != -1) + { + d->variables[index].value = variable.value; + QModelIndex modelIdx = createIndex(index, ValueColumn); + emit dataChanged(modelIdx, modelIdx); + } + else + { + beginInsertRows(QModelIndex(), d->variables.size(), d->variables.size()); + d->variables.append(variable); + emit variablesAdded(QStringList(variable.name)); + endInsertRows(); + } +} + +void DefaultVariableModel::removeVariable(const QString& name) +{ + Variable v(name, QString()); + removeVariable(v); +} + +void DefaultVariableModel::removeVariable(const Cantor::DefaultVariableModel::Variable& variable) +{ + Q_D(DefaultVariableModel); + int row = d->variables.indexOf(variable); + if(row==-1) + return; + const QString& name = variable.name; + beginRemoveRows(QModelIndex(), row, row); + d->variables.removeAt(row); + endRemoveRows(); + emit variablesRemoved(QStringList(name)); +} + +void DefaultVariableModel::clearVariables() +{ + Q_D(DefaultVariableModel); + beginResetModel(); + + QStringList names; + for (const Variable& var: d->variables) + names.append(var.name); + + d->variables.clear(); + endResetModel(); + + emit variablesRemoved(names); +} + +void DefaultVariableModel::clearFunctions() +{ + Q_D(DefaultVariableModel); + QStringList names = d->functions; + d->functions.clear(); + emit functionsRemoved(names); +} + +void DefaultVariableModel::setVariables(const QList& newVars) +{ + Q_D(DefaultVariableModel); + + QStringList addedVars; + QStringList removedVars; + + // Handle deleted vars + int i = 0; + while (i < d->variables.size()) + { + Variable var = d->variables[i]; + bool found = false; + for (const Variable& newvar : newVars) + if(var.name == newvar.name) + { + found=true; + break; + } + + if (!found) + { + removedVars << var.name; + beginRemoveRows(QModelIndex(), i, i); + d->variables.removeAt(i); + endRemoveRows(); + } + else + i++; + } + + // Handle added vars + const int size = d->variables.size(); + for (const Variable& newvar : newVars) + { + bool found = false; + for (int i = 0; i < size; i++) + if(d->variables[i].name == newvar.name) + { + found=true; + if (d->variables[i].value != newvar.value) + { + QModelIndex index = createIndex(i, ValueColumn); + d->variables[i].value = newvar.value; + d->variables[i].size = newvar.size; + emit dataChanged(index, index); + } + break; + } + + if (!found) + { + addedVars << newvar.name; + beginInsertRows(QModelIndex(), d->variables.size(), d->variables.size()); + d->variables.append(newvar); + endInsertRows(); + } + } + + emit variablesAdded(addedVars); + emit variablesRemoved(removedVars); +} + +void DefaultVariableModel::setFunctions(const QStringList& newFuncs) +{ + Q_D(DefaultVariableModel); + QStringList addedFuncs; + QStringList removedFuncs; + + //remove the old variables + int i = 0; + while (i < d->functions.size()) + { + //check if this var is present in the new variables + bool found=false; + for (const QString& func : newFuncs) + if(d->functions[i] == func) + { + found=true; + break; + } + + if(!found) + { + removedFuncs<functions[i]; + d->functions.removeAt(i); + } + else + i++; + } + + for (const QString& func : newFuncs) + { + if (!d->functions.contains(func)) + { + addedFuncs<functions.append(func); + } + } + + emit functionsAdded(addedFuncs); + emit functionsRemoved(removedFuncs); +} + +Session* DefaultVariableModel::session() const +{ + Q_D(const DefaultVariableModel); + return d->session; +} + +QList DefaultVariableModel::variables() const +{ + Q_D(const DefaultVariableModel); + return d->variables; +} + +QStringList DefaultVariableModel::variableNames() const +{ + Q_D(const DefaultVariableModel); + QStringList names; + for (const Variable& var: d->variables) + names << var.name; + return names; +} + +QStringList DefaultVariableModel::functions() const +{ + Q_D(const DefaultVariableModel); + return d->functions; +} + +bool operator==(const Cantor::DefaultVariableModel::Variable& one, const Cantor::DefaultVariableModel::Variable& other) +{ + return one.name == other.name; +} + +} diff --git a/src/lib/defaultvariablemodel.h b/src/lib/defaultvariablemodel.h new file mode 100644 index 0000000..ecbcabf --- /dev/null +++ b/src/lib/defaultvariablemodel.h @@ -0,0 +1,189 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Miha Čančula +*/ + +#ifndef CANTOR_DEFAULTVARIABLEMODEL_H +#define CANTOR_DEFAULTVARIABLEMODEL_H + +#include +#include "session.h" +#include "expression.h" + +namespace Cantor { + +class DefaultVariableModelPrivate; + +/** + * @brief + * This DefaultVariableModel class is an implementation of QAbstractItemModel + * that can be used with the Variable Manager plugin. + * + * For most uses the addVariable(), removeVariable() and clearVariables() methods are sufficient. + * They can be used from session (directly or by connecting signals to them), or called from + * a subclass. + * + * DefaultVariableModel uses the session to run expressions for changing variables, and it + * gets the commands from the backend's VariableManagementExtension. + * If you do not want this behavior, you can subclass it and reimplement data() and/or setData(). + * + * @see Session::variableModel() + */ +class CANTOR_EXPORT DefaultVariableModel : public QAbstractTableModel +{ + Q_OBJECT + Q_PROPERTY(Session* session READ session) + +public: + + enum {DataRole = Qt::UserRole + 1}; + + /** + * A structure representing a variable. + */ + struct Variable + { + Variable(): size(0) {} + Variable(QString name, QString value, size_t size = 0): name(name), value(value), size(size) {} + /** + * The variable's name + */ + QString name; + /** + * The variable's value, represented as a string + */ + QString value; + + /** + * Optional parameter. Size of variable in bytes + */ + size_t size; + }; + + /** + * Default constructor + * If you are constructing a DefaultVariableModel without subclassing, the @p session must be valid + * and its backends must support a VariableManagementExtension. + * + * This requirement can be avoided by reimplementing setData() in a subclass. + * + * @param session the session this Model belongs to, also becomes the Model's parent. + */ + explicit DefaultVariableModel(Session* session); + ~DefaultVariableModel() override; + + /** + * Get the session which created this Model and whose variables it contains + * @return the session + */ + Session* session() const; + + /** + * Returns variables, stored in this model, as @see Variable. + */ + QList variables() const; + + /** + * Returns names of stored variables + */ + QStringList variableNames() const; + + /** + * Return functions, stored in this model + */ + QStringList functions() const; + + //TODO: improve the description? + /** + * Starts updating variable model (variable lists, etc.). Usually executed after finished all user's commands + */ + virtual void update() {}; + +public Q_SLOTS: + /** + * Adds a variable to the model. + * If a variable with the same name already exists, it will be overwritten. + * @param name the name of the variable + * @param value the value of the variable + */ + void addVariable(const QString& name, const QString& value); + /** + * Convenience method, equivalent to addVariable(variable.name, variable.value) + * @param variable the variable to add + */ + void addVariable(const Cantor::DefaultVariableModel::Variable& variable); + /** + * Remove the variable @p name from the model. + * If a variable with the specified @p name doesn't exists, this method does nothing. + * @param name the name of the variable to remove + */ + void removeVariable(const QString& name); + /** + * Convenience method, equivalent to removeVariable(variable.name) + * @param variable the variable to remove + */ + void removeVariable(const Cantor::DefaultVariableModel::Variable& variable); + /** + * Clears all variables from the model + */ + void clearVariables(); + + /** + * Clears all functions + */ + void clearFunctions(); + + +Q_SIGNALS: + /** + * Emitted after adding new variables + * @param variables list of new variables + */ + void variablesAdded(const QStringList& variables); + + /** + * Emitted after variables removing + * @param variables list of removed variables + */ + void variablesRemoved(const QStringList& variables); + + /** + * Similar to @c variablesAdded + */ + void functionsAdded(const QStringList& names); + + /** + * Similar to @c variablesRemoved + */ + void functionsRemoved(const QStringList funcs); + +protected: + QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; + bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override; + + int columnCount(const QModelIndex& parent = QModelIndex()) const override; + int rowCount(const QModelIndex& parent = QModelIndex()) const override; + QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; + Qt::ItemFlags flags(const QModelIndex& index) const override; + + void setVariables(const QList& newVars); + void setFunctions(const QStringList& newFuns); + + enum Column + { + NameColumn = 0, + ValueColumn = 1, + ColumnCount = 2 + }; + +private: + + DefaultVariableModelPrivate* const d_ptr; + Q_DECLARE_PRIVATE(DefaultVariableModel) +}; + +bool operator==(const Cantor::DefaultVariableModel::Variable& one, const Cantor::DefaultVariableModel::Variable& other); + +} + +#endif // CANTOR_DEFAULTVARIABLEMODEL_H diff --git a/src/lib/directives/axisrange.ui b/src/lib/directives/axisrange.ui new file mode 100644 index 0000000..52f254a --- /dev/null +++ b/src/lib/directives/axisrange.ui @@ -0,0 +1,76 @@ + + + AxisRangeControl + + + + 0 + 0 + 400 + 300 + + + + + + + + + From: + + + + + + + -65536.000000000000000 + + + 65536.000000000000000 + + + + + + + + + + + To: + + + + + + + -65536.000000000000000 + + + 65536.000000000000000 + + + 100.000000000000000 + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + diff --git a/src/lib/directives/plotdirectives.cpp b/src/lib/directives/plotdirectives.cpp new file mode 100644 index 0000000..f4fc4e1 --- /dev/null +++ b/src/lib/directives/plotdirectives.cpp @@ -0,0 +1,95 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Oleksiy Protas +*/ + +#include "directives/plotdirectives.h" +#include "ui_axisrange.h" +#include "ui_plottitle.h" + +#include + +namespace Cantor +{ + +// FIXME maybe this belongs to headers rather +class PlotTitleControl : public AdvancedPlotExtension::DirectiveControl +{ + public: // FIXME: move window title setting upward, or maybe not + PlotTitleControl(QWidget *parent) : AbstractParent(parent) { setWindowTitle(ki18n("Main title").toString()); } + + AdvancedPlotExtension::PlotDirective* produceDirective() const override + { + return new PlotTitleDirective(titleEdit->text()); + } +}; + +class AbscissScaleControl : public AdvancedPlotExtension::DirectiveControl +{ + public: + AbscissScaleControl(QWidget *parent) : AbstractParent(parent) { setWindowTitle(ki18n("Abscissa scale").toString()); } + + AdvancedPlotExtension::PlotDirective* produceDirective() const override + { + return new AbscissScaleDirective(minEdit->value(),maxEdit->value()); + } +}; + +class OrdinateScaleControl : public AdvancedPlotExtension::DirectiveControl +{ + public: + OrdinateScaleControl(QWidget *parent) : AbstractParent(parent) { setWindowTitle(ki18n("Ordinate scale").toString()); } + + AdvancedPlotExtension::PlotDirective* produceDirective() const override + { + return new OrdinateScaleDirective(minEdit->value(),maxEdit->value()); + } +}; + + +const QString& PlotTitleDirective::title() const +{ + return m_title; +} + +PlotTitleDirective::PlotTitleDirective(const QString& str) : m_title(str) +{ +} + +AdvancedPlotExtension::DirectiveProducer* PlotTitleDirective::widget(QWidget* parent) +{ + return new PlotTitleControl(parent); +} + +double AbstractScaleDirective::min() const +{ + return m_min; +} +double AbstractScaleDirective::max() const +{ + return m_max; +} + +AbstractScaleDirective::AbstractScaleDirective(double a,double b) : m_min(a),m_max(b) +{ +} + +AbscissScaleDirective::AbscissScaleDirective(double a,double b) : AbstractScaleDirective(a,b) +{ +} + +AdvancedPlotExtension::DirectiveProducer* AbscissScaleDirective::widget(QWidget* parent) +{ + return new AbscissScaleControl(parent); +} + +OrdinateScaleDirective::OrdinateScaleDirective(double a,double b) : AbstractScaleDirective(a,b) +{ +} + +AdvancedPlotExtension::DirectiveProducer* OrdinateScaleDirective::widget(QWidget* parent) +{ + return new OrdinateScaleControl(parent); +} + +} diff --git a/src/lib/directives/plotdirectives.h b/src/lib/directives/plotdirectives.h new file mode 100644 index 0000000..7b8d0c3 --- /dev/null +++ b/src/lib/directives/plotdirectives.h @@ -0,0 +1,60 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Oleksiy Protas +*/ + +#ifndef _PLOT_DIRECTIVES_H +#define _PLOT_DIRECTIVES_H + +#include "extension.h" +#include "cantor_export.h" + +//TODO: comments +namespace Cantor +{ + class CANTOR_EXPORT PlotTitleDirective : public AdvancedPlotExtension::PlotDirective + { + public: + PLOT_DIRECTIVE_DISPATCHING(PlotTitleDirective); + const QString& title() const; + explicit PlotTitleDirective(const QString& str); + static AdvancedPlotExtension::DirectiveProducer* widget(QWidget* parent); + + private: + QString m_title; + + }; + + class CANTOR_EXPORT AbstractScaleDirective : public AdvancedPlotExtension::PlotDirective + { + public: + PLOT_DIRECTIVE_DISPATCHING(AbstractScaleDirective); + double min() const; + double max() const; + + protected: + AbstractScaleDirective(double a,double b); + + private: + double m_min; + double m_max; + }; + + class CANTOR_EXPORT OrdinateScaleDirective : public AbstractScaleDirective + { + public: + PLOT_DIRECTIVE_DISPATCHING(OrdinateScaleDirective); + OrdinateScaleDirective(double a,double b); + static AdvancedPlotExtension::DirectiveProducer* widget(QWidget* parent); + }; + + class CANTOR_EXPORT AbscissScaleDirective : public AbstractScaleDirective + { + public: + PLOT_DIRECTIVE_DISPATCHING(AbscissScaleDirective); + AbscissScaleDirective(double a,double b); + static AdvancedPlotExtension::DirectiveProducer* widget(QWidget* parent); + }; +} + +#endif // _PLOT_DIRECTIVES_H diff --git a/src/lib/directives/plottitle.ui b/src/lib/directives/plottitle.ui new file mode 100644 index 0000000..dfd22fb --- /dev/null +++ b/src/lib/directives/plottitle.ui @@ -0,0 +1,45 @@ + + + PlotTitleControl + + + + 0 + 0 + 400 + 300 + + + + + + + + + Plot title: + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + diff --git a/src/lib/epsresult.cpp b/src/lib/epsresult.cpp new file mode 100644 index 0000000..4fe5984 --- /dev/null +++ b/src/lib/epsresult.cpp @@ -0,0 +1,140 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "epsresult.h" +using namespace Cantor; + +#include + +#include +#include + +#include +#include +#include +#include + +#include "renderer.h" +#include "jupyterutils.h" + +class Cantor::EpsResultPrivate{ + public: + QUrl url; + QImage image; +}; + + +EpsResult::EpsResult(const QUrl& url, const QImage& image) : d(new EpsResultPrivate) +{ + d->url=url; + d->image = image; +} + +EpsResult::~EpsResult() +{ + delete d; +} + +QString EpsResult::toHtml() +{ + return QStringLiteral("").arg(d->url.url()); +} + +QString EpsResult::toLatex() +{ + return QStringLiteral(" \\begin{center} \n \\includegraphics[width=12cm]{%1}\n \\end{center}").arg(d->url.fileName()); +} + +QVariant EpsResult::data() +{ + return QVariant(d->url); +} + +QUrl EpsResult::url() +{ + return d->url; +} + +QImage Cantor::EpsResult::image() +{ + return d->image; +} + +int EpsResult::type() +{ + return EpsResult::Type; +} + +QString EpsResult::mimeType() +{ + return QStringLiteral("image/x-eps"); +} + +QDomElement EpsResult::toXml(QDomDocument& doc) +{ + qDebug()<<"saving imageresult "<url.fileName()); + +#ifdef WITH_EPS + const QImage& image = Renderer::epsRenderToImage(d->url, 1.0, false); + qDebug() << image.size() << image.isNull(); + if (!image.isNull()) + { + QByteArray ba; + QBuffer buffer(&ba); + buffer.open(QIODevice::WriteOnly); + image.save(&buffer, "PNG"); + e.setAttribute(QLatin1String("image"), QString::fromLatin1(ba.toBase64())); + } +#else + if (!d->image.isNull()) + { + QByteArray ba; + QBuffer buffer(&ba); + buffer.open(QIODevice::WriteOnly); + d->image.save(&buffer, "PNG"); + e.setAttribute(QLatin1String("image"), QString::fromLatin1(ba.toBase64())); + } +#endif + + qDebug()<<"done"; + return e; +} + +QJsonValue Cantor::EpsResult::toJupyterJson() +{ + QJsonObject root; + + if (executionIndex() != -1) + { + root.insert(QLatin1String("output_type"), QLatin1String("execute_result")); + root.insert(QLatin1String("execution_count"), executionIndex()); + } + else + root.insert(QLatin1String("output_type"), QLatin1String("display_data")); + + const QImage& image = d->image.isNull() ? Renderer::epsRenderToImage(d->url, 1.0, false) : d->image; + + QJsonObject data; + data = JupyterUtils::packMimeBundle(image, JupyterUtils::pngMime); + root.insert(QLatin1String("data"), data); + + root.insert(QLatin1String("metadata"), jupyterMetadata()); + + return root; +} + +void EpsResult::saveAdditionalData(KZip* archive) +{ + archive->addLocalFile(d->url.toLocalFile(), d->url.fileName()); +} + +void EpsResult::save(const QString& filename) +{ + //just copy over the eps file.. + KIO::file_copy(d->url, QUrl::fromLocalFile(filename), -1, KIO::HideProgressInfo); +} diff --git a/src/lib/epsresult.h b/src/lib/epsresult.h new file mode 100644 index 0000000..9d6e4a0 --- /dev/null +++ b/src/lib/epsresult.h @@ -0,0 +1,46 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _EPSRESULT_H +#define _EPSRESULT_H + +#include "result.h" +#include "cantor_export.h" +#include +#include + +namespace Cantor +{ +class EpsResultPrivate; + +class CANTOR_EXPORT EpsResult : public Result +{ + public: + enum {Type=5}; + explicit EpsResult( const QUrl& url, const QImage& image = QImage()); + ~EpsResult() override; + + QString toHtml() override; + QString toLatex() override; + QVariant data() override; + QUrl url() override; + QImage image(); + + int type() override; + QString mimeType() override; + + QDomElement toXml(QDomDocument& doc) override; + QJsonValue toJupyterJson() override; + void saveAdditionalData(KZip* archive) override; + + void save(const QString& filename) override; + + private: + EpsResultPrivate* d; +}; + +} + +#endif /* _EPSRESULT_H */ diff --git a/src/lib/expression.cpp b/src/lib/expression.cpp new file mode 100644 index 0000000..383b6b8 --- /dev/null +++ b/src/lib/expression.cpp @@ -0,0 +1,306 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "expression.h" +#include "latexrenderer.h" +using namespace Cantor; + +#include + +#include "session.h" +#include "result.h" +#include "textresult.h" +#include "imageresult.h" +#include "latexresult.h" +#include "settings.h" + +#include +#include +#include +#include + +#include +#include + +class Cantor::ExpressionPrivate +{ +public: + ExpressionPrivate() : id(-1) {} + + int id{-1}; + QString command; + QString error; + QList information; + QVector results; + Expression::Status status{Expression::Done}; + Session* session{nullptr}; + Expression::FinishingBehavior finishingBehavior{Expression::DoNotDelete}; + bool internal{false}; + bool helpRequest{false}; + QFileSystemWatcher* fileWatcher{nullptr}; +}; + +static const QString tex=QLatin1String("\\documentclass[12pt,fleqn]{article} \n "\ + "\\usepackage{latexsym,amsfonts,amssymb,ulem} \n "\ + "\\usepackage[dvips]{graphicx} \n "\ + "\\setlength\\textwidth{5in} \n "\ + "\\setlength{\\parindent}{0pt} \n "\ + "%1 \n "\ + "\\pagestyle{empty} \n "\ + "\\begin{document} \n "\ + "%2 \n "\ + "\\end{document}\n"); + + +Expression::Expression( Session* session, bool internal ) : QObject( session ), + d(new ExpressionPrivate) +{ + d->session=session; + d->internal = internal; + if (!internal && session) + d->id=session->nextExpressionId(); + else + d->id = -1; +} + +Expression::Expression( Session* session, bool internal, int id ) : QObject( session ), d(new ExpressionPrivate) +{ + d->session = session; + d->internal = internal; + d->id = id; +} + +Expression::~Expression() +{ + qDeleteAll(d->results); + if (d->fileWatcher) + delete d->fileWatcher; + + delete d; +} + +void Expression::setCommand(const QString& command) +{ + d->command=command; +} + +QString Expression::command() +{ + return d->command; +} + +QString Expression::internalCommand() +{ + return d->command; +} + +void Expression::setErrorMessage(const QString& error) +{ + d->error=error; +} + +QString Expression::errorMessage() +{ + return d->error; +} + +void Expression::setResult(Result* result) +{ + clearResults(); + addResult(result); +} + +void Expression::addResult(Result* result) +{ + if(result!=nullptr) + { + qDebug()<<"setting result to a type "<type()<<" result"; + #ifdef WITH_EPS + //If it's text, and latex typesetting is enabled, render it + if ( session() && + session()->isTypesettingEnabled()&& + result->type()==TextResult::Type && + static_cast(result)->format()==TextResult::LatexFormat && + !result->toHtml().trimmed().isEmpty() && + finishingBehavior()!=DeleteOnFinish && + !isInternal() + ) + { + renderResultAsLatex(result); + return; + } + #endif + } + + d->results << result; + emit gotResult(); +} + +void Expression::clearResults() +{ + qDeleteAll(d->results); + d->results.clear(); + emit resultsCleared(); +} + +void Expression::removeResult(Result* result) +{ + int index = d->results.indexOf(result); + d->results.remove(index); + delete result; + emit resultRemoved(index); +} + +void Expression::replaceResult(int index, Result* result) +{ + if (result) + { + //insert the new result + d->results.insert(index, result); + + //delete the previous result + Result* oldResult = d->results.at(index+1); + d->results.remove(index+1); + delete oldResult; + + //notify about the replacement + emit resultReplaced(index); + } +} + +Result* Expression::result() +{ + if (!d->results.isEmpty()) + return d->results.first(); + else + return nullptr; +} + +const QVector& Expression::results() const +{ + return d->results; +} + +void Expression::setStatus(Expression::Status status) +{ + d->status=status; + emit statusChanged(status); + + bool isFinished = status == Expression::Done || status == Expression::Error || status == Expression::Interrupted; + if (isFinished) + { + emit expressionFinished(status); + if(d->finishingBehavior==Expression::DeleteOnFinish) + deleteLater(); + } +} + +Expression::Status Expression::status() +{ + return d->status; +} + +Session* Expression::session() +{ + return d->session; +} +void Expression::renderResultAsLatex(Result* result) +{ + LatexRenderer* renderer=new LatexRenderer(this); + renderer->setLatexCode(result->data().toString().trimmed()); + renderer->addHeader(additionalLatexHeaders()); + + connect(renderer, &LatexRenderer::done, [=] { latexRendered(renderer, result); }); + connect(renderer, &LatexRenderer::error, [=] { latexRendered(renderer, result); }); + + renderer->render(); +} + +void Expression::latexRendered(LatexRenderer* renderer, Result* result) +{ + qDebug()<<"rendered a result to "<imagePath(); + //replace the textresult with the rendered latex image result + //ImageResult* latex=new ImageResult( d->latexFilename ); + if(renderer->renderingSuccessful()) + { + if (result->type() == TextResult::Type) + { + TextResult* r = static_cast(result); + LatexResult* latex=new LatexResult(r->data().toString().trimmed(), QUrl::fromLocalFile(renderer->imagePath()), r->plain()); + addResult( latex ); + } + else if (result->type() == LatexResult::Type) + { + LatexResult* previousLatexResult = static_cast(result); + LatexResult* latex=new LatexResult(previousLatexResult->data().toString().trimmed(), QUrl::fromLocalFile(renderer->imagePath()), previousLatexResult->plain()); + addResult( latex ); + } + }else + { + //if rendering with latex was not successful, just use the plain text version + //if available + TextResult* r=dynamic_cast(result); + if (r) + addResult(new TextResult(r->plain())); + qDebug()<<"error rendering latex: "<errorMessage(); + } + + delete result; + + renderer->deleteLater(); +} + +void Expression::addInformation(const QString& information) +{ + d->information.append(information); +} + +QString Expression::additionalLatexHeaders() +{ + return QString(); +} + +QFileSystemWatcher* Expression::fileWatcher() { + if (!d->fileWatcher) + d->fileWatcher = new QFileSystemWatcher(); + + return d->fileWatcher; +} + +int Expression::id() +{ + return d->id; +} + +void Expression::setId(int id) +{ + d->id=id; + emit idChanged(); +} + +void Expression::setFinishingBehavior(Expression::FinishingBehavior behavior) +{ + d->finishingBehavior=behavior; +} + +Expression::FinishingBehavior Expression::finishingBehavior() +{ + return d->finishingBehavior; +} + +bool Expression::isInternal() const +{ + return d->internal; +} + +void Expression::setIsHelpRequest(bool value) +{ + d->helpRequest = value; +} + +bool Expression::isHelpRequest() const +{ + return d->helpRequest; +} diff --git a/src/lib/expression.h b/src/lib/expression.h new file mode 100644 index 0000000..dad1fc9 --- /dev/null +++ b/src/lib/expression.h @@ -0,0 +1,287 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2018-2022 by Alexander Semke (alexander.semke@web.de) +*/ + +#ifndef _EXPRESSION_H +#define _EXPRESSION_H + +#include +#include + +#include "cantor_export.h" + +class QFileSystemWatcher; +class KZip; + +/** + * Namespace collecting all Classes of the Cantor Libraries + */ +namespace Cantor +{ +class Session; +class Result; +class LatexRenderer; +class ExpressionPrivate; + +/** + * An Expression object is used, to store the information needed when running a command of a Session + * Evaluation of Expression is an asynchronous process in most cases, so most of the members + * of this class are not useful directly after its construction. Therefore there are signals + * indicating, when the Expression goes through the different stages of the Running process. + * An Expression is never constructed directly, but by using Session::evaluateExpression() + * + * @author Alexander Rieder + */ +class CANTOR_EXPORT Expression : public QObject +{ + Q_OBJECT + public: + enum Status { + Queued, ///< The Expression is in expression queue, waited for Computing + Computing, ///< The Expression is still being computed + Done, ///< The Running of the Expression is finished successfully + Error, ///< An Error occurred when running the Expression + Interrupted ///< The Expression was interrupted by the user while running + }; + + /** + * Enum indicating how this Expression behaves on finishing + */ + enum FinishingBehavior { + DoNotDelete, ///< This Expression will not be deleted. This is the normal behaviour + DeleteOnFinish /** < The Object will delete itself when finished. This is used for fire-and-forget commands. + * All output/results will be dropped + */ + }; + /** + * Expression constructor. Should only be called from Session::evaluateExpression + * @param session the session, this Expression belongs to + * @param internal \c true if this expression is internal expression + */ + explicit Expression(Session*, bool internal = false); + /** + * destructor + */ + ~Expression() override; + + /** + * Evaluate the Expression. before this is called, you should set the Command first + * This method can be implemented asynchronous, thus the Evaluation doesn't need to happen in the method, + * It can also only be scheduled for evaluating. + * @see setCommand() + */ + virtual void evaluate() = 0; + /** + * Interrupt the running of the Expression. + * This should set the state to Interrupted. + */ + virtual void interrupt() = 0; + + virtual void parseOutput(const QString&) = 0; + virtual void parseError(const QString&) = 0; + + /** + * Returns the unique id of the Expression + * or -1 for internal expressions + * @return the unique id of the Expression + */ + int id(); + + /** + * set the id of the Expression. It should be unique + * @param id the new Id + */ + void setId(int id); + + /** + * set the finishing behaviour + * @param behavior the new Finishing Behaviour + */ + void setFinishingBehavior(FinishingBehavior); + + /** + * get the Expressions finishing behaviour + * @return the current finishing behaviour + */ + FinishingBehavior finishingBehavior(); + + /** + * Sets the command, represented by this Expression + * @param cmd the command + */ + void setCommand(const QString&); + + /** + * Returns the command, represented by this Expression + * @return the command, represented by this Expression + */ + QString command(); + + /** + * Returns the command, adapted for using by appropriate Backend + * The return value can be equal or not to @ref command() + * Backend should use this function, instead of @ref command() + */ + virtual QString internalCommand(); + + /** + * Adds some additional information/input to this expression. + * this is needed, when the Expression has emitted the needsAdditionalInformation signal, + * and the user has answered the question. This is used for e.g. if maxima asks whether + * n+1 is zero or not when running the command "integrate(x^n,x)" + * This method is part of the InteractiveMode feature + */ + virtual void addInformation(const QString&); + + /** + * Sets the error message + * @param cmd the error message + * @see errorMessage() + */ + void setErrorMessage(const QString&); + + /** + * returns the Error message, if an error occurred during + * the evaluation of the expression. + * @return the error message + */ + QString errorMessage(); + + /** + * The result of this Expression. It can have different types, represented by various + * subclasses of Result, like text, image, etc. + * The result will be null, until the computation is completed. + * When the result changes, the gotResult() signal is emitted. + * The Result object is owned by the Expression, and will get deleted, as + * soon as the Expression dies, or newer results appear. + * @return the result of the Expression, 0 if it isn't yet set + */ + Result* result(); + + /*! + * in case the expression has multiple outputs/results, those can be obtained with this functions. + * Everything else said for \sa result() applies here too. + * @return the vector with results, or an empty vector if nor results are available yet. + */ + const QVector& results() const; + + /** + * Deletes the result of this expression. + * + */ + void removeResult(Result* result); + + /** + * Deletes the all results of this expression. + * + */ + void clearResults(); + + /** + * Returns the status of this Expression + * @return the status of this Expression + */ + Status status(); + + /** + * Set the status + * statusChanged will be emitted + * @param status the new status + */ + void setStatus(Status); + + /** + * Returns the Session, this Expression belongs to + */ + Session* session(); + + /** + * returns whether or not this expression is internal, or + * comes from the user + */ + bool isInternal() const; + + /** + * Sets whether the expression is a help request (available for Maxima and R) where + * additional information/help can be requested and shown. + * Used internally to controll whether the update of the variable model needs to be done. + */ + void setIsHelpRequest(bool); + bool isHelpRequest() const; + + Q_SIGNALS: + /** + * the Id of this Expression changed + */ + void idChanged(); + /** + * A Result of the Expression has arrived + */ + void gotResult(); + /** + * emitted when the results of the expression were deleted. + * @see clearResults() + */ + void resultsCleared(); + /** + * emitted when the results of the expression were deleted. + * @see clearResult(Result* result) + */ + void resultRemoved(int index); + /** + * emitted when the result at the position @c index was replaced by a new result. + */ + void resultReplaced(int index); + /** + * the status of the Expression has changed. + * @param status the new status + */ + void statusChanged(Cantor::Expression::Status); + + /** + * the status of the Expression has changed to Done, Error or Interrupt + */ + void expressionFinished(Cantor::Expression::Status); + + /** + * the Expression needs more information for the evaluation + * @see addInformation() + * @param question question, the user needs to answer + */ + void needsAdditionalInformation(const QString& question); + + //These are protected, because only subclasses will handle results/status changes + protected: + // Protected constructor, useful for derived classes with own id setting strategy + Expression(Session* session, bool internal, int id); + + /** + * Set the result of the Expression. + * this will cause gotResult() to be emitted + * The old result will be deleted, and the Expression + * takes over ownership of the result object, taking + * care of deleting it. + * @param result the new result + */ + void setResult(Result*); + void addResult(Result*); + void replaceResult(int index, Result*); + + //returns a string of latex commands, that is inserted into the header. + //used for example if special packages are needed + virtual QString additionalLatexHeaders(); + + QFileSystemWatcher* fileWatcher(); + + private: + void renderResultAsLatex(Result*); + void latexRendered(LatexRenderer*, Result*); + + private: + ExpressionPrivate* d; +}; + +} +#endif /* _EXPRESSION_H */ diff --git a/src/lib/extension.cpp b/src/lib/extension.cpp new file mode 100644 index 0000000..098d426 --- /dev/null +++ b/src/lib/extension.cpp @@ -0,0 +1,134 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "extension.h" +using namespace Cantor; + +#include + +#define EXTENSION_CONSTRUCTORS(name) name::name(QObject* parent) : Extension(QLatin1String(#name),parent) {} \ + name::~name() {} + + +Extension::Extension(const QString& name, QObject* parent) : QObject(parent) +{ + setObjectName(name); +} + +EXTENSION_CONSTRUCTORS(HistoryExtension) +EXTENSION_CONSTRUCTORS(ScriptExtension) +EXTENSION_CONSTRUCTORS(CASExtension) +EXTENSION_CONSTRUCTORS(CalculusExtension) +EXTENSION_CONSTRUCTORS(PlotExtension) +EXTENSION_CONSTRUCTORS(AdvancedPlotExtension) +EXTENSION_CONSTRUCTORS(LinearAlgebraExtension) +EXTENSION_CONSTRUCTORS(VariableManagementExtension) +EXTENSION_CONSTRUCTORS(PackagingExtension) + +//implement this here, as it's ";" most of the time +QString ScriptExtension::commandSeparator() +{ + return QStringLiteral(";\n"); +} + +//implement this here, as it's "#" most of the time +QString ScriptExtension::commentStartingSequence() +{ + return QStringLiteral("#"); +} + +//implement this here, as it's "" most of the time +QString ScriptExtension::commentEndingSequence() +{ + return QLatin1String(""); +} + + +//some convenience functions, but normally backends have a special command to create +//these matrices/vectors. + +QString LinearAlgebraExtension::nullVector(int size, VectorType type) +{ + QStringList values; + for (int i=0;i& directives) const +{ + QString params = QLatin1String(""); + foreach (PlotDirective* dir, directives) + { + QString param=dispatchDirective(*dir); + if (param.length()>0) + params+=separatorSymbol()+param; + } + return plotCommand() + QLatin1String("(") + expression + params + QLatin1String(")"); +} + +QString AdvancedPlotExtension::dispatchDirective(const PlotDirective& directive) const +{ + const AcceptorBase* acceptor=dynamic_cast(this); + if (acceptor==nullptr) + { + qDebug()<<"Plotting extension does not support any directives, but was asked to process one"; + return QLatin1String(""); + } + return directive.dispatch(*acceptor); +} + +QString AdvancedPlotExtension::separatorSymbol() const +{ + return QStringLiteral(","); +} + +QWidget* AdvancedPlotExtension::PlotDirective::widget(QWidget* parent) +{ + return new QWidget(parent); +} + +AdvancedPlotExtension::AcceptorBase::AcceptorBase() : m_widgets() +{ +} + +const QVector& AdvancedPlotExtension::AcceptorBase::widgets() const +{ + return m_widgets; +} + +AdvancedPlotExtension::DirectiveProducer::DirectiveProducer(QWidget* parent) : QWidget(parent) +{ +} diff --git a/src/lib/extension.h b/src/lib/extension.h new file mode 100644 index 0000000..a6176f9 --- /dev/null +++ b/src/lib/extension.h @@ -0,0 +1,478 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _EXTENSION_H +#define _EXTENSION_H + +#include +#include +#include +#include +#include +#include "cantor_export.h" + +namespace Cantor +{ +/** + * This is the base class for all Extensions. + * An Extension provides a set of Methods to + * accomplish specific tasks. This is used to + * abstract away the backends syntax for common + * tasks like solving equations etc. to be able + * to provide Backend independent Dialogs + * + * @author Alexander Rieder + */ +class CANTOR_EXPORT Extension : public QObject +{ + Q_OBJECT + public: + ///Default constructor + Extension( const QString& name, QObject* parent ); + ~Extension() override = default; +}; + + +//Some basic interfaces for extensions + +/** + * An Extension providing commands for command history + */ +class CANTOR_EXPORT HistoryExtension : public Extension +{ + Q_OBJECT + public: + explicit HistoryExtension(QObject* parent); + ~HistoryExtension() override; + public Q_SLOTS: + /** + * Returns a command that retrieves the last result + * @return command that retrieves the last result + */ + virtual QString lastResult() = 0; +}; + +/** + * An Extension providing commands to interact + * with external scripts + */ +class CANTOR_EXPORT ScriptExtension : public Extension +{ + Q_OBJECT + public: + explicit ScriptExtension(QObject* parent); + ~ScriptExtension() override; + public Q_SLOTS: + /** + * returns the command for running a script + * @param path path to the script file + * @return command for running a script + */ + virtual QString runExternalScript(const QString& path) = 0; + /** + * returns the file filter used for Script Files (e.g. *.py) + * @return file filter used for Script Files (e.g. *.py) + */ + virtual QString scriptFileFilter() = 0; + /** + * returns the name of the language to use for syntax highlighting + * in the script editor (e.g. python). The value returned must match + * the name attribute from the xml language description in KTexteditor. + * @return name of the language to use for syntax highlighting (e.g. python) + */ + virtual QString highlightingMode() = 0; + /** + * returns a string used to separate commands (usually ;) + * @return a string used to separate commands (usually ;) + */ + virtual QString commandSeparator(); + /** + * returns a string used to start a comment (usually #) + * @return a string used to start a comment (usually #) + */ + virtual QString commentStartingSequence(); + /** + * returns a string used to end a comment (usually "") + * @return a string used to end a comment (usually "") + */ + virtual QString commentEndingSequence(); +}; + +/** + * An extension providing the basic computations + * in computer algebra, like solving, simplifying + * etc +**/ +class CANTOR_EXPORT CASExtension : public Extension +{ + Q_OBJECT + public: + explicit CASExtension(QObject* parent); + ~CASExtension() override; + + public Q_SLOTS: + /** + * returns the command for solving a set of equations + * @param equations a list of equations + * @param variables a list of variables that should be solved for + * @return command for solving a set of equations + */ + virtual QString solve(const QStringList& equations, const QStringList& variables) = 0; + /** + * returns the command for simplifying an expression + * @param expression the expression that should be simplified + * @return command for simplifying the expression + */ + virtual QString simplify(const QString& expression) = 0; + /** + * returns the command for expanding an expression + * @param expression the expression that should be expanded + * @return command for expanded the expression + */ + virtual QString expand(const QString& expression) = 0; +}; + +/** + * An extension providing the basic calculus + * stuff like limits, differentiate, integrate etc. + */ +class CANTOR_EXPORT CalculusExtension : public Extension +{ + Q_OBJECT + public: + explicit CalculusExtension(QObject* parent); + ~CalculusExtension() override; + + public Q_SLOTS: + /** + * returns the command for calculating a limit if an expression + * @param expression the expression + * @param variable the variable + * @param limit the value, the variable approaches + * @return the limit of the expression + */ + virtual QString limit(const QString& expression, const QString& variable, const QString& limit) = 0; + /** + * returns the command for calculating a differential + * @param function the function + * @param variable the variable, after which should be differentiated + * @param times how often should be differentiated + * @return the command to compute the differential + */ + virtual QString differentiate(const QString& function,const QString& variable, int times) = 0; + /** + * returns the command for calculating an integral + * @param function the function + * @param variable the variable, after which should be integrated + * @return the command to compute the integrate + */ + virtual QString integrate(const QString& function, const QString& variable) = 0; + /** + * returns the command for calculating a definite integral + * @param function the function + * @param variable the variable, after which should be integrated + * @param left the left border of the integral + * @param right the right border of the integral + * @return the command to compute the integrate + */ + virtual QString integrate(const QString& function,const QString& variable, const QString& left, const QString& right) = 0; +}; + +/** + * An extension providing basic plotting facilities + */ +class CANTOR_EXPORT PlotExtension : public Extension +{ + Q_OBJECT + public: + typedef QPair Interval; + typedef QPair VariableParameter; + + explicit PlotExtension(QObject* parent); + ~PlotExtension() override; + + public Q_SLOTS: + /** + * returns the command for plotting a 2 dimensional function. + * @param function the function to plot + * @param variable the variable + * @param left the left border of the plot + * @param right the right border of the plot + * @return the command for plotting + */ + virtual QString plotFunction2d(const QString& function, const QString& variable, const QString& left, const QString& right) = 0; + /** + * returns the command for plotting a 3 dimensional function. + * @param function the function to plot + * @param var1 the parameters for Variable1 (name, interval) + * @param var2 the parameters for Variable2 (name, interval) + * @return the command for plotting + */ + virtual QString plotFunction3d(const QString& function, const VariableParameter& var1, const VariableParameter& var2) = 0; +}; + +#define PLOT_DIRECTIVE_DISPATCHING(x) QString dispatch(const Cantor::AdvancedPlotExtension::AcceptorBase& acc) const \ + { \ + const Cantor::AdvancedPlotExtension::DirectiveAcceptor* adaptor= \ + dynamic_cast*>(&acc); \ + if (adaptor==NULL) { qDebug()<<"Backend incapable of processing directives of type "#x; return QLatin1String(""); } \ + else \ + return adaptor->accept(*this); \ + } + +/** + * An extension providing advanced plotting facilities. Will supersede PlotExtension + */ +class CANTOR_EXPORT AdvancedPlotExtension : public Extension +{ + Q_OBJECT + public: + explicit AdvancedPlotExtension(QObject* parent); + ~AdvancedPlotExtension() override; + + // TODO comment + + class PlotDirective; + + // TODO move the hell out of here + class CANTOR_EXPORT DirectiveProducer : public QWidget + { + public: + explicit DirectiveProducer(QWidget* parent); + virtual PlotDirective* produceDirective() const=0; + }; + + template class DirectiveControl : protected UI, public DirectiveProducer + { + public: + DirectiveControl(QWidget* parent) : DirectiveProducer(parent) { UI::setupUi(this); } + protected: + using AbstractParent = DirectiveControl; + }; + + class CANTOR_EXPORT AcceptorBase + { + public: + /** + * utilitary typename for easing the code + */ + using widgetProc = DirectiveProducer *(*)(QWidget *); + + /** + * returns a constant reference to the list of widget generating procedures + * which contains means of creating all the widgets a backend knows how to process + * @return the constant reference to a QVector of QWidget* (*)(QWidget*) pointers + */ + const QVector& widgets() const; + + protected: + /** + * constructor only allowed for derived classes + **/ + AcceptorBase(); + virtual ~AcceptorBase() = default; + + QVector m_widgets; + }; + + template class DirectiveAcceptor : virtual public AcceptorBase + { + + public: + /** + * virtual interface to acceptor function mechanics + * @param directive the directive to process + * @return the parameter corresponding the directive + */ + virtual QString accept(const Directive& directive) const=0; + + protected: + /** + * constructor only allowed for derived classes + **/ + DirectiveAcceptor(); + }; + + class CANTOR_EXPORT PlotDirective + { + public: + virtual ~PlotDirective() = default; + + /** + * creates a new widget for editing the value and returns the pointer to it + * @param parent the pointer to parent widget passed to newly created widget + * @return pointer to the newly-created widget + */ + static QWidget* widget(QWidget* parent); + + /** + * in order to make dual dispatching this should be present in any derived class + * without virtual keyword and with correct class name + **/ + virtual PLOT_DIRECTIVE_DISPATCHING(PlotDirective); + // TODO: find a workaround not to put class names manually + + protected: + /** + * only derived classes may construct + **/ + PlotDirective() = default; + }; + + public Q_SLOTS: + /** + * returns the command for plotting a 2 dimensional data set. + * @param expression the expression to plot + * @param directives the array of directives toward the generator + * @return the command for plotting + */ + QString plotFunction2d(const QString& expression, const QVector& directives) const; + + /** + * returns the parameter expression according to a directive. + * @param directive the directive toward the generator + * @return the parameter for plotting + */ + QString dispatchDirective(const Cantor::AdvancedPlotExtension::PlotDirective& directive) const; + + protected: + /** + * returns the command name for plotting a 2 dimensional data set. + * @return the command for plotting + */ + virtual QString plotCommand() const=0; + /** + * returns the separator symbol in a plotting command. + * @return the separator symbol or string + */ + virtual QString separatorSymbol() const; +}; + +template AdvancedPlotExtension::DirectiveAcceptor::DirectiveAcceptor() +{ + m_widgets.push_back(&Directive::widget); +} + +/** + * An extension for basic Linear Algebra + */ +class CANTOR_EXPORT LinearAlgebraExtension : public Extension +{ + Q_OBJECT + public: + enum VectorType { ColumnVector, RowVector }; + using Matrix = QList; + + explicit LinearAlgebraExtension(QObject* parent); + ~LinearAlgebraExtension() override; + + public Q_SLOTS: + //Commands to create Vectors/Matrices + /** + * creates a vector with the given entries + * @param entries the entries of the new vector + * @param type the type of the vector (row/column) + * @return the command for creating the vector + */ + virtual QString createVector(const QStringList& entries, Cantor::LinearAlgebraExtension::VectorType type) = 0; + /** + * creates a null vector, of the given size/type + * @param size size of the vector + * @param type type of the vector + * @return the command used for creating a nullvector + **/ + virtual QString nullVector(int size, Cantor::LinearAlgebraExtension::VectorType type); + /** + * creates a matrix with the given entries + * @param matrix the entries of the matrix + * @return the command to create this matrix + */ + virtual QString createMatrix(const Matrix& matrix) = 0; + /** + * creates an identity matrix of the given size + * @param size size of the matrix + * @return the command used to create the matrix + */ + virtual QString identityMatrix(int size); + /** + * creates a null matrix, of the given size + * @param rows number of rows + * @param columns number of columns + * @return the command to create this matrix + */ + virtual QString nullMatrix(int rows,int columns); + + //basic functions + /** + * compute the rank of a matrix + * @param matrix the name of the matrix, the rank should be computed of + * @return the command for calculating the rank + */ + virtual QString rank(const QString& matrix) = 0; + /** + * invert a given matrix + * @param matrix the name of the matrix, that should be inverted + * @return the command for inverting the matrix + */ + virtual QString invertMatrix(const QString& matrix) = 0; + /** + * calculate the characteristic polynom of a matrix + * @param matrix the name of the matrix, the charpoly should be computed of + * @return the command + */ + virtual QString charPoly(const QString& matrix) = 0; + /** + * calculate the eigen vectors of a matrix + * @param matrix the name of the matrix, the eigenvectors should be computed of + * @return the command + */ + virtual QString eigenVectors(const QString& matrix) = 0; + /** + * calculate the eigen values of a matrix + * @param matrix the name of the matrix, the eigenvalues should be computed of + * @return the command + */ + virtual QString eigenValues(const QString& matrix) = 0; + +}; + +class CANTOR_EXPORT VariableManagementExtension : public Extension +{ + Q_OBJECT + public: + explicit VariableManagementExtension( QObject* parent ); + ~VariableManagementExtension() override; + + public Q_SLOTS: + virtual QString addVariable(const QString& name, const QString& value) = 0; + virtual QString setValue(const QString& name,const QString& value) = 0; + virtual QString removeVariable(const QString& name) = 0; + + virtual QString saveVariables(const QString& fileName) = 0; + virtual QString loadVariables(const QString& fileName) = 0; + virtual QString clearVariables() = 0; +}; + +/** + * An extension for library/module import + */ +class CANTOR_EXPORT PackagingExtension : public Extension +{ + Q_OBJECT + public: + explicit PackagingExtension(QObject* parent); + ~PackagingExtension() override; + + public Q_SLOTS: + /** + * import library/module + * @param package the library/module name + * @return the command for import library/module + */ + virtual QString importPackage(const QString& package) = 0; +}; + +} +#endif /* _EXTENSION_H */ diff --git a/src/lib/graphicpackage.cpp b/src/lib/graphicpackage.cpp new file mode 100644 index 0000000..868bf08 --- /dev/null +++ b/src/lib/graphicpackage.cpp @@ -0,0 +1,135 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Sirgienko Nikita +*/ + +#include "graphicpackage.h" + +#include +#include +#include + +#include "session.h" +#include "expression.h" + +using namespace Cantor; + +class Cantor::GraphicPackagePrivate +{ + public: + QString id; + QString name; + QString testPresenceCommand; + QString enableSupportCommand; + QString disableSupportCommand; + QString saveToFileCommandTemplate; + QStringList plotPrecenseKeywords; +}; + +Cantor::GraphicPackage::GraphicPackage(const Cantor::GraphicPackage& other): d(new GraphicPackagePrivate) +{ + *d = *other.d; +} + +Cantor::GraphicPackage::GraphicPackage(): d(new GraphicPackagePrivate) +{ +} + +Cantor::GraphicPackage::~GraphicPackage() +{ + delete d; +} + +QString Cantor::GraphicPackage::id() const +{ + return d->id; +} + +QString Cantor::GraphicPackage::name() const +{ + return d->name; +} + +Expression* Cantor::GraphicPackage::isAvailable(Session* session) const +{ + return session->evaluateExpression(d->testPresenceCommand, Expression::FinishingBehavior::DoNotDelete, true); +} + +QString Cantor::GraphicPackage::enableSupportCommand(QString additionalInfo) const +{ + return d->enableSupportCommand.arg(additionalInfo); +} + +QString Cantor::GraphicPackage::disableSupportCommand() const +{ + return d->disableSupportCommand; +} + +QString Cantor::GraphicPackage::savePlotCommand(QString filenamePrefix, int plotNumber, QString additionalInfo) const +{ + return d->saveToFileCommandTemplate.arg(filenamePrefix, QString::number(plotNumber), additionalInfo); +} + +bool Cantor::GraphicPackage::isHavePlotCommand() const +{ + return !d->saveToFileCommandTemplate.isEmpty(); +} + +const QStringList & Cantor::GraphicPackage::plotCommandPrecentsKeywords() const +{ + return d->plotPrecenseKeywords; +} + +QList Cantor::GraphicPackage::loadFromFile(const QString& filename) +{ + QList packages; + + if (!QFile::exists(filename)) + return packages; + + QFile fin(filename); + if (fin.open(QFile::ReadOnly)) + { + QDomDocument doc; + if (doc.setContent(fin.readAll()) && doc.firstChildElement(QLatin1String("GraphicPackages")).isNull() == false) + { + const auto& elements = doc.elementsByTagName(QLatin1String("GraphicPackage")); + for (int i = 0; i < elements.size(); i++) + { + const QDomNode& root = elements.item(i); + + GraphicPackage package; + package.d->id = root.firstChildElement(QLatin1String("Id")).text().trimmed(); + package.d->name = root.firstChildElement(QLatin1String("Name")).text().trimmed(); + package.d->testPresenceCommand = root.firstChildElement(QLatin1String("TestPresenceCommand")).text().trimmed(); + package.d->enableSupportCommand = root.firstChildElement(QLatin1String("EnableCommand")).text().trimmed(); + package.d->disableSupportCommand = root.firstChildElement(QLatin1String("DisableCommand")).text().trimmed(); + package.d->saveToFileCommandTemplate = root.firstChildElement(QLatin1String("ToFileCommandTemplate")).text().trimmed(); + + QString delimiter = QLatin1String("\n"); + const QDomElement& delimiterElement = root.firstChildElement(QLatin1String("PlotPrecenseKeywordsDelimiter")); + if (!delimiterElement.isNull()) + delimiter = delimiterElement.text().trimmed(); + package.d->plotPrecenseKeywords = root.firstChildElement(QLatin1String("PlotPrecenseKeywords")).text().trimmed().split(delimiter, QString::SkipEmptyParts); + for (QString& name : package.d->plotPrecenseKeywords) + name = name.trimmed(); + + packages.append(package); + } + } + else + qWarning() << "fail parse" << filename << "as xml file"; + } + + return packages; +} + +int Cantor::GraphicPackage::findById(const GraphicPackage& package, const QList& list) +{ + for (int i = 0; i < list.size(); i++) + if (list[i].id() == package.id()) + return i; + return -1; +} + + diff --git a/src/lib/graphicpackage.h b/src/lib/graphicpackage.h new file mode 100644 index 0000000..b52908b --- /dev/null +++ b/src/lib/graphicpackage.h @@ -0,0 +1,128 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Sirgienko Nikita +*/ + +#ifndef _GRAPHICPACKAGE_H +#define _GRAPHICPACKAGE_H + +#include +#include + +#include "cantor_export.h" + +namespace Cantor +{ +class GraphicPackagePrivate; +class Session; +class Expression; + +/** + * This class represents of embedded graphic handler for certaion graphical package some of @c Backend + * It provides access to native backend code (octave code for Octave backend, python code for Python backend, etc) + * for few operations, which need for embedded graphics. + * + * @author Nikita Sirgienko + */ + +class CANTOR_EXPORT GraphicPackage { +public: + /// @c GraphicPackage can be only copied or load from disk via loadFromFile() function. Direct construction prohibited. + GraphicPackage(const GraphicPackage&); + ~GraphicPackage(); + + /// This is id of graphical package. Must be unique, because the id used in search operations + QString id() const; + + /// Name of package, which will be shown to user in some situation. Can be nonunique. + QString name() const; + + /** + * @brief This methor return @c Expression object, which will check requirements of the package. + * + * For example, using "matplotlib" graphic package for Python backend have sense only if Python module "matplotlib" installed. + * So, the expression from @c isAvailable for "matplotlib" graphic package will check, if this module installed + * @return Expression, which will have output @c "1" if requirements are fulfilled and "0" or just an error if they aren't fulfilled + */ + Expression* isAvailable(Session*) const; + + /** + * @brief This command should return code, which will enable capturing images. + * + * The command must be revertable, see disableSupportCommand(). + * @c additionalInfo This is additional parameter from backend, which go to @c "%1" template. This is optional. + */ + QString enableSupportCommand(QString additionalInfo = QString()) const; + + /// This command should return code, which will disable capturing images. + QString disableSupportCommand() const; + + /** + * @brief The method return @c true if plot command empty and @c false otherwise + * + * The packages can have two realization of capturing. + * 1. Need only enable/disable commands. Capturing is realising via plot function changing, etc. + * 2. Need also additional run plot command after each entry with some arguments from @c Cantor::Expression object, see savePlotCommand() + * + * If the package is implemented in the first way, it must have empty plot command template (see savePlotCommand()), then isHavePlotCommand() will return @c true. + * Otherwise, isHavePlotCommand() will return @c false. + */ + bool isHavePlotCommand() const; + + /** + * @brief This function return command for saving image result(s) from expression (if results are existed). + * @param filenamePrefix Prefix of files with plots. Can be something like @c "/tmp/cantor_octave_2432_plot". Optional parameter. + * @param plotNumber Currect plot number, should be used for full filename construction. Optional parameter. + * @param additionalInfo This is additional parameter from backend, which go to @c "%3" template. Optional parameter. + * @return Command which will save plot to certain file or empty string (see isHavePlotCommand()) + */ + QString savePlotCommand(QString filenamePrefix = QString(), int plotNumber = -1, QString additionalInfo = QString()) const; + + /** + * Some graphic package can't capture plots correctly, for example, some packages can't test precense of created plot. + * So, the package handling need some code for testing of plot command precense + * This method return list of some strings, which should be in plot command. + * @return List of strings, which should be in plot command or empty list. + */ + const QStringList& plotCommandPrecentsKeywords() const; + + /** + * @brief Load graphic packages from XML file. + * + * The file should have @c "GraphicPackages" root element with one or more @c "GraphicPackage" XML elements. + * @code{.xml} + * + * + * .. + * + * ... + * + * @endcode + * + * Scheme of the @c GraphicPackage element: + * @code{.xml} + * + * ... + * ... + * ... + * ... + * ... + * ... + * + * @endcode + */ + static QList loadFromFile(const QString& filename); + + /** + * Some helper for searching @c package inside @c list of packages. + */ + static int findById(const GraphicPackage& package, const QList& list); + +private: + GraphicPackage(); + + GraphicPackagePrivate* d; +}; + +} +#endif /* _GRAPHICPACKAGE_H */ diff --git a/src/lib/helpresult.cpp b/src/lib/helpresult.cpp new file mode 100644 index 0000000..28bbd59 --- /dev/null +++ b/src/lib/helpresult.cpp @@ -0,0 +1,78 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include + +#include "helpresult.h" +using namespace Cantor; + +class Cantor::HelpResultPrivate +{ +public: + HelpResultPrivate() = default; + ~HelpResultPrivate() = default; + + QString html; +}; + +HelpResult::HelpResult(const QString& text, bool isHtml) : d(new HelpResultPrivate) +{ + QString html; + if (!isHtml) + { + html = text.toHtmlEscaped(); + html.replace(QLatin1Char(' '), QLatin1String(" ")); + html.replace(QLatin1Char('\n'), QLatin1String("
        \n")); + } + else + html = text; + + d->html = html; +} + +Cantor::HelpResult::~HelpResult() +{ + delete d; +} + +int HelpResult::type() +{ + return HelpResult::Type; +} + +QDomElement HelpResult::toXml(QDomDocument& doc) +{ + //No need to save results of a help request + QDomElement e=doc.createElement(QStringLiteral("Result")); + e.setAttribute(QStringLiteral("type"), QStringLiteral("help")); + return e; +} + +QJsonValue Cantor::HelpResult::toJupyterJson() +{ + // No need to save help result + return QJsonValue(); +} + +QString HelpResult::toHtml() +{ + return d->html; +} + +QVariant HelpResult::data() +{ + return QVariant(d->html); +} + +QString HelpResult::mimeType() +{ + return QStringLiteral("text/html"); +} + +void HelpResult::save(const QString& filename) +{ + //No need to save results of a help request + Q_UNUSED(filename); +} diff --git a/src/lib/helpresult.h b/src/lib/helpresult.h new file mode 100644 index 0000000..4467dea --- /dev/null +++ b/src/lib/helpresult.h @@ -0,0 +1,42 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _HELPRESULT_H +#define _HELPRESULT_H + +#include "textresult.h" + +namespace Cantor +{ + +/** this is basically a TextResult, just with a different Type + so that the application can show it in another way than the + normal results +**/ +class HelpResultPrivate; +class CANTOR_EXPORT HelpResult: public Result +{ + public: + enum {Type=3}; + explicit HelpResult( const QString& text, bool isHtml=false); + ~HelpResult() override; + + QVariant data() override; + QString toHtml() override; + + int type() override; + QString mimeType() override; + + QDomElement toXml(QDomDocument& doc) override; + QJsonValue toJupyterJson() override; + void save(const QString& filename) override; + + private: + HelpResultPrivate* d; +}; + +} + +#endif /* _HELPRESULT_H */ diff --git a/src/lib/htmlresult.cpp b/src/lib/htmlresult.cpp new file mode 100644 index 0000000..fcdd99e --- /dev/null +++ b/src/lib/htmlresult.cpp @@ -0,0 +1,169 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Sirgienko Nikita +*/ + +#include "htmlresult.h" + +#include +#include +#include +#include +#include + +#include "jupyterutils.h" + +using namespace Cantor; + +class Cantor::HtmlResultPrivate +{ +public: + QString html; + QString plain; + std::map alternatives; // Useful only for Jupyter, it think + Cantor::HtmlResult::Format format{Cantor::HtmlResult::Html}; +}; + +HtmlResult::HtmlResult(const QString& html, const QString& plain, const std::map& alternatives) : d(new HtmlResultPrivate()) +{ + d->html = html; + d->plain = plain; + d->alternatives = alternatives; +} + +HtmlResult::~HtmlResult() +{ + delete d; +} + +QString HtmlResult::toHtml() +{ + switch(d->format) + { + case HtmlResult::Html: + return d->html; + + case HtmlResult::HtmlSource: + return QStringLiteral("
        ") + d->html.toHtmlEscaped() + QStringLiteral("
        "); + + case HtmlResult::PlainAlternative: + return QStringLiteral("
        ") + d->plain.toHtmlEscaped() + QStringLiteral("
        "); + + default: + return QString(); + } +} + +QVariant Cantor::HtmlResult::data() +{ + return d->html; +} + +QString Cantor::HtmlResult::plain() +{ + return d->plain; +} + +void Cantor::HtmlResult::setFormat(HtmlResult::Format format) +{ + d->format = format; +} + +HtmlResult::Format Cantor::HtmlResult::format() +{ + return d->format; +} + +int Cantor::HtmlResult::type() +{ + return HtmlResult::Type; +} + +QString Cantor::HtmlResult::mimeType() +{ + return QStringLiteral("text/html"); +} + +QDomElement Cantor::HtmlResult::toXml(QDomDocument& doc) +{ + QDomElement e=doc.createElement(QStringLiteral("Result")); + e.setAttribute(QStringLiteral("type"), QStringLiteral("html")); + switch(d->format) + { + case HtmlResult::HtmlSource: + e.setAttribute(QStringLiteral("format"), QStringLiteral("htmlSource")); + break; + + case HtmlResult::PlainAlternative: + e.setAttribute(QStringLiteral("format"), QStringLiteral("plain")); + break; + + // Html format used by default, so don't set it + default: + break; + } + + QDomElement plainE = doc.createElement(QStringLiteral("Plain")); + plainE.appendChild(doc.createTextNode(d->plain)); + e.appendChild(plainE); + + QDomElement htmlE = doc.createElement(QStringLiteral("Html")); + htmlE.appendChild(doc.createTextNode(d->html)); + e.appendChild(htmlE); + + for (auto iter = d->alternatives.begin(); iter != d->alternatives.end(); iter++) + { + QJsonDocument jsonDoc; + QJsonObject obj; + obj.insert(QLatin1String("root"), iter->second); + jsonDoc.setObject(obj); + + QDomElement content = doc.createElement(QStringLiteral("Alternative")); + content.setAttribute(QStringLiteral("key"), iter->first); + content.appendChild(doc.createTextNode(QString::fromUtf8(jsonDoc.toJson()))); + e.appendChild(content); + } + + return e; +} + +QJsonValue Cantor::HtmlResult::toJupyterJson() +{ + QJsonObject root; + if (executionIndex() != -1) + { + root.insert(QLatin1String("output_type"), QLatin1String("execute_result")); + root.insert(QLatin1String("execution_count"), executionIndex()); + } + else + root.insert(QLatin1String("output_type"), QLatin1String("display_data")); + + + QJsonObject data; + data.insert(QLatin1String("text/html"), JupyterUtils::toJupyterMultiline(d->html)); + if (!d->plain.isEmpty()) + data.insert(QLatin1String("text/plain"), JupyterUtils::toJupyterMultiline(d->plain)); + + for (auto iter = d->alternatives.begin(); iter != d->alternatives.end(); iter++) + data.insert(iter->first, iter->second); + + root.insert(QLatin1String("data"), data); + + root.insert(QLatin1String("metadata"), jupyterMetadata()); + + return root; +} + +void Cantor::HtmlResult::save(const QString& filename) +{ + QFile file(filename); + + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) + return; + + QTextStream stream(&file); + + stream<html; + + file.close(); +} diff --git a/src/lib/htmlresult.h b/src/lib/htmlresult.h new file mode 100644 index 0000000..9a53449 --- /dev/null +++ b/src/lib/htmlresult.h @@ -0,0 +1,51 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Sirgienko Nikita +*/ + +#ifndef _HTMLRESULT_H +#define _HTMLRESULT_H + +#include + +#include "result.h" +#include "cantor_export.h" + +namespace Cantor +{ + +class HtmlResultPrivate; +/** + * Class for html results + * Instead of TextResult supports show/hide source html code like LatexResult + * Also the result allows see plain alternative of the html, if available + */ +class CANTOR_EXPORT HtmlResult : public Result +{ + public: + enum { Type=8 }; + enum Format { Html, HtmlSource, PlainAlternative}; + HtmlResult(const QString& html, const QString& plain = QString(), const std::map& alternatives = std::map()); + ~HtmlResult() override; + + QString toHtml() override; + QVariant data() override; + QString plain(); + + void setFormat(Format format); + Format format(); + + int type() override; + QString mimeType() override; + + QDomElement toXml(QDomDocument& doc) override; + QJsonValue toJupyterJson() override; + + void save(const QString& filename) override; + + private: + HtmlResultPrivate* d; +}; + +} +#endif /* _HTMLRESULT_H */ diff --git a/src/lib/imageresult.cpp b/src/lib/imageresult.cpp new file mode 100644 index 0000000..caa641c --- /dev/null +++ b/src/lib/imageresult.cpp @@ -0,0 +1,190 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "imageresult.h" +using namespace Cantor; + +#include +#include +#include +#include +#include +#include + +#include "jupyterutils.h" + +class Cantor::ImageResultPrivate +{ + public: + ImageResultPrivate() = default; + + QUrl url; + QImage img; + QString alt; + QSize displaySize; + + QString originalFormat{JupyterUtils::pngMime}; + QString svgContent; // HACK: qt can't easily render svg, so, if we load the result from Jupyter svg image, store original svg +}; + +ImageResult::ImageResult(const QUrl &url, const QString& alt) : d(new ImageResultPrivate) +{ + d->url=url; + d->alt=alt; +} + +Cantor::ImageResult::ImageResult(const QImage& image, const QString& alt) : d(new ImageResultPrivate) +{ + d->img=image; + d->alt=alt; + + QTemporaryFile imageFile; + imageFile.setAutoRemove(false); + if (imageFile.open()) + { + d->img.save(imageFile.fileName(), "PNG"); + d->url = QUrl::fromLocalFile(imageFile.fileName()); + } +} + +ImageResult::~ImageResult() +{ + delete d; +} + +QString ImageResult::toHtml() +{ + return QStringLiteral("\"%2\"/").arg(d->url.toLocalFile(), d->alt); +} + +QString ImageResult::toLatex() +{ + return QStringLiteral(" \\begin{center} \n \\includegraphics[width=12cm]{%1} \n \\end{center}").arg(d->url.fileName()); +} + +QVariant ImageResult::data() +{ + if(d->img.isNull()) + d->img.load(d->url.toLocalFile()); + + return QVariant(d->img); +} + +QUrl ImageResult::url() +{ + return d->url; +} + +int ImageResult::type() +{ + return ImageResult::Type; +} + +QString ImageResult::mimeType() +{ + const QList formats=QImageWriter::supportedImageFormats(); + QString mimetype; + foreach(const QByteArray& format, formats) + { + mimetype+=QLatin1String("image/"+format.toLower()+' '); + } + qDebug()<<"type: "<url.fileName()); + if (!d->alt.isEmpty()) + e.appendChild(doc.createTextNode(d->alt)); + qDebug()<<"done"; + + return e; +} + +QJsonValue Cantor::ImageResult::toJupyterJson() +{ + QJsonObject root; + + if (executionIndex() != -1) + { + root.insert(QLatin1String("output_type"), QLatin1String("execute_result")); + root.insert(QLatin1String("execution_count"), executionIndex()); + } + else + root.insert(QLatin1String("output_type"), QLatin1String("display_data")); + + QImage image; + if (d->img.isNull()) + image.load(d->url.toLocalFile()); + else + image = d->img; + + QJsonObject data; + + // HACK: see ImageResultPrivate::svgContent + if (d->originalFormat == JupyterUtils::svgMime) + data.insert(JupyterUtils::svgMime, JupyterUtils::toJupyterMultiline(d->svgContent)); + else + data = JupyterUtils::packMimeBundle(image, d->originalFormat); + + data.insert(JupyterUtils::textMime, JupyterUtils::toJupyterMultiline(d->alt)); + + + root.insert(QLatin1String("data"), data); + + QJsonObject metadata(jupyterMetadata()); + if (d->displaySize.isValid()) + { + QJsonObject size; + size.insert(QLatin1String("width"), displaySize().width()); + size.insert(QLatin1String("height"), displaySize().height()); + metadata.insert(d->originalFormat, size); + } + root.insert(QLatin1String("metadata"), metadata); + + return root; +} + +void ImageResult::saveAdditionalData(KZip* archive) +{ + archive->addLocalFile(d->url.toLocalFile(), d->url.fileName()); +} + +void ImageResult::save(const QString& filename) +{ + bool rc = d->img.save(filename); + if (!rc) + qDebug()<<"saving to " << filename << " failed."; +} + +QSize Cantor::ImageResult::displaySize() +{ + return d->displaySize; +} + +void Cantor::ImageResult::setDisplaySize(QSize size) +{ + d->displaySize = size; +} + +void Cantor::ImageResult::setOriginalFormat(const QString& format) +{ + d->originalFormat = format; +} + +QString Cantor::ImageResult::originalFormat() +{ + return d->originalFormat; +} + +void Cantor::ImageResult::setSvgContent(const QString& svgContent) +{ + d->svgContent = svgContent; +} diff --git a/src/lib/imageresult.h b/src/lib/imageresult.h new file mode 100644 index 0000000..03c71de --- /dev/null +++ b/src/lib/imageresult.h @@ -0,0 +1,54 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _IMAGERESULT_H +#define _IMAGERESULT_H + +#include "result.h" +#include +#include + +class QImage; + +namespace Cantor +{ +class ImageResultPrivate; + +class CANTOR_EXPORT ImageResult : public Result +{ + public: + enum{Type=2}; + explicit ImageResult( const QUrl& url, const QString& alt=QString()); + explicit ImageResult( const QImage& image, const QString& alt=QString()); + ~ImageResult() override; + + QString toHtml() override; + QString toLatex() override; + QVariant data() override; + QUrl url() override; + + int type() override; + QString mimeType() override; + + QSize displaySize(); + void setDisplaySize(QSize size); + + QString originalFormat(); + void setOriginalFormat(const QString& format); + void setSvgContent(const QString& svgContent); + + QDomElement toXml(QDomDocument& doc) override; + QJsonValue toJupyterJson() override; + void saveAdditionalData(KZip* archive) override; + + void save(const QString& filename) override; + + private: + ImageResultPrivate* d; +}; + +} + +#endif /* _IMAGERESULT_H */ diff --git a/src/lib/jupyterutils.cpp b/src/lib/jupyterutils.cpp new file mode 100644 index 0000000..d51b3d6 --- /dev/null +++ b/src/lib/jupyterutils.cpp @@ -0,0 +1,441 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Sirgienko Nikita +*/ + +#include "jupyterutils.h" +#include "backend.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace Cantor; + +const QString JupyterUtils::cellsKey = QLatin1String("cells"); +const QString JupyterUtils::metadataKey = QLatin1String("metadata"); +const QString JupyterUtils::cantorMetadataKey = QLatin1String("cantor"); +const QString JupyterUtils::nbformatKey = QLatin1String("nbformat"); +const QString JupyterUtils::nbformatMinorKey = QLatin1String("nbformat_minor"); +const QString JupyterUtils::cellTypeKey = QLatin1String("cell_type"); +const QString JupyterUtils::sourceKey = QLatin1String("source"); +const QString JupyterUtils::outputTypeKey = QLatin1String("output_type"); +const QString JupyterUtils::executionCountKey = QLatin1String("execution_count"); +const QString JupyterUtils::outputsKey = QLatin1String("outputs"); +const QString JupyterUtils::dataKey = QLatin1String("data"); + +const QString JupyterUtils::pngMime = QLatin1String("image/png"); +const QString JupyterUtils::gifMime = QLatin1String("image/gif"); +const QString JupyterUtils::textMime = QLatin1String("text/plain"); +const QString JupyterUtils::htmlMime = QLatin1String("text/html"); +const QString JupyterUtils::latexMime = QLatin1String("text/latex"); +const QString JupyterUtils::svgMime = QLatin1String("image/svg+xml"); + +const QMimeDatabase JupyterUtils::mimeDatabase; + +QJsonValue JupyterUtils::toJupyterMultiline(const QString& source) +{ + if (source.contains(QLatin1Char('\n'))) + { + QJsonArray text; + const QStringList& lines = source.split(QLatin1Char('\n')); + for (int i = 0; i < lines.size(); i++) + { + QString line = lines[i]; + // Don't add \n to last line + if (i != lines.size() - 1) + line.append(QLatin1Char('\n')); + // Ignore last line, if it is an empty line + else if (line.isEmpty()) + break; + + text.append(line); + } + return text; + } + else + return QJsonArray::fromStringList(QStringList(source)); +} + +QString JupyterUtils::fromJupyterMultiline(const QJsonValue& source) +{ + QString code; + if (source.isString()) + code = source.toString(); + else if (source.isArray()) + for (const QJsonValue& line : source.toArray()) + code += line.toString(); + return code; +} + +bool JupyterUtils::isJupyterNotebook(const QJsonDocument& doc) +{ + static const QSet notebookScheme + = QSet::fromList({cellsKey, metadataKey, nbformatKey, nbformatMinorKey}); + + bool isNotebook = + doc.isObject() + && QSet::fromList(doc.object().keys()) == notebookScheme + && doc.object().value(cellsKey).isArray() + && doc.object().value(metadataKey).isObject() + && doc.object().value(nbformatKey).isDouble() + && doc.object().value(nbformatMinorKey).isDouble(); + + return isNotebook; +} + +bool JupyterUtils::isJupyterCell(const QJsonValue& cell) +{ + bool isCell = + cell.isObject() + && cell.toObject().value(cellTypeKey).isString() + && + ( cell.toObject().value(cellTypeKey).toString() == QLatin1String("markdown") + || cell.toObject().value(cellTypeKey).toString() == QLatin1String("code") + || cell.toObject().value(cellTypeKey).toString() == QLatin1String("raw") + ) + && cell.toObject().value(metadataKey).isObject() + && + ( cell.toObject().value(sourceKey).isString() + || cell.toObject().value(sourceKey).isArray() + ); + + return isCell; +} + +bool JupyterUtils::isJupyterOutput(const QJsonValue& output) +{ + bool isOutput = + output.isObject() + && output.toObject().value(outputTypeKey).isString() + && + ( output.toObject().value(outputTypeKey).toString() == QLatin1String("stream") + || output.toObject().value(outputTypeKey).toString() == QLatin1String("display_data") + || output.toObject().value(outputTypeKey).toString() == QLatin1String("execute_result") + || output.toObject().value(outputTypeKey).toString() == QLatin1String("error") + ); + + return isOutput; +} + +bool JupyterUtils::isJupyterTextOutput(const QJsonValue& output) +{ + return + isJupyterOutput(output) + && output.toObject().value(outputTypeKey).toString() == QLatin1String("stream") + && output.toObject().value(QLatin1String("name")).isString() + && output.toObject().value(QLatin1String("text")).isArray(); +} + +bool JupyterUtils::isJupyterErrorOutput(const QJsonValue& output) +{ + return + isJupyterOutput(output) + && output.toObject().value(outputTypeKey).toString() == QLatin1String("error") + && output.toObject().value(QLatin1String("ename")).isString() + && output.toObject().value(QLatin1String("evalue")).isString() + && output.toObject().value(QLatin1String("traceback")).isArray(); +} + +bool JupyterUtils::isJupyterExecutionResult(const QJsonValue& output) +{ + return + isJupyterOutput(output) + && output.toObject().value(outputTypeKey).toString() == QLatin1String("execute_result") + && output.toObject().value(QLatin1String("execution_count")).isDouble() + && output.toObject().value(metadataKey).isObject() + && output.toObject().value(QLatin1String("data")).isObject(); +} + +bool JupyterUtils::isJupyterDisplayOutput(const QJsonValue& output) +{ + return + isJupyterOutput(output) + && output.toObject().value(outputTypeKey).toString() == QLatin1String("display_data") + && output.toObject().value(metadataKey).isObject() + && output.toObject().value(QLatin1String("data")).isObject(); +} + +bool JupyterUtils::isMarkdownCell(const QJsonValue& cell) +{ + return isJupyterCell(cell) && getCellType(cell.toObject()) == QLatin1String("markdown"); +} + +bool JupyterUtils::isCodeCell(const QJsonValue& cell) +{ + return + isJupyterCell(cell) + && getCellType(cell.toObject()) == QLatin1String("code") + && + ( cell.toObject().value(executionCountKey).isDouble() + || cell.toObject().value(executionCountKey).isNull() + ) + && cell.toObject().value(outputsKey).isArray(); +} + +bool JupyterUtils::isRawCell(const QJsonValue& cell) +{ + return isJupyterCell(cell) && getCellType(cell.toObject()) == QLatin1String("raw"); +} + +QJsonObject JupyterUtils::getMetadata(const QJsonObject& object) +{ + return object.value(metadataKey).toObject(); +} + +QJsonArray JupyterUtils::getCells(const QJsonObject notebook) +{ + return notebook.value(cellsKey).toArray(); +} + +std::tuple JupyterUtils::getNbformatVersion(const QJsonObject& notebook) +{ + int nbformatMajor = notebook.value(nbformatKey).toInt(); + int nbformatMinor = notebook.value(nbformatMinorKey).toInt(); + + return {nbformatMajor, nbformatMinor}; +} + +QString JupyterUtils::getCellType(const QJsonObject& cell) +{ + return cell.value(cellTypeKey).toString(); +} + +QString JupyterUtils::getSource(const QJsonObject& cell) +{ + return fromJupyterMultiline(cell.value(sourceKey)); +} + +void JupyterUtils::setSource(QJsonObject& cell, const QString& source) +{ + cell.insert(sourceKey, toJupyterMultiline(source)); +} + +QString JupyterUtils::getOutputType(const QJsonObject& output) +{ + return output.value(outputTypeKey).toString(); +} + +QJsonObject JupyterUtils::getCantorMetadata(const QJsonObject object) +{ + return getMetadata(object).value(cantorMetadataKey).toObject(); +} + +QString JupyterUtils::getKernelName(const QJsonValue& kernelspecValue) +{ + QString name; + + if (kernelspecValue.isObject()) + { + const QJsonObject& kernelspec = kernelspecValue.toObject(); + QString kernelName = kernelspec.value(QLatin1String("name")).toString(); + if (!kernelName.isEmpty()) + { + if (kernelName.startsWith(QLatin1String("julia"))) + kernelName = QLatin1String("julia"); + else if (kernelName == QLatin1String("sagemath")) + kernelName = QLatin1String("sage"); + else if (kernelName == QLatin1String("ir")) + kernelName = QLatin1String("r"); + name = kernelName; + } + else + { + name = kernelspec.value(QLatin1String("language")).toString(); + } + } + + return name; +} + +QJsonObject JupyterUtils::getKernelspec(const Cantor::Backend* backend) +{ + QJsonObject kernelspec; + + if (backend) + { + QString id = backend->id(); + + if (id == QLatin1String("sage")) + id = QLatin1String("sagemath"); + else if (id == QLatin1String("r")) + id = QLatin1String("ir"); + + kernelspec.insert(QLatin1String("name"), id); + + QString lang = backend->id(); + if (lang.startsWith(QLatin1String("python"))) + lang = QLatin1String("python"); + lang[0] = lang[0].toUpper(); + + kernelspec.insert(QLatin1String("language"), lang); + + kernelspec.insert(QLatin1String("display_name"), backend->name()); + } + + return kernelspec; +} + +QImage JupyterUtils::loadImage(const QJsonValue& mimeBundle, const QString& key) +{ + QImage image; + + if (mimeBundle.isObject()) + { + const QJsonObject& bundleObject = mimeBundle.toObject(); + const QJsonValue& data = bundleObject.value(key); + if (data.isString() || data.isArray()) + { + // In jupyter mime-bundle key for data is mime type of this data + // So we need convert mimetype to format, for example "image/png" to "png" + // for loading from data + if (QImageReader::supportedMimeTypes().contains(key.toLatin1())) + { + const QByteArray& format = mimeDatabase.mimeTypeForName(key).preferredSuffix().toLatin1(); + // Handle svg separately, because Jupyter don't encode svg in base64 + // and store as jupyter multiline text + if (key == QLatin1String("image/svg+xml") && data.isArray()) + { + image.loadFromData(fromJupyterMultiline(data).toLatin1(), format.data()); + } + else if (data.isString()) + { + // https://doc.qt.io/qt-5/qimagereader.html#supportedImageFormats + // Maybe there is a better way to convert image key to image format + // but this is all that I could to do + const QString& base64 = data.toString(); + image.loadFromData(QByteArray::fromBase64(base64.toLatin1()), format.data()); + } + } + } + } + + return image; +} + +QJsonObject JupyterUtils::packMimeBundle(const QImage& image, const QString& mime) +{ + QJsonObject mimeBundle; + + if (QImageWriter::supportedMimeTypes().contains(mime.toLatin1())) + { + const QByteArray& format = mimeDatabase.mimeTypeForName(mime).preferredSuffix().toLatin1(); + + QByteArray ba; + QBuffer buffer(&ba); + buffer.open(QIODevice::WriteOnly); + image.save(&buffer, format.data()); + mimeBundle.insert(mime, QString::fromLatin1(ba.toBase64())); + } + + return mimeBundle; +} + +QStringList JupyterUtils::imageKeys(const QJsonValue& mimeBundle) +{ + QStringList imageKeys; + + if (mimeBundle.isObject()) + { + const QStringList& keys = mimeBundle.toObject().keys(); + const QList& mimes = QImageReader::supportedMimeTypes(); + for (const QString& key : keys) + if (mimes.contains(key.toLatin1())) + imageKeys.append(key); + } + + return imageKeys; +} + +QString JupyterUtils::firstImageKey(const QJsonValue& mimeBundle) +{ + const QStringList& keys = imageKeys(mimeBundle); + return keys.size() >= 1 ? keys[0] : QString(); +} + +QString JupyterUtils::mainBundleKey(const QJsonValue& mimeBundle) +{ + QString mainKey; + + if (mimeBundle.isObject()) + { + const QStringList& keys = mimeBundle.toObject().keys(); + if (keys.size() == 1) + mainKey = keys[0]; + else if (keys.size() == 2) + { + int idx = keys.indexOf(textMime); + if (idx != -1) + // Getting not 'text/plain' key, because often it's just a caption + mainKey = keys[1 - idx]; + else + // Not sure, that this is valid, but return first keys + mainKey = keys[0]; + } + else if (keys.size() > 2) + { + // Also not sure about it + // Specification is not very clean on cases, such that + // Just in case, if we will have duplications of information + // Something like keys == {'image/png', 'image/bmp', 'text/plain'} + // Or something like keys == {'text/html', 'text/latex', 'text/plain'} + // Set priority for html->latex->plain (in this order) + if (keys.contains(htmlMime)) + mainKey = htmlMime; + else if (keys.contains(latexMime)) + mainKey = latexMime; + else if (keys.contains(textMime)) + mainKey = textMime; + else + { + // Search for image keys, if no + // then just use first key + mainKey = firstImageKey(mimeBundle); + if (mainKey.isEmpty()) + mainKey = keys[0]; + } + } + } + + return mainKey; +} + +bool JupyterUtils::isGifHtml(const QJsonValue& html) +{ + return html.isString() + && html.toString().startsWith(QLatin1String("")); +} + +QUrl JupyterUtils::loadGifHtml(const QJsonValue& html) +{ + QUrl gif; + + if (html.isString()) + { + QString data = html.toString(); + data.remove(0, QString::fromLatin1("").size()); + const QByteArray& bytes = QByteArray::fromBase64(data.toLatin1()); + + QTemporaryFile file; + file.setAutoRemove(false); + file.open(); + file.write(bytes); + file.close(); + + gif = QUrl::fromLocalFile(file.fileName()); + } + + return gif; +} diff --git a/src/lib/jupyterutils.h b/src/lib/jupyterutils.h new file mode 100644 index 0000000..714be18 --- /dev/null +++ b/src/lib/jupyterutils.h @@ -0,0 +1,102 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Sirgienko Nikita +*/ + +#ifndef JUPYTERUTILS_H +#define JUPYTERUTILS_H + +#include + +#include +#include +#include + +#include "cantor_export.h" + +class QJsonValue; +class QJsonObject; +class QJsonArray; +class QJsonDocument; +class QImage; +class QUrl; + +namespace Cantor { + +class Backend; + +/** + * Static class for storing some common code for working with jupyter json scheme + * Like getting 'metadata', getting source code from 'source' tag, scheme validation + * handleling missing keys, etc. + * + */ +class CANTOR_EXPORT JupyterUtils +{ + public: + static QJsonObject getMetadata(const QJsonObject& object); + static QJsonObject getCantorMetadata(const QJsonObject object); + + static QJsonArray getCells(const QJsonObject notebook); + static std::tuple getNbformatVersion(const QJsonObject& notebook); + + static QString getCellType(const QJsonObject& cell); + static QString getSource(const QJsonObject& cell); + static void setSource(QJsonObject& cell, const QString& source); + + static QString getOutputType(const QJsonObject& output); + + /// Actually, this function handle only Jupyter notebooks version >= 4.0.0 + /// Previous versions treats as 'not notebook' + static bool isJupyterNotebook(const QJsonDocument& doc); + + static bool isJupyterCell(const QJsonValue& cell); + static bool isMarkdownCell(const QJsonValue& cell); + static bool isCodeCell(const QJsonValue& cell); + static bool isRawCell(const QJsonValue& cell); + + static bool isJupyterOutput(const QJsonValue& output); + static bool isJupyterDisplayOutput(const QJsonValue& output); + static bool isJupyterTextOutput(const QJsonValue& output); + static bool isJupyterErrorOutput(const QJsonValue& output); + static bool isJupyterExecutionResult(const QJsonValue& output); + + static QJsonValue toJupyterMultiline(const QString& source); + static QString fromJupyterMultiline(const QJsonValue& source); + + static QString getKernelName(const QJsonValue& kernelspecValue); + static QJsonObject getKernelspec(const Cantor::Backend* backend); + + static QImage loadImage(const QJsonValue& mimeBundle, const QString& key); + static QJsonObject packMimeBundle(const QImage& image, const QString& mime); + static QStringList imageKeys(const QJsonValue& mimeBundle); + static QString firstImageKey(const QJsonValue& mimeBundle); + static QString mainBundleKey(const QJsonValue& mimeBundle); + + static bool isGifHtml(const QJsonValue& html); + static QUrl loadGifHtml(const QJsonValue& html); + public: + static const QString cellsKey; + static const QString metadataKey; + static const QString cantorMetadataKey; + static const QString nbformatKey; + static const QString nbformatMinorKey; + static const QString cellTypeKey; + static const QString sourceKey; + static const QString outputTypeKey; + static const QString executionCountKey; + static const QString outputsKey; + static const QString dataKey; + + static const QString pngMime; + static const QString gifMime; + static const QString textMime; + static const QString htmlMime; + static const QString latexMime; + static const QString svgMime; + + static const QMimeDatabase mimeDatabase; +}; +} + +#endif // JUPYTERUTILS_H diff --git a/src/lib/latexrenderer.cpp b/src/lib/latexrenderer.cpp new file mode 100644 index 0000000..4e6877b --- /dev/null +++ b/src/lib/latexrenderer.cpp @@ -0,0 +1,321 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Alexander Rieder +*/ + +#include "latexrenderer.h" +using namespace Cantor; + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include "settings.h" + +class Cantor::LatexRendererPrivate +{ + public: + QString latexCode; + QString header; + LatexRenderer::Method method; + bool isEquationOnly; + LatexRenderer::EquationType equationType; + QString errorMessage; + bool success; + QString latexFilename; + QString epsFilename; + QString uuid; + QTemporaryFile* texFile; +}; + +static const QLatin1String tex("\\documentclass[fleqn]{article}"\ + "\\usepackage{latexsym,amsfonts,amssymb,ulem}"\ + "\\usepackage{amsmath}"\ + "\\usepackage[dvips]{graphicx}"\ + "\\usepackage[utf8]{inputenc}"\ + "\\usepackage{xcolor}"\ + "\\setlength\\textwidth{5in}"\ + "\\setlength{\\parindent}{0pt}"\ + "%1"\ + "\\pagecolor[rgb]{%2,%3,%4}"\ + "\\pagestyle{empty}"\ + "\\begin{document}"\ + "\\color[rgb]{%5,%6,%7}"\ + "\\fontsize{%8}{%8}\\selectfont\n"\ + "%9\n"\ + "\\end{document}"); + +static const QLatin1String eqnHeader("\\begin{eqnarray*}%1\\end{eqnarray*}"); +static const QLatin1String inlineEqnHeader("$%1$"); + +LatexRenderer::LatexRenderer(QObject* parent) : QObject(parent), + d(new LatexRendererPrivate) +{ + d->method=LatexMethod; + d->isEquationOnly=false; + d->equationType=InlineEquation; + d->success=false; + d->texFile=nullptr; +} + +LatexRenderer::~LatexRenderer() +{ + delete d; +} + +QString LatexRenderer::latexCode() const +{ + return d->latexCode; +} + +void LatexRenderer::setLatexCode(const QString& src) +{ + d->latexCode=src; +} + +QString LatexRenderer::header() const +{ + return d->header; +} + +void LatexRenderer::addHeader(const QString& header) +{ + d->header.append(header); +} + +void LatexRenderer::setHeader(const QString& header) +{ + d->header=header; +} + +LatexRenderer::Method LatexRenderer::method() const +{ + return d->method; +} + +void LatexRenderer::setMethod(LatexRenderer::Method method) +{ + d->method=method; +} + +void LatexRenderer::setEquationType(LatexRenderer::EquationType type) +{ + d->equationType=type; +} + +LatexRenderer::EquationType LatexRenderer::equationType() const +{ + return d->equationType; +} + + +void LatexRenderer::setErrorMessage(const QString& msg) +{ + d->errorMessage=msg; +} + +QString LatexRenderer::errorMessage() const +{ + return d->errorMessage; +} + +bool LatexRenderer::renderingSuccessful() const +{ + return d->success; +} + +void LatexRenderer::setEquationOnly(bool isEquationOnly) +{ + d->isEquationOnly=isEquationOnly; +} + +bool LatexRenderer::isEquationOnly() const +{ + return d->isEquationOnly; +} + + +QString LatexRenderer::imagePath() const +{ + return d->epsFilename; +} + +QString Cantor::LatexRenderer::uuid() const +{ + return d->uuid; +} + +bool LatexRenderer::render() +{ + switch(d->method) + { + case LatexRenderer::LatexMethod: + return renderWithLatex(); + + case LatexRenderer::MmlMethod: + return renderWithMml(); + + default: + return false; + }; +} + +void LatexRenderer::renderBlocking() +{ + QEventLoop event; + connect(this, &LatexRenderer::done, &event, &QEventLoop::quit); + connect(this, &LatexRenderer::error, &event, &QEventLoop::quit); + + bool success = render(); + // We can't emit error before running event loop, so exit by passing false as an error indicator + if (success) + event.exec(); + else + return; +} + +bool LatexRenderer::renderWithLatex() +{ + qDebug()<<"rendering using latex method"; + QString dir=QStandardPaths::writableLocation(QStandardPaths::TempLocation); + + if (d->texFile) + delete d->texFile; + + d->texFile=new QTemporaryFile(dir + QDir::separator() + QLatin1String("cantor_tex-XXXXXX.tex")); + d->texFile->open(); + + KColorScheme scheme(QPalette::Active); + const QColor &backgroundColor=scheme.background().color(); + const QColor &foregroundColor=scheme.foreground().color(); + QString expressionTex=tex; + expressionTex=expressionTex.arg(d->header) + .arg(backgroundColor.redF()).arg(backgroundColor.greenF()).arg(backgroundColor.blueF()) + .arg(foregroundColor.redF()).arg(foregroundColor.greenF()).arg(foregroundColor.blueF()); + + int fontPointSize = QApplication::font().pointSize(); + expressionTex=expressionTex.arg(fontPointSize); + + if(isEquationOnly()) + { + switch(equationType()) + { + case FullEquation: expressionTex=expressionTex.arg(eqnHeader); break; + case InlineEquation: expressionTex=expressionTex.arg(inlineEqnHeader); break; + case CustomEquation: expressionTex=expressionTex.arg(QLatin1String("%1")); break; + } + } + expressionTex=expressionTex.arg(d->latexCode); + + // qDebug()<<"full tex:\n"<texFile->write(expressionTex.toUtf8()); + d->texFile->flush(); + + QString fileName = d->texFile->fileName(); + qDebug()<<"fileName: "<latexFilename=fileName; + QProcess *p=new QProcess( this ); + p->setWorkingDirectory(dir); + + d->uuid = genUuid(); + + qDebug() << Settings::self()->latexCommand(); + QFileInfo info(Settings::self()->latexCommand()); + if (info.exists() && info.isExecutable()) + { + p->setProgram(Settings::self()->latexCommand()); + p->setArguments({QStringLiteral("-jobname=cantor_") + d->uuid, QStringLiteral("-halt-on-error"), fileName}); + + connect(p, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(convertToPs()) ); + p->start(); + return true; + } + else + { + setErrorMessage(QStringLiteral("failed to find latex executable")); + return false; + } +} + +void LatexRenderer::convertToPs() +{ + const QString& dir=QStandardPaths::writableLocation(QStandardPaths::TempLocation); + + QString dviFile = dir + QDir::separator() + QStringLiteral("cantor_") + d->uuid + QStringLiteral(".dvi"); + d->epsFilename = dir + QDir::separator() + QLatin1String("cantor_")+d->uuid+QLatin1String(".eps"); + + QProcess *p=new QProcess( this ); + qDebug()<<"converting to eps: "<dvipsCommand()<<"-E"<<"-o"<epsFilename<dvipsCommand()); + if (info.exists() && info.isExecutable()) + { + p->setProgram(Settings::self()->dvipsCommand()); + p->setArguments({QStringLiteral("-E"), QStringLiteral("-q"), QStringLiteral("-o"), d->epsFilename, dviFile}); + + connect(p, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(convertingDone()) ); + p->start(); + } + else + { + setErrorMessage(QStringLiteral("failed to find dvips executable")); + emit error(); + } +} + +void LatexRenderer::convertingDone() +{ + QFileInfo info(d->epsFilename); + qDebug() <<"remove temporary files for " << d->latexFilename; + + QString pathWithoutExtension = info.path() + QDir::separator() + info.completeBaseName(); + QFile::remove(pathWithoutExtension + QLatin1String(".log")); + QFile::remove(pathWithoutExtension + QLatin1String(".aux")); + QFile::remove(pathWithoutExtension + QLatin1String(".dvi")); + + if(info.exists()) + { + delete d->texFile; + d->texFile = nullptr; + + d->success=true; + emit done(); + } + else + { + d->success=false; + setErrorMessage(QStringLiteral("failed to create the latex preview image")); + emit error(); + } +} + +bool LatexRenderer::renderWithMml() +{ + qWarning()<<"WARNING: MML rendering not implemented yet!"; + emit error(); + return false; +} + +QString LatexRenderer::genUuid() +{ + QString uuid = QUuid::createUuid().toString(); + uuid.remove(0, 1); + uuid.chop(1); + uuid.replace(QLatin1Char('-'), QLatin1Char('_')); + return uuid; +} + +bool Cantor::LatexRenderer::isLatexAvailable() +{ + QFileInfo infoLatex(Settings::self()->latexCommand()); + QFileInfo infoPs(Settings::self()->dvipsCommand()); + return infoLatex.exists() && infoLatex.isExecutable() && infoPs.exists() && infoPs.isExecutable(); +} diff --git a/src/lib/latexrenderer.h b/src/lib/latexrenderer.h new file mode 100644 index 0000000..bb8e1c2 --- /dev/null +++ b/src/lib/latexrenderer.h @@ -0,0 +1,68 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2011 Alexander Rieder +*/ + +#ifndef _LATEXRENDERER_H +#define _LATEXRENDERER_H + +#include +#include "cantor_export.h" + +namespace Cantor{ +class LatexRendererPrivate; + +class CANTOR_EXPORT LatexRenderer : public QObject +{ + Q_OBJECT + public: + enum Method{ LatexMethod = 0, MmlMethod = 1}; + enum EquationType{ InlineEquation = 0, FullEquation = 1, CustomEquation = 2}; + explicit LatexRenderer( QObject* parent = nullptr); + ~LatexRenderer() override; + + QString latexCode() const; + void setLatexCode(const QString& src); + QString header() const; + void addHeader(const QString& header); + void setHeader(const QString& header); + Method method() const; + void setMethod( Method method); + void setEquationOnly(bool isEquationOnly); + bool isEquationOnly() const; + void setEquationType(EquationType type); + EquationType equationType() const; + + QString errorMessage() const; + bool renderingSuccessful() const; + + QString imagePath() const; + QString uuid() const; + + static QString genUuid(); + + static bool isLatexAvailable(); + + Q_SIGNALS: + void done(); + void error(); + + public Q_SLOTS: + bool render(); + + void renderBlocking(); + + private: + void setErrorMessage(const QString& msg); + + private Q_SLOTS: + bool renderWithLatex(); + bool renderWithMml(); + void convertToPs(); + void convertingDone(); + + private: + LatexRendererPrivate* d; +}; +} +#endif /* _LATEXRENDERER_H */ diff --git a/src/lib/latexresult.cpp b/src/lib/latexresult.cpp new file mode 100644 index 0000000..4f5ea74 --- /dev/null +++ b/src/lib/latexresult.cpp @@ -0,0 +1,161 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "latexresult.h" + +#include +#include +#include +#include +#include + +#include "jupyterutils.h" + +using namespace Cantor; + +class Cantor::LatexResultPrivate +{ + public: + LatexResultPrivate() + { + showCode=false; + } + + bool showCode; + QString code; + QString plain; +}; + +LatexResult::LatexResult(const QString& code, const QUrl &url, const QString& plain, const QImage& image) : EpsResult( url, image ), + d(new LatexResultPrivate) +{ + d->code=code; + d->plain=plain; +} + +LatexResult::~LatexResult() +{ + delete d; +} + +int LatexResult::type() +{ + return LatexResult::Type; +} + +QString LatexResult::mimeType() +{ + if(isCodeShown()) + return QStringLiteral("text/plain"); + else + return EpsResult::mimeType(); +} + +QString LatexResult::code() +{ + return d->code; +} + +QString LatexResult::plain() +{ + return d->plain; +} + +bool LatexResult::isCodeShown() +{ + return d->showCode; +} + +void LatexResult::showCode() +{ + d->showCode=true; +} + +void LatexResult::showRendered() +{ + d->showCode=false; +} + +QVariant LatexResult::data() +{ + if(isCodeShown()) + return QVariant(code()); + else + return EpsResult::data(); +} + +QString LatexResult::toHtml() +{ + if (isCodeShown()) + { + QString s=code(); + return s.toHtmlEscaped(); + } + else + { + return EpsResult::toHtml(); + } +} + +QString LatexResult::toLatex() +{ + return code(); +} + +QDomElement LatexResult::toXml(QDomDocument& doc) +{ + qDebug()<<"saving textresult "<plain)); + data.insert(QLatin1String("text/latex"), JupyterUtils::toJupyterMultiline(d->code)); + if (!image().isNull()) + data.insert(JupyterUtils::pngMime, JupyterUtils::packMimeBundle(image(), JupyterUtils::pngMime)); + root.insert(QLatin1String("data"), data); + + root.insert(QLatin1String("metadata"), jupyterMetadata()); + + return root; +} + +void LatexResult::save(const QString& filename) +{ + if(isCodeShown()) + { + QFile file(filename); + + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) + return; + + QTextStream stream(&file); + + stream< +*/ + +#ifndef _LATEXRESULT_H +#define _LATEXRESULT_H + +#include "epsresult.h" +#include "cantor_export.h" + +namespace Cantor{ +class LatexResultPrivate; + +/**Class used for LaTeX results, it is basically an Eps result, + but it exports a different type, and additionally stores the + LaTeX code, used to generate the Eps, so it can be retrieved + later +**/ +class CANTOR_EXPORT LatexResult : public EpsResult +{ + public: + enum {Type=7}; + LatexResult( const QString& code, const QUrl& url, const QString& plain = QString(), const QImage& image = QImage()); + ~LatexResult() override; + + int type() override; + QString mimeType() override; + + bool isCodeShown(); + void showCode(); + void showRendered(); + + QString code(); + QString plain(); + + QString toHtml() override; + QString toLatex() override; + QVariant data() override; + + QDomElement toXml(QDomDocument& doc) override; + QJsonValue toJupyterJson() override; + + void save(const QString& filename) override; + + private: + LatexResultPrivate* d; +}; + +} + +#endif /* _LATEXRESULT_H */ diff --git a/src/lib/mimeresult.cpp b/src/lib/mimeresult.cpp new file mode 100644 index 0000000..f743686 --- /dev/null +++ b/src/lib/mimeresult.cpp @@ -0,0 +1,121 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Nikita Sirgienko +*/ + +#include "mimeresult.h" + +#include +#include +#include +#include +#include + +#include "jupyterutils.h" + +using namespace Cantor; + +class Cantor::MimeResultPrivate +{ +public: + MimeResultPrivate() = default; + + QString plain; + QJsonObject mimeBundle; +}; + +MimeResult::MimeResult(const QJsonObject& mimeBundle) : d(new MimeResultPrivate) +{ + bool isOriginalPlain = mimeBundle.contains(QLatin1String("text/plain")); + if (isOriginalPlain) + d->plain = JupyterUtils::fromJupyterMultiline(mimeBundle.value(QLatin1String("text/plain"))); + else + d->plain = i18n("This is unsupported Jupyter content of types ('%1')", mimeBundle.keys().join(QLatin1String(", "))); + d->mimeBundle = mimeBundle; +} + +MimeResult::~MimeResult() +{ + delete d; +} + +QString MimeResult::toHtml() +{ + return QLatin1String("
        ") + d->plain.toHtmlEscaped() + QLatin1String("
        "); +} + +int MimeResult::type() +{ + return MimeResult::Type; +} + +QString MimeResult::mimeType() +{ + return QLatin1String("application/json"); +} + +QVariant MimeResult::data() +{ + return d->mimeBundle; +} + +QString MimeResult::plain() +{ + return d->plain; +} + +QDomElement MimeResult::toXml(QDomDocument& doc) +{ + qDebug()<<"saving mime result with types" << d->mimeBundle.keys(); + QDomElement e=doc.createElement(QStringLiteral("Result")); + e.setAttribute(QStringLiteral("type"), QStringLiteral("mime")); + + for (const QString& key : d->mimeBundle.keys()) + { + QJsonDocument jsonDoc; + QJsonObject obj; + obj.insert(QLatin1String("content"), d->mimeBundle[key]); + jsonDoc.setObject(obj); + + QDomElement content = doc.createElement(QStringLiteral("Content")); + content.setAttribute(QStringLiteral("key"), key); + content.appendChild(doc.createTextNode(QString::fromUtf8(jsonDoc.toJson()))); + e.appendChild(content); + } + + return e; +} + +QJsonValue Cantor::MimeResult::toJupyterJson() +{ + QJsonObject root; + if (executionIndex() != -1) + { + root.insert(QLatin1String("output_type"), QLatin1String("execute_result")); + root.insert(QLatin1String("execution_count"), executionIndex()); + } + else + root.insert(QLatin1String("output_type"), QLatin1String("display_data")); + + root.insert(QLatin1String("data"), d->mimeBundle); + root.insert(QLatin1String("metadata"), jupyterMetadata()); + + return root; +} + +void Cantor::MimeResult::save(const QString& filename) +{ + QFile file(filename); + + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) + return; + + QTextStream stream(&file); + + QJsonDocument jsonDoc; + jsonDoc.setObject(d->mimeBundle); + + stream << jsonDoc.toJson(); + + file.close(); +} diff --git a/src/lib/mimeresult.h b/src/lib/mimeresult.h new file mode 100644 index 0000000..79b367c --- /dev/null +++ b/src/lib/mimeresult.h @@ -0,0 +1,50 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Nikita Sirgienko +*/ + +#ifndef _MIMERESULT_H +#define _MIMERESULT_H + +#include + +#include "result.h" +#include "cantor_export.h" + +namespace Cantor +{ + +class MimeResultPrivate; + +/** + * Class for Jupyter results, which can't be handeled by Cantor + * So data of the results and their mime types stored in this result + * for preventing loosing + * This must be used only with Jupyter notebook results with unsupported mime type + */ +class CANTOR_EXPORT MimeResult : public Result +{ + public: + enum { Type = 4 }; + MimeResult(const QJsonObject& mimeBundle); + ~MimeResult() override; + + QString toHtml() override; + + QVariant data() override; + QString plain(); + + int type() override; + QString mimeType() override; + + QDomElement toXml(QDomDocument& doc) override; + + QJsonValue toJupyterJson() override; + void save(const QString& filename) override; + private: + MimeResultPrivate* d; +}; + +} + +#endif /* _MIMERESULT_H */ diff --git a/src/lib/panelplugin.cpp b/src/lib/panelplugin.cpp new file mode 100644 index 0000000..4ebe84a --- /dev/null +++ b/src/lib/panelplugin.cpp @@ -0,0 +1,88 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Alexander Rieder +*/ + +#include "panelplugin.h" +using namespace Cantor; + +#include + +class Cantor::PanelPluginPrivate +{ + public: + QString name; + QStringList requiredExtensions; + Session* session = nullptr; + QWidget* parentWidget = nullptr; +}; + +PanelPlugin::PanelPlugin( QObject* parent) : QObject(parent), /* KXMLGUIClient(dynamic_cast(parent)),*/ + d(new PanelPluginPrivate) +{ + +} + +PanelPlugin::~PanelPlugin() +{ + delete d; +} + +void PanelPlugin::setParentWidget(QWidget* widget) +{ + d->parentWidget = widget; +} + +QWidget* PanelPlugin::parentWidget() +{ + return d->parentWidget; +} + +void PanelPlugin::setPluginInfo(const KPluginMetaData& info) +{ + d->name = info.name(); + d->requiredExtensions = info.value(QStringLiteral("RequiredExtensions")).split(QLatin1Char(',')); + setObjectName(info.pluginId()); +} + +QStringList PanelPlugin::requiredExtensions() +{ + return d->requiredExtensions; +} + +Backend::Capabilities PanelPlugin::requiredCapabilities() +{ + return Backend::Nothing; +} + +QString PanelPlugin::name() +{ + return d->name; +} + +Cantor::PanelPlugin::State Cantor::PanelPlugin::saveState() +{ + Cantor::PanelPlugin::State state; + state.session = d->session; + return state; +} + +void Cantor::PanelPlugin::restoreState(const Cantor::PanelPlugin::State& state) +{ + d->session = state.session; +} + +Cantor::Session* Cantor::PanelPlugin::session() +{ + return d->session; +} + +void Cantor::PanelPlugin::connectToShell(QObject* /* cantorShell */) +{ + +} + +bool Cantor::PanelPlugin::showOnStartup() +{ + return true; +} diff --git a/src/lib/panelplugin.h b/src/lib/panelplugin.h new file mode 100644 index 0000000..8f105f0 --- /dev/null +++ b/src/lib/panelplugin.h @@ -0,0 +1,120 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Alexander Rieder +*/ + +#ifndef _PANEL_PLUGIN_H +#define _PANEL_PLUGIN_H + +#include +class KPluginMetaData; + +#include "backend.h" + +#include "cantor_export.h" + +namespace Cantor +{ +class Session; +class PanelPluginPrivate; + +/** + * A plugin provides some additional features for the worksheet + */ +class CANTOR_EXPORT PanelPlugin : public QObject +{ + Q_OBJECT + public: + struct State { + Session* session{nullptr}; + QVector inners; + }; + + + /** + * Create a new PanelPlugin + * @param parent the parent Object @see QObject + **/ + PanelPlugin( QObject* parent ); + /** + * Destructor + */ + ~PanelPlugin() override; + + /** + * Sets the properties of this PanelPlugin + * according to KPluginMetaData + * @param info KPluginMetaData + */ + void setPluginInfo(const KPluginMetaData&); + + /** + * Returns a list of all extensions, the current backend + * must provide to make this PanelPlugin work. If it doesn't + * this PanelPlugin won't be enabled + * @return list of required extensions + */ + QStringList requiredExtensions(); + + + /** + * Returns the capabilities, the current backend + * must provide to make this PanelPlugin work. If it doesn't + * this PanelPlugin won't be enabled + * @return the required capabilities + */ + virtual Backend::Capabilities requiredCapabilities(); + + + /** + * Returns the name of the plugin + * @return name of the plugin + */ + QString name(); + + /** + * returns the widget, provided by this plugin + * @return the widget, provided by this plugin + **/ + virtual QWidget* widget() = 0; + + void setParentWidget(QWidget* widget); + QWidget* parentWidget(); + + /** + * Save state of panel to storable form + * + **/ + virtual State saveState(); + + /** + * Restore state + * Can contains only session - this is init state from Cantor shell + */ + virtual void restoreState(const State& state); + + /** + * For proper connection to Cantor shell. All connections should be done here + */ + virtual void connectToShell(QObject* cantorShell); + + /** + * Show on worksheet startup or not + * Default returns true + */ + virtual bool showOnStartup(); + + protected: + Session* session(); + + Q_SIGNALS: + void requestRunCommand(const QString& cmd); + void visibilityRequested(); + + private: + PanelPluginPrivate* d; +}; + +} + +#endif /* _PANEL_PLUGIN_H */ diff --git a/src/lib/panelpluginhandler.cpp b/src/lib/panelpluginhandler.cpp new file mode 100644 index 0000000..4c9804e --- /dev/null +++ b/src/lib/panelpluginhandler.cpp @@ -0,0 +1,117 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Alexander Rieder +*/ + +#include "panelpluginhandler.h" +using namespace Cantor; + +#include +#include + +#include +#include +#include + +#include "session.h" +#include "backend.h" + +class Cantor::PanelPluginHandlerPrivate +{ + public: + QList plugins; +}; + +PanelPluginHandler::PanelPluginHandler( QObject* parent ) : QObject(parent) , + d(new PanelPluginHandlerPrivate) +{ + setObjectName(QStringLiteral("PanelPluginHandler")); +} + +PanelPluginHandler::~PanelPluginHandler() +{ + delete d; +} + +void PanelPluginHandler::loadPlugins() +{ + const QVector plugins = KPluginMetaData::findPlugins(QStringLiteral("cantor/panels")); + + for (const KPluginMetaData &plugin : plugins) { + + const auto result = KPluginFactory::instantiatePlugin(plugin, QCoreApplication::instance()); + + if (!result) { + qDebug() << "Error while loading panel: " << result.errorText; + continue; + } + + PanelPlugin *panel = result.plugin; + + panel->setPluginInfo(plugin); + d->plugins.append(panel); + + } +} + +QList Cantor::PanelPluginHandler::allPlugins() +{ + return d->plugins; +} + +QList PanelPluginHandler::plugins(Session* session) +{ + QList pluginsForSession; + + if (session == nullptr) + return pluginsForSession; + + const auto capabilities = session->backend()->capabilities(); + const QStringList& extensions = session->backend()->extensions(); + + qDebug()<<"loading panel plugins for session of type "<backend()->name(); + for (auto* plugin : d->plugins) + { + bool supported=true; + for (const QString& req : plugin->requiredExtensions()){ + // FIXME: That req.isEmpty() is there just because Help Panel has req + // empty, returning FALSE when the comparison must to return TRUE. + supported = supported && (extensions.contains(req) || req.isEmpty()); + } + + supported = supported && ( (capabilities & plugin->requiredCapabilities()) == plugin->requiredCapabilities()); + + if(supported) + { + qDebug() << "plugin " << plugin->name()<<" is supported, requires extensions " << plugin->requiredExtensions(); + pluginsForSession.append(plugin); + } + else + qDebug() << "plugin " << plugin->name() <<" is not supported"; + } + + return pluginsForSession; +} + +QList PanelPluginHandler::activePluginsForSession(Session* session, const PanelStates& previousPluginStates) +{ + const auto& plugins = this->plugins(session); + for (auto* plugin : plugins) + { + if(!plugin) + { + qDebug()<<"somethings wrong with plugin inside PanelPluginHandler"; + continue; + } + + if (previousPluginStates.contains(plugin->name())) + plugin->restoreState(previousPluginStates[plugin->name()]); + else + { + Cantor::PanelPlugin::State initState; + initState.session = session; + plugin->restoreState(initState); + } + } + return plugins; +} diff --git a/src/lib/panelpluginhandler.h b/src/lib/panelpluginhandler.h new file mode 100644 index 0000000..963a774 --- /dev/null +++ b/src/lib/panelpluginhandler.h @@ -0,0 +1,45 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Alexander Rieder +*/ + +#ifndef _PANELPLUGINHANDLER_H +#define _PANELPLUGINHANDLER_H + +#include +#include "panelplugin.h" +#include "cantor_export.h" + +namespace Cantor +{ +class PanelPluginHandlerPrivate; +class Session; + +/** + * Simple interface that exports a list of known PanelPlugins. + * Needed as the Panel must be handled by the Shell + */ + +class CANTOR_EXPORT PanelPluginHandler : public QObject +{ + Q_OBJECT + public: + explicit PanelPluginHandler(QObject* parent); + ~PanelPluginHandler() override; + + QList allPlugins(); + QList plugins(Session*); + + using PanelStates = QMap; + QList activePluginsForSession(Session*, const PanelStates&); + + void loadPlugins(); + + private: + PanelPluginHandlerPrivate* d; + +}; + +} + +#endif /* _PANELPLUGINHANDLER_H */ diff --git a/src/lib/renderer.cpp b/src/lib/renderer.cpp new file mode 100644 index 0000000..22ab618 --- /dev/null +++ b/src/lib/renderer.cpp @@ -0,0 +1,229 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#include "renderer.h" + +#include +#include +#include + +#include + +#include +#ifdef LIBSPECTRE_FOUND + #include "libspectre/spectre.h" +#endif + + +using namespace Cantor; + +// We need this, because poppler-qt5 not threadsafe before 0.73.0 and 0.73.0 is too new +// and not common widespread in repositories +static QMutex popplerMutex; + +class Cantor::RendererPrivate{ + public: + double scale{1}; + bool useHighRes{false}; +}; + +Renderer::Renderer() : d(new RendererPrivate()) +{ +} + +Renderer::~Renderer() +{ + delete d; +} + +void Renderer::setScale(qreal scale) +{ + d->scale = scale; +} + +qreal Renderer::scale() +{ + return d->scale; +} + +void Renderer::useHighResolution(bool b) +{ + d->useHighRes = b; +} + +QTextImageFormat Renderer::render(QTextDocument *document, Method method, const QUrl &url, const QString& uuid) +{ + QTextImageFormat format; + + QUrl internal; + internal.setScheme(QLatin1String("internal")); + internal.setPath(uuid); + + QSizeF s = renderToResource(document, method, url, internal); + + if(s.isValid()) + { + format.setName(internal.url()); + format.setWidth(s.width()); + format.setHeight(s.height()); + } + + return format; +} + +QTextImageFormat Renderer::render(QTextDocument *document, const Cantor::LatexRenderer* latex) +{ + QTextImageFormat format = render(document, Method::EPS, QUrl::fromLocalFile(latex->imagePath()), latex->uuid()); + + if (!format.name().isEmpty()) { + format.setProperty(CantorFormula, latex->method()); + format.setProperty(ImagePath, latex->imagePath()); + format.setProperty(Code, latex->latexCode()); + } + + return format; +} + +QSizeF Renderer::renderToResource(QTextDocument *document, Method method, const QUrl &url, const QUrl& internal) +{ + QSizeF size; + QImage img = renderToImage(url, method, &size); + + qDebug() << internal; + document->addResource(QTextDocument::ImageResource, internal, QVariant(img) ); + return size; +} + +QImage Renderer::epsRenderToImage(const QUrl& url, double scale, bool useHighRes, QSizeF* size, QString* errorReason) +{ +#ifdef LIBSPECTRE_FOUND + SpectreDocument* doc = spectre_document_new(); + SpectreRenderContext* rc = spectre_render_context_new(); + + qDebug() << "rendering eps file: " << url; + QByteArray local_file = url.toLocalFile().toUtf8(); + spectre_document_load(doc, local_file.data()); + + bool isEps = spectre_document_is_eps(doc); + if (!isEps) + { + if (errorReason) + *errorReason = QString::fromLatin1("Error: spectre document is not eps! It means, that url is invalid"); + return QImage(); + } + + int wdoc, hdoc; + qreal w, h; + double realScale; + spectre_document_get_page_size(doc, &wdoc, &hdoc); + if(useHighRes) { + realScale = 1.2*4.0; //1.2 scaling factor, to make it look nice, 4x for high resolution + w = 1.2 * wdoc; + h = 1.2 * hdoc; + } else { + realScale=1.8*scale; + w = 1.8 * wdoc; + h = 1.8 * hdoc; + } + + qDebug()<<"scale: "<page(0); + if (pdfPage == nullptr) { + if (errorReason) + *errorReason = QString::fromLatin1("Poppler library failed to access first page of %1 document").arg(url.toLocalFile()); + + delete document; + return QImage(); + } + + QSize pageSize = pdfPage->pageSize(); + + double realScale = 1.7 * 1.8; + qreal w = 1.7 * pageSize.width(); + qreal h = 1.7 * pageSize.height(); + if(highResolution) + realScale *= 5; + else + realScale *= scale; + + + QImage image = pdfPage->renderToImage(72.0*realScale, 72.0*realScale); + + delete pdfPage; + popplerMutex.lock(); + delete document; + popplerMutex.unlock(); + + if (image.isNull()) + { + if (errorReason) + *errorReason = QString::fromLatin1("Poppler library failed to render pdf %1 to image").arg(url.toLocalFile()); + + return image; + } + + // Resize with smooth transformation for more beautiful result + image = image.convertToFormat(QImage::Format_ARGB32).scaled(image.size()/1.8, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + + if (size) + *size = QSizeF(w, h); + return image; +} + + +QImage Renderer::renderToImage(const QUrl& url, Method method, QSizeF* size) +{ + switch(method) + { + case Method::PDF: + return pdfRenderToImage(url, d->scale, d->useHighRes, size); + + case Method::EPS: + return epsRenderToImage(url, d->scale, d->useHighRes, size); + + default: + return QImage(); + } +} diff --git a/src/lib/renderer.h b/src/lib/renderer.h new file mode 100644 index 0000000..5a9d2b1 --- /dev/null +++ b/src/lib/renderer.h @@ -0,0 +1,52 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#ifndef RENDERER_H +#define RENDERER_H + +#include +#include +#include +#include +#include +#include "latexrenderer.h" + +namespace Cantor +{ +class RendererPrivate; + +class CANTOR_EXPORT Renderer +{ + public: + Renderer(); + ~Renderer(); + + enum FormulaProperties {CantorFormula = 1, ImagePath = 2, Code = 3, + Delimiter = 4}; + enum FormulaType {LatexFormula = Cantor::LatexRenderer::LatexMethod, + MmlFormula = Cantor::LatexRenderer::MmlMethod}; + enum Method {PDF, EPS}; + + QTextImageFormat render(QTextDocument *document, const Cantor::LatexRenderer* latex); + QTextImageFormat render(QTextDocument *document, Method method, const QUrl& url, const QString& uuid); + + void setScale(qreal scale); + qreal scale(); + + void useHighResolution(bool b); + + QSizeF renderToResource(QTextDocument *document, Method method, const QUrl& url, const QUrl& internal); + + QImage renderToImage(const QUrl& url, Method method, QSizeF* size = nullptr); + static QImage epsRenderToImage(const QUrl& url, double scale, bool useHighRes, QSizeF* size = nullptr, QString* errorReason = nullptr); + static QImage pdfRenderToImage(const QUrl& url, double scale, bool useHighRes, QSizeF* size = nullptr, QString* errorReason = nullptr); + + private: + RendererPrivate* d; +}; + +} + +#endif //RENDERER_H diff --git a/src/lib/result.cpp b/src/lib/result.cpp new file mode 100644 index 0000000..e5feb7f --- /dev/null +++ b/src/lib/result.cpp @@ -0,0 +1,78 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "result.h" +using namespace Cantor; + +#include +#include +#include + +class Cantor::ResultPrivate +{ + public: + ~ResultPrivate() + { + if (jupyterMetadata) + delete jupyterMetadata; + } + + QJsonObject* jupyterMetadata{nullptr}; + int executionIndex{-1}; +}; + + +Result::Result() : d(new ResultPrivate) +{ + +} + +Result::~Result() +{ + delete d; +} + +QUrl Result::url() +{ + return QUrl(); +} + +QString Result::toLatex() +{ + QString html=toHtml(); + //replace linebreaks + html.replace(QRegularExpression(QStringLiteral("
        [\n]")), QStringLiteral("\n")); + //remove all the unknown tags + html.remove(QRegularExpression(QStringLiteral("<[a-zA-Z\\/][^>]*>") )); + return QStringLiteral("\\begin{verbatim} %1 \\end{verbatim}").arg(html); +} + +void Result::saveAdditionalData(KZip* archive) +{ + Q_UNUSED(archive) + //Do nothing +} + +QJsonObject Cantor::Result::jupyterMetadata() const +{ + return d->jupyterMetadata ? *d->jupyterMetadata : QJsonObject(); +} + +void Cantor::Result::setJupyterMetadata(QJsonObject metadata) +{ + if (!d->jupyterMetadata) + d->jupyterMetadata = new QJsonObject(); + *d->jupyterMetadata = metadata; +} + +int Cantor::Result::executionIndex() const +{ + return d->executionIndex; +} + +void Cantor::Result::setExecutionIndex(int index) +{ + d->executionIndex = index; +} diff --git a/src/lib/result.h b/src/lib/result.h new file mode 100644 index 0000000..4deb91d --- /dev/null +++ b/src/lib/result.h @@ -0,0 +1,117 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _RESULT_H +#define _RESULT_H + +#include +#include +#include +#include "cantor_export.h" + +class KZip; + +namespace Cantor +{ + +class ResultPrivate; + +/** + * Base class for different results, like text, image, animation. etc. + */ +class CANTOR_EXPORT Result +{ + public: + /** + * Default constructor + */ + Result( ); + /** + * Destructor + */ + virtual ~Result(); + + /** + * returns html code, that represents this result, + * e.g. an img tag for images + * @return html code representing this result + */ + virtual QString toHtml() = 0; + + /** + * returns latex code, that represents this result + * e.g. a includegraphics command for images + * it falls back to toHtml if not implemented + * @return latex code representing this result + */ + virtual QString toLatex(); + + /** + * returns data associated with this result + * (text/images/etc) + * @return data associated with this result + */ + virtual QVariant data() = 0; + + /** + * returns an url, data for this result resides at + * @return an url, data for this result resides at + */ + virtual QUrl url(); + + /** + * returns an unique number, representing the type of this + * result. Every subclass should define their own Type. + * @return the type of this result + */ + virtual int type() = 0; + /** + * returns the mimetype, this result is + * @return the mimetype, this result is + */ + virtual QString mimeType() = 0; + + /** + * returns a DomElement, containing the information of the result + * @param doc DomDocument used for storing the information + * @return DomElement, containing the information of the result + */ + virtual QDomElement toXml(QDomDocument& doc) = 0; + /** + * saves all the data, that can't be saved in xml + * in an extra file in the archive. + */ + virtual void saveAdditionalData(KZip* archive); + + /** + * return a Jupyter json object, containing the information of the result + */ + virtual QJsonValue toJupyterJson() = 0; + /** + * saves this to a file + * @param filename name of the file + */ + virtual void save(const QString& filename) = 0; + + /** + * This functions handle Jupyter metadata of + */ + QJsonObject jupyterMetadata() const; + void setJupyterMetadata(QJsonObject metadata); + + /** + * Allow to set execution result index, on this moment useful only for Jupyter + * But maybe Cantor can use it too + */ + int executionIndex() const; + void setExecutionIndex(int index); + + private: + ResultPrivate* d; +}; + +} + +#endif /* _RESULT_H */ diff --git a/src/lib/session.cpp b/src/lib/session.cpp new file mode 100644 index 0000000..b638e81 --- /dev/null +++ b/src/lib/session.cpp @@ -0,0 +1,388 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2019 Alexander Semke +*/ + +#include "session.h" +using namespace Cantor; + +#include + +#include "backend.h" +#include "textresult.h" + +#include +#include +#include +#include +#include + +class Cantor::SessionPrivate +{ + public: + SessionPrivate() { } + + Backend* backend{nullptr}; + Session::Status status{Session::Disable}; + bool typesettingEnabled{false}; + int expressionCount{0}; + QList expressionQueue; + DefaultVariableModel* variableModel{nullptr}; + QList usableGraphicPackages; + QList enabledGraphicPackages; + QList ignorableGraphicPackageIds; + bool needUpdate{false}; +}; + +Session::Session(Backend* backend ) : QObject(backend), d(new SessionPrivate) +{ + d->backend = backend; + +#ifdef WITH_EPS + if (Cantor::LatexRenderer::isLatexAvailable()) + d->typesettingEnabled = Settings::self()->typesetDefault(); +#endif +} + +Session::Session(Backend* backend, DefaultVariableModel* model) : QObject(backend), d(new SessionPrivate) +{ + d->backend = backend; + d->variableModel = model; + +#ifdef WITH_EPS + if (Cantor::LatexRenderer::isLatexAvailable()) + d->typesettingEnabled = Settings::self()->typesetDefault(); +#endif +} + +Session::~Session() +{ + delete d; +} + +void Cantor::Session::testGraphicsPackages(QList packages) +{ + std::map handlingStatus; + + QEventLoop loop; + for (GraphicPackage& package : packages) + { + if (GraphicPackage::findById(package, d->usableGraphicPackages) != -1) + continue; + + handlingStatus[package.id()] = false; + Expression* expr = package.isAvailable(this); + + connect(expr, &Expression::expressionFinished, [this, expr, &package, &loop, &handlingStatus](Expression::Status status) { + if (status == Expression::Status::Done) { + if (expr->result() != nullptr + && expr->result()->type() == TextResult::Type + && expr->result()->data().toString() == QLatin1String("1")) { + this->d->usableGraphicPackages.push_back(package); + } + } else { + qDebug() << "test presence command for" << package.id() << "finished because of" << (status == Expression::Error ? "error" : "interrupt"); + if (status == Expression::Error && expr) + qDebug() << "error message:" << expr->errorMessage(); + } + + handlingStatus[package.id()] = true; + + bool allExpersionsFinished = true; + for (auto& iter : handlingStatus) + { + if (iter.second == false) + { + allExpersionsFinished = false; + break; + } + } + + if (allExpersionsFinished) + loop.exit(); + }); + } + // If handlingStatus size is empty (it means, that no connections have been done), then we will stay in the 'loop' event loop forever + if (handlingStatus.size() != 0) + loop.exec(); +} + +void Session::logout() +{ + if (d->status == Session::Running) + interrupt(); + + if (d->variableModel) + { + d->variableModel->clearVariables(); + d->variableModel->clearFunctions(); + } + + d->expressionCount = 0; + changeStatus(Status::Disable); + + // Clean graphic package state + d->enabledGraphicPackages.clear(); + d->ignorableGraphicPackageIds.clear(); + d->usableGraphicPackages.clear(); +} + +QList& Cantor::Session::expressionQueue() const +{ + return d->expressionQueue; +} + +void Session::enqueueExpression(Expression* expr) +{ + d->expressionQueue.append(expr); + + //run the newly added expression immediately if it's the only one in the queue + if (d->expressionQueue.size() == 1) + { + changeStatus(Cantor::Session::Running); + runFirstExpression(); + } + else + expr->setStatus(Cantor::Expression::Queued); +} + +void Session::runFirstExpression() +{ + +} + +void Session::finishFirstExpression(bool setDoneAfterUpdate) +{ + if (!d->expressionQueue.isEmpty()) + { + auto first = d->expressionQueue.takeFirst(); + d->needUpdate |= !first->isInternal() && !first->isHelpRequest(); + } + + if (d->expressionQueue.isEmpty()) + if (d->variableModel && d->needUpdate) + { + d->variableModel->update(); + d->needUpdate = false; + + // Some variable models could update internal lists without running expressions + // or don't need to be updated at all like for Maxima being in Lisp-mode. + // So, if after update queue still empty, set status to Done + // setDoneAfterUpdate used for compatibility with some backends, like R - TODO: check why this is requried + if (setDoneAfterUpdate && d->expressionQueue.isEmpty()) + changeStatus(Done); + else if (d->expressionQueue.isEmpty()) + changeStatus(Done); + } + else + changeStatus(Done); + else + runFirstExpression(); +} + +void Session::currentExpressionStatusChanged(Cantor::Expression::Status status) +{ + auto* expression = expressionQueue().first(); + qDebug() << "expression status changed: command = " << expression->command() << ", status = " << status; + + switch (status) + { + case Cantor::Expression::Done: + case Cantor::Expression::Error: + qDebug()<<"################################## EXPRESSION END ###############################################"; + disconnect(expression, &Cantor::Expression::statusChanged, this, &Session::currentExpressionStatusChanged); + finishFirstExpression(); + break; + default: + break; + } +} + +Backend* Session::backend() +{ + return d->backend; +} + +Cantor::Session::Status Session::status() +{ + return d->status; +} + +void Session::changeStatus(Session::Status newStatus) +{ + d->status = newStatus; + emit statusChanged(newStatus); +} + +void Session::setTypesettingEnabled(bool enable) +{ + d->typesettingEnabled = enable; +} + +bool Session::isTypesettingEnabled() +{ + return d->typesettingEnabled; +} + +void Session::setWorksheetPath(const QString&) { } + +CompletionObject* Session::completionFor(const QString&, int) +{ + //Return nullptr per default, so Backends not offering tab completions don't have + //to reimplement this. This method should only be called on backends with + //the Completion Capability flag + + return nullptr; +} + +SyntaxHelpObject* Session::syntaxHelpFor(const QString&) +{ + //Return nullptr per default, so Backends not offering tab completions don't have + //to reimplement this. This method should only be called on backends with + //the SyntaxHelp Capability flag + return nullptr; +} + +QSyntaxHighlighter* Session::syntaxHighlighter(QObject*) +{ + return nullptr; +} + +DefaultVariableModel* Session::variableModel() const +{ + //By default, there is variableModel in session, used by syntax higlighter for variable analyzing + //The model store only variable names by default. + //In backends with VariableManagement Capability flag, this model also used for Cantor variable doc panel + return d->variableModel; +} + +QAbstractItemModel* Session::variableDataModel() const +{ + return variableModel(); +} + +void Session::updateVariables() +{ + if (d->variableModel) + { + d->variableModel->update(); + d->needUpdate = false; + } +} + +void Cantor::Session::setVariableModel(Cantor::DefaultVariableModel* model) +{ + d->variableModel = model; +} + +int Session::nextExpressionId() +{ + return d->expressionCount++; +} + +QString Session::locateCantorFile(const QString& partialPath, QStandardPaths::LocateOptions options) +{ + QString file = QStandardPaths::locate(QStandardPaths::AppDataLocation, partialPath, options); + + if (file.isEmpty()) + file = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QLatin1String("cantor/") + partialPath, options); + + return file; +} + +QStringList Session::locateAllCantorFiles(const QString& partialPath, QStandardPaths::LocateOptions options) +{ + QStringList files = QStandardPaths::locateAll(QStandardPaths::AppDataLocation, partialPath, options); + + if (files.isEmpty()) + files = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QLatin1String("cantor/") + partialPath, options); + + return files; +} + +void Cantor::Session::reportSessionCrash(const QString& additionalInfo) +{ + // Reporting about crashing backend in session without backend has not sense + if (d->backend == nullptr) + return; + + if (additionalInfo.isEmpty()) + KMessageBox::error(nullptr, i18n("%1 process has died unexpectedly. All calculation results are lost.", d->backend->name()), i18n("Error - Cantor")); + else + KMessageBox::error(nullptr, i18n("%1 process has died unexpectedly with message \"%2\". All calculation results are lost.", d->backend->name(), additionalInfo), i18n("Error - Cantor")); + logout(); +} + +QList Cantor::Session::usableGraphicPackages() +{ + return d->usableGraphicPackages; +} + +const QList& Cantor::Session::enabledGraphicPackages() const +{ + return d->enabledGraphicPackages; +} + +QString Cantor::Session::graphicPackageErrorMessage(QString packageId) const +{ + Q_UNUSED(packageId); + return QString(); +} + +void Cantor::Session::updateEnabledGraphicPackages(const QList& newEnabledPackages, const QString& additionalInfo) +{ + if (newEnabledPackages.isEmpty()) + { + if (!d->enabledGraphicPackages.isEmpty()) + { + for (const GraphicPackage& package : d->enabledGraphicPackages) + evaluateExpression(package.disableSupportCommand(), Cantor::Expression::DeleteOnFinish, true); + } + d->enabledGraphicPackages.clear(); + } + else + { + QList packagesExceptIgnored; + for (const GraphicPackage& package : newEnabledPackages) + if (d->ignorableGraphicPackageIds.contains(package.id()) == false) + packagesExceptIgnored.append(package); + + testGraphicsPackages(packagesExceptIgnored); + + QList unavailablePackages; + QList willEnabledPackages; + + for (const GraphicPackage& package : packagesExceptIgnored) + { + if (GraphicPackage::findById(package, usableGraphicPackages()) != -1) + willEnabledPackages.append(package); + else + unavailablePackages.append(package); + } + + for (const GraphicPackage& package : d->enabledGraphicPackages) + if (GraphicPackage::findById(package, willEnabledPackages) == -1) + evaluateExpression(package.disableSupportCommand(), Cantor::Expression::DeleteOnFinish, true); + + for (const GraphicPackage& newPackage : willEnabledPackages) + if (GraphicPackage::findById(newPackage, d->enabledGraphicPackages) == -1) + evaluateExpression(newPackage.enableSupportCommand(additionalInfo), Cantor::Expression::DeleteOnFinish, true); + + d->enabledGraphicPackages = willEnabledPackages; + + for (const Cantor::GraphicPackage& notEnabledPackage : unavailablePackages) + { + if (d->ignorableGraphicPackageIds.contains(notEnabledPackage.id()) == false) + { + KMessageBox::information(nullptr, i18n( + "You choose support for %1 graphic package, but the support can't be "\ + "activated due to the missing requirements, so integration for this package will be disabled. %2", + notEnabledPackage.name(), graphicPackageErrorMessage(notEnabledPackage.id())), i18n("Cantor") + ); + + d->ignorableGraphicPackageIds.append(notEnabledPackage.id()); + } + } + } +} diff --git a/src/lib/session.h b/src/lib/session.h new file mode 100644 index 0000000..e0620f2 --- /dev/null +++ b/src/lib/session.h @@ -0,0 +1,291 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _SESSION_H +#define _SESSION_H + +#include +#include + +#include "cantor_export.h" + +#include "expression.h" +#include "defaultvariablemodel.h" +#include "graphicpackage.h" + +class QTextEdit; +class QSyntaxHighlighter; +class QAbstractItemModel; + +/** + * Namespace collecting all Classes of the Cantor Libraries + */ +namespace Cantor +{ +class Backend; +class SessionPrivate; +class CompletionObject; +class SyntaxHelpObject; +class DefaultVariableModel; + +/** + * The Session object is the main class used to interact with a Backend. + * It is used to evaluate Expressions, get completions, syntax highlighting, etc. + * + * @author Alexander Rieder + */ +class CANTOR_EXPORT Session : public QObject +{ + Q_OBJECT + public: + enum Status { + Running, ///< the session is busy, running some expression + Done, ///< the session has done all the jobs, and is now waiting for more + Disable ///< the session don't login yet, or already logout + }; + + /** + * Create a new Session. This should not yet set up the complete session, + * thats job of the login() function + * @see login() + */ + explicit Session(Backend*); + + /** + * Similar to Session::Session, but also specify variable model for automatically handles model's updates + */ + explicit Session(Backend*, DefaultVariableModel*); + + /** + * Destructor + */ + ~Session() override; + + /** + * Login to the Session. In this function you should do anything needed to set up + * the session, and make it ready for usage. The method should be implemented non-blocking. + * Emit loginStarted() prior to connection to the actual backend in order to notify cantor_part about it. + * If the logging in is completed, the loginDone() signal must be emitted + */ + virtual void login() = 0; + /** + * Log out of the Session. Destroy everything specific to a single session, e.g. + * stop all the running processes etc. Also after logout session status must be Status::Disable + * Default implementation does basic operations for all sessions (for example, variable model cleanup) + * NOTE: restarting the session consists of first logout() and then login() + */ + virtual void logout(); + + /** + * This method run precense test for available graphic packages. The packages, which will sucessfuly pass the test + * will go to @c usableGraphicPackages list + * @param targetPackage If set, precense test will run only for this package. If empty string, then all available packages will be tested + */ + void testGraphicsPackages(QList packages); + + /** + * Passes the given command to the backend and returns a Pointer + * to a new Expression object, which will emit the gotResult() + * signal as soon as the computation is done. The result will + * then be accessible by Expression::result() + * @param command the command that should be run by the backend. + * @param finishingBehavior the FinishingBehaviour that should be used for this command. @see Expression::FinishingBehaviour + * @param internal true, if it is an internal command @see Expression::Expression(Session*, bool) + * @return an Expression object, representing this command + */ + virtual Expression* evaluateExpression(const QString& command, Expression::FinishingBehavior finishingBehavior = Expression::FinishingBehavior::DoNotDelete, bool internal = false) = 0; + + /** + * Append the expression to queue . + * @see expressionQueue() const + */ + void enqueueExpression(Expression*); + + /** + * Interrupts all the running calculations in this session + * After this function expression queue must be clean + */ + virtual void interrupt() = 0; + + /** + * Returns tab-completion, for this command/command-part. + * The return type is a CompletionObject. The fetching + * of the completions works asynchronously, you'll have to + * listen to the done() Signal of the returned object + * @param cmd The partial command that should be completed + * @param index The index (cursor position) at which completion + * was invoked. Defaults to -1, indicating the end of the string. + * @return a Completion object, representing this completion + * @see CompletionObject + */ + virtual CompletionObject* completionFor(const QString& cmd, int index = -1); + + /** + * Returns Syntax help, for this command. + * It returns a SyntaxHelpObject, that will fetch the + * needed information asynchronously. You need to listen + * to the done() Signal of the Object + * @param cmd the command, syntax help is requested for + * @return SyntaxHelpObject, representing the help request + * @see SyntaxHelpObject + */ + virtual SyntaxHelpObject* syntaxHelpFor(const QString& cmd); + + /** + * returns a syntax highlighter for this session + * @param parent QObject the Highlighter's parent + * @return QSyntaxHighlighter doing the highlighting for this Session + */ + virtual QSyntaxHighlighter* syntaxHighlighter(QObject* parent); + + /** + * returns a Model to interact with the variables or nullptr, if + * this backend have a variable model, which not inherit from + * default variable model class (in this case @see variableDataModel()) + * @return DefaultVariableModel to interact with the variables + */ + virtual DefaultVariableModel* variableModel() const; + + /** + * returns QAbstractItemModel to interact with the variables + */ + virtual QAbstractItemModel* variableDataModel() const; + + /** + * Enables/disables Typesetting for this session. + * For this setting to make effect, the Backend must support + * LaTeX typesetting (as indicated by the capabilities() flag. + * @param enable true to enable, false to disable typesetting + */ + virtual void setTypesettingEnabled(bool); + + /** + * Updates the worksheet path in the session. + * This can be useful to set the path of the currently opened + * Cantor project file in the backend interpreter. + * Default implementation does nothing. Derived classes have + * to implement the proper logic if this feature is supported. + * @param path the new absolute path to the worksheet. + */ + virtual void setWorksheetPath(const QString&); + + /** + * Returns the Backend, this Session is for + * @return the Backend, this Session is for + */ + Backend* backend(); + + /** + * Returns the status this Session has + * @return the status this Session has + */ + Cantor::Session::Status status(); + /** + * Returns whether typesetting is enabled or not + * @return whether typesetting is enabled or not + */ + bool isTypesettingEnabled(); + + /** + * Returns the next available Expression id + * It is basically a counter, incremented for + * each new Expression + * @return next Expression id + */ + int nextExpressionId(); + + /** + * Return list all enabled (which precense in system and choosen for run by user) graphic packages + * Can be empty. + */ + const QList& enabledGraphicPackages() const; + +public Q_SLOTS: + void currentExpressionStatusChanged(Cantor::Expression::Status); + + protected: + /** + * Change the status of the Session. This will cause the + * stausChanged signal to be emitted + * @param newStatus the new status of the session + */ + void changeStatus(Cantor::Session::Status); + + /** + * Session can process one single expression at one time. + * Any other expressions submitted by the user are queued first until they get processed. + * The expression queue implements the FIFO mechanism. + * The queud expression have the status \c Expression::Queued. + */ + QList& expressionQueue() const; + + /** + * Execute first expression in expression queue. + * Also, this function changes the status from Queued to Computing. + * @see expressionQueue() const + */ + virtual void runFirstExpression(); + + /** + * This method dequeues the expression and goes to the next expression, if the queue is not empty. + * Also, this method updates the variable model, if needed. + * If the queue is empty, the session status is set to Done. + * @param setDoneAfterUpdate enable setting status to Done after variable update, if queue is empty + */ + virtual void finishFirstExpression(bool setDoneAfterUpdate = false); + + /** + * Starts variable update immedeatly, useful for subclasses, which run internal command + * which could change variables listen + */ + virtual void updateVariables(); + + /** + * Setting variable model, useful if model constructor requires functional session + */ + void setVariableModel(DefaultVariableModel*); + + /** + * Search file for session in AppDataLocation and in GenericDataLocation + */ + QString locateCantorFile(const QString& partialPath, QStandardPaths::LocateOptions options = QStandardPaths::LocateFile); + QStringList locateAllCantorFiles(const QString& partialPath, QStandardPaths::LocateOptions options = QStandardPaths::LocateFile); + + /** + * Sometimes backend process/server could crash, stop responding, in other words, session can't + * continue to work without restart. + * This method will notify about session crashing with automatically logout + * and another actions, which needed to do in situations like that + */ + void reportSessionCrash(const QString& additionalInfo = QString()); + + /** + * Contains list of usable (which available and can be enabled in current session) graphic packages + */ + QList usableGraphicPackages(); + + void updateEnabledGraphicPackages(const QList& newEnabledPackages, const QString& additionalInfo = QString()); + + /** + * This some hacky function. + * There are messages for situation, when user try to use graphic package, but the package + * can be enabled because of missing dependencies + * information like this should be stored in graphic package scheme, but because the message should be translated, + * the text stored here as i18n text constant. + * This function allows get this message for particular package + */ + virtual QString graphicPackageErrorMessage(QString packageId) const; + +Q_SIGNALS: + void statusChanged(Cantor::Session::Status); + void loginStarted(); + void loginDone(); + void error(const QString&); + + private: + SessionPrivate* d; +}; +} +#endif /* _SESSION_H */ diff --git a/src/lib/settings.kcfgc b/src/lib/settings.kcfgc new file mode 100644 index 0000000..8c80163 --- /dev/null +++ b/src/lib/settings.kcfgc @@ -0,0 +1,3 @@ +File=cantor_libs.kcfg +ClassName=Settings +Singleton=true diff --git a/src/lib/syntaxhelpobject.cpp b/src/lib/syntaxhelpobject.cpp new file mode 100644 index 0000000..f493b5f --- /dev/null +++ b/src/lib/syntaxhelpobject.cpp @@ -0,0 +1,57 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "syntaxhelpobject.h" +using namespace Cantor; + +#include "session.h" + +#include + +class Cantor::SyntaxHelpObjectPrivate{ + public: + QString command; + Cantor::Session* session; + QString htmlResult; +}; + +SyntaxHelpObject::SyntaxHelpObject(const QString& command, Cantor::Session* session) : QObject(session), + d(new SyntaxHelpObjectPrivate) +{ + d->command=command; + d->session=session; +} + +SyntaxHelpObject::~SyntaxHelpObject() +{ + delete d; +} + +void SyntaxHelpObject::fetchSyntaxHelp() +{ + //Start a delayed fetch + QTimer::singleShot(0, this, &SyntaxHelpObject::fetchInformation); +} + + +QString SyntaxHelpObject::toHtml() +{ + return d->htmlResult; +} + +void SyntaxHelpObject::setHtml(const QString& result) +{ + d->htmlResult=result; +} + +QString SyntaxHelpObject::command() +{ + return d->command; +} + +Session* SyntaxHelpObject::session() +{ + return d->session; +} diff --git a/src/lib/syntaxhelpobject.h b/src/lib/syntaxhelpobject.h new file mode 100644 index 0000000..bba28cb --- /dev/null +++ b/src/lib/syntaxhelpobject.h @@ -0,0 +1,86 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _SYNTAXHELPOBJECT_H +#define _SYNTAXHELPOBJECT_H + +#include +#include "cantor_export.h" + +namespace Cantor{ + +class SyntaxHelpObjectPrivate; +class Session; + +/** + * Object, used to display Syntax information to a given command + * It is designed for asynchronous use. The Object emits done + * as soon as fetching of the Help is finished + * + * @author Alexander Rieder + **/ +class CANTOR_EXPORT SyntaxHelpObject : public QObject +{ + Q_OBJECT + public: + /** + * Construct a HelpObject, for the given command, belonging to the Session session. + * @param command Command the help should be fetched for + * @param session Session the HelpObject belongs to + */ + SyntaxHelpObject( const QString& command, Session* session ); + /** + * Destructor + */ + ~SyntaxHelpObject() override; + + /** + * Start fetching the syntax help, emitting done() when done. + */ + void fetchSyntaxHelp(); + + /** + * Returns Html text of the Syntax Help + */ + QString toHtml(); + + /** + * Returns the command, this SyntaxHelp is for + * @return the command, this SyntaxHelp is for + */ + QString command(); + /** + * Returns the Session, this Object belongs to + * @return the Session, this Object belongs to + */ + Session* session(); + + Q_SIGNALS: + /** + * The SyntaxHelpObject is done, fetching the Information. + * The syntax help can be shown now + */ + void done(); + + protected Q_SLOTS: + /** + * This method should fetch the Syntax help information from the backend + */ + virtual void fetchInformation() = 0; + + protected: + /** + * Set the html syntax help + * @param result the html syntax help + */ + void setHtml(const QString& result); + + private: + SyntaxHelpObjectPrivate* d; + +}; + +} +#endif /* _SYNTAXHELPOBJECT_H */ diff --git a/src/lib/test/CMakeLists.txt b/src/lib/test/CMakeLists.txt new file mode 100644 index 0000000..562e086 --- /dev/null +++ b/src/lib/test/CMakeLists.txt @@ -0,0 +1,11 @@ +include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/..) + +set(cantortest_SRCS + backendtest.cpp) + +add_library( cantortest SHARED ${cantortest_SRCS} ) +generate_export_header(cantortest) + +target_link_libraries( cantortest + cantorlibs + Qt5::Test) diff --git a/src/lib/test/backendtest.cpp b/src/lib/test/backendtest.cpp new file mode 100644 index 0000000..e3559df --- /dev/null +++ b/src/lib/test/backendtest.cpp @@ -0,0 +1,106 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "backendtest.h" + +#include "backend.h" +#include "session.h" +#include "../../config-cantor.h" + +#include +#include +#include + +void BackendTest::createSession() +{ + // Add our custom plugins path, where we install our plugins, if it isn't default path + const QString& path = QString::fromLocal8Bit(PATH_TO_CANTOR_PLUGINS); + qDebug() << "Adding additional application library path" << path; + if (!QCoreApplication::libraryPaths().contains(path)) + QCoreApplication::addLibraryPath(path); + + Cantor::Backend* b=Cantor::Backend::getBackend( backendName() ); + if(!b || !b->requirementsFullfilled() ) + { + m_session = nullptr; + return; + } + + m_session=b->createSession(); + + QSignalSpy spy(m_session, SIGNAL(loginDone()) ); + m_session->login(); + if(spy.isEmpty()) + waitForSignal(m_session, SIGNAL(loginDone()) ); + + QVERIFY(!spy.isEmpty()); +} + +Cantor::Expression* BackendTest::evalExp(const QString& exp ) +{ + Cantor::Expression* e=m_session->evaluateExpression(exp); + + if(e->status()==Cantor::Expression::Queued) + { + waitForSignal( e, SIGNAL(statusChanged(Cantor::Expression::Status)) ); + } + + if (e->status()==Cantor::Expression::Computing) + { + waitForSignal( e, SIGNAL(statusChanged(Cantor::Expression::Status)) ); + } + return e; +} + +QString BackendTest::cleanOutput(const QString& out) +{ + QString cleaned=out; + cleaned.replace( QLatin1String(" "),QLatin1String(" ") ); + cleaned.remove( QLatin1String("
        ") ); + cleaned.replace( QChar::ParagraphSeparator, QLatin1Char('\n') ); + cleaned.replace( QRegularExpression( QStringLiteral("\\n{2}") ), QStringLiteral("\n") ); + cleaned.replace( QRegularExpression( QStringLiteral("\\n\\s*") ), QStringLiteral("\n") ); + + return cleaned.trimmed(); +} + +void BackendTest::initTestCase() +{ + QCoreApplication::setApplicationName(QLatin1String("cantor")); + createSession(); + if (!m_session) + { + QString reason = i18n("This test requires a functioning %1 backend", backendName() ); + QSKIP( reason.toStdString().c_str(), SkipAll ); + } +} + +void BackendTest::cleanupTestCase() +{ + if (m_session) + { + m_session->logout(); + } +} + +Cantor::Session* BackendTest::session() +{ + return m_session; +} + +void BackendTest::waitForSignal(QObject* sender, const char* signal) +{ + QTimer timeout( this ); + timeout.setSingleShot( true ); + + QEventLoop loop; + connect( sender, signal, &loop, SLOT(quit()) ); + connect(&timeout, &QTimer::timeout, &loop, &QEventLoop::quit); + timeout.start( 25000 ); + loop.exec(); +} + + + diff --git a/src/lib/test/backendtest.h b/src/lib/test/backendtest.h new file mode 100644 index 0000000..1b2c886 --- /dev/null +++ b/src/lib/test/backendtest.h @@ -0,0 +1,48 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef BACKENDTEST_H +#define BACKENDTEST_H + +#include +#include +#include + +#include + +namespace Cantor +{ + class Session; + class Expression; +} + +class CANTORTEST_EXPORT BackendTest : public QObject +{ + Q_OBJECT + private Q_SLOTS: + void initTestCase(); + void cleanupTestCase(); + + protected: + Cantor::Expression* evalExp(const QString& exp); + /** + * simple method that removes whitespaces/other irrelevant stuff, + * so comparing results is easier + */ + QString cleanOutput( const QString& out ); + + Cantor::Session* session(); + + /** + * simple method that blocks and waits for a signal to be emitted + */ + void waitForSignal( QObject* sender, const char* signal); + private: + void createSession(); + Cantor::Session* m_session; + virtual QString backendName() = 0; +}; + +#endif // BACKENDTEST_H diff --git a/src/lib/textresult.cpp b/src/lib/textresult.cpp new file mode 100644 index 0000000..cd7e851 --- /dev/null +++ b/src/lib/textresult.cpp @@ -0,0 +1,223 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2022 Alexander Semke +*/ + +#include "textresult.h" +using namespace Cantor; + +#include + +#include +#include +#include +#include + +QString rtrim(const QString& s) +{ + QString result = s; + while (result.count() > 0 && result[result.count()-1].isSpace() ) + { + result = result.left(result.count() -1 ); + } + return result; +} + +class Cantor::TextResultPrivate +{ +public: + QString data; + QString plain; + TextResult::Format format{TextResult::PlainTextFormat}; + bool isStderr{false}; + bool isWarning{false}; +}; + +TextResult::TextResult(const QString& data) : d(new TextResultPrivate) +{ + d->data=rtrim(data); + d->plain=d->data; +} + +TextResult::TextResult(const QString& data, const QString& plain) : d(new TextResultPrivate) +{ + d->data=rtrim(data); + d->plain=rtrim(plain); +} + +TextResult::~TextResult() +{ + delete d; +} + +void TextResult::setIsWarning(bool value) +{ + d->isWarning = value; +} + +bool TextResult::isWarning() const +{ + return d->isWarning; +} + +QString TextResult::toHtml() +{ + QString s=d->data.toHtmlEscaped(); + s.replace(QLatin1Char('\n'), QLatin1String("
        \n")); + s.replace(QLatin1Char(' '), QLatin1String(" ")); + return s; +} + +QVariant TextResult::data() +{ + return QVariant(d->data); +} + +QString TextResult::plain() +{ + return d->plain; +} + +int TextResult::type() +{ + return TextResult::Type; +} + +QString TextResult::mimeType() +{ + qDebug()<<"format: "<format; +} + +void TextResult::setFormat(TextResult::Format f) +{ + d->format=f; +} + +QDomElement TextResult::toXml(QDomDocument& doc) +{ + qDebug()<<"saving textresult "<isStderr); + if (d->format == LatexFormat) + e.setAttribute(QStringLiteral("format"), QStringLiteral("latex")); + QDomText txt=doc.createTextNode(data().toString()); + e.appendChild(txt); + + return e; +} + +QJsonValue Cantor::TextResult::toJupyterJson() +{ + QJsonObject root; + + switch (d->format) + { + case PlainTextFormat: + { + if (executionIndex() != -1) + { + root.insert(QLatin1String("output_type"), QLatin1String("execute_result")); + root.insert(QLatin1String("execution_count"), executionIndex()); + + QJsonObject data; + data.insert(QLatin1String("text/plain"), jupyterText(d->data)); + root.insert(QLatin1String("data"), data); + + root.insert(QLatin1String("metadata"), jupyterMetadata()); + } + else + { + root.insert(QLatin1String("output_type"), QLatin1String("stream")); + if (d->isStderr) + root.insert(QLatin1String("name"), QLatin1String("stderr")); + else + root.insert(QLatin1String("name"), QLatin1String("stdout")); + + // Jupyter don't support a few text result (it merges them into one text), + // so add additional \n to end + // See https://github.com/jupyter/notebook/issues/4699 + root.insert(QLatin1String("text"), jupyterText(d->data, true)); + } + break; + } + + case LatexFormat: + { + if (executionIndex() != -1) + { + root.insert(QLatin1String("output_type"), QLatin1String("execute_result")); + root.insert(QLatin1String("execution_count"), executionIndex()); + } + else + root.insert(QLatin1String("output_type"), QLatin1String("display_data")); + + QJsonObject data; + data.insert(QLatin1String("text/latex"), jupyterText(d->data)); + data.insert(QLatin1String("text/plain"), jupyterText(d->plain)); + root.insert(QLatin1String("data"), data); + + root.insert(QLatin1String("metadata"), jupyterMetadata()); + break; + } + } + + return root; +} + +void TextResult::save(const QString& filename) +{ + QFile file(filename); + + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) + return; + + QTextStream stream(&file); + + stream<data; + + file.close(); +} + +QJsonArray TextResult::jupyterText(const QString& text, bool addEndNewLine) +{ + QJsonArray array; + + const QStringList& lines = text.split(QLatin1Char('\n')); + for (int i = 0; i < lines.size(); i++) + { + QString line = lines[i]; + if (i != lines.size() - 1 || addEndNewLine) + line.append(QLatin1Char('\n')); + array.append(line); + } + + return array; +} + +bool Cantor::TextResult::isStderr() const +{ + return d->isStderr; +} + +void Cantor::TextResult::setStdErr(bool value) +{ + d->isStderr = value; +} diff --git a/src/lib/textresult.h b/src/lib/textresult.h new file mode 100644 index 0000000..7158a71 --- /dev/null +++ b/src/lib/textresult.h @@ -0,0 +1,58 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2022 Alexander Semke +*/ + +#ifndef _TEXTRESULT_H +#define _TEXTRESULT_H + +#include "result.h" + +#include "cantor_export.h" + +namespace Cantor +{ + +class TextResultPrivate; +class CANTOR_EXPORT TextResult : public Result +{ + public: + enum { Type=1 }; + enum Format { PlainTextFormat, LatexFormat}; + + TextResult(const QString& text); + TextResult(const QString& text, const QString& plain); + ~TextResult() override; + + void setIsWarning(bool); + bool isWarning() const; + + QString toHtml() override; + QVariant data() override; + + QString plain(); + + int type() override; + QString mimeType() override; + + Format format(); + void setFormat(Format f); + + bool isStderr() const; + void setStdErr(bool value); + + QDomElement toXml(QDomDocument& doc) override; + QJsonValue toJupyterJson() override; + + void save(const QString& filename) override; + + private: + QJsonArray jupyterText(const QString& text, bool addEndNewLine = false); + + private: + TextResultPrivate* d; +}; + +} +#endif /* _TEXTRESULT_H */ diff --git a/src/lib/worksheetaccess.cpp b/src/lib/worksheetaccess.cpp new file mode 100644 index 0000000..c276051 --- /dev/null +++ b/src/lib/worksheetaccess.cpp @@ -0,0 +1,19 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "worksheetaccess.h" + + +using namespace Cantor; + +QLatin1String WorksheetAccessInterface::Name = QLatin1String("WorksheetAccessInterface"); + +WorksheetAccessInterface::WorksheetAccessInterface(QObject* parent) : QObject(parent) +{ + setObjectName(Name); +} + + + diff --git a/src/lib/worksheetaccess.h b/src/lib/worksheetaccess.h new file mode 100644 index 0000000..61ec109 --- /dev/null +++ b/src/lib/worksheetaccess.h @@ -0,0 +1,44 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2015 Alexander Rieder +*/ + +#ifndef _WORKSHEET_ACCESS_INTERFACE_H +#define _WORKSHEET_ACCESS_INTERFACE_H + +#include "cantor_export.h" + +#include + + +namespace Cantor +{ + class Session; + +class CANTOR_EXPORT WorksheetAccessInterface : public QObject +{ + Q_OBJECT + public: + static QLatin1String Name; + explicit WorksheetAccessInterface(QObject* parent); + ~WorksheetAccessInterface() override = default; + public: + virtual QByteArray saveWorksheetToByteArray() = 0; + virtual void loadWorksheetFromByteArray(QByteArray* data) = 0; + + virtual Session* session() = 0; + public Q_SLOTS: + virtual void evaluate() = 0; + virtual void interrupt() = 0; + + Q_SIGNALS: + void modified(); +}; + +} + +#endif + + + + diff --git a/src/loadedexpression.cpp b/src/loadedexpression.cpp new file mode 100644 index 0000000..ea95977 --- /dev/null +++ b/src/loadedexpression.cpp @@ -0,0 +1,319 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "loadedexpression.h" + +#include "lib/jupyterutils.h" +#include "lib/imageresult.h" +#include "lib/epsresult.h" +#include "lib/textresult.h" +#include "lib/latexresult.h" +#include "lib/animationresult.h" +#include "lib/latexrenderer.h" +#include "lib/mimeresult.h" +#include "lib/htmlresult.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +LoadedExpression::LoadedExpression( Cantor::Session* session ) : Cantor::Expression( session, false, -1) +{ + +} + +void LoadedExpression::interrupt() +{ + //Do nothing +} + +void LoadedExpression::evaluate() +{ + //Do nothing +} + +void LoadedExpression::loadFromXml(const QDomElement& xml, const KZip& file) +{ + setCommand(xml.firstChildElement(QLatin1String("Command")).text()); + + const QDomNodeList& results = xml.elementsByTagName(QLatin1String("Result")); + for (int i = 0; i < results.size(); i++) + { + const QDomElement& resultElement = results.at(i).toElement(); + const QString& type = resultElement.attribute(QLatin1String("type")); + qDebug() << "type" << type; + if ( type == QLatin1String("text")) + { + const QString& format = resultElement.attribute(QLatin1String("format")); + bool isStderr = resultElement.attribute(QLatin1String("stderr")).toInt(); + Cantor::TextResult* result = new Cantor::TextResult(resultElement.text()); + if (format == QLatin1String("latex")) + result->setFormat(Cantor::TextResult::LatexFormat); + result->setStdErr(isStderr); + addResult(result); + } + else if (type == QLatin1String("mime")) + { + const QDomElement& resultElement = results.at(i).toElement(); + + QJsonObject mimeBundle; + const QDomNodeList& contents = resultElement.elementsByTagName(QLatin1String("Content")); + for (int x = 0; x < contents.count(); x++) + { + const QDomElement& content = contents.at(x).toElement(); + + const QString& mimeType = content.attribute(QLatin1String("key")); + QJsonDocument jsonDoc = QJsonDocument::fromJson(content.text().toUtf8());; + const QJsonValue& value = jsonDoc.object().value(QLatin1String("content")); + mimeBundle.insert(mimeType, value); + } + + addResult(new Cantor::MimeResult(mimeBundle)); + } + else if (type == QLatin1String("html")) + { + const QString& formatString = resultElement.attribute(QLatin1String("showCode")); + Cantor::HtmlResult::Format format = Cantor::HtmlResult::Html; + if (formatString == QLatin1String("htmlSource")) + format = Cantor::HtmlResult::HtmlSource; + else if (formatString == QLatin1String("plain")) + format = Cantor::HtmlResult::PlainAlternative; + + const QString& plain = resultElement.firstChildElement(QLatin1String("Plain")).text(); + const QString& html = resultElement.firstChildElement(QLatin1String("Html")).text(); + + std::map alternatives; + const QDomNodeList& alternativeElms = resultElement.elementsByTagName(QLatin1String("Alternative")); + for (int x = 0; x < alternativeElms.count(); x++) + { + const QDomElement& content = alternativeElms.at(x).toElement(); + + const QString& mimeType = content.attribute(QLatin1String("key")); + QJsonDocument jsonDoc = QJsonDocument::fromJson(content.text().toUtf8());; + const QJsonValue& value = jsonDoc.object().value(QLatin1String("root")); + alternatives[mimeType] = value; + } + + Cantor::HtmlResult* result = new Cantor::HtmlResult(html, plain, alternatives); + result->setFormat(format); + + addResult(result); + } + else if (type == QLatin1String("image") || type == QLatin1String("latex") || type == QLatin1String("animation") || type == QLatin1String("epsimage")) + { + const KArchiveEntry* imageEntry=file.directory()->entry(resultElement.attribute(QLatin1String("filename"))); + if (imageEntry&&imageEntry->isFile()) + { + const KArchiveFile* imageFile=static_cast(imageEntry); + QString dir=QStandardPaths::writableLocation(QStandardPaths::TempLocation); + imageFile->copyTo(dir); + QUrl imageUrl = QUrl::fromLocalFile(QDir(dir).absoluteFilePath(imageFile->name())); + if(type==QLatin1String("latex")) + { + const QByteArray& ba = QByteArray::fromBase64(resultElement.attribute(QLatin1String("image")).toLatin1()); + QImage image; + image.loadFromData(ba); + addResult(new Cantor::LatexResult(resultElement.text(), imageUrl, QString(), image)); + } + else if(type==QLatin1String("animation")) + { + addResult(new Cantor::AnimationResult(imageUrl)); + } + else if(type==QLatin1String("epsimage")) + { + const QByteArray& ba = QByteArray::fromBase64(resultElement.attribute(QLatin1String("image")).toLatin1()); + QImage image; + image.loadFromData(ba); + addResult(new Cantor::EpsResult(imageUrl, image)); + } + else if(imageFile->name().endsWith(QLatin1String(".eps"))) + { + const QByteArray& ba = QByteArray::fromBase64(resultElement.attribute(QLatin1String("image")).toLatin1()); + QImage image; + image.loadFromData(ba); + addResult(new Cantor::EpsResult(imageUrl, image)); + } + else + { + addResult(new Cantor::ImageResult(imageUrl, resultElement.text())); + } + } + } + } + + const QDomElement& errElem = xml.firstChildElement(QLatin1String("Error")); + if (!errElem.isNull()) + { + setErrorMessage(errElem.text()); + setStatus(Error); + } + else + setStatus(Done); +} + +void LoadedExpression::loadFromJupyter(const QJsonObject& cell) +{ + setCommand(Cantor::JupyterUtils::getSource(cell)); + + const QJsonValue idObject = cell.value(QLatin1String("execution_count")); + if (!idObject.isUndefined() && !idObject.isNull()) + setId(idObject.toInt()); + + const QJsonArray& outputs = cell.value(QLatin1String("outputs")).toArray(); + for (QJsonArray::const_iterator iter = outputs.begin(); iter != outputs.end(); ++iter) + { + if (!Cantor::JupyterUtils::isJupyterOutput(*iter)) + continue; + + const QJsonObject& output = iter->toObject(); + const QString& outputType = Cantor::JupyterUtils::getOutputType(output); + if (Cantor::JupyterUtils::isJupyterTextOutput(output)) + { + const QString& text = Cantor::JupyterUtils::fromJupyterMultiline(output.value(QLatin1String("text"))); + bool isStderr = output.value(QLatin1String("name")).toString() == QLatin1String("stderr"); + Cantor::TextResult* result = new Cantor::TextResult(text); + result->setStdErr(isStderr); + addResult(result); + } + else if (Cantor::JupyterUtils::isJupyterErrorOutput(output)) + { + const QJsonArray& tracebackLineArray = output.value(QLatin1String("traceback")).toArray(); + QString traceback; + + // Looks like the traceback in Jupyter joined with '\n', no '' + // So, manually add it + for (const QJsonValue& line : tracebackLineArray) + traceback += line.toString() + QLatin1Char('\n'); + traceback.chop(1); + + // IPython returns error with terminal colors, we handle it here, but should we? + static const QChar ESC(0x1b); + traceback.remove(QRegularExpression(QString(ESC)+QLatin1String("\\[[0-9;]*m"))); + + setErrorMessage(traceback); + } + else if (Cantor::JupyterUtils::isJupyterDisplayOutput(output) || Cantor::JupyterUtils::isJupyterExecutionResult(output)) + { + const QJsonObject& data = output.value(QLatin1String("data")).toObject(); + + QJsonObject metadata = Cantor::JupyterUtils::getMetadata(output); + const QString& text = Cantor::JupyterUtils::fromJupyterMultiline(data.value(Cantor::JupyterUtils::textMime)); + const QString& mainKey = Cantor::JupyterUtils::mainBundleKey(data); + + Cantor::Result* result = nullptr; + if (mainKey == Cantor::JupyterUtils::gifMime) + { + const QByteArray& bytes = QByteArray::fromBase64(data.value(mainKey).toString().toLatin1()); + + QTemporaryFile file; + file.setAutoRemove(false); + file.open(); + file.write(bytes); + file.close(); + + result = new Cantor::AnimationResult(QUrl::fromLocalFile(file.fileName()), text); + } + else if (mainKey == Cantor::JupyterUtils::textMime) + { + result = new Cantor::TextResult(text); + } + else if (mainKey == Cantor::JupyterUtils::htmlMime) + { + const QString& html = Cantor::JupyterUtils::fromJupyterMultiline(data.value(Cantor::JupyterUtils::htmlMime)); + // Some backends places gif animation in hmlt (img tag), for example, Sage + if (Cantor::JupyterUtils::isGifHtml(html)) + { + result = new Cantor::AnimationResult(Cantor::JupyterUtils::loadGifHtml(html), text); + } + else + { + // Load alternative content types too + std::map alternatives; + for (const QString& key : data.keys()) + if (key != Cantor::JupyterUtils::htmlMime && key != Cantor::JupyterUtils::textMime) + alternatives[key] = data[key]; + + result = new Cantor::HtmlResult(html, text, alternatives); + } + } + else if (mainKey == Cantor::JupyterUtils::latexMime) + { + // Some latex results contains already rendered images, so use them, if presents + const QImage& image = Cantor::JupyterUtils::loadImage(data, Cantor::JupyterUtils::pngMime); + + QString latex = Cantor::JupyterUtils::fromJupyterMultiline(data.value(mainKey)); + QScopedPointer renderer(new Cantor::LatexRenderer(this)); + renderer->setLatexCode(latex); + renderer->setEquationOnly(false); + renderer->setMethod(Cantor::LatexRenderer::LatexMethod); + renderer->renderBlocking(); + + result = new Cantor::LatexResult(latex, QUrl::fromLocalFile(renderer->imagePath()), text, image); + + // If we have failed to render LaTeX i think Cantor should show the latex code at least + if (!renderer->renderingSuccessful()) + static_cast(result)->showCode(); + } + // So this is image + else if (Cantor::JupyterUtils::imageKeys(data).contains(mainKey)) + { + const QImage& image = Cantor::JupyterUtils::loadImage(data, mainKey); + result = new Cantor::ImageResult(image, text); + static_cast(result)->setOriginalFormat(mainKey); + + if (mainKey == Cantor::JupyterUtils::svgMime) + static_cast(result)->setSvgContent(Cantor::JupyterUtils::fromJupyterMultiline(data[Cantor::JupyterUtils::svgMime])); + + const QJsonValue size = metadata.value(mainKey); + if (size.isObject()) + { + int w = size.toObject().value(QLatin1String("width")).toInt(-1); + int h = size.toObject().value(QLatin1String("height")).toInt(-1); + + if (w != -1 && h != -1) + { + static_cast(result)->setDisplaySize(QSize(w, h)); + // Remove size information, because we don't need it after setting display size + // Also, we encode image to 'image/png' on saving as .ipynb, even original image don't png + // So, without removing the size info here, after loading for example 'image/tiff' to Cantor from .ipynb and saving the worksheet + // (which means, that the image will be saved as png and not as tiff). + // We will have outdated key 'image/tiff' in metadata. + metadata.remove(mainKey); + } + } + + } + else if (data.keys().size() == 1 && data.keys()[0] == Cantor::JupyterUtils::textMime) + result = new Cantor::TextResult(text); + // Cantor don't know, how handle this, so pack into mime container result + else + { + qDebug() << "Found unsupported " << outputType << "result with mimes" << data.keys() << ", so add them to mime container result"; + result = new Cantor::MimeResult(data); + } + + if (result) + { + result->setJupyterMetadata(metadata); + int resultIndex = output.value(QLatin1String("execution_count")).toInt(-1); + if (resultIndex != -1) + result->setExecutionIndex(resultIndex); + + addResult(result); + } + } + } + + if (errorMessage().isEmpty()) + setStatus(Done); + else + setStatus(Error); +} diff --git a/src/loadedexpression.h b/src/loadedexpression.h new file mode 100644 index 0000000..af67cd1 --- /dev/null +++ b/src/loadedexpression.h @@ -0,0 +1,40 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _LOADEDEXPRESSION_H +#define _LOADEDEXPRESSION_H + +#include "lib/expression.h" + +#include +#include +#include + +class QJsonObject; + +/** This class is used to hold expressions + loaded from a file. they can't be evaluated + and only show the result, they loaded from xml. + this is used to avoid most exceptions when + dealing with loaded Worksheets instead of newly + created ones. +**/ +class LoadedExpression : public Cantor::Expression +{ + public: + explicit LoadedExpression( Cantor::Session* session ); + ~LoadedExpression() override = default; + + void evaluate() override; + void interrupt() override; + + void parseOutput(const QString&) override {}; + void parseError(const QString&) override {}; + + void loadFromXml(const QDomElement& xml, const KZip& file); + void loadFromJupyter(const QJsonObject& cell); +}; + +#endif /* _LOADEDEXPRESSION_H */ diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..caace1b --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,143 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "cantor.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +int main(int argc, char **argv) +{ + QtWebEngine::initialize(); + // Register custom scheme handler for qthelp:// scheme + QWebEngineUrlScheme qthelp("qthelp"); + QWebEngineUrlScheme::registerScheme(qthelp); + + QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); + QApplication app(argc, argv); + + // Add our custom plugins path, where we install our plugins, if it isn't default path + const QString& path = QString::fromLocal8Bit(PATH_TO_CANTOR_PLUGINS); + qDebug() << "Adding additional application library path for Cantor plugins loading" << path; + if (!QCoreApplication::libraryPaths().contains(path)) + QCoreApplication::addLibraryPath(path); + + KCrash::initialize(); + + // Migrating configuration from 4.x applications to KF5-based applications + QStringList configFiles; + QStringList rcFiles; + + configFiles << QLatin1String("cantorrc"); + rcFiles << QLatin1String("cantor_part.rc") << QLatin1String("cantor_scripteditor.rc") + << QLatin1String("cantor_shell.rc") << QLatin1String("cantor_advancedplot_assistant.rc") + << QLatin1String("cantor_differentiate_assistant.rc") << QLatin1String("cantor_import_package_assistant.rc") + << QLatin1String("cantor_integrate_assistant.rc") << QLatin1String("cantor_create_matrix_assistant.rc") + << QLatin1String("cantor_eigenvalues_assistant.rc") << QLatin1String("cantor_eigenvectors_assistant.rc") + << QLatin1String("cantor_invert_matrix_assistant.rc") << QLatin1String("cantor_plot2d_assistant.rc") + << QLatin1String("cantor_plot3d_assistant.rc") << QLatin1String("cantor_runscript_assistant.rc") + << QLatin1String("cantor_solve_assistant.rc") << QLatin1String("cantor_qalculateplotassistant.rc"); + + Kdelibs4ConfigMigrator migrator(QLatin1String("cantor")); + + migrator.setConfigFiles(configFiles); + migrator.setUiFiles(rcFiles); + migrator.migrate(); + //********************************** + + KLocalizedString::setApplicationDomain("cantor"); + app.setApplicationName(QLatin1String("cantor")); + app.setOrganizationDomain(QLatin1String("kde.org")); + app.setApplicationDisplayName(i18n("Cantor")); + app.setWindowIcon(QIcon::fromTheme(QLatin1String("cantor"))); + + KAboutData about(QLatin1String("cantor"), + QLatin1String("Cantor"), + QLatin1String(CANTOR_VERSION), + i18n("KDE Frontend to mathematical applications"), + KAboutLicense::GPL, + i18n("(C) 2016 Filipe Saraiva
        (C) 2009-2015 Alexander Rieder"), + QString(), + QLatin1String("https://cantor.kde.org/")); + + about.addAuthor( i18n("Filipe Saraiva"), i18n("Maintainer
        Qt5/KF5 port, Scilab and Python backends"), QLatin1String("filipe@kde.org"), QLatin1String("http://filipesaraiva.info/") ); + about.addAuthor( i18n("Nikita Sirgienko"), i18nc("@info:credit", "Developer"), QLatin1String("warquark@gmail.com>")); + about.addAuthor( i18n("Alexander Semke"), i18nc("@info:credit", "Developer"), QLatin1String("alexander.semke@web.de")); + about.addAuthor( i18n("Alexander Rieder"), i18n("Original author
        Maintainer (2009 - 2015)"), QLatin1String("alexanderrieder@gmail.com") ); + about.addAuthor( i18n("Aleix Pol Gonzalez"), i18n("KAlgebra backend"), QLatin1String("aleixpol@kde.org") ); + about.addAuthor( i18n("Miha Čančula"), i18n("Octave backend"), QLatin1String("miha.cancula@gmail.com") ); + about.addAuthor( i18n("Martin Küttler"), i18n("Interface"), QLatin1String("martin.kuettler@gmail.com") ); + + about.addCredit(QLatin1String("Andreas Kainz"), i18n("Cantor icon"), QLatin1String("kainz.a@gmail.com")); + about.addCredit(QLatin1String("Uri Herrera"), i18n("Cantor icon"), QLatin1String("kaisergreymon99@gmail.com"), QLatin1String("http://nitrux.in/")); + + QCommandLineParser parser; + KAboutData::setApplicationData(about); + + const QCommandLineOption backendOption(QStringList()<"), QLatin1String("backend")); + parser.addOption(backendOption); + + parser.addPositionalArgument(QStringLiteral("files"), i18n("Documents to open."), QStringLiteral("[files...]")); + + + about.setupCommandLine(&parser); + parser.process(app); + about.processCommandLine(&parser); + + // see if we are starting with session management + if (app.isSessionRestored()) + RESTORE(CantorShell) + else + { + // no session.. just start up normally + + CantorShell *widget = new CantorShell(); + if ( parser.positionalArguments().count() == 0 ) + { + if(parser.isSet(QLatin1String("backend"))) + { + widget->addWorksheet(parser.value(QLatin1String("backend"))); + } + else + { + widget->addWorksheet(); + } + } + else + { + const QStringList& args=parser.positionalArguments(); + for (const QString& filename : args) + { + const QUrl url = QUrl::fromUserInput(filename, QDir::currentPath(), QUrl::AssumeLocalFile); + if (url.isValid()) + { + if (url.isLocalFile() && !QFileInfo(url.toLocalFile()).exists()) + KMessageBox::error(widget, i18n("Couldn't open the file %1", filename), i18n("Cantor")); + else + { + widget->load(url); + } + } + } + } + widget->show(); + } + + return app.exec(); +} + diff --git a/src/markdownentry.cpp b/src/markdownentry.cpp new file mode 100644 index 0000000..87e7d46 --- /dev/null +++ b/src/markdownentry.cpp @@ -0,0 +1,836 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Yifei Wu + SPDX-FileCopyrightText: 2019-2021 Alexander Semke +*/ + +#include "markdownentry.h" +#include "jupyterutils.h" +#include "mathrender.h" +#include +#include "settings.h" +#include "worksheetview.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#ifdef Discount_FOUND +extern "C" { +#include +} +#endif + + +MarkdownEntry::MarkdownEntry(Worksheet* worksheet) : WorksheetEntry(worksheet), +m_textItem(new WorksheetTextItem(this, Qt::TextEditorInteraction)), +rendered(false) +{ + m_textItem->enableRichText(false); + m_textItem->setOpenExternalLinks(true); + m_textItem->installEventFilter(this); + m_textItem->setAcceptDrops(true); + connect(m_textItem, &WorksheetTextItem::moveToPrevious, this, &MarkdownEntry::moveToPreviousEntry); + connect(m_textItem, &WorksheetTextItem::moveToNext, this, &MarkdownEntry::moveToNextEntry); + connect(m_textItem, SIGNAL(execute()), this, SLOT(evaluate())); +} + +void MarkdownEntry::populateMenu(QMenu* menu, QPointF pos) +{ + WorksheetEntry::populateMenu(menu, pos); + + QAction* firstAction; + if (!rendered) + { + firstAction = menu->actions().at(1); //insert the first action for Markdown after the "Evaluate" action + QAction* action = new QAction(QIcon::fromTheme(QLatin1String("viewimage")), i18n("Insert Image")); + connect(action, &QAction::triggered, this, &MarkdownEntry::insertImage); + menu->insertAction(firstAction, action); + } + else + { + firstAction = menu->actions().at(0); + QAction* action = new QAction(QIcon::fromTheme(QLatin1String("edit-entry")), i18n("Enter Edit Mode")); + connect(action, &QAction::triggered, this, &MarkdownEntry::enterEditMode); + menu->insertAction(firstAction, action); + menu->insertSeparator(firstAction); + } + + if (attachedImages.size() != 0) + { + QAction* action = new QAction(QIcon::fromTheme(QLatin1String("edit-clear")), i18n("Clear Attachments")); + connect(action, &QAction::triggered, this, &MarkdownEntry::clearAttachments); + menu->insertAction(firstAction, action); + } +} + +bool MarkdownEntry::isEmpty() +{ + return m_textItem->document()->isEmpty(); +} + +int MarkdownEntry::type() const +{ + return Type; +} + +bool MarkdownEntry::acceptRichText() +{ + return false; +} + +bool MarkdownEntry::focusEntry(int pos, qreal xCoord) +{ + if (aboutToBeRemoved()) + return false; + m_textItem->setFocusAt(pos, xCoord); + return true; +} + +void MarkdownEntry::setContent(const QString& content) +{ + rendered = false; + plain = content; + setPlainText(plain); +} + +void MarkdownEntry::setContent(const QDomElement& content, const KZip& file) +{ + rendered = content.attribute(QLatin1String("rendered"), QLatin1String("1")) == QLatin1String("1"); + QDomElement htmlEl = content.firstChildElement(QLatin1String("HTML")); + if(!htmlEl.isNull()) + html = htmlEl.text(); + else + { + html = QLatin1String(""); + rendered = false; // No html provided. Assume that it hasn't been rendered. + } + QDomElement plainEl = content.firstChildElement(QLatin1String("Plain")); + if(!plainEl.isNull()) + plain = plainEl.text(); + else + { + plain = QLatin1String(""); + html = QLatin1String(""); // No plain text provided. The entry shouldn't render anything, or the user can't re-edit it. + } + + const QDomNodeList& attachments = content.elementsByTagName(QLatin1String("Attachment")); + for (int x = 0; x < attachments.count(); x++) + { + const QDomElement& attachment = attachments.at(x).toElement(); + QUrl url(attachment.attribute(QLatin1String("url"))); + + const QString& base64 = attachment.text(); + QImage image; + image.loadFromData(QByteArray::fromBase64(base64.toLatin1()), "PNG"); + + attachedImages.push_back(std::make_pair(url, QLatin1String("image/png"))); + + m_textItem->document()->addResource(QTextDocument::ImageResource, url, QVariant(image)); + } + + if(rendered) + setRenderedHtml(html); + else + setPlainText(plain); + + // Handle math after setting html + const QDomNodeList& maths = content.elementsByTagName(QLatin1String("EmbeddedMath")); + foundMath.clear(); + for (int i = 0; i < maths.count(); i++) + { + const QDomElement& math = maths.at(i).toElement(); + const QString mathCode = math.text(); + + foundMath.push_back(std::make_pair(mathCode, false)); + } + + if (rendered) + { + markUpMath(); + + for (int i = 0; i < maths.count(); i++) + { + const QDomElement& math = maths.at(i).toElement(); + bool mathRendered = math.attribute(QLatin1String("rendered")).toInt(); + const QString mathCode = math.text(); + + if (mathRendered) + { + const KArchiveEntry* imageEntry=file.directory()->entry(math.attribute(QLatin1String("path"))); + if (imageEntry && imageEntry->isFile()) + { + const KArchiveFile* imageFile=static_cast(imageEntry); + const QString& dir=QStandardPaths::writableLocation(QStandardPaths::TempLocation); + imageFile->copyTo(dir); + const QString& pdfPath = dir + QDir::separator() + imageFile->name(); + + QString latex; + Cantor::LatexRenderer::EquationType type; + std::tie(latex, type) = parseMathCode(mathCode); + + // Get uuid by removing 'cantor_' and '.pdf' extension + // len('cantor_') == 7, len('.pdf') == 4 + QString uuid = pdfPath; + uuid.remove(0, 7); + uuid.chop(4); + + bool success; + const auto& data = worksheet()->mathRenderer()->renderExpressionFromPdf(pdfPath, uuid, latex, type, &success); + if (success) + { + QUrl internal; + internal.setScheme(QLatin1String("internal")); + internal.setPath(uuid); + setRenderedMath(i+1, data.first, internal, data.second); + } + } + else if (worksheet()->embeddedMathEnabled()) + renderMathExpression(i+1, mathCode); + } + } + } + + // Because, all previous actions was on load stage, + // them shoudl unconverted by user + m_textItem->document()->clearUndoRedoStacks(); +} + +void MarkdownEntry::setContentFromJupyter(const QJsonObject& cell) +{ + if (!Cantor::JupyterUtils::isMarkdownCell(cell)) + return; + + // https://nbformat.readthedocs.io/en/latest/format_description.html#cell-metadata + // There isn't Jupyter metadata for markdown cells, which could be handled by Cantor + // So we just store it + setJupyterMetadata(Cantor::JupyterUtils::getMetadata(cell)); + + const QJsonObject attachments = cell.value(QLatin1String("attachments")).toObject(); + for (const QString& key : attachments.keys()) + { + const QJsonValue& attachment = attachments.value(key); + const QString& mimeKey = Cantor::JupyterUtils::firstImageKey(attachment); + if (!mimeKey.isEmpty()) + { + const QImage& image = Cantor::JupyterUtils::loadImage(attachment, mimeKey); + + QUrl resourceUrl; + resourceUrl.setUrl(QLatin1String("attachment:")+key); + attachedImages.push_back(std::make_pair(resourceUrl, mimeKey)); + m_textItem->document()->addResource(QTextDocument::ImageResource, resourceUrl, QVariant(image)); + } + } + + setPlainText(Cantor::JupyterUtils::getSource(cell)); + m_textItem->document()->clearUndoRedoStacks(); +} + +QDomElement MarkdownEntry::toXml(QDomDocument& doc, KZip* archive) +{ + if(!rendered) + plain = m_textItem->toPlainText(); + + QDomElement el = doc.createElement(QLatin1String("Markdown")); + el.setAttribute(QLatin1String("rendered"), (int)rendered); + + QDomElement plainEl = doc.createElement(QLatin1String("Plain")); + plainEl.appendChild(doc.createTextNode(plain)); + el.appendChild(plainEl); + + QDomElement htmlEl = doc.createElement(QLatin1String("HTML")); + htmlEl.appendChild(doc.createTextNode(html)); + el.appendChild(htmlEl); + + QUrl url; + QString key; + for (const auto& data : attachedImages) + { + std::tie(url, key) = std::move(data); + + QDomElement attachmentEl = doc.createElement(QLatin1String("Attachment")); + attachmentEl.setAttribute(QStringLiteral("url"), url.toString()); + + const QImage& image = m_textItem->document()->resource(QTextDocument::ImageResource, url).value(); + + QByteArray ba; + QBuffer buffer(&ba); + buffer.open(QIODevice::WriteOnly); + image.save(&buffer, "PNG"); + + attachmentEl.appendChild(doc.createTextNode(QString::fromLatin1(ba.toBase64()))); + + el.appendChild(attachmentEl); + } + + // If math rendered, then append result .pdf to archive + QTextCursor cursor = m_textItem->document()->find(QString(QChar::ObjectReplacementCharacter)); + for (const auto& data : foundMath) + { + QDomElement mathEl = doc.createElement(QLatin1String("EmbeddedMath")); + mathEl.setAttribute(QStringLiteral("rendered"), data.second); + mathEl.appendChild(doc.createTextNode(data.first)); + + if (data.second) + { + bool foundNeededImage = false; + while(!cursor.isNull() && !foundNeededImage) + { + QTextImageFormat format=cursor.charFormat().toImageFormat(); + if (format.hasProperty(Cantor::Renderer::CantorFormula)) + { + const QString& latex = format.property(Cantor::Renderer::Code).toString(); + const QString& delimiter = format.property(Cantor::Renderer::Delimiter).toString(); + const QString& code = delimiter + latex + delimiter; + if (code == data.first) + { + const QUrl& url = QUrl::fromLocalFile(format.property(Cantor::Renderer::ImagePath).toString()); + archive->addLocalFile(url.toLocalFile(), url.fileName()); + mathEl.setAttribute(QStringLiteral("path"), url.fileName()); + foundNeededImage = true; + } + } + cursor = m_textItem->document()->find(QString(QChar::ObjectReplacementCharacter), cursor); + } + } + + el.appendChild(mathEl); + } + + return el; +} + +QJsonValue MarkdownEntry::toJupyterJson() +{ + QJsonObject entry; + + entry.insert(QLatin1String("cell_type"), QLatin1String("markdown")); + + entry.insert(QLatin1String("metadata"), jupyterMetadata()); + + QJsonObject attachments; + QUrl url; + QString key; + for (const auto& data : attachedImages) + { + std::tie(url, key) = std::move(data); + + const QImage& image = m_textItem->document()->resource(QTextDocument::ImageResource, url).value(); + QString attachmentKey = url.toString().remove(QLatin1String("attachment:")); + attachments.insert(attachmentKey, Cantor::JupyterUtils::packMimeBundle(image, key)); + } + if (!attachments.isEmpty()) + entry.insert(QLatin1String("attachments"), attachments); + + Cantor::JupyterUtils::setSource(entry, plain); + + return entry; +} + +QString MarkdownEntry::toPlain(const QString& commandSep, const QString& commentStartingSeq, const QString& commentEndingSeq) +{ + Q_UNUSED(commandSep); + + if (commentStartingSeq.isEmpty()) + return QString(); + + QString text(plain); + + if (!commentEndingSeq.isEmpty()) + return commentStartingSeq + text + commentEndingSeq + QLatin1String("\n"); + return commentStartingSeq + text.replace(QLatin1String("\n"), QLatin1String("\n") + commentStartingSeq) + QLatin1String("\n"); +} + +bool MarkdownEntry::evaluate(EvaluationOption evalOp) +{ + if(!rendered) + { + if (m_textItem->toPlainText() == plain && !html.isEmpty()) + { + setRenderedHtml(html); + rendered = true; + for (auto iter = foundMath.begin(); iter != foundMath.end(); iter++) + iter->second = false; + markUpMath(); + } + else + { + plain = m_textItem->toPlainText(); + rendered = renderMarkdown(plain); + } + m_textItem->document()->clearUndoRedoStacks(); + } + + if (rendered && worksheet()->embeddedMathEnabled()) + renderMath(); + + evaluateNext(evalOp); + return true; +} + +bool MarkdownEntry::renderMarkdown(QString& plain) +{ +#ifdef Discount_FOUND + QByteArray mdCharArray = plain.toUtf8(); + MMIOT* mdHandle = mkd_string(mdCharArray.data(), mdCharArray.size()+1, 0); + if(!mkd_compile(mdHandle, MKD_LATEX | MKD_FENCEDCODE | MKD_GITHUBTAGS)) + { + qDebug()<<"Failed to compile the markdown document"; + mkd_cleanup(mdHandle); + return false; + } + char *htmlDocument; + int htmlSize = mkd_document(mdHandle, &htmlDocument); + html = QString::fromUtf8(htmlDocument, htmlSize); + + char *latexData; + int latexDataSize = mkd_latextext(mdHandle, &latexData); + QStringList latexUnits = QString::fromUtf8(latexData, latexDataSize).split(QLatin1Char(31), QString::SkipEmptyParts); + foundMath.clear(); + + mkd_cleanup(mdHandle); + + setRenderedHtml(html); + + QTextCursor cursor(m_textItem->document()); + for (const QString& latex : latexUnits) + foundMath.push_back(std::make_pair(latex, false)); + + markUpMath(); + + return true; +#else + Q_UNUSED(plain); + + return false; +#endif +} + +void MarkdownEntry::updateEntry() +{ + QTextCursor cursor = m_textItem->document()->find(QString(QChar::ObjectReplacementCharacter)); + while(!cursor.isNull()) + { + QTextImageFormat format=cursor.charFormat().toImageFormat(); + if (format.hasProperty(Cantor::Renderer::CantorFormula)) + worksheet()->mathRenderer()->rerender(m_textItem->document(), format); + + cursor = m_textItem->document()->find(QString(QChar::ObjectReplacementCharacter), cursor); + } +} + +WorksheetCursor MarkdownEntry::search(const QString& pattern, unsigned flags, + QTextDocument::FindFlags qt_flags, + const WorksheetCursor& pos) +{ + if (!(flags & WorksheetEntry::SearchText) || + (pos.isValid() && pos.entry() != this)) + return WorksheetCursor(); + + QTextCursor textCursor = m_textItem->search(pattern, qt_flags, pos); + if (textCursor.isNull()) + return WorksheetCursor(); + else + return WorksheetCursor(this, m_textItem, textCursor); +} + +void MarkdownEntry::layOutForWidth(qreal entry_zone_x, qreal w, bool force) +{ + if (size().width() == w && m_textItem->pos().x() == entry_zone_x && !force) + return; + + const qreal margin = worksheet()->isPrinting() ? 0 : RightMargin; + + m_textItem->setGeometry(entry_zone_x, 0, w - margin - entry_zone_x); + setSize(QSizeF(m_textItem->width() + margin + entry_zone_x, m_textItem->height() + VerticalMargin)); +} + +bool MarkdownEntry::eventFilter(QObject* object, QEvent* event) +{ + if(object == m_textItem) + { + if(event->type() == QEvent::GraphicsSceneMouseDoubleClick) + { + QGraphicsSceneMouseEvent* mouseEvent = dynamic_cast(event); + if(!mouseEvent) return false; + if(mouseEvent->button() == Qt::LeftButton) + { + if (rendered) + { + setPlainText(plain); + m_textItem->setCursorPosition(mouseEvent->pos()); + m_textItem->textCursor().clearSelection(); + rendered = false; + return true; + } + } + } + else if (event->type() == QEvent::KeyPress) + { + auto* key_event = static_cast(event); + if (key_event->matches(QKeySequence::Cancel)) + { + setRenderedHtml(html); + for (auto iter = foundMath.begin(); iter != foundMath.end(); iter++) + iter->second = false; + rendered = true; + markUpMath(); + if (worksheet()->embeddedMathEnabled()) + renderMath(); + + return true; + } + if (key_event->matches(QKeySequence::Paste)) + { + QClipboard *clipboard = QGuiApplication::clipboard(); + const QImage& clipboardImage = clipboard->image(); + if (!clipboardImage.isNull()) + { + int idx = 0; + static const QString clipboardImageNamePrefix = QLatin1String("clipboard_image_"); + for (auto& data : attachedImages) + { + const QString& name = data.first.path(); + if (name.startsWith(clipboardImageNamePrefix)) + { + bool isIntParsed = false; + int parsedIndex = name.right(name.size() - clipboardImageNamePrefix.size()).toInt(&isIntParsed); + if (isIntParsed) + idx = std::max(idx, parsedIndex); + } + } + idx++; + const QString& name = clipboardImageNamePrefix+QString::number(idx); + + addImageAttachment(name, clipboardImage); + return true; + } + } + } + else if (event->type() == QEvent::GraphicsSceneDrop) + { + auto* dragEvent = static_cast(event); + const QMimeData* mimeData = dragEvent->mimeData(); + if (mimeData->hasUrls()) + { + QList supportedFormats = QImageReader::supportedImageFormats(); + + for (const QUrl &url : mimeData->urls()) + { + const QString filename = url.toLocalFile(); + QFileInfo info(filename); + if (supportedFormats.contains(info.completeSuffix().toUtf8())) + { + QImage image(filename); + addImageAttachment(info.fileName(), image); + m_textItem->textCursor().insertText(QLatin1String("\n")); + } + } + return true; + } + } + } + return false; +} + +bool MarkdownEntry::wantToEvaluate() +{ + return !rendered; +} + +void MarkdownEntry::setRenderedHtml(const QString& html) +{ + m_textItem->setHtml(html); + m_textItem->denyEditing(); +} + +void MarkdownEntry::setPlainText(const QString& plain) +{ + QTextDocument* doc = m_textItem->document(); + doc->setPlainText(plain); + m_textItem->setDocument(doc); + m_textItem->allowEditing(); +} + +void MarkdownEntry::renderMath() +{ + QTextCursor cursor(m_textItem->document()); + for (int i = 0; i < (int)foundMath.size(); i++) + if (foundMath[i].second == false) + renderMathExpression(i+1, foundMath[i].first); +} + +void MarkdownEntry::handleMathRender(QSharedPointer result) +{ + if (!result->successful) + { + if (Settings::self()->showMathRenderError()) + { + QApplication::restoreOverrideCursor(); + KMessageBox::error(worksheetView(), result->errorMessage, i18n("Cantor Math Error")); + } + else + qDebug() << "MarkdownEntry: math render failed with message" << result->errorMessage; + return; + } + + setRenderedMath(result->jobId, result->renderedMath, result->uniqueUrl, result->image); +} + +void MarkdownEntry::renderMathExpression(int jobId, QString mathCode) +{ + QString latex; + Cantor::LatexRenderer::EquationType type; + std::tie(latex, type) = parseMathCode(mathCode); + if (!latex.isNull()) + worksheet()->mathRenderer()->renderExpression(jobId, latex, type, this, SLOT(handleMathRender(QSharedPointer))); +} + +std::pair MarkdownEntry::parseMathCode(QString mathCode) +{ + static const QLatin1String inlineDelimiter("$"); + static const QLatin1String displayedDelimiter("$$"); + + if (mathCode.startsWith(displayedDelimiter) && mathCode.endsWith(displayedDelimiter)) + { + mathCode.remove(0, 2); + mathCode.chop(2); + + if (mathCode[0] == QChar(6)) + mathCode.remove(0, 1); + + return std::make_pair(mathCode, Cantor::LatexRenderer::FullEquation); + } + else if (mathCode.startsWith(inlineDelimiter) && mathCode.endsWith(inlineDelimiter)) + { + mathCode.remove(0, 1); + mathCode.chop(1); + + if (mathCode[0] == QChar(6)) + mathCode.remove(0, 1); + + return std::make_pair(mathCode, Cantor::LatexRenderer::InlineEquation); + } + else if (mathCode.startsWith(QString::fromUtf8("\\begin{")) && mathCode.endsWith(QLatin1Char('}'))) + { + if (mathCode[1] == QChar(6)) + mathCode.remove(1, 1); + + return std::make_pair(mathCode, Cantor::LatexRenderer::CustomEquation); + } + else + return std::make_pair(QString(), Cantor::LatexRenderer::InlineEquation); +} + +void MarkdownEntry::setRenderedMath(int jobId, const QTextImageFormat& format, const QUrl& internal, const QImage& image) +{ + if ((int)foundMath.size() < jobId) + return; + + const auto& iter = foundMath.begin() + jobId-1; + + QTextCursor cursor = findMath(jobId); + + const QString delimiter = format.property(Cantor::Renderer::Delimiter).toString(); + QString searchText = delimiter + format.property(Cantor::Renderer::Code).toString() + delimiter; + + Cantor::LatexRenderer::EquationType type + = (Cantor::LatexRenderer::EquationType)format.intProperty(Cantor::Renderer::CantorFormula); + + // From findMath we will be first symbol of math expression + // So in order to select all symbols of the expression, we need to go to previous symbol first + // But it working strange sometimes: some times we need to go to previous character, sometimes not + // So the code tests that we on '$' symbol and if it isn't true, then we revert back + cursor.movePosition(QTextCursor::PreviousCharacter); + bool withDollarDelimiter = type == Cantor::LatexRenderer::InlineEquation || type == Cantor::LatexRenderer::FullEquation; + if (withDollarDelimiter && m_textItem->document()->characterAt(cursor.position()) != QLatin1Char('$')) + cursor.movePosition(QTextCursor::NextCharacter); + else if (type == Cantor::LatexRenderer::CustomEquation && m_textItem->document()->characterAt(cursor.position()) != QLatin1Char('\\') ) + cursor.movePosition(QTextCursor::NextCharacter); + + cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, searchText.size()); + + if (!cursor.isNull()) + { + m_textItem->document()->addResource(QTextDocument::ImageResource, internal, QVariant(image)); + + // Don't add new line for $$...$$ on document's begin and end + // And if we in block, which haven't non-space characters except out math expression + // In another sitation, Cantor will move rendered image into another QTextBlock + QTextCursor prevSymCursor = m_textItem->document()->find(QRegularExpression(QStringLiteral("[^\\s]")), + cursor, QTextDocument::FindBackward); + if (type == Cantor::LatexRenderer::FullEquation + && cursor.selectionStart() != 0 + && prevSymCursor.block() == cursor.block() + ) + { + cursor.insertBlock(); + + cursor.setPosition(prevSymCursor.position()+2, QTextCursor::KeepAnchor); + cursor.removeSelectedText(); + } + + cursor.insertText(QString(QChar::ObjectReplacementCharacter), format); + + bool atDocEnd = cursor.position() == m_textItem->document()->characterCount()-1; + QTextCursor nextSymCursor = m_textItem->document()->find(QRegularExpression(QStringLiteral("[^\\s]")), cursor); + if (type == Cantor::LatexRenderer::FullEquation && !atDocEnd && nextSymCursor.block() == cursor.block()) + { + cursor.setPosition(nextSymCursor.position()-1, QTextCursor::KeepAnchor); + cursor.removeSelectedText(); + cursor.insertBlock(); + } + + // Set that the formulas is rendered + iter->second = true; + + m_textItem->document()->clearUndoRedoStacks(); + } +} + +QTextCursor MarkdownEntry::findMath(int id) +{ + QTextCursor cursor(m_textItem->document()); + do + { + QTextCharFormat format = cursor.charFormat(); + if (format.intProperty(JobProperty) == id) + break; + } + while (cursor.movePosition(QTextCursor::NextCharacter)); + + return cursor; +} + +void MarkdownEntry::markUpMath() +{ + QTextCursor cursor(m_textItem->document()); + for (int i = 0; i < (int)foundMath.size(); i++) + { + if (foundMath[i].second) + continue; + + QString searchText = foundMath[i].first; + searchText.replace(QRegularExpression(QStringLiteral("\\s+")), QStringLiteral(" ")); + + cursor = m_textItem->document()->find(searchText, cursor); + + // Mark up founded math code + QTextCharFormat format = cursor.charFormat(); + // Use index+1 in math array as property tag + format.setProperty(JobProperty, i+1); + + // We found the math expression, so remove 'marker' (ACII symbol 'Acknowledgement') + // The marker have been placed after "$" or "$$" + // We remove the marker, only if it presents + QString codeWithoutMarker = foundMath[i].first; + if (searchText.startsWith(QLatin1String("$$"))) + { + if (codeWithoutMarker[2] == QChar(6)) + codeWithoutMarker.remove(2, 1); + } + else if (searchText.startsWith(QLatin1String("$"))) + { + if (codeWithoutMarker[1] == QChar(6)) + codeWithoutMarker.remove(1, 1); + } + else if (searchText.startsWith(QLatin1String("\\"))) + { + if (codeWithoutMarker[1] == QChar(6)) + codeWithoutMarker.remove(1, 1); + } + cursor.insertText(codeWithoutMarker, format); + } +} + +void MarkdownEntry::insertImage() +{ + KConfigGroup conf(KSharedConfig::openConfig(), QLatin1String("MarkdownEntry")); + const QString& dir = conf.readEntry(QLatin1String("LastImageDir"), QString()); + + QString formats; + for (const QByteArray& format : QImageReader::supportedImageFormats()) + formats += QLatin1String("*.") + QLatin1String(format.constData()) + QLatin1Char(' '); + + const QString& path = QFileDialog::getOpenFileName(worksheet()->worksheetView(), + i18n("Open image file"), + dir, + i18n("Images (%1)", formats)); + if (path.isEmpty()) + return; //cancel was clicked in the file-dialog + + //save the last used directory, if changed + const int pos = path.lastIndexOf(QLatin1String("/")); + if (pos != -1) { + const QString& newDir = path.left(pos); + if (newDir != dir) + conf.writeEntry(QLatin1String("LastImageDir"), newDir); + } + + QImageReader reader(path); + const QImage& img = reader.read(); + if (!img.isNull()) + { + const QString& name = QFileInfo(path).fileName(); + addImageAttachment(name, img); + } + else + KMessageBox::error(worksheetView(), + i18n("Failed to read the image \"%1\". Error \"%2\"", path, reader.errorString()), + i18n("Cantor")); +} + +void MarkdownEntry::clearAttachments() +{ + for (auto& attachment: attachedImages) + { + const QUrl& url = attachment.first; + m_textItem->document()->addResource(QTextDocument::ImageResource, url, QVariant()); + } + attachedImages.clear(); + animateSizeChange(); +} + +void MarkdownEntry::enterEditMode() +{ + setPlainText(plain); + m_textItem->textCursor().clearSelection(); + rendered = false; +} + +QString MarkdownEntry::plainText() const +{ + return m_textItem->toPlainText(); +} + +void MarkdownEntry::addImageAttachment(const QString& name, const QImage& image) +{ + QUrl url; + url.setScheme(QLatin1String("attachment")); + url.setPath(name); + + attachedImages.push_back(std::make_pair(url, QLatin1String("image/png"))); + m_textItem->document()->addResource(QTextDocument::ImageResource, url, QVariant(image)); + + QTextCursor cursor = m_textItem->textCursor(); + cursor.insertText(QString::fromLatin1("![%1](attachment:%1)").arg(name)); + + animateSizeChange(); +} diff --git a/src/markdownentry.h b/src/markdownentry.h new file mode 100644 index 0000000..5cadfbd --- /dev/null +++ b/src/markdownentry.h @@ -0,0 +1,89 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Yifei Wu +*/ + +#ifndef MARKDOWNENTRY_H +#define MARKDOWNENTRY_H + +#include + +#include + +#include "worksheetentry.h" +#include "worksheettextitem.h" + +#include "mathrendertask.h" +#include "lib/latexrenderer.h" + +class QJsonObject; + +class MarkdownEntry : public WorksheetEntry +{ + Q_OBJECT + public: + explicit MarkdownEntry(Worksheet* worksheet); + ~MarkdownEntry() override = default; + + enum {Type = UserType + 7}; + int type() const override; + + bool isEmpty() override; + + bool acceptRichText() override; + + bool focusEntry(int pos = WorksheetTextItem::TopLeft, qreal xCoord=0) override; + + void setContent(const QString& content) override; + void setContent(const QDomElement& content, const KZip& file) override; + void setContentFromJupyter(const QJsonObject& cell) override; + + QDomElement toXml(QDomDocument& doc, KZip* archive) override; + QJsonValue toJupyterJson() override; + QString toPlain(const QString& commandSep, const QString& commentStartingSeq, const QString& commentEndingSeq) override; + + QString plainText() const; + + void layOutForWidth(qreal entry_zone_x, qreal w, bool force = false) override; + + WorksheetCursor search(const QString& pattern, unsigned flags, + QTextDocument::FindFlags qt_flags, + const WorksheetCursor& pos = WorksheetCursor()) override; + + public Q_SLOTS: + bool evaluate(WorksheetEntry::EvaluationOption evalOp = FocusNext) override; + void updateEntry() override; + void populateMenu(QMenu* menu, QPointF pos) override; + + protected: + bool renderMarkdown(QString& plain); + bool eventFilter(QObject* object, QEvent* event) override; + bool wantToEvaluate() override; + void setRenderedHtml(const QString& html); + void setPlainText(const QString& plain); + void renderMath(); + void renderMathExpression(int jobId, QString mathCode); + void setRenderedMath(int jobId, const QTextImageFormat& format, const QUrl& internal, const QImage& image); + QTextCursor findMath(int id); + void markUpMath(); + void addImageAttachment(const QString& name, const QImage& image); + + static std::pair parseMathCode(QString mathCode); + + protected Q_SLOTS: + void handleMathRender(QSharedPointer result); + void insertImage(); + void clearAttachments(); + void enterEditMode(); + + protected: + WorksheetTextItem* m_textItem; + QString plain; + QString html; + bool rendered; + std::vector> attachedImages; + std::vector> foundMath; + static const int JobProperty = 10000; +}; + +#endif //MARKDOWNENTRY_H diff --git a/src/mathrender.cpp b/src/mathrender.cpp new file mode 100644 index 0000000..0fc95ae --- /dev/null +++ b/src/mathrender.cpp @@ -0,0 +1,93 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Sirgienko Nikita +*/ + +#include "mathrender.h" + +#include +#include +#include +#include +#include + +#include "mathrendertask.h" +#include "lib/renderer.h" + +MathRenderer::MathRenderer(): m_scale(1.0), m_useHighRes(false) +{ + qRegisterMetaType>(); +} + +MathRenderer::~MathRenderer() +{ +} + +bool MathRenderer::mathRenderAvailable() +{ + QFileInfo info(QStandardPaths::findExecutable(QLatin1String("pdflatex"))); + return info.exists() && info.isExecutable(); +} + +qreal MathRenderer::scale() +{ + return m_scale; +} + +void MathRenderer::setScale(qreal scale) +{ + m_scale = scale; +} + +void MathRenderer::useHighResolution(bool b) +{ + m_useHighRes = b; +} + +void MathRenderer::renderExpression(int jobId, const QString& mathExpression, Cantor::LatexRenderer::EquationType type, const QObject* receiver, const char* resultHandler) +{ + MathRenderTask* task = new MathRenderTask(jobId, mathExpression, type, m_scale, m_useHighRes); + task->setHandler(receiver, resultHandler); + task->setAutoDelete(false); + + QThreadPool::globalInstance()->start(task); +} + +void MathRenderer::rerender(QTextDocument* document, const QTextImageFormat& math) +{ + const QString& filename = math.property(Cantor::Renderer::ImagePath).toString(); + if (!QFile::exists(filename)) + return; + + QString errorMessage; + QImage img = Cantor::Renderer::pdfRenderToImage(QUrl::fromLocalFile(filename), m_scale, m_useHighRes, nullptr, &errorMessage); + bool success = img.isNull() == false; + + if (success) + { + QUrl internal(math.name()); + document->addResource(QTextDocument::ImageResource, internal, QVariant(img)); + } + else + { + qDebug() << "Rerender embedded math failed with message: " << errorMessage; + } +} + +std::pair MathRenderer::renderExpressionFromPdf(const QString& filename, const QString& uuid, const QString& code, Cantor::LatexRenderer::EquationType type, bool* outSuccess) +{ + if (!QFile::exists(filename)) + { + if (outSuccess) + *outSuccess = false; + return std::make_pair(QTextImageFormat(), QImage()); + } + + bool success; QString errorMessage; + const auto& data = MathRenderTask::renderPdfToFormat(filename, code, uuid, type, m_scale, m_useHighRes, &success, &errorMessage); + if (success == false) + qDebug() << "Render embedded math from pdf failed with message: " << errorMessage; + if (outSuccess) + *outSuccess = success; + return data; +} diff --git a/src/mathrender.h b/src/mathrender.h new file mode 100644 index 0000000..c471145 --- /dev/null +++ b/src/mathrender.h @@ -0,0 +1,66 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Sirgienko Nikita +*/ +#ifndef MATHRENDER_H +#define MATHRENDER_H + +#include +#include +#include + +#include "lib/latexrenderer.h" + +/** + * Special class for rendering embedded math in MarkdownEntry and TextEntry + * Instead of LatexRenderer+EpsRenderer provide all needed functianality in one class + * Even if we add some speed optimization in future, API of the class probably won't change + */ +class MathRenderer : public QObject { + Q_OBJECT + public: + + MathRenderer(); + ~MathRenderer(); + + static bool mathRenderAvailable(); + + // Resulution contol + void setScale(qreal scale); + qreal scale(); + void useHighResolution(bool b); + + /** + * This function will run render task in Qt thread pool and + * call resultHandler SLOT with MathRenderResult* argument on finish + * receiver will be managed about pointer, task only create it + */ + void renderExpression( + int jobId, + const QString& mathExpression, + Cantor::LatexRenderer::EquationType type, + const QObject *receiver, + const char *resultHandler); + + + /** + * Rerender renderer math expression in document + * Unlike MathRender::renderExpression this method isn't async, because + * rerender already rendered math is not long operation + */ + void rerender(QTextDocument* document, const QTextImageFormat& math); + + /** + * Render math expression from existing .pdf + * Like MathRenderer::rerender is blocking + */ + std::pair renderExpressionFromPdf( + const QString& filename, const QString& uuid, const QString& code, Cantor::LatexRenderer::EquationType type, bool* success + ); + + private: + double m_scale; + bool m_useHighRes; +}; + +#endif /* MATHRENDER_H */ diff --git a/src/mathrendertask.cpp b/src/mathrendertask.cpp new file mode 100644 index 0000000..6784715 --- /dev/null +++ b/src/mathrendertask.cpp @@ -0,0 +1,234 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Sirgienko Nikita +*/ + +#include "mathrendertask.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lib/renderer.h" + +static const QLatin1String mathTex("\\documentclass%9{minimal}"\ + "\\usepackage{amsfonts,amssymb}"\ + "\\usepackage{amsmath}"\ + "\\usepackage[utf8]{inputenc}"\ + "\\usepackage[active,displaymath,textmath,tightpage]{preview}"\ + "\\usepackage{color}"\ + "\\setlength\\PreviewBorder{0pt}"\ + "\\begin{document}"\ + "\\begin{preview}"\ + "\\setlength{\\fboxsep}{0.2pt}"\ + "$"\ + "\\colorbox[rgb]{%1,%2,%3}{"\ + "\\color[rgb]{%4,%5,%6}"\ + "\\fontsize{%7}{%7}\\selectfont"\ + "%8}"\ + "$"\ + "\\end{preview}" + "\\end{document}"); + +static const QLatin1String eqnHeader("$\\displaystyle %1$"); +static const QLatin1String inlineEqnHeader("$%1$"); + +MathRenderTask::MathRenderTask( + int jobId, + const QString& code, + Cantor::LatexRenderer::EquationType type, + double scale, + bool highResolution + ): m_jobId(jobId), m_code(code), m_type(type), m_scale(scale), m_highResolution(highResolution) +{ + + KColorScheme scheme(QPalette::Active); + m_backgroundColor = scheme.background().color(); + m_foregroundColor = scheme.foreground().color(); +} + +void MathRenderTask::setHandler(const QObject* receiver, const char* resultHandler) +{ + connect(this, SIGNAL(finish(QSharedPointer)), receiver, resultHandler); +} + +void MathRenderTask::run() +{ + qDebug()<<"MathRenderTask::run " << m_jobId; + QSharedPointer result(new MathRenderResult()); + + const QString& tempDir=QStandardPaths::writableLocation(QStandardPaths::TempLocation); + + QTemporaryFile texFile(tempDir + QDir::separator() + QLatin1String("cantor_tex-XXXXXX.tex")); + texFile.open(); + + // make sure we have preview.sty available + if (!tempDir.contains(QLatin1String("preview.sty"))) + { + QString file = QStandardPaths::locate(QStandardPaths::AppDataLocation, QLatin1String("latex/preview.sty")); + + if (file.isEmpty()) + file = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QLatin1String("cantor/latex/preview.sty")); + + if (file.isEmpty()) + { + result->successful = false; + result->errorMessage = QString::fromLatin1("LaTeX style file preview.sty not found."); + finalize(result); + return; + } + else + QFile::copy(file, tempDir + QDir::separator() + QLatin1String("preview.sty")); + } + QString expressionTex=mathTex; + + expressionTex=expressionTex + .arg(m_backgroundColor.redF()).arg(m_backgroundColor.greenF()).arg(m_backgroundColor.blueF()) + .arg(m_foregroundColor.redF()).arg(m_foregroundColor.greenF()).arg(m_foregroundColor.blueF()); + int fontPointSize = QApplication::font().pointSize(); + expressionTex=expressionTex.arg(fontPointSize); + + switch(m_type) + { + case Cantor::LatexRenderer::FullEquation: + expressionTex=expressionTex.arg(eqnHeader, QString()); + break; + case Cantor::LatexRenderer::InlineEquation: + expressionTex=expressionTex.arg(inlineEqnHeader, QString()); + break; + case Cantor::LatexRenderer::CustomEquation: + expressionTex=expressionTex.arg(QLatin1String("%1"), QLatin1String("[preview]")); + break; + } + + QString latex = m_code; + // Looks hacky, but no sure, how do it better without overhead (like new latex type in lib/latexrender) + static const QString& equationBegin = QLatin1String("\\begin{equation}"); + static const QString& equationEnd = QLatin1String("\\end{equation}"); + if (latex.startsWith(equationBegin) && latex.endsWith(equationEnd)) + { + latex.remove(0, equationBegin.size()); + latex.chop(equationEnd.size()); + latex = QLatin1String("\\begin{equation*}") + latex + QLatin1String("\\end{equation*}"); + } + + expressionTex=expressionTex.arg(latex); + + texFile.write(expressionTex.toUtf8()); + texFile.flush(); + + QProcess p; + p.setWorkingDirectory(tempDir); + + // Create unique uuid for this job + // It will be used as pdf filename, for preventing names collisions + // And as internal url path too + const QString& uuid = Cantor::LatexRenderer::genUuid(); + + const QString& pdflatex = QStandardPaths::findExecutable(QLatin1String("pdflatex")); + p.setProgram(pdflatex); + p.setArguments({QStringLiteral("-jobname=cantor_") + uuid, QStringLiteral("-halt-on-error"), texFile.fileName()}); + + p.start(); + p.waitForFinished(); + + if (p.exitCode() != 0) + { + // pdflatex render failed and we haven't pdf file + result->successful = false; + + QString renderErrorText = QString::fromUtf8(p.readAllStandardOutput()); + renderErrorText.remove(0, renderErrorText.indexOf(QLatin1Char('!'))); + renderErrorText.remove(renderErrorText.indexOf(QLatin1String("! ==> Fatal error occurred")), renderErrorText.size()); + renderErrorText = renderErrorText.trimmed(); + result->errorMessage = renderErrorText; + + finalize(result); + texFile.setAutoRemove(false); //Useful for debug + return; + } + + //Clean up .aux and .log files + QString pathWithoutExtension = tempDir + QDir::separator() + QLatin1String("cantor_")+uuid; + QFile::remove(pathWithoutExtension + QLatin1String(".log")); + QFile::remove(pathWithoutExtension + QLatin1String(".aux")); + + // We shouldn't remove pdf file, because this file used in future in an another parts of Cantor + // For example, this pdf will copied into .cws file on save + const QString& pdfFileName = pathWithoutExtension + QLatin1String(".pdf"); + + bool success; QString errorMessage; + const auto& data = renderPdfToFormat(pdfFileName, m_code, uuid, m_type, m_scale, m_highResolution, &success, &errorMessage); + result->successful = success; + result->errorMessage = errorMessage; + if (success == false) + { + finalize(result); + return; + } + + result->renderedMath = data.first; + result->image = data.second; + result->jobId = m_jobId; + + QUrl internal; + internal.setScheme(QLatin1String("internal")); + internal.setPath(uuid); + result->uniqueUrl = internal; + + finalize(result); +} + +void MathRenderTask::finalize(QSharedPointer result) +{ + emit finish(result); + deleteLater(); +} + +std::pair MathRenderTask::renderPdfToFormat(const QString& filename, const QString& code, const QString uuid, Cantor::LatexRenderer::EquationType type, double scale, bool highResulution, bool* success, QString* errorReason) +{ + QSizeF size; + const QImage& image = Cantor::Renderer::pdfRenderToImage(QUrl::fromLocalFile(filename), scale, highResulution, &size, errorReason); + if (success) + *success = image.isNull() == false; + + if (success && *success == false) + return std::make_pair(QTextImageFormat(), QImage()); + + QTextImageFormat format; + + QUrl internal; + internal.setScheme(QLatin1String("internal")); + internal.setPath(uuid); + + format.setName(internal.url()); + format.setWidth(size.width()); + format.setHeight(size.height()); + format.setProperty(Cantor::Renderer::CantorFormula, type); + format.setProperty(Cantor::Renderer::ImagePath, filename); + format.setProperty(Cantor::Renderer::Code, code); + format.setVerticalAlignment(QTextCharFormat::AlignBaseline); + + switch(type) + { + case Cantor::LatexRenderer::FullEquation: + format.setProperty(Cantor::Renderer::Delimiter, QLatin1String("$$")); + break; + + case Cantor::LatexRenderer::InlineEquation: + format.setProperty(Cantor::Renderer::Delimiter, QLatin1String("$")); + break; + + case Cantor::LatexRenderer::CustomEquation: + format.setProperty(Cantor::Renderer::Delimiter, QLatin1String("")); + break; + } + + return std::make_pair(std::move(format), std::move(image)); +} diff --git a/src/mathrendertask.h b/src/mathrendertask.h new file mode 100644 index 0000000..3925c82 --- /dev/null +++ b/src/mathrendertask.h @@ -0,0 +1,78 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Sirgienko Nikita +*/ +#ifndef MATHRENDERTASK_H +#define MATHRENDERTASK_H + +#include +#include +#include +#include +#include +#include +#include + +#include "lib/latexrenderer.h" + +class QMutex; + +struct MathRenderResult +{ + int jobId; + bool successful; + QString errorMessage; + QTextImageFormat renderedMath; + QUrl uniqueUrl; + QImage image; +}; +Q_DECLARE_METATYPE(MathRenderResult) +Q_DECLARE_METATYPE(QSharedPointer) + +class MathRenderTask : public QObject, public QRunnable +{ + Q_OBJECT + public: + MathRenderTask( + int jobId, + const QString& code, + Cantor::LatexRenderer::EquationType type, + double scale, + bool highResolution + ); + + void setHandler(const QObject *receiver, const char *resultHandler); + + void run() override; + + static std::pair renderPdfToFormat( + const QString& filename, + const QString& code, + const QString uuid, + Cantor::LatexRenderer::EquationType type, + double scale, + bool highResulution, + bool* success = nullptr, + QString* errorReason = nullptr + ); + + static QString genUuid(); + + Q_SIGNALS: + void finish(QSharedPointer result); + + private: + void finalize(QSharedPointer result); + + private: + int m_jobId; + QString m_code; + Cantor::LatexRenderer::EquationType m_type; + double m_scale; + bool m_highResolution; + QColor m_backgroundColor; + QColor m_foregroundColor; + +}; + +#endif /* MATHRENDERTASK_H */ diff --git a/src/org.kde.cantor.desktop b/src/org.kde.cantor.desktop new file mode 100644 index 0000000..acb9bc5 --- /dev/null +++ b/src/org.kde.cantor.desktop @@ -0,0 +1,136 @@ +[Desktop Entry] +Name=Cantor +Name[ar]=كانتور +Name[bg]=Cantor +Name[bs]=Cantor +Name[ca]=Cantor +Name[ca@valencia]=Cantor +Name[cs]=Cantor +Name[da]=Cantor +Name[de]=Cantor +Name[el]=Cantor +Name[en_GB]=Cantor +Name[eo]=Cantor +Name[es]=Cantor +Name[et]=Cantor +Name[eu]=Cantor +Name[fa]=کانتور +Name[fi]=Cantor +Name[fr]=Cantor +Name[ga]=Cantor +Name[gl]=Cantor +Name[hi]=केन्टॉर +Name[hr]=Cantor +Name[hu]=Cantor +Name[ia]=Cantor +Name[it]=Cantor +Name[ja]=Cantor +Name[ka]=Cantor +Name[kk]=Cantor +Name[km]=Cantor +Name[ko]=Cantor +Name[lv]=Cantor +Name[nb]=Cantor +Name[nds]=Cantor +Name[nl]=Cantor +Name[nn]=Cantor +Name[pa]=ਕਨਟੁਰ +Name[pl]=Cantor +Name[pt]=Cantor +Name[pt_BR]=Cantor +Name[ru]=Cantor +Name[sk]=Cantor +Name[sl]=Cantor +Name[sv]=Cantor +Name[ta]=கேண்ட்டொர் +Name[te]=కన్టొర్ +Name[tr]=Cantor +Name[ug]=Cantor +Name[uk]=Cantor +Name[x-test]=xxCantorxx +Name[zh_CN]=Cantor +Name[zh_TW]=Cantor +Exec=cantor -qwindowicon cantor -qwindowtitle %c %U +Icon=cantor +Type=Application +X-DocPath=cantor/index.html +GenericName=Frontend to Mathematical Software +GenericName[ar]=واجهة للبرامج الرياضيات +GenericName[bg]=Математическа програма +GenericName[ca]=Frontal per a programari matemàtic +GenericName[ca@valencia]=Frontal per a programari matemàtic +GenericName[cs]=Uživatelské rozhraní matematického softwaru +GenericName[de]=Oberfläche für mathematische Software +GenericName[el]=Περιβάλλον για μαθηματικό λογισμικό +GenericName[en_GB]=Frontend to Mathematical Software +GenericName[es]=Interfaz para software matemático +GenericName[et]=Matemaatikatarkvara kasutajaliides +GenericName[eu]=Matematika softwarerako aurrealdekoa +GenericName[fa]=ظاهر برای نرم افزار ریاضی +GenericName[fi]=Käyttöliittymä matemaattisille ohjelmistoille +GenericName[fr]=Interface pour des logiciels de mathématiques +GenericName[gl]=Interface de software matemático +GenericName[hi]=गणितीय सॉफ़्टवेर के लिए अग्रभाग +GenericName[hu]=Előtétprogram matematikai alkalmazásokhoz +GenericName[ia]=Interfacie a Software Matematic +GenericName[it]=Interfaccia per software matematici +GenericName[ka]=მათემატიკური პროგრამის წინაბოლო +GenericName[ko]=수학 소프트웨어 프론트엔드 +GenericName[nl]=Frontend tot wiskundige software +GenericName[nn]=Grafisk grensesnitt til matematikkprogram +GenericName[pa]=ਗਣਿਤ ਸਾਫਟਵੇਅਰਾਂ ਲਈ ਫਰੰਟਐਂਡ ਹੈ +GenericName[pl]=Nakładka dla oprogramowania matematycznego +GenericName[pt]=Interface de Aplicações Matemáticas +GenericName[pt_BR]=Interface para software de matemática +GenericName[ru]=Оболочка к системам компьютерной алгебры +GenericName[sk]=Frontend pre matematický softvér +GenericName[sl]=Začelje za matematično programsko opremo +GenericName[sv]=Gränssnitt till matematisk programvara +GenericName[ta]=கணித நிரல்களுக்கான இடைமுகப்பு +GenericName[tr]=Matematik Yazılımı için Ön Uç +GenericName[uk]=Графічна оболонка до математичного програмного забезпечення +GenericName[x-test]=xxFrontend to Mathematical Softwarexx +GenericName[zh_CN]=数学软件前端 +GenericName[zh_TW]=數學軟體的前端介面 +Comment=KDE Frontend to Mathematical Software +Comment[ar]=واجهة كدي لبرامج الرياضيات +Comment[bg]=Математическа програма на KDE +Comment[ca]=Frontal del KDE per a programari matemàtic +Comment[ca@valencia]=Frontal de KDE per a programari matemàtic +Comment[cs]=Uživatelské rozhraní matematického softwaru pro KDE +Comment[da]=KDE-brugerflade til matematisk software +Comment[de]=KDE-Oberfläche für mathematische Software +Comment[el]=Περιβάλλον για μαθηματικό λογισμικό +Comment[en_GB]=KDE Frontend to Mathematical Software +Comment[es]=Interfaz de KDE para software matemático +Comment[et]=KDE matemaatikatarkvara kasutajaliides +Comment[eu]=Matematika softwarerako KDEren aurrealdekoa +Comment[fa]=ظاهر KDE برای نرم افزار ریاضی +Comment[fi]=KDE:n käyttöliittymä matemaattisille ohjelmistoille +Comment[fr]=Interface KDE pour des logiciels de mathématiques +Comment[gl]=Interface de KDE de software matemático +Comment[hi]=गणितीय सॉफ़्टवेर के लिए केडीई अग्रभाग +Comment[hu]=KDE előtétprogram matematikai alkalmazásokhoz +Comment[ia]=Interfacie de KDE a Software Matematic +Comment[it]=Interfaccia KDE per software matematici +Comment[ka]=KDE -ის წინაბოლო მათემატიკური პროგრამებისთვის +Comment[ko]=KDE 수학 소프트웨어 프론트엔드 +Comment[nl]=KDE-frontend tot wiskundige software +Comment[nn]=KDE-grensesnitt til matematikkprogram +Comment[pa]=ਗਣਿਤ ਸਾਫਟਵੇਅਰਾਂ ਲਈ ਕੇਡੀਈ ਫਰੰਟਐਂਡ ਹੈ +Comment[pl]=Nakładka KDE dla oprogramowania matematycznego +Comment[pt]=Interface para o KDE de Aplicações Matemáticas +Comment[pt_BR]=Interface do KDE para software de matemática +Comment[ru]=Оболочка к системам компьютерной алгебры для KDE +Comment[sk]=KDE Frontend pre matematický softvér +Comment[sl]=KDE-jevo začelje za matematično programsko opremo +Comment[sv]=KDE-gränssnitt till matematisk programvara +Comment[ta]=கணித நிரல்களுக்கான கே.டீ.யீ. இடைமுகப்பு +Comment[tr]=Matematik Yazılımı KDE Ön Ucu +Comment[uk]=Графічна оболонка KDE до математичного програмного забезпечення +Comment[x-test]=xxKDE Frontend to Mathematical Softwarexx +Comment[zh_CN]=数学软件的 KDE 前端 +Comment[zh_TW]=KDE 數學軟體的前端介面 +Categories=Qt;KDE;Education;Math;Science; +MimeType=application/x-cantor; +X-DBUS-ServiceName=org.kde.cantor diff --git a/src/pagebreakentry.cpp b/src/pagebreakentry.cpp new file mode 100644 index 0000000..0435672 --- /dev/null +++ b/src/pagebreakentry.cpp @@ -0,0 +1,178 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#include "pagebreakentry.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "lib/jupyterutils.h" + +PageBreakEntry::PageBreakEntry(Worksheet* worksheet) + : WorksheetEntry(worksheet) +{ + m_msgItem = new WorksheetTextItem(this); + + QTextCursor cursor = m_msgItem->textCursor(); + KColorScheme color = KColorScheme(QPalette::Normal, KColorScheme::View); + QTextCharFormat cformat(cursor.charFormat()); + cformat.setForeground(color.foreground(KColorScheme::InactiveText)); + + cursor.insertText(i18n("--- Page Break ---"), cformat); + m_msgItem->setAlignment(Qt::AlignCenter); + + setFlag(QGraphicsItem::ItemIsFocusable); +} + +bool PageBreakEntry::isEmpty() +{ + return false; +} + +int PageBreakEntry::type() const +{ + return Type; +} + +void PageBreakEntry::populateMenu(QMenu* menu, QPointF pos) +{ + WorksheetEntry::populateMenu(menu, pos); +} + +bool PageBreakEntry::acceptRichText() +{ + return false; +} + +void PageBreakEntry::setContent(const QString& content) +{ + Q_UNUSED(content); + return; +} + +void PageBreakEntry::setContent(const QDomElement& content, const KZip& file) +{ + Q_UNUSED(content); + Q_UNUSED(file); + return; +} + +void PageBreakEntry::setContentFromJupyter(const QJsonObject& cell) +{ + Q_UNUSED(cell); + return; +} + +QJsonValue PageBreakEntry::toJupyterJson() +{ + QJsonObject root; + + root.insert(QLatin1String("cell_type"), QLatin1String("raw")); + QJsonObject metadata; + + // "raw_mimetype" vs "format"? + // See https://github.com/jupyter/notebook/issues/4730 + // For safety set both keys + metadata.insert(QLatin1String("format"), QLatin1String("text/latex")); + metadata.insert(QLatin1String("raw_mimetype"), QLatin1String("text/latex")); + + QJsonObject cantor; + cantor.insert(QLatin1String("from_page_break"), true); + metadata.insert(Cantor::JupyterUtils::cantorMetadataKey, cantor); + + root.insert(Cantor::JupyterUtils::metadataKey, metadata); + Cantor::JupyterUtils::setSource(root, QLatin1String("\\pagebreak")); + + return root; +} + +QDomElement PageBreakEntry::toXml(QDomDocument& doc, KZip* archive) +{ + Q_UNUSED(archive); + + QDomElement pgbrk = doc.createElement(QLatin1String("PageBreak")); + return pgbrk; +} + +QString PageBreakEntry::toPlain(const QString& commandSep, const QString& commentStartingSeq, const QString& commentEndingSeq) +{ + Q_UNUSED(commandSep); + + return commentStartingSeq + QLatin1String("page break") + commentEndingSeq; +} + +void PageBreakEntry::layOutForWidth(qreal entry_zone_x, qreal w, bool force) +{ + if (size().width() == w && m_msgItem->pos().x() == entry_zone_x && !force) + return; + + const qreal margin = worksheet()->isPrinting() ? 0 : RightMargin; + + if (m_msgItem->isVisible()) { + m_msgItem->setGeometry(entry_zone_x, 0, w - margin - entry_zone_x, true); + + setSize(QSizeF(m_msgItem->width() + margin + entry_zone_x, m_msgItem->height() + VerticalMargin)); + } else { + setSize(QSizeF(w, 0)); + } +} + +bool PageBreakEntry::evaluate(EvaluationOption evalOp) +{ + evaluateNext(evalOp); + return true; +} + +void PageBreakEntry::updateEntry() +{ + if (worksheet()->isPrinting()) { + m_msgItem->setVisible(false); + recalculateSize(); + } else if (!m_msgItem->isVisible()) { + m_msgItem->setVisible(true); + recalculateSize(); + } + return; +} + +/* +void PageBreakEntry::paint(QPainter* painter, const QStyleOptionGraphicsItem*, + QWidget*) +{ + if (worksheet()->isPrinting()) { + QPaintDevice* device = painter->paintEngine()->paintDevice(); + QPrinter* printer = qobject_cast(device); + if (printer) + printer->newPage(); + } +} +*/ + +bool PageBreakEntry::wantToEvaluate() +{ + return false; +} + +bool PageBreakEntry::wantFocus() +{ + return false; +} + +bool PageBreakEntry::isConvertableToPageBreakEntry(const QJsonObject& cell) +{ + if (!Cantor::JupyterUtils::isRawCell(cell)) + return false; + + QJsonObject metadata = Cantor::JupyterUtils::getCantorMetadata(cell); + QJsonValue value = metadata.value(QLatin1String("from_page_break")); + + return value.isBool() && value.toBool() == true; +} + diff --git a/src/pagebreakentry.h b/src/pagebreakentry.h new file mode 100644 index 0000000..b2f43fc --- /dev/null +++ b/src/pagebreakentry.h @@ -0,0 +1,53 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#ifndef PAGEBREAKENTRY_H +#define PAGEBREAKENTRY_H + +#include "worksheetentry.h" + +class WorksheetTextItem; + +class PageBreakEntry : public WorksheetEntry +{ + Q_OBJECT + + public: + explicit PageBreakEntry(Worksheet* worksheet); + ~PageBreakEntry() override = default; + + enum {Type = UserType + 3}; + int type() const override; + + bool isEmpty() override; + bool acceptRichText() override; + void setContent(const QString& content) override; + void setContent(const QDomElement& content, const KZip& file) override; + void setContentFromJupyter(const QJsonObject & cell) override; + static bool isConvertableToPageBreakEntry(const QJsonObject& cell); + QDomElement toXml(QDomDocument& doc, KZip* archive) override; + QJsonValue toJupyterJson() override; + QString toPlain(const QString& commandSep, const QString& commentStartingSeq, const QString& commentEndingSeq) override; + + void layOutForWidth(qreal entry_zone_x, qreal w, bool force = false) override; + + //void paint(QPainter* painter, const QStyleOptionGraphicsItem * option, + // QWidget * widget = 0); + + public Q_SLOTS: + bool evaluate(WorksheetEntry::EvaluationOption evalOp = FocusNext) override; + void updateEntry() override; + void populateMenu(QMenu* menu, QPointF pos) override; + + protected: + bool wantToEvaluate() override; + bool wantFocus() override; + + private: + WorksheetTextItem* m_msgItem; +}; + +#endif /* PAGEBREAKENTRY_H */ + diff --git a/src/panelplugins/CMakeLists.txt b/src/panelplugins/CMakeLists.txt new file mode 100644 index 0000000..6418844 --- /dev/null +++ b/src/panelplugins/CMakeLists.txt @@ -0,0 +1,16 @@ +function(add_panel name) + + kcoreaddons_add_plugin("cantor_${name}" + SOURCES ${ARGN} + INSTALL_NAMESPACE "cantor/panels") + + target_link_libraries("cantor_${name}" + cantorlibs) + +endfunction() + +add_subdirectory(helppanel) +add_subdirectory(variablemgr) +add_subdirectory(filebrowserpanel) +add_subdirectory(tocpanel) +add_subdirectory(documentationpanel) diff --git a/src/panelplugins/documentationpanel/CMakeLists.txt b/src/panelplugins/documentationpanel/CMakeLists.txt new file mode 100644 index 0000000..2f4127a --- /dev/null +++ b/src/panelplugins/documentationpanel/CMakeLists.txt @@ -0,0 +1,11 @@ +set( DocumentationPanelPlugin_SRCS + documentationpanelplugin.cpp + documentationpanelwidget.cpp +) + +add_panel(documentationpanelplugin ${DocumentationPanelPlugin_SRCS}) + +target_link_libraries(cantor_documentationpanelplugin + Qt5::Help + Qt5::WebEngine + Qt5::WebEngineWidgets) diff --git a/src/panelplugins/documentationpanel/documentationpanelplugin.cpp b/src/panelplugins/documentationpanel/documentationpanelplugin.cpp new file mode 100644 index 0000000..973b41b --- /dev/null +++ b/src/panelplugins/documentationpanel/documentationpanelplugin.cpp @@ -0,0 +1,69 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Shubham + SPDX-FileCopyrightText: 2020-2022 Alexander Semke +*/ + +#include "documentationpanelplugin.h" +#include "documentationpanelwidget.h" +#include "session.h" + +#include + +DocumentationPanelPlugin::DocumentationPanelPlugin(QObject* parent, QList args) : Cantor::PanelPlugin(parent) +{ + Q_UNUSED(args); +} + +DocumentationPanelPlugin::~DocumentationPanelPlugin() +{ +} + +QWidget* DocumentationPanelPlugin::widget() +{ + if(!m_widget) + { + m_widget = new DocumentationPanelWidget(parentWidget()); + connect(m_cantorShell, SIGNAL(requestDocumentation(QString)), m_widget, SLOT(contextSensitiveHelp(QString))); + } + + return m_widget; +} + +bool DocumentationPanelPlugin::showOnStartup() +{ + return true; +} + +void DocumentationPanelPlugin::connectToShell(QObject* cantorShell) +{ + m_cantorShell = cantorShell; + connect(cantorShell, SIGNAL(requestDocumentation(QString)), this, SIGNAL(visibilityRequested())); +} + +Cantor::PanelPlugin::State DocumentationPanelPlugin::saveState() +{ + Cantor::PanelPlugin::State state = PanelPlugin::saveState(); + state.inners.append(m_widget->url()); //save the currently shown URL in the web view + return state; +} + +void DocumentationPanelPlugin::restoreState(const Cantor::PanelPlugin::State& state) +{ + PanelPlugin::restoreState(state); + + //TODO: when using this panel in LabPlot this function is being called before widget(). + //the reason is not completely clear. call widget() here to make sure it's available. + if (!m_widget) + this->widget(); + + if(session() && m_widget) + { + m_widget->updateBackend(session()->backend()->name()); + if (state.inners.size() == 1) + m_widget->showUrl(state.inners.first().toUrl()); + } +} + +K_PLUGIN_FACTORY_WITH_JSON(documentationpanelplugin, "documentationpanelplugin.json", registerPlugin();) +#include "documentationpanelplugin.moc" diff --git a/src/panelplugins/documentationpanel/documentationpanelplugin.h b/src/panelplugins/documentationpanel/documentationpanelplugin.h new file mode 100644 index 0000000..bf672ea --- /dev/null +++ b/src/panelplugins/documentationpanel/documentationpanelplugin.h @@ -0,0 +1,33 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Shubham + SPDX-FileCopyrightText: 2020-2021 Alexander Semke +*/ + +#ifndef _DOCUMENTATIONPANELPLUGIN_H +#define _DOCUMENTATIONPANELPLUGIN_H + +#include "panelplugin.h" + +class DocumentationPanelWidget; + +class DocumentationPanelPlugin : public Cantor::PanelPlugin +{ + Q_OBJECT + public: + DocumentationPanelPlugin(QObject* parent, QList args); + ~DocumentationPanelPlugin() override; + + QWidget* widget() override; + bool showOnStartup() override; + void connectToShell(QObject* cantorShell) override; + + Cantor::PanelPlugin::State saveState() override; + void restoreState(const Cantor::PanelPlugin::State&) override; + + private: + DocumentationPanelWidget* m_widget = nullptr; + QObject* m_cantorShell = nullptr; +}; + +#endif /* _DOCUMENTATIONPANELPLUGIN_H */ diff --git a/src/panelplugins/documentationpanel/documentationpanelplugin.json b/src/panelplugins/documentationpanel/documentationpanelplugin.json new file mode 100644 index 0000000..b210951 --- /dev/null +++ b/src/panelplugins/documentationpanel/documentationpanelplugin.json @@ -0,0 +1,59 @@ +{ + "KPlugin": { + "Description": "A panel to display the official documentation of various backends", + "Description[ca@valencia]": "Un quadro per a mostrar la documentació oficial de diversos dorsals", + "Description[ca]": "Un plafó per a mostrar la documentació oficial de diversos dorsals", + "Description[de]": "Eine Leiste zur Anzeige der offiziellen Dokumentation für verschiedene Module", + "Description[el]": "Ένας πίνακας για την εμφάνιση της επίσημης τεκμηρίωσης διαφόρων συστημάτων υποστήριξης", + "Description[en_GB]": "A panel to display the official documentation of various backends", + "Description[es]": "Un panel para mostrar la documentación oficial de diversos motores", + "Description[fr]": "Un panneau pour afficher la documentation officielle des différents moteurs.", + "Description[ia]": "Un pannello per monstrar le documentation official de varie retroadministrationes", + "Description[it]": "Un pannello per visualizzare la documentazione ufficiale di vari motori", + "Description[ka]": "პანელი სხვადასხვა უკანაბოლოების ოფიციალური დოკუმენტაციის საჩვენებლად", + "Description[ko]": "다양한 백엔드의 공식 문서를 표시하는 패널", + "Description[nl]": "Een paneel voor de officiële documentatie van diverse backends", + "Description[pl]": "Okno do wyświetlania oficjalnej dokumentacji dla różnych silników", + "Description[pt]": "Um painel para mostrar a documentação oficial das várias infra-estruturas", + "Description[pt_BR]": "Um painel para mostrar a documentação oficial de várias infraestruturas", + "Description[ru]": "Панель для просмотра официальной документации различных систем", + "Description[sl]": "Plošča za prikaz uradne dokumentacije iz različnih ozadij", + "Description[sv]": "En panel för att visa den officiella dokumentationen av diverse bakgrundsprogram", + "Description[tr]": "Çeşitli arka uçların belgelendirmelerini görüntülemek için bir panel", + "Description[uk]": "Панель для показу офіційної документації до різних модулів обробки", + "Description[x-test]": "xxA panel to display the official documentation of various backendsxx", + "Description[zh_CN]": "显示各种后端官方文档的面板", + "Icon": "", + "Id": "DocumentationPanel", + "License": "GPL", + "Name": "Documentation", + "Name[ar]": "التّوثيق", + "Name[ca@valencia]": "Documentació", + "Name[ca]": "Documentació", + "Name[cs]": "Dokumentace", + "Name[de]": "Dokumentation", + "Name[el]": "Τεκμηρίωση", + "Name[en_GB]": "Documentation", + "Name[es]": "Documentación", + "Name[fr]": "Documentation", + "Name[ia]": "Documentation", + "Name[it]": "Documentazione", + "Name[ka]": "დოკუმენტაცია", + "Name[ko]": "문서", + "Name[nl]": "Documentatie", + "Name[pl]": "Dokumentacja", + "Name[pt]": "Documentação", + "Name[pt_BR]": "Documentação", + "Name[ru]": "Документация", + "Name[sl]": "Dokumentacija", + "Name[sv]": "Dokumentation", + "Name[tr]": "Belgelendirme", + "Name[uk]": "Документація", + "Name[x-test]": "xxDocumentationxx", + "Name[zh_CN]": "文档", + "ServiceTypes": [ + "Cantor/PanelPlugin" + ] + }, + "RequiredExtensions": "" +} diff --git a/src/panelplugins/documentationpanel/documentationpanelwidget.cpp b/src/panelplugins/documentationpanel/documentationpanelwidget.cpp new file mode 100644 index 0000000..1864296 --- /dev/null +++ b/src/panelplugins/documentationpanel/documentationpanelwidget.cpp @@ -0,0 +1,411 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Shubham + SPDX-FileCopyrightText: 2020-2021 Alexander Semke +*/ + +#include "cantor_macros.h" +#include "documentationpanelwidget.h" + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +DocumentationPanelWidget::DocumentationPanelWidget(QWidget* parent) : QWidget(parent) +{ + m_webEngineView = new QWebEngineView(this); + m_webEngineView->page()->action(QWebEnginePage::ViewSource)->setVisible(false); + m_webEngineView->page()->action(QWebEnginePage::OpenLinkInNewTab)->setVisible(false); + m_webEngineView->page()->action(QWebEnginePage::OpenLinkInNewWindow)->setVisible(false); + m_webEngineView->page()->action(QWebEnginePage::DownloadLinkToDisk)->setVisible(false); + m_webEngineView->page()->action(QWebEnginePage::Reload)->setVisible(false); + + ///////////////////////// + // Top toolbar layout // + /////////////////////// + QPushButton* home = new QPushButton(this); + home->setIcon(QIcon::fromTheme(QLatin1String("go-home"))); + home->setToolTip(i18nc("@button go to contents page", "Go to the contents")); + home->setEnabled(false); + + m_documentationSelector = new QComboBox(this); + + // real time searcher + m_search = new QLineEdit(this); + m_search->setPlaceholderText(i18nc("@info:placeholder", "Search through keywords...")); + m_search->setClearButtonEnabled(true); + + // Add a seperator + QFrame* seperator = new QFrame(this); + seperator->setFrameShape(QFrame::VLine); + seperator->setFrameShadow(QFrame::Sunken); + + QPushButton* findPage = new QPushButton(this); + findPage->setEnabled(false); + findPage->setIcon(QIcon::fromTheme(QLatin1String("edit-find"))); + findPage->setToolTip(i18nc("@info:tooltip", "Find in text of current documentation page")); + findPage->setShortcut(QKeySequence(/*Qt::CTRL + */Qt::Key_F3)); + + QPushButton* resetZoom = new QPushButton(this); + resetZoom->setEnabled(false); + resetZoom->setIcon(QIcon::fromTheme(QLatin1String("zoom-fit-best"))); + resetZoom->setToolTip(i18nc("@info:tooltip", "Reset zoom level to 100%")); + + QHBoxLayout* layout = new QHBoxLayout(this); + layout->addWidget(home); + layout->addWidget(m_documentationSelector); + layout->addWidget(m_search); + layout->addWidget(seperator); + layout->addWidget(findPage); + layout->addWidget(resetZoom); + + QWidget* toolBarContainer = new QWidget(this); + toolBarContainer->setLayout(layout); + + // Add zoom in, zoom out behaviour on SHIFT++ and SHIFT-- + auto zoomIn = new QShortcut(QKeySequence(Qt::SHIFT + Qt::Key_Plus), this); + zoomIn->setContext(Qt::WidgetWithChildrenShortcut); + + connect(zoomIn, &QShortcut::activated, this, [=]{ + m_webEngineView->setZoomFactor(m_webEngineView->zoomFactor() + 0.1); + emit zoomFactorChanged(); + }); + + auto zoomOut = new QShortcut(QKeySequence(Qt::SHIFT + Qt::Key_Minus), this); + zoomOut->setContext(Qt::WidgetWithChildrenShortcut); + + connect(zoomOut, &QShortcut::activated, this, [=]{ + m_webEngineView->setZoomFactor(m_webEngineView->zoomFactor() - 0.1); + emit zoomFactorChanged(); + }); + + connect(this, &DocumentationPanelWidget::zoomFactorChanged, [=]{ + if(m_webEngineView->zoomFactor() != 1.0) + resetZoom->setEnabled(true); + else + resetZoom->setEnabled(false); + }); + + //stack widget containing the web view and the content widget (will be added later in updateBacked()) + m_stackedWidget = new QStackedWidget(this); + m_stackedWidget->addWidget(m_webEngineView); + + ///////////////////////////////// + // Find in Page widget layout // + /////////////////////////////// + + // Add the Find in Page widget at the bottom, add all the widgets into a layout so that we can hide it + QToolButton* hideButton = new QToolButton(this); + hideButton->setIcon(QIcon::fromTheme(QLatin1String("dialog-close"))); + hideButton->setToolTip(i18nc("@info:tooltip", "Close")); + + QLabel* label = new QLabel(this); + label->setText(i18n("Find:")); + + m_findText = new QLineEdit(this); + m_findText->setClearButtonEnabled(true); + + QToolButton* next = new QToolButton(this); + next->setIcon(QIcon::fromTheme(QLatin1String("go-down-search"))); + next->setToolTip(i18nc("@info:tooltip", "Jump to next match")); + + QToolButton* previous = new QToolButton(this); + previous->setIcon(QIcon::fromTheme(QLatin1String("go-up-search"))); + previous->setToolTip(i18nc("@info:tooltip", "Jump to previous match")); + + m_matchCase = new QToolButton(this); + m_matchCase->setIcon(QIcon::fromTheme(QLatin1String("format-text-superscript"))); + m_matchCase->setToolTip(i18nc("@info:tooltip", "Match case sensitively")); + m_matchCase->setCheckable(true); + + // Create a layout for find in text widgets + QHBoxLayout* lout = new QHBoxLayout(this); + lout->addWidget(hideButton); + lout->addWidget(label); + lout->addWidget(m_findText); + lout->addWidget(next); + lout->addWidget(previous); + lout->addWidget(m_matchCase); + + QWidget* findPageWidgetContainer = new QWidget(this); + findPageWidgetContainer->setLayout(lout); + findPageWidgetContainer->hide(); + + // Add topmost toolbar, display area and find in page widget in a Vertical layout + QVBoxLayout* vlayout = new QVBoxLayout(this); + vlayout->addWidget(toolBarContainer); + vlayout->addWidget(m_stackedWidget); + vlayout->addWidget(findPageWidgetContainer); + + connect(m_documentationSelector, QOverload::of(&QComboBox::currentIndexChanged), [=] { + updateDocumentation(); + m_stackedWidget->setCurrentIndex(1); + }); + + connect(m_stackedWidget, &QStackedWidget::currentChanged, [=]{ + //disable Home and Search in Page buttons when stackwidget shows contents widget, enable when shows web browser + bool enabled = (m_stackedWidget->currentIndex() == 0); //0 = web view, 1 = content widget + findPage->setEnabled(enabled); + home->setEnabled(enabled); + }); + + connect(home, &QPushButton::clicked, [=]{ + m_stackedWidget->setCurrentIndex(1); //navigate to the content widget + findPageWidgetContainer->hide(); + }); + + connect(resetZoom, &QPushButton::clicked, [=]{ + m_webEngineView->setZoomFactor(1.0); + resetZoom->setEnabled(false); + }); + + connect(m_search, &QLineEdit::returnPressed, this, &DocumentationPanelWidget::returnPressed); + + // connect statements for Find in Page text widget + connect(findPage, &QPushButton::clicked, [=]{ + findPageWidgetContainer->show(); + m_findText->clear(); + m_findText->setFocus(); + }); + + connect(hideButton, &QToolButton::clicked, this, [=]{ + findPageWidgetContainer->hide(); + m_webEngineView->findText(QString()); // this clears up the selected text + }); + + connect(m_findText, &QLineEdit::returnPressed, this, &DocumentationPanelWidget::searchForward); + connect(m_findText, &QLineEdit::textEdited, this, &DocumentationPanelWidget::searchForward); // for highlighting found string in real time + connect(next, &QToolButton::clicked, this, &DocumentationPanelWidget::searchForward); + connect(previous, &QToolButton::clicked, this, &DocumentationPanelWidget::searchBackward); + connect(m_matchCase, &QAbstractButton::toggled, this, &DocumentationPanelWidget::searchForward); + connect(m_matchCase, &QAbstractButton::toggled, this, [=]{ + m_webEngineView->findText(QString()); + searchForward(); + }); + + // for webenginebrowser for downloading of images or html pages + connect(m_webEngineView->page()->profile(), &QWebEngineProfile::downloadRequested, + this, &DocumentationPanelWidget::downloadResource); +} + +DocumentationPanelWidget::~DocumentationPanelWidget() +{ + delete m_indexWidget; + delete m_contentWidget; + delete m_engine; + delete m_webEngineView; + delete m_stackedWidget; + delete m_search; + delete m_findText; + delete m_matchCase; + delete m_documentationSelector; +} + +void DocumentationPanelWidget::updateBackend(const QString& newBackend) +{ + qDebug()<<"update backend " << newBackend; + //nothing to do if the same backend was provided + if(m_backend == newBackend) + return; + + m_backend = newBackend; + + m_initializing = true; + + // show all available documentation files for the new backend + m_documentationSelector->clear(); + const KConfigGroup& group = KSharedConfig::openConfig(QStringLiteral("cantorrc"))->group(m_backend.toLower()); + m_docNames = group.readEntry(QLatin1String("Names"), QStringList()); + m_docPaths = group.readEntry(QLatin1String("Paths"), QStringList()); + const QStringList& iconNames = group.readEntry(QLatin1String("Icons"), QStringList()); + for (int i = 0; i < m_docNames.size(); ++i) { + const QString& name = m_docNames.at(i); + QString iconName; + if (i < iconNames.size()) + iconName = iconNames.at(i); + + m_documentationSelector->addItem(QIcon::fromTheme(iconName), name); + } + + m_initializing = false; + + //select the first available documentation file which will trigger the re-initialization of QHelpEngine + //TODO: restore from the saved state the previously selected documentation in m_documentationSelector for the current backend + if (!m_docNames.isEmpty()) + m_documentationSelector->setCurrentIndex(0); + + updateDocumentation(); + + if (!m_docNames.isEmpty()) + { + m_webEngineView->show(); + m_stackedWidget->setCurrentIndex(1); + } + else + m_webEngineView->hide(); +} + +/*! + * called if another documentation file was selected in the ComboBox for all available documentations + * for the current backend. This slot triggers the re-initialization of QHelpEngine with the proper + * documentation file and also updates the content of the widgets showing the documentation. + */ +void DocumentationPanelWidget::updateDocumentation() +{ + if (m_initializing) + return; + + //remove the currently shown content widget, will be replaced with the new one after + //the help engine was initialized with the new documentation file + if(m_contentWidget) + { + m_stackedWidget->removeWidget(m_contentWidget); + m_search->clear(); + } + + //unregister the previous help engine qch files + if(!m_currentQchFileName.isEmpty()) + { + const QString& fileNamespace = QHelpEngineCore::namespaceName(m_currentQchFileName); + if(m_engine->registeredDocumentations().contains(fileNamespace)) + m_engine->unregisterDocumentation(m_currentQchFileName); + } + + if (m_docNames.isEmpty()) + { + m_contentWidget = nullptr; + m_indexWidget = nullptr; + return; + } + + //initialize the Qt Help engine and provide the proper help collection file for the current backend + //and for the currently selected documentation for this backend + int index = m_documentationSelector->currentIndex(); + if (index < m_docPaths.size()) + m_currentQchFileName = m_docPaths.at(index); + + QString qhcFileName = m_currentQchFileName; + qhcFileName.replace(QLatin1String("qch"), QLatin1String("qhc")); + m_engine = new QHelpEngine(qhcFileName, this); + /*if(!m_engine->setupData()) + qWarning() << "Couldn't setup QtHelp Engine: " << m_engine->error();*/ + +// if(m_backend != QLatin1String("octave")) + m_engine->setProperty("_q_readonly", QVariant::fromValue(true)); + + //index widget + m_indexWidget = m_engine->indexWidget(); + connect(m_indexWidget, &QHelpIndexWidget::linkActivated, this, &DocumentationPanelWidget::showUrl); + + //content widget + m_contentWidget = m_engine->contentWidget(); + m_stackedWidget->addWidget(m_contentWidget); + connect(m_contentWidget, &QHelpContentWidget::linkActivated, this, &DocumentationPanelWidget::showUrl); + + //search widget + auto* completer = new QCompleter(m_indexWidget->model(), m_search); + m_search->setCompleter(completer); + completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion); + completer->setCaseSensitivity(Qt::CaseInsensitive); + connect(completer, QOverload::of(&QCompleter::activated), this, &DocumentationPanelWidget::returnPressed); + + // handle the URL scheme handler + //m_webEngineView->page()->profile()->removeUrlScheme("qthelp"); + m_webEngineView->page()->profile()->removeAllUrlSchemeHandlers(); // remove previously installed scheme handler and then install new one + m_webEngineView->page()->profile()->installUrlSchemeHandler("qthelp", new QtHelpSchemeHandler(m_engine)); + + // register the compressed help file (qch) + const QString& nameSpace = QHelpEngineCore::namespaceName(m_currentQchFileName); + if(!m_engine->registeredDocumentations().contains(nameSpace)) + { + if(m_engine->registerDocumentation(m_currentQchFileName)) + qDebug()<<"The documentation file " << m_currentQchFileName << " successfully registered."; + else + qWarning() << m_engine->error(); + } +} + +void DocumentationPanelWidget::showUrl(const QUrl& url) +{ + m_webEngineView->load(url); + m_stackedWidget->setCurrentIndex(0); //show the web engine view +} + +QUrl DocumentationPanelWidget::url() const +{ + return m_webEngineView->url(); +} + +void DocumentationPanelWidget::returnPressed() +{ + const QString& input = m_search->text(); + + if (input.isEmpty()) + return; + + contextSensitiveHelp(input); +} + +void DocumentationPanelWidget::contextSensitiveHelp(const QString& keyword) +{ + qDebug() << "requested the documentation for the keyword " << keyword; + + //make sure first we show the web view in the stack widget + m_stackedWidget->setCurrentIndex(0); + + if (!m_indexWidget) + return; + + m_indexWidget->filterIndices(keyword); // filter exactly, no wildcards + m_indexWidget->activateCurrentItem(); // this internally emitts the QHelpIndexWidget::linkActivated signal + + // called in order to refresh and restore the index widget + // otherwise filterIndices() filters the indices list, and then the index widget only contains the matched keywords + m_indexWidget->filterIndices(QString()); +} + +void DocumentationPanelWidget::searchForward() +{ + m_matchCase->isChecked() ? m_webEngineView->findText(m_findText->text(), QWebEnginePage::FindCaseSensitively) : + m_webEngineView->findText(m_findText->text()); +} + +void DocumentationPanelWidget::searchBackward() +{ + m_matchCase->isChecked() ? m_webEngineView->findText(m_findText->text(), QWebEnginePage::FindCaseSensitively | QWebEnginePage::FindBackward) : + m_webEngineView->findText(m_findText->text(), QWebEnginePage::FindBackward); +} + +void DocumentationPanelWidget::downloadResource(QWebEngineDownloadItem* resource) +{ + // default download directory is ~/Downloads on Linux + m_webEngineView->page()->download(resource->url()); + resource->accept(); + + KMessageBox::information(this, i18n("The file has been downloaded successfully at Downloads."), i18n("Download Successful")); + + disconnect(m_webEngineView->page()->profile(), &QWebEngineProfile::downloadRequested, this, &DocumentationPanelWidget::downloadResource); +} diff --git a/src/panelplugins/documentationpanel/documentationpanelwidget.h b/src/panelplugins/documentationpanel/documentationpanelwidget.h new file mode 100644 index 0000000..df88704 --- /dev/null +++ b/src/panelplugins/documentationpanel/documentationpanelwidget.h @@ -0,0 +1,100 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Shubham + SPDX-FileCopyrightText: 2020-2021 Alexander Semke +*/ + +#ifndef _DOCUMENTATIONPANELWIDGET_H +#define _DOCUMENTATIONPANELWIDGET_H + +#include +#include +#include +#include +#include + +class QComboBox; +class QHelpContentWidget; +class QHelpIndexWidget; +class QLineEdit; +class QStackedWidget; +class QToolButton; +class QUrl; +class QWebEngineDownloadItem; +class QWebEngineView; + +class DocumentationPanelWidget : public QWidget +{ + Q_OBJECT + + public: + DocumentationPanelWidget(QWidget*); + ~DocumentationPanelWidget(); + + void updateBackend(const QString&); + QUrl url() const; + + public Q_SLOTS: + void showUrl(const QUrl&); + + Q_SIGNALS: + void zoomFactorChanged(); + + private Q_SLOTS: + void contextSensitiveHelp(const QString&); + void returnPressed(); + + // SLOTS for Find in Page widget + void searchForward(); + void searchBackward(); + + void downloadResource(QWebEngineDownloadItem*); // slot for saving the image or html to local disk + + private: + void updateDocumentation(); + + QHelpEngine* m_engine = nullptr; + QWebEngineView* m_webEngineView = nullptr; + QStackedWidget* m_stackedWidget = nullptr; + QHelpIndexWidget* m_indexWidget = nullptr; + QHelpContentWidget* m_contentWidget = nullptr; + QString m_backend; + QStringList m_docNames; + QStringList m_docPaths; + bool m_initializing = false; + + // member variables for find in page text widget + QLineEdit* m_search = nullptr; // for searching through keywords + QLineEdit* m_findText = nullptr; // for find in page text widget + QToolButton* m_matchCase = nullptr; + + QComboBox* m_documentationSelector = nullptr; + QString m_currentQchFileName; +}; + +// class for handling of custom url scheme ie. qthelp:// inside QWebEngineView +class QtHelpSchemeHandler : public QWebEngineUrlSchemeHandler +{ + Q_OBJECT + + public: + QtHelpSchemeHandler(QHelpEngine* helpEngine) : m_HelpEngine(helpEngine) + { + } + + virtual void requestStarted(QWebEngineUrlRequestJob* job) override + { + auto url = job->requestUrl(); + auto data = new QByteArray; + *data = m_HelpEngine->fileData(url); + auto buffer = new QBuffer(data); + if (url.scheme() == QLatin1String("qthelp")) { + job->reply("text/html", buffer); + } + } + + private: + QHelpEngine* m_HelpEngine; +}; + +#endif /* _DOCUMENTATIONPANELWIDGET_H */ diff --git a/src/panelplugins/filebrowserpanel/CMakeLists.txt b/src/panelplugins/filebrowserpanel/CMakeLists.txt new file mode 100644 index 0000000..df46cfa --- /dev/null +++ b/src/panelplugins/filebrowserpanel/CMakeLists.txt @@ -0,0 +1,7 @@ +set(FileBrowserPanelPlugin_SRCS + filebrowserpanelplugin.cpp +) + +add_panel(filebrowserpanelplugin ${FileBrowserPanelPlugin_SRCS}) + +target_link_libraries(cantor_filebrowserpanelplugin KF5::Parts) diff --git a/src/panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp b/src/panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp new file mode 100644 index 0000000..f7620e9 --- /dev/null +++ b/src/panelplugins/filebrowserpanel/filebrowserpanelplugin.cpp @@ -0,0 +1,230 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Sirgienko Nikita +*/ + +#include "filebrowserpanelplugin.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +FileBrowserPanelPlugin::FileBrowserPanelPlugin(QObject* parent, const QList& args): Cantor::PanelPlugin(parent), + m_mainWidget(nullptr), m_treeview(nullptr), m_pathEdit(nullptr), m_filterCombobox(nullptr) +{ + Q_UNUSED(args); + + auto* part = dynamic_cast(parent->parent()); + QString baseRootDir; + if (part && !part->url().isEmpty()) + baseRootDir = QFileInfo(part->url().toLocalFile()).absoluteDir().absolutePath(); + else + baseRootDir = QDir::currentPath(); + m_rootDirsHistory.push_back(baseRootDir); +} + +FileBrowserPanelPlugin::~FileBrowserPanelPlugin() +{ + if (m_mainWidget) + { + m_mainWidget->deleteLater(); + m_treeview = nullptr; + m_pathEdit = nullptr; + m_filterCombobox = nullptr; + m_model->deleteLater(); + } +} + +QWidget* FileBrowserPanelPlugin::widget() +{ + if (!m_mainWidget) + { + m_model = new QFileSystemModel(); + m_model->setRootPath(m_rootDirsHistory.last()); + constructMainWidget(); + } + + return m_mainWidget; +} + +void FileBrowserPanelPlugin::connectToShell(QObject* cantorShell) +{ + connect(this, SIGNAL(requestOpenWorksheet(QUrl)), cantorShell, SLOT(load(QUrl))); +} + +bool FileBrowserPanelPlugin::showOnStartup() +{ + return false; +} + +void FileBrowserPanelPlugin::handleDoubleClicked(const QModelIndex& index) +{ + QVariant data = m_model->data(index, QFileSystemModel::FilePathRole); + if (data.isValid() && data.type() == QVariant::String) + { + const QString& filename = data.value(); + if (m_model->isDir(index)) + { + moveFileBrowserRoot(filename); + } + else + { + const QUrl& url = QUrl::fromLocalFile(filename); + if (filename.endsWith(QLatin1String(".cws")) || filename.endsWith(QLatin1String(".ipynb"))) + emit requestOpenWorksheet(url); + else + QDesktopServices::openUrl(url); + } + } +} + +void FileBrowserPanelPlugin::constructMainWidget() +{ + m_mainWidget = new QWidget(); + + m_treeview = new QTreeView(m_mainWidget); + m_treeview->setModel(m_model); + m_treeview->setRootIndex(m_model->index(m_rootDirsHistory.last())); + m_treeview->setExpandsOnDoubleClick(false); + connect(m_treeview, &QTreeView::doubleClicked, this, &FileBrowserPanelPlugin::handleDoubleClicked); + + // First column is name with the dir tree + // Show only the first column + for (int i = 1; i < m_model->columnCount(); i++) + m_treeview->setColumnHidden(i, true); + m_treeview->header()->hide(); + m_treeview->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + + QWidget* buttonContainer = new QWidget(m_mainWidget); + + QPushButton* dirUpButton = new QPushButton(QIcon::fromTheme(QLatin1String("go-up")), QString(), buttonContainer); + dirUpButton->setMinimumSize(40, 40); + connect(dirUpButton, &QPushButton::clicked, this, &FileBrowserPanelPlugin::dirUpButtonHandle); + + QPushButton* homeButton = new QPushButton(QIcon::fromTheme(QLatin1String("go-home")), QString(), buttonContainer); + homeButton->setMinimumSize(40, 40); + connect(homeButton, &QPushButton::clicked, this, &FileBrowserPanelPlugin::homeButtonHandle); + + QPushButton* dirPreviousButton = new QPushButton(QIcon::fromTheme(QLatin1String("go-previous")), QString(), buttonContainer); + dirPreviousButton->setMinimumSize(40, 40); + connect(dirPreviousButton, &QPushButton::clicked, this, &FileBrowserPanelPlugin::dirPreviousButtonHandle); + + QPushButton* dirNextButton = new QPushButton(QIcon::fromTheme(QLatin1String("go-next")), QString(), buttonContainer); + dirNextButton->setMinimumSize(40, 40); + connect(dirNextButton, &QPushButton::clicked, this, &FileBrowserPanelPlugin::dirNextButtonHandle); + + m_pathEdit = new QLineEdit(m_rootDirsHistory.last(), buttonContainer); + connect(m_pathEdit, &QLineEdit::returnPressed, this, &FileBrowserPanelPlugin::setNewRootPath); + m_pathEdit->setMinimumHeight(40); + m_pathEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + + m_filterCombobox = new QComboBox(buttonContainer); + m_filterCombobox->addItem(i18n("Cantor files"), QLatin1String("*.cws")); //Default value + m_filterCombobox->addItem(i18n("Jupyter files"), QLatin1String("*.ipynb")); + m_filterCombobox->addItem(i18n("All supported files"), QLatin1String("*.cws *.ipynb")); + m_filterCombobox->addItem(i18n("All files"), QLatin1String("*")); + connect(m_filterCombobox, static_cast(&QComboBox::activated), this, &FileBrowserPanelPlugin::handleFilterChanging); + m_model->setNameFilters({QLatin1String("*.cws")}); + m_model->setNameFilterDisables(false); + + QHBoxLayout* horizontalLayout = new QHBoxLayout(); + horizontalLayout->setDirection(QBoxLayout::LeftToRight); + horizontalLayout->addWidget(dirPreviousButton); + horizontalLayout->addWidget(dirUpButton); + horizontalLayout->addWidget(homeButton); + horizontalLayout->addWidget(dirNextButton); + horizontalLayout->addWidget(m_pathEdit); + horizontalLayout->addWidget(m_filterCombobox); + horizontalLayout->setMargin(0); + + buttonContainer->setLayout(horizontalLayout); + buttonContainer->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred); + + QVBoxLayout* layout = new QVBoxLayout(); + layout->addWidget(buttonContainer); + layout->addWidget(m_treeview); + + m_mainWidget->setLayout(layout); +} + +void FileBrowserPanelPlugin::moveFileBrowserRoot(const QString& path) +{ + for (int i = 0; i < historyBackCount; i++) + m_rootDirsHistory.pop_back(); + historyBackCount = 0; + + m_rootDirsHistory.push_back(path); + setRootPath(path); +} + +void FileBrowserPanelPlugin::setRootPath(const QString& path) +{ + m_model->setRootPath(path); + m_treeview->setRootIndex(m_model->index(path)); + m_pathEdit->setText(path); +} + +void FileBrowserPanelPlugin::dirUpButtonHandle() +{ + QDir dir(m_model->rootPath()); + if (dir.cdUp()) + moveFileBrowserRoot(dir.absolutePath()); +} + +void FileBrowserPanelPlugin::homeButtonHandle() +{ + moveFileBrowserRoot(QDir::homePath()); +} + +void FileBrowserPanelPlugin::dirNextButtonHandle() +{ + if (historyBackCount <= 0) + return; + historyBackCount -= 1; + + const QString& newPath = m_rootDirsHistory[m_rootDirsHistory.size() - 1 - historyBackCount]; + + setRootPath(newPath); +} + +void FileBrowserPanelPlugin::dirPreviousButtonHandle() +{ + if (historyBackCount >= m_rootDirsHistory.size() - 1) + return; + historyBackCount += 1; + + const QString& newPath = m_rootDirsHistory[m_rootDirsHistory.size() - 1 - historyBackCount]; + setRootPath(newPath); +} + +void FileBrowserPanelPlugin::setNewRootPath() +{ + QString path = m_pathEdit->text(); + QFileInfo info(path); + if (info.isDir()) + moveFileBrowserRoot(path); +} + +void FileBrowserPanelPlugin::handleFilterChanging(int index) +{ + if (m_model) + m_model->setNameFilters(m_filterCombobox->itemData(index).toString().split(QLatin1Char(' '))); +} + +K_PLUGIN_FACTORY_WITH_JSON(filebrowserpanelplugin, "filebrowserpanelplugin.json", registerPlugin();) +#include "filebrowserpanelplugin.moc" diff --git a/src/panelplugins/filebrowserpanel/filebrowserpanelplugin.h b/src/panelplugins/filebrowserpanel/filebrowserpanelplugin.h new file mode 100644 index 0000000..4215e14 --- /dev/null +++ b/src/panelplugins/filebrowserpanel/filebrowserpanelplugin.h @@ -0,0 +1,64 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Sirgienko Nikita +*/ + +#ifndef _FILEBROWSERPANELPLUGIN_H +#define _FILEBROWSERPANELPLUGIN_H + +#include +#include + +#include "panelplugin.h" + +class QTreeView; +class QWidget; +class QModelIndex; +class QFileSystemModel; +class QPushButton; +class QLineEdit; +class QComboBox; + +class FileBrowserPanelPlugin : public Cantor::PanelPlugin +{ + Q_OBJECT + public: + FileBrowserPanelPlugin (QObject* parent, const QList& args); + ~FileBrowserPanelPlugin() override; + + QWidget* widget() override; + + bool showOnStartup() override; + + void connectToShell(QObject * cantorShell) override; + + // No use restore files, because the FileBrowser Panel can be shared between session + + Q_SIGNALS: + void requestOpenWorksheet(const QUrl&); + + private Q_SLOTS: + void handleDoubleClicked(const QModelIndex&); + void dirPreviousButtonHandle(); + void dirUpButtonHandle(); + void homeButtonHandle(); + void dirNextButtonHandle(); + void setNewRootPath(); + void handleFilterChanging(int index); + + private: + void constructMainWidget(); + void moveFileBrowserRoot(const QString& path); + void setRootPath(const QString& path); + + private: + QPointer m_mainWidget; + QPointer m_treeview; + QPointer m_pathEdit; + QPointer m_filterCombobox; + QFileSystemModel* m_model = nullptr; + QVector m_rootDirsHistory; + int historyBackCount = 0; +}; + +#endif /* _FILEBROWSERPANELPLUGIN_H */ diff --git a/src/panelplugins/filebrowserpanel/filebrowserpanelplugin.json b/src/panelplugins/filebrowserpanel/filebrowserpanelplugin.json new file mode 100644 index 0000000..3aaea33 --- /dev/null +++ b/src/panelplugins/filebrowserpanel/filebrowserpanelplugin.json @@ -0,0 +1,59 @@ +{ + "KPlugin": { + "Description": "A panel for working with files inside Cantor", + "Description[ca@valencia]": "Un quadro per a treballar amb fitxers dins de Cantor", + "Description[ca]": "Un plafó per a treballar amb fitxers dins del Cantor", + "Description[de]": "Eine Kontrollleiste zur Verwaltung von Dateien in Cantor", + "Description[el]": "Ένας πίνακας για την εργασία με αρχεία μέσα στο Cantor", + "Description[en_GB]": "A panel for working with files inside Cantor", + "Description[es]": "Un panel para trabajar con archivos dentro de Cantor", + "Description[fi]": "Paneeli tiedostojen käsittelemiseksi Cantorista", + "Description[fr]": "Un panneau pour travailler avec les fichiers à l'intérieur de Cantor", + "Description[ia]": "Un pannello per travaliar con files intra Cantor", + "Description[it]": "Un pannello per lavorare con i file in Cantor", + "Description[ka]": "Cantor-ის შიგნით ფაილებთან სამუშაო პანელი", + "Description[ko]": "Cantor에서 파일을 관리하는 패널", + "Description[nl]": "Een paneel in Cantor voor het werken met bestanden", + "Description[pl]": "Okno do pracy z plikami wewnątrz Cantora", + "Description[pt]": "Um painel para lidar com ficheiros dentro do Cantor", + "Description[pt_BR]": "Um painel para trabalhar com arquivos dentro do Cantor", + "Description[ru]": "Панель Cantor для работы с файлами", + "Description[sk]": "Panel na prácu zo súbormi vo vnútri Cantor", + "Description[sl]": "Panel za delo z datotekami znotraj Cantorja", + "Description[sv]": "En panel för att arbeta med filer inne i Cantor", + "Description[tr]": "Cantor içinde dosyalarla çalışmak için bir panel", + "Description[uk]": "Панель для роботи з файлами у вікні Cantor", + "Description[x-test]": "xxA panel for working with files inside Cantorxx", + "Description[zh_CN]": "用于在 Cantor 内处理文件的面板", + "Icon": "", + "Id": "FileBrowserPanel", + "License": "GPL", + "Name": "File Browser", + "Name[ca@valencia]": "Navegador de fitxers", + "Name[ca]": "Navegador de fitxers", + "Name[cs]": "Prohlížeč souborů", + "Name[de]": "Dateibrowser", + "Name[el]": "Περιηγητής αρχείων", + "Name[en_GB]": "File Browser", + "Name[es]": "Navegador de archivos", + "Name[fi]": "Tiedostoselain", + "Name[fr]": "Navigateur de fichiers", + "Name[ia]": "Cerca de file", + "Name[it]": "Navigatore dei file", + "Name[ka]": "ფაილის ბრაუზერი", + "Name[ko]": "파일 탐색기", + "Name[nl]": "Bestanden bladeren", + "Name[pl]": "Przeglądarka plików", + "Name[pt]": "Gestor de Ficheiros", + "Name[pt_BR]": "Navegador de arquivos", + "Name[ru]": "Диспетчер файлов", + "Name[sk]": "Prehliadač súborov", + "Name[sl]": "Brskalnik po datotekah", + "Name[sv]": "Filbläddrare", + "Name[tr]": "Dosya Tarayıcı", + "Name[uk]": "Навігація файлами", + "Name[x-test]": "xxFile Browserxx", + "Name[zh_CN]": "文件浏览器" + }, + "RequiredExtensions": "" +} diff --git a/src/panelplugins/helppanel/CMakeLists.txt b/src/panelplugins/helppanel/CMakeLists.txt new file mode 100644 index 0000000..85d75a7 --- /dev/null +++ b/src/panelplugins/helppanel/CMakeLists.txt @@ -0,0 +1,8 @@ +set( HelpPanelPlugin_SRCS + helppanelplugin.cpp +) + +add_panel(helppanelplugin ${HelpPanelPlugin_SRCS}) + +target_link_libraries(cantor_helppanelplugin + KF5::TextWidgets) diff --git a/src/panelplugins/helppanel/helppanelplugin.cpp b/src/panelplugins/helppanel/helppanelplugin.cpp new file mode 100644 index 0000000..04d6b61 --- /dev/null +++ b/src/panelplugins/helppanel/helppanelplugin.cpp @@ -0,0 +1,80 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Alexander Rieder +*/ + +#include "helppanelplugin.h" + +#include +#include +#include + +HelpPanelPlugin::HelpPanelPlugin(QObject* parent, const QList& args) : Cantor::PanelPlugin(parent), m_edit(nullptr) +{ + Q_UNUSED(args); +} + +HelpPanelPlugin::~HelpPanelPlugin() +{ + delete m_edit; +} + +QWidget* HelpPanelPlugin::widget() +{ + if(!m_edit) + { + m_edit = new KTextEdit(parentWidget()); + setHelpHtml(QString()); + m_edit->setTextInteractionFlags(Qt::TextBrowserInteraction); + } + + return m_edit; +} + +void HelpPanelPlugin::setHelpHtml(const QString& help) +{ + if(!m_edit) + return; + + m_edit->setHtml(help); + m_edit->selectAll(); + m_edit->setFontFamily(QLatin1String("Monospace")); + m_edit->moveCursor(QTextCursor::Start); +} + +void HelpPanelPlugin::showHelp(const QString& help) +{ + if(m_edit) + m_edit->setHtml(help); +} + +bool HelpPanelPlugin::showOnStartup() +{ + return false; +} + +void HelpPanelPlugin::connectToShell(QObject* cantorShell) +{ + //using old-style syntax here, otherwise we'd need to include and link to CantorPart and KParts + connect(cantorShell, SIGNAL(showHelp(QString)), this, SLOT(setHelpHtml(QString))); + connect(cantorShell, SIGNAL(showHelp(QString)), this, SIGNAL(visibilityRequested())); +} + +Cantor::PanelPlugin::State HelpPanelPlugin::saveState() +{ + auto state = PanelPlugin::saveState(); + state.inners.append(m_edit->toHtml()); + return state; +} + +void HelpPanelPlugin::restoreState(const Cantor::PanelPlugin::State& state) +{ + PanelPlugin::restoreState(state); + if(state.inners.size() > 0) + setHelpHtml(state.inners.first().toString()); + else + setHelpHtml(QString()); +} + +K_PLUGIN_FACTORY_WITH_JSON(helppanelplugin, "helppanelplugin.json", registerPlugin();) +#include "helppanelplugin.moc" diff --git a/src/panelplugins/helppanel/helppanelplugin.h b/src/panelplugins/helppanel/helppanelplugin.h new file mode 100644 index 0000000..b16a118 --- /dev/null +++ b/src/panelplugins/helppanel/helppanelplugin.h @@ -0,0 +1,41 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Alexander Rieder +*/ + +#ifndef _HELPPANELPLUGIN_H +#define _HELPPANELPLUGIN_H + +#include + +#include "panelplugin.h" + +class KTextEdit; + +class HelpPanelPlugin : public Cantor::PanelPlugin +{ + Q_OBJECT + public: + HelpPanelPlugin(QObject* parent, const QList& args); + ~HelpPanelPlugin() override; + + QWidget* widget() override; + + bool showOnStartup() override; + + void connectToShell(QObject * cantorShell) override; + + Cantor::PanelPlugin::State saveState() override; + + void restoreState(const Cantor::PanelPlugin::State & state) override; + + public Q_SLOTS: + void setHelpHtml(const QString&); + void showHelp(const QString&); + + private: + QPointer m_edit; + +}; + +#endif /* _HELPPANELPLUGIN_H */ diff --git a/src/panelplugins/helppanel/helppanelplugin.json b/src/panelplugins/helppanel/helppanelplugin.json new file mode 100644 index 0000000..c12ef03 --- /dev/null +++ b/src/panelplugins/helppanel/helppanelplugin.json @@ -0,0 +1,70 @@ +{ + "KPlugin": { + "Description": "A panel to display help", + "Description[ca@valencia]": "Un quadro per a mostrar les pàgines d'ajuda", + "Description[ca]": "Un plafó per a mostrar les pàgines d'ajuda", + "Description[cs]": "Panel pro zobrazení nápovědy", + "Description[de]": "Eine Kontrollleiste zur Anzeige der Hilfe", + "Description[el]": "Πίνακας για εμφάνιση βοήθειας", + "Description[en_GB]": "A panel to display help", + "Description[es]": "Un panel para mostrar ayuda", + "Description[et]": "Abi näitav paneel", + "Description[fi]": "Paneeli ohjeiden näyttämiseen", + "Description[fr]": "Un panneau pour afficher l'aide", + "Description[gl]": "Un panel que mostra axuda", + "Description[ia]": "Un pannello per monstrar adjuta", + "Description[it]": "Un pannello per visualizzare l'aiuto", + "Description[ka]": "დახმარების საჩვენებელი პანელი", + "Description[ko]": "도움말을 표시하는 패널", + "Description[nl]": "Een paneel om help te tonen", + "Description[nn]": "Eit panel som viser hjelp", + "Description[pl]": "Okno do wyświetlania pomocy", + "Description[pt]": "Um painel para mostrar alguma ajuda", + "Description[pt_BR]": "Um painel para apresentar ajuda", + "Description[ru]": "Панель для просмотра справки", + "Description[sk]": "Panel na zobrazenie pomoci", + "Description[sl]": "Pult za prikaz pomoči", + "Description[sv]": "En panel för att visa hjälp", + "Description[tr]": "Yardımı görüntülemek üzere bir panel", + "Description[uk]": "Панель для показу довідки", + "Description[x-test]": "xxA panel to display helpxx", + "Description[zh_CN]": "显示帮助的面板", + "Description[zh_TW]": "顯示說明的面板", + "Icon": "", + "Id": "HelpPanel", + "License": "GPL", + "Name": "Help", + "Name[ar]": "مساعدة", + "Name[ca@valencia]": "Ajuda", + "Name[ca]": "Ajuda", + "Name[cs]": "Nápověda", + "Name[da]": "Help", + "Name[de]": "Hilfe", + "Name[el]": "Βοήθεια", + "Name[en_GB]": "Help", + "Name[es]": "Ayuda", + "Name[et]": "Abi", + "Name[fi]": "Ohjeet", + "Name[fr]": "Aide", + "Name[gl]": "Axuda", + "Name[ia]": "Adjuta", + "Name[it]": "Aiuto", + "Name[ka]": "დახმარება", + "Name[ko]": "도움말", + "Name[nl]": "Help", + "Name[nn]": "Hjelp", + "Name[pl]": "Pomoc", + "Name[pt]": "Ajuda", + "Name[pt_BR]": "Ajuda", + "Name[ru]": "Справка", + "Name[sk]": "Pomocník", + "Name[sl]": "Pomoč", + "Name[sv]": "Hjälp", + "Name[tr]": "Yardım", + "Name[uk]": "Довідка", + "Name[x-test]": "xxHelpxx", + "Name[zh_CN]": "帮助", + "Name[zh_TW]": "求助" + }, + "RequiredExtensions": "" +} diff --git a/src/panelplugins/tocpanel/CMakeLists.txt b/src/panelplugins/tocpanel/CMakeLists.txt new file mode 100644 index 0000000..e36f9c6 --- /dev/null +++ b/src/panelplugins/tocpanel/CMakeLists.txt @@ -0,0 +1,5 @@ +set(FileBrowserPanelPlugin_SRCS + tocpanelplugin.cpp +) + +add_panel(tocpanelplugin ${FileBrowserPanelPlugin_SRCS}) diff --git a/src/panelplugins/tocpanel/tocpanelplugin.cpp b/src/panelplugins/tocpanel/tocpanelplugin.cpp new file mode 100644 index 0000000..6df4c3a --- /dev/null +++ b/src/panelplugins/tocpanel/tocpanelplugin.cpp @@ -0,0 +1,116 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Sirgienko Nikita +*/ + +#include "tocpanelplugin.h" + +#include +#include +#include +#include + +#include + +TableOfContentPanelPlugin::TableOfContentPanelPlugin(QObject* parent, const QList& args): Cantor::PanelPlugin(parent), + m_mainWidget(nullptr) +{ + Q_UNUSED(args); +} + +TableOfContentPanelPlugin::~TableOfContentPanelPlugin() +{ + if (m_mainWidget) + { + m_mainWidget->deleteLater(); + } +} + +QWidget* TableOfContentPanelPlugin::widget() +{ + if (!m_mainWidget) + constructMainWidget(); + + return m_mainWidget; +} + +void TableOfContentPanelPlugin::connectToShell(QObject* cantorShell) +{ + connect(cantorShell, SIGNAL(hierarchyChanged(QStringList, QStringList, QList)), this, SLOT(handleHierarchyChanges(QStringList, QStringList, QList))); + connect(this, SIGNAL(requestScrollToHierarchyEntry(QString)), cantorShell, SIGNAL(requestScrollToHierarchyEntry(QString))); + connect(cantorShell, SIGNAL(hierarhyEntryNameChange(QString, QString, int)), this, SLOT(handleHierarhyEntryNameChange(QString, QString, int))); +} + +bool TableOfContentPanelPlugin::showOnStartup() +{ + return false; +} + +void TableOfContentPanelPlugin::handleDoubleClicked(const QModelIndex& index) +{ + qDebug() << "TableOfContentPanelPlugin::handleDoubleClicked"; + const QString& searchStringIndex = m_hierarchyPositionStringList[index.row()]; + emit requestScrollToHierarchyEntry(searchStringIndex); +} + +void TableOfContentPanelPlugin::constructMainWidget() +{ + QListView* view = new QListView(m_mainWidget); + view->setEditTriggers(QAbstractItemView::NoEditTriggers); + view->setSelectionBehavior(QAbstractItemView::SelectItems); + view->setModel(&m_model); + + connect(view, &QListView::doubleClicked, this, &TableOfContentPanelPlugin::handleDoubleClicked); + + m_mainWidget = view; +} + +void TableOfContentPanelPlugin::restoreState(const Cantor::PanelPlugin::State& state) +{ + if (state.inners.size() == 2) + { + m_model.setStringList(state.inners[0].toStringList()); + m_hierarchyPositionStringList = state.inners[1].toStringList(); + } +} + +Cantor::PanelPlugin::State TableOfContentPanelPlugin::saveState() +{ + Cantor::PanelPlugin::State state; + + state.inners.append(m_model.stringList()); + state.inners.append(m_hierarchyPositionStringList); + + return state; +} + +void TableOfContentPanelPlugin::handleHierarchyChanges(QStringList names, QStringList searchStrings, QList depths) +{ + QStringList fullNames; + + assert(names.size() == searchStrings.size() && names.size() == depths.size()); + + int size = names.size(); + for (int i = 0; i < size; i++) + fullNames.append(QString::fromLatin1(" ").repeated(depths[i]) + searchStrings[i] + QLatin1String(" ") + names[i]); + + m_model.setStringList(fullNames); + m_hierarchyPositionStringList = searchStrings; +} + +void TableOfContentPanelPlugin::handleHierarhyEntryNameChange(QString name, QString searchString, int deapth) +{ + int size = m_hierarchyPositionStringList.size(); + for (int i = 0; i < size; i++) + { + if (m_hierarchyPositionStringList[i] == searchString) + { + QModelIndex index = m_model.index(i); + const QString& fullName = QString::fromLatin1(" ").repeated(deapth) + searchString + QLatin1String(" ") + name; + m_model.setData(index, fullName); + } + } +} + +K_PLUGIN_FACTORY_WITH_JSON(tocpanelplugin, "tocpanelplugin.json", registerPlugin();) +#include "tocpanelplugin.moc" diff --git a/src/panelplugins/tocpanel/tocpanelplugin.h b/src/panelplugins/tocpanel/tocpanelplugin.h new file mode 100644 index 0000000..fed98b8 --- /dev/null +++ b/src/panelplugins/tocpanel/tocpanelplugin.h @@ -0,0 +1,56 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Sirgienko Nikita +*/ + +#ifndef _FILEBROWSERPANELPLUGIN_H +#define _FILEBROWSERPANELPLUGIN_H + +#include + +#include + +#include "panelplugin.h" + +class QWidget; +class QModelIndex; +class QPushButton; +class QLineEdit; +class QComboBox; + +class TableOfContentPanelPlugin : public Cantor::PanelPlugin +{ + Q_OBJECT + public: + TableOfContentPanelPlugin (QObject* parent, const QList& args); + ~TableOfContentPanelPlugin() override; + + QWidget* widget() override; + + bool showOnStartup() override; + + void connectToShell(QObject * cantorShell) override; + + State saveState() override; + + void restoreState(const State& state) override; + + + Q_SIGNALS: + void requestScrollToHierarchyEntry(QString); + + private Q_SLOTS: + void handleDoubleClicked(const QModelIndex&); + void handleHierarchyChanges(QStringList names, QStringList searchStrings, QList depths); + void handleHierarhyEntryNameChange(QString name, QString searchString, int deapth); + + private: + void constructMainWidget(); + + private: + QPointer m_mainWidget; + QStringListModel m_model; + QStringList m_hierarchyPositionStringList; +}; + +#endif /* _FILEBROWSERPANELPLUGIN_H */ diff --git a/src/panelplugins/tocpanel/tocpanelplugin.json b/src/panelplugins/tocpanel/tocpanelplugin.json new file mode 100644 index 0000000..db2273e --- /dev/null +++ b/src/panelplugins/tocpanel/tocpanelplugin.json @@ -0,0 +1,60 @@ +{ + "KPlugin": { + "Description": "A panel for showing worksheet structure", + "Description[ca@valencia]": "Un quadro per a mostrar l'estructura del full de treball", + "Description[ca]": "Un plafó per a mostrar l'estructura del full de treball", + "Description[de]": "Eine Leiste zur Anzeige der Arbeitsblattstruktur", + "Description[el]": "Ένας πίνακας που δείχνει τη δομή του φύλλου εργασίας", + "Description[en_GB]": "A panel for showing worksheet structure", + "Description[es]": "Un panel para mostrar la estructura de la hoja de trabajo", + "Description[fi]": "Paneeli työkirjan rakenteen näyttämiseksi", + "Description[fr]": "Un panneau pour l'affichage de la structure de la feuille de travail", + "Description[ia]": "Un pannello per monstrar structura de folio de travalio", + "Description[it]": "Un pannello per mostrare la struttura dei fogli di lavoro", + "Description[ka]": "ცხრილის სტრუქტურის მაჩვენებელი პანელი", + "Description[ko]": "워크시트 구조를 표시하는 패널", + "Description[nl]": "Een paneel waarin de structuur van het werkblad", + "Description[pl]": "Okno do wyświetlania struktury arkusza pracy", + "Description[pt]": "Um painel para mostrar a estrutura da folha de trabalho", + "Description[pt_BR]": "Um painel para mostrar a estrutura da planilha", + "Description[ru]": "Панель для просмотра структуры документа", + "Description[sk]": "Panel na zobrazenie štruktúrý pracovného listu", + "Description[sl]": "Plošča za prikaz strukture delovnega lista", + "Description[sv]": "En panel för att visa arbetsbladsstruktur", + "Description[tr]": "Çalışma sayfası yapısını gösteren bir panel", + "Description[uk]": "Панель для показу структури робочого аркуша", + "Description[x-test]": "xxA panel for showing worksheet structurexx", + "Description[zh_CN]": "显示工作表结构的面板", + "Icon": "", + "Id": "TOC", + "License": "GPL", + "Name": "Table Of Contents", + "Name[ar]": "جدول المحتويات", + "Name[ca@valencia]": "Taula de continguts", + "Name[ca]": "Taula de continguts", + "Name[cs]": "Obsah", + "Name[de]": "Inhaltsverzeichnis", + "Name[el]": "Πίνακας περιεχομένων", + "Name[en_GB]": "Table Of Contents", + "Name[es]": "Tabla de contenido", + "Name[fi]": "Sisällysluettelo", + "Name[fr]": "Table des matières", + "Name[ia]": "Indice general (Tabula de contentos)", + "Name[it]": "Tavola dei contenuti", + "Name[ka]": "Სარჩევი", + "Name[ko]": "목차", + "Name[nl]": "Inhoudstabel", + "Name[pl]": "Spis treści", + "Name[pt]": "Índice Analítico", + "Name[pt_BR]": "Sumário", + "Name[ru]": "Содержание", + "Name[sk]": "Obsah", + "Name[sl]": "Kazalo vsebine", + "Name[sv]": "Innehållsförteckning", + "Name[tr]": "İçindekiler", + "Name[uk]": "Зміст", + "Name[x-test]": "xxTable Of Contentsxx", + "Name[zh_CN]": "目录" + }, + "RequiredExtensions": "" +} diff --git a/src/panelplugins/variablemgr/CMakeLists.txt b/src/panelplugins/variablemgr/CMakeLists.txt new file mode 100644 index 0000000..c9d7165 --- /dev/null +++ b/src/panelplugins/variablemgr/CMakeLists.txt @@ -0,0 +1,10 @@ +set( VariableManagerPlugin_SRCS + variablemanagerplugin.cpp + variablemanagerwidget.cpp +) + +ki18n_wrap_ui(VariableManagerPlugin_SRCS newvardlg.ui) + +add_panel(variablemanagerplugin ${VariableManagerPlugin_SRCS}) + +target_link_libraries(cantor_variablemanagerplugin KF5::KIOWidgets) diff --git a/src/panelplugins/variablemgr/newvardlg.ui b/src/panelplugins/variablemgr/newvardlg.ui new file mode 100644 index 0000000..09cfc80 --- /dev/null +++ b/src/panelplugins/variablemgr/newvardlg.ui @@ -0,0 +1,52 @@ + + + NewVariableDialogBase + + + + 0 + 0 + 428 + 96 + + + + + + + Name: + + + + + + + + + + Value: + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + KLineEdit + QLineEdit +
        klineedit.h
        +
        +
        + + +
        diff --git a/src/panelplugins/variablemgr/variablemanagerplugin.cpp b/src/panelplugins/variablemgr/variablemanagerplugin.cpp new file mode 100644 index 0000000..8526fc3 --- /dev/null +++ b/src/panelplugins/variablemgr/variablemanagerplugin.cpp @@ -0,0 +1,47 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Alexander Rieder +*/ + +#include "variablemanagerplugin.h" + +#include "session.h" +#include "variablemanagerwidget.h" + +#include + +VariableManagerPlugin::VariableManagerPlugin(QObject* parent, QList args) : Cantor::PanelPlugin(parent), m_widget(nullptr) +{ + Q_UNUSED(args); +} + +VariableManagerPlugin::~VariableManagerPlugin() +{ + delete m_widget; +} + +void VariableManagerPlugin::restoreState(const Cantor::PanelPlugin::State& state) +{ + PanelPlugin::restoreState(state); + if(m_widget) + m_widget->setSession(session()); +} + +QWidget* VariableManagerPlugin::widget() +{ + if(m_widget==nullptr) + { + m_widget=new VariableManagerWidget(session(), parentWidget()); + connect(m_widget.data(), &VariableManagerWidget::runCommand, this, &VariableManagerPlugin::requestRunCommand); + } + + return m_widget; +} + +Cantor::Backend::Capabilities VariableManagerPlugin::requiredCapabilities() +{ + return Cantor::Backend::VariableManagement; +} + +K_PLUGIN_FACTORY_WITH_JSON(variablemanagerplugin, "variablemanagerplugin.json", registerPlugin();) +#include "variablemanagerplugin.moc" diff --git a/src/panelplugins/variablemgr/variablemanagerplugin.h b/src/panelplugins/variablemgr/variablemanagerplugin.h new file mode 100644 index 0000000..2dd98e4 --- /dev/null +++ b/src/panelplugins/variablemgr/variablemanagerplugin.h @@ -0,0 +1,33 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Alexander Rieder +*/ + +#ifndef _VARIABLEMANAGERPLUGIN_H +#define _VARIABLEMANAGERPLUGIN_H + +#include + +#include "panelplugin.h" + +class VariableManagerWidget; + +class VariableManagerPlugin : public Cantor::PanelPlugin +{ + Q_OBJECT + public: + VariableManagerPlugin( QObject* parent, QList args); + ~VariableManagerPlugin() override; + + QWidget* widget() override; + + Cantor::Backend::Capabilities requiredCapabilities() override; + + void restoreState(const Cantor::PanelPlugin::State & state) override; + + private: + QPointer m_widget; + +}; + +#endif /* _VARIABLEMANAGERPLUGIN_H */ diff --git a/src/panelplugins/variablemgr/variablemanagerplugin.json b/src/panelplugins/variablemgr/variablemanagerplugin.json new file mode 100644 index 0000000..a17253a --- /dev/null +++ b/src/panelplugins/variablemgr/variablemanagerplugin.json @@ -0,0 +1,61 @@ +{ + "KPlugin": { + "Description": "A panel to manage the variables of a session", + "Description[ca@valencia]": "Un quadro per a gestionar les variables d'una sessió", + "Description[ca]": "Un plafó per a gestionar les variables d'una sessió", + "Description[cs]": "Panel pro správu proměnných sezení", + "Description[de]": "Eine Leiste, um Sitzungsvariablen zu verwalten", + "Description[el]": "Πίνακας για διαχείριση των μεταβλητών μιας συνεδρίας", + "Description[en_GB]": "A panel to manage the variables of a session", + "Description[es]": "Un panel para la gestión de variables de una sesión", + "Description[et]": "Paneel seansi muutujate haldamiseks", + "Description[fi]": "Paneeli istunnon muuttujien hallitsemiseen", + "Description[fr]": "Un panneau de gestion des variables d'une session", + "Description[gl]": "Un panel para xestionar as variábeis dunha sesión", + "Description[ia]": "Un pannello per gerer le variabiles de un session", + "Description[it]": "Un pannello per gestire le variabili di una sessione", + "Description[ka]": "სესიის ცვლადების სამართავი პანელი", + "Description[ko]": "세션 변수를 관리하는 패널", + "Description[nl]": "Een paneel om de variabelen van een sessie te beheren", + "Description[nn]": "Eit panel for handsaming av variablar i ei økt", + "Description[pl]": "Okno do obsługi zmiennych sesji", + "Description[pt]": "Um painel para gerir as variáveis de uma sessão", + "Description[pt_BR]": "Um painel para gerenciar as variáveis de uma sessão", + "Description[ru]": "Панель для управления переменными сеанса", + "Description[sk]": "Panel na správu premenných sedenia", + "Description[sl]": "Pult za upravljanje spremenljivk v seji", + "Description[sv]": "En panel för att hantera variablerna i en session", + "Description[tr]": "Bir oturumun değişkenleri yönetmek için bir panel", + "Description[uk]": "Панель керування змінними сеансу", + "Description[x-test]": "xxA panel to manage the variables of a sessionxx", + "Description[zh_CN]": "管理会话中变量的面板", + "Description[zh_TW]": "管理工作階段內的變數的面板", + "Icon": "", + "Id": "VariableManager", + "License": "GPL", + "Name": "Variables", + "Name[ar]": "المتغيّرات", + "Name[ca@valencia]": "Variables", + "Name[ca]": "Variables", + "Name[cs]": "Proměnné", + "Name[de]": "Variablen", + "Name[en_GB]": "Variables", + "Name[es]": "Variables", + "Name[fr]": "Variables", + "Name[ia]": "Variabiles", + "Name[it]": "Variabili", + "Name[ka]": "ცვლადები", + "Name[ko]": "변수", + "Name[nl]": "Variabelen", + "Name[pl]": "Zmienne", + "Name[pt]": "Variáveis", + "Name[pt_BR]": "Variáveis", + "Name[ru]": "Переменные", + "Name[sl]": "Spremenljivke", + "Name[sv]": "Variabler", + "Name[tr]": "Değişkenler", + "Name[uk]": "Змінні", + "Name[x-test]": "xxVariablesxx" + }, + "RequiredExtensions": "VariableManagementExtension" +} diff --git a/src/panelplugins/variablemgr/variablemanagerwidget.cpp b/src/panelplugins/variablemgr/variablemanagerwidget.cpp new file mode 100644 index 0000000..417d743 --- /dev/null +++ b/src/panelplugins/variablemgr/variablemanagerwidget.cpp @@ -0,0 +1,272 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Alexander Rieder + SPDX-FileCopyrightText: 2018-2021 Alexander Semke +*/ + +#include "variablemanagerwidget.h" +#include "backend.h" +#include "extension.h" +#include "session.h" + +#include "ui_newvardlg.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +VariableManagerWidget::VariableManagerWidget(Cantor::Session* session, QWidget* parent) : QWidget(parent), + m_treeView(new QTreeView(this)) +{ + auto* layout = new QVBoxLayout(this); + layout->addWidget(m_treeView, 1); + + m_treeView->setRootIsDecorated(false); + m_treeView->setEditTriggers(QAbstractItemView::NoEditTriggers); + m_treeView->setAlternatingRowColors(true); + + auto* btnLayout = new QHBoxLayout(); + btnLayout->setSpacing(0); + btnLayout->setMargin(0); + + //Buttons to save/load the variables + int size = KIconLoader::global()->currentSize(KIconLoader::MainToolbar); + + m_newBtn = new QToolButton(this); + m_newBtn->setIcon(QIcon::fromTheme(QLatin1String("document-new"))); + m_newBtn->setToolTip(i18n("Add New Variable")); + m_newBtn->setIconSize(QSize(size, size)); + btnLayout->addWidget(m_newBtn); + + m_loadBtn=new QToolButton(this); + m_loadBtn->setIcon(QIcon::fromTheme(QLatin1String("document-open"))); + m_loadBtn->setToolTip(i18n("Load Variables")); + m_loadBtn->setIconSize(QSize(size, size)); + btnLayout->addWidget(m_loadBtn); + + m_saveBtn = new QToolButton(this); + m_saveBtn->setIcon(QIcon::fromTheme(QLatin1String("document-save"))); + m_saveBtn->setToolTip(i18n("Save Variables")); + m_saveBtn->setIconSize(QSize(size, size)); + btnLayout->addWidget(m_saveBtn); + + m_clearBtn = new QToolButton(this); + m_clearBtn->setIcon(QIcon::fromTheme(QLatin1String("edit-delete"))); + m_clearBtn->setToolTip(i18n("Remove Variables")); + m_clearBtn->setIconSize(QSize(size, size)); + btnLayout->addWidget(m_clearBtn); + + auto* spacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + btnLayout->addItem(spacer); + + //Filter + m_leFilter = new QLineEdit(this); + m_leFilter->setClearButtonEnabled(true); + m_leFilter->setPlaceholderText(i18n("Search/Filter")); + btnLayout->addWidget(m_leFilter); + + m_bFilterOptions = new QToolButton(this); + m_bFilterOptions->setIcon(QIcon::fromTheme(QLatin1String("configure"))); + m_bFilterOptions->setCheckable(true); + btnLayout->addWidget(m_bFilterOptions); + + layout->addLayout(btnLayout); + + //actions + m_caseSensitiveAction = new QAction(i18n("Case Sensitive"), this); + m_caseSensitiveAction->setCheckable(true); + m_caseSensitiveAction->setChecked(false); + + m_matchCompleteWordAction = new QAction(i18n("Match Complete Word"), this); + m_matchCompleteWordAction->setCheckable(true); + m_matchCompleteWordAction->setChecked(false); + + //signal-slot connections + connect(m_leFilter, &QLineEdit::textChanged, this, &VariableManagerWidget::filterTextChanged); + connect(m_bFilterOptions, &QPushButton::toggled, this, &VariableManagerWidget::toggleFilterOptionsMenu); + connect(m_caseSensitiveAction, &QAction::triggered, this, [=]() {filterTextChanged(m_leFilter->text());} ); + connect(m_matchCompleteWordAction, &QAction::triggered, this, [=]() {filterTextChanged(m_leFilter->text());}); + connect(m_newBtn, &QToolButton::clicked, this, &VariableManagerWidget::newVariable); + connect(m_loadBtn, &QToolButton::clicked, this, &VariableManagerWidget::load); + connect(m_saveBtn, &QToolButton::clicked, this, &VariableManagerWidget::save); + connect(m_clearBtn, &QToolButton::clicked, this, &VariableManagerWidget::clearVariables); + + setSession(session); +} + +void VariableManagerWidget::setSession(Cantor::Session* session) +{ + m_session = session; + if (session) + { + m_model = session->variableDataModel(); + if (m_treeView) + m_treeView->setModel(m_model); + + connect(m_model, &QAbstractItemModel::rowsInserted, this, &VariableManagerWidget::updateButtons); + connect(m_model, &QAbstractItemModel::rowsRemoved, this, &VariableManagerWidget::updateButtons); + updateButtons(); + + //check for the methods the backend actually supports, and disable the buttons accordingly + auto* ext = dynamic_cast( + m_session->backend()->extension(QLatin1String("VariableManagementExtension")) + ); + if (ext) + { + if(ext->loadVariables(QString()).isNull()) + m_loadBtn->setDisabled(true); + if(ext->saveVariables(QString()).isNull()) + m_saveBtn->setDisabled(true); + if(ext->addVariable(QString(), QString()).isNull()) + m_newBtn->setDisabled(true); + if(ext->clearVariables().isNull()) + m_clearBtn->setDisabled(true); + } + } +} + +void VariableManagerWidget::clearVariables() +{ + int btn = KMessageBox::questionYesNo(this, + i18n("Are you sure you want to remove all variables?"), + i18n("Remove Variables")); + if (btn == KMessageBox::Yes) + { + m_model->removeRows(0, m_model->rowCount()); + + //evaluate the "clear" command + auto* ext = dynamic_cast(m_session->backend()->extension(QLatin1String("VariableManagementExtension"))); + if (ext) + { + const QString& cmd = ext->clearVariables(); + emit runCommand(cmd); + } + + //HACK? should the model detect that this happened on its own? + //inform the model that all variables have been removed. + //Do so by trying to evaluate the clearVariables slot of + //DefaultVariableModel. If our model isn't one of those, + //this call will just do nothing. + QMetaObject::invokeMethod(m_model, "clearVariables", Qt::QueuedConnection); + + //QAbstractItemModel::rowsRemoved() doesn't seem to be sent in this case, + //call updateButtons explicitly + QTimer::singleShot(0, this, [=] () { updateButtons(); }); + } +} + +void VariableManagerWidget::save() +{ + const QString& file = QFileDialog::getSaveFileName(this, i18n("Save"), QString(), QString()); + if (file.trimmed().isEmpty()) + return; + + auto* ext = dynamic_cast(m_session->backend()->extension(QLatin1String("VariableManagementExtension"))); + if (ext) + { + const QString& cmd = ext->saveVariables(file); + emit runCommand(cmd); + } +} + +void VariableManagerWidget::load() +{ + const QString& file = QFileDialog::getOpenFileName(this, i18n("Load file"), QString(), QString()); + if (file.trimmed().isEmpty()) + return; + + auto* ext = dynamic_cast(m_session->backend()->extension(QLatin1String("VariableManagementExtension"))); + if (ext) + { + const QString& cmd=ext->loadVariables(file); + emit runCommand(cmd); + } +} + +void VariableManagerWidget::newVariable() +{ + QPointer dlg = new QDialog(this); + dlg->setWindowTitle(i18n("Add New Variable")); + dlg->setWindowIcon(QIcon::fromTheme(QLatin1String("document-new"))); + + QWidget* widget = new QWidget(dlg); + Ui::NewVariableDialogBase base; + base.setupUi(widget); + + auto* mainLayout = new QVBoxLayout; + dlg->setLayout(mainLayout); + + base.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); + base.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); + + connect(base.buttonBox, SIGNAL(accepted()), dlg, SLOT(accept()) ); + connect(base.buttonBox, SIGNAL(rejected()), dlg, SLOT(reject()) ); + + mainLayout->addWidget(widget); + + if (dlg->exec()) + { + const QString& name = base.name->text(); + const QString& val = base.value->text(); + + auto* ext = dynamic_cast(m_session->backend()->extension(QLatin1String("VariableManagementExtension"))); + if (ext) + { + const QString& cmd = ext->addVariable(name, val); + emit runCommand(cmd); + } + } + + delete dlg; +} + +/*! + toggles the menu for the filter/search options +*/ +void VariableManagerWidget::toggleFilterOptionsMenu(bool checked) { + if (checked) { + QMenu menu; + menu.addAction(m_caseSensitiveAction); + menu.addAction(m_matchCompleteWordAction); + connect(&menu, &QMenu::aboutToHide, m_bFilterOptions, &QPushButton::toggle); + menu.exec(m_bFilterOptions->mapToGlobal(QPoint(0, m_bFilterOptions->height()))); + } +} + +/*! + called when the filter/search text was changed. +*/ +void VariableManagerWidget::filterTextChanged(const QString& text) { + auto sensitivity = m_caseSensitiveAction->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive; + bool matchCompleteWord = m_matchCompleteWordAction->isChecked(); + const auto* model = m_treeView->model(); + + for (int i = 0; i < model->rowCount(); i++) { + const auto& child = model->index(i, 0); + const auto& name = model->data(child).toString(); + bool visible = true; + if (text.isEmpty()) + visible = true; + else if (matchCompleteWord) + visible = name.startsWith(text, sensitivity); + else + visible = name.contains(text, sensitivity); + + m_treeView->setRowHidden(i, QModelIndex(), !visible); + } +} + +void VariableManagerWidget::updateButtons() +{ + bool enabled = (m_treeView->model()->rowCount() != 0); + m_saveBtn->setEnabled(enabled); + m_clearBtn->setEnabled(enabled); +} diff --git a/src/panelplugins/variablemgr/variablemanagerwidget.h b/src/panelplugins/variablemgr/variablemanagerwidget.h new file mode 100644 index 0000000..b0ee5b4 --- /dev/null +++ b/src/panelplugins/variablemgr/variablemanagerwidget.h @@ -0,0 +1,59 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2010 Alexander Rieder + SPDX-FileCopyrightText: 2021 Alexander Semke +*/ + +#ifndef _VARIABLEMANAGERWIDGET_H +#define _VARIABLEMANAGERWIDGET_H + +#include + +namespace Cantor{ + class Session; +} + +class QAbstractItemModel; +class QLineEdit; +class QToolButton; +class QTreeView; + +class VariableManagerWidget : public QWidget +{ + Q_OBJECT +public: + VariableManagerWidget(Cantor::Session*, QWidget*); + ~VariableManagerWidget() override = default; + + void setSession(Cantor::Session*); + +public Q_SLOTS: + void clearVariables(); + + void save(); + void load(); + void newVariable(); + +Q_SIGNALS: + void runCommand(const QString&); + +private: + Cantor::Session* m_session{nullptr}; + QAbstractItemModel* m_model{nullptr}; + QTreeView* m_treeView{nullptr}; + QToolButton* m_newBtn{nullptr}; + QToolButton* m_loadBtn{nullptr}; + QToolButton* m_saveBtn{nullptr}; + QToolButton* m_clearBtn{nullptr}; + QLineEdit* m_leFilter; + QToolButton* m_bFilterOptions; + QAction* m_caseSensitiveAction; + QAction* m_matchCompleteWordAction; + +private Q_SLOTS: + void filterTextChanged(const QString&); + void toggleFilterOptionsMenu(bool); + void updateButtons(); +}; + +#endif /* _VARIABLEMANAGERWIDGET_H */ diff --git a/src/placeholderentry.cpp b/src/placeholderentry.cpp new file mode 100644 index 0000000..92cd842 --- /dev/null +++ b/src/placeholderentry.cpp @@ -0,0 +1,108 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#include "placeholderentry.h" + +#include +#include + +PlaceHolderEntry::PlaceHolderEntry(Worksheet* worksheet, QSizeF s) + : WorksheetEntry(worksheet) +{ + m_controlElement.hide(); + setSize(s); +} + +int PlaceHolderEntry::type() const +{ + return Type; +} + +bool PlaceHolderEntry::isEmpty() +{ + /* + // This is counter-intuitive. isEmpty() is used to find out whether a new + // CommandEntry needs to be appended, and a PlaceHolderEntry should never + // prevent that. + return false; + */ + return true; +} + +bool PlaceHolderEntry::acceptRichText() +{ + return false; +} + +void PlaceHolderEntry::setContent(const QString&) +{ +} + +void PlaceHolderEntry::setContent(const QDomElement&, const KZip&) +{ +} + +void PlaceHolderEntry::setContentFromJupyter(const QJsonObject& cell) +{ + Q_UNUSED(cell); + return; +} + +QJsonValue PlaceHolderEntry::toJupyterJson() +{ + return QJsonValue(); +} + + +QDomElement PlaceHolderEntry::toXml(QDomDocument&, KZip*) +{ + return QDomElement(); +} + +QString PlaceHolderEntry::toPlain(const QString&, const QString&, const QString&){ + return QString(); +} + +void PlaceHolderEntry::layOutForWidth(qreal entry_zone_x, qreal w, bool force) +{ + Q_UNUSED(entry_zone_x); + Q_UNUSED(w); + Q_UNUSED(force); +} + +bool PlaceHolderEntry::evaluate(EvaluationOption evalOp) +{ + evaluateNext(evalOp); + return true; +} + +void PlaceHolderEntry::updateEntry() +{ +} + +bool PlaceHolderEntry::wantToEvaluate() +{ + return false; +} + +void PlaceHolderEntry::changeSize(QSizeF s) +{ + if (!worksheet()->animationsEnabled()) { + setSize(s); + worksheet()->updateEntrySize(this); + return; + } + if (aboutToBeRemoved()) + return; + + if (animationActive()) + endAnimation(); + + QPropertyAnimation* sizeAn = sizeChangeAnimation(s); + + sizeAn->setEasingCurve(QEasingCurve::InOutQuad); + sizeAn->start(QAbstractAnimation::DeleteWhenStopped); +} + diff --git a/src/placeholderentry.h b/src/placeholderentry.h new file mode 100644 index 0000000..a1d655f --- /dev/null +++ b/src/placeholderentry.h @@ -0,0 +1,40 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#ifndef PLACEHOLDERENTRY_H +#define PLACEHOLDERENTRY_H + +#include "worksheetentry.h" + +class PlaceHolderEntry : public WorksheetEntry +{ + public: + PlaceHolderEntry(Worksheet* worksheet, QSizeF s); + ~PlaceHolderEntry() override = default; + + enum {Type = UserType + 6}; + int type() const override; + + bool isEmpty() override; + bool acceptRichText() override; + void setContent(const QString&) override; + void setContent(const QDomElement&, const KZip&) override; + void setContentFromJupyter(const QJsonObject & cell) override; + QDomElement toXml(QDomDocument&, KZip*) override; + QJsonValue toJupyterJson() override; + QString toPlain(const QString&, const QString&, const QString&) override; + void layOutForWidth(qreal entry_zone_x, qreal w, bool force = false) override; + + public Q_SLOTS: + bool evaluate(WorksheetEntry::EvaluationOption evalOp = FocusNext) override; + void updateEntry() override; + + void changeSize(QSizeF s); + + protected: + bool wantToEvaluate() override; +}; + +#endif //PLACEHOLDERENTRY_H diff --git a/src/resultitem.cpp b/src/resultitem.cpp new file mode 100644 index 0000000..9a0ba65 --- /dev/null +++ b/src/resultitem.cpp @@ -0,0 +1,83 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#include "resultitem.h" +#include "textresultitem.h" +#include "imageresultitem.h" +#include "animationresultitem.h" +#include "commandentry.h" +#include "worksheetentry.h" + +#include "lib/result.h" +#include "lib/textresult.h" +#include "lib/latexresult.h" +#include "lib/imageresult.h" +#include "lib/epsresult.h" +#include "lib/animationresult.h" +#include "lib/mimeresult.h" +#include "lib/htmlresult.h" + +#include + +#include +#include +#include + +ResultItem::ResultItem(Cantor::Result* result): + m_result(result) +{ +} + +ResultItem* ResultItem::create(WorksheetEntry* parent, Cantor::Result* result) +{ + switch(result->type()) { + case Cantor::TextResult::Type: + case Cantor::LatexResult::Type: + case Cantor::MimeResult::Type: + case Cantor::HtmlResult::Type: + { + return new TextResultItem(parent, result); + } + case Cantor::ImageResult::Type: + case Cantor::EpsResult::Type: + { + return new ImageResultItem(parent, result); + } + case Cantor::AnimationResult::Type: + { + return new AnimationResultItem(parent, result); + } + default: + return nullptr; + } +} + +void ResultItem::addCommonActions(QObject* self, QMenu* menu) +{ + menu->addAction(QIcon::fromTheme(QLatin1String("document-export")), i18n("Save result"), self, SLOT(saveResult())); + menu->addAction(QIcon::fromTheme(QLatin1String("edit-delete")), i18n("Remove result"), self, [this](){ + this->needRemove(); + }); +} + +QGraphicsObject* ResultItem::graphicsObject() +{ + return dynamic_cast(this); +} + +CommandEntry* ResultItem::parentEntry() +{ + return qobject_cast(graphicsObject()->parentObject()); +} + +Cantor::Result* ResultItem::result() +{ + return m_result; +} + +void ResultItem::needRemove() +{ + parentEntry()->removeResult(m_result); +} diff --git a/src/resultitem.h b/src/resultitem.h new file mode 100644 index 0000000..662a834 --- /dev/null +++ b/src/resultitem.h @@ -0,0 +1,60 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#ifndef RESULTITEM_H +#define RESULTITEM_H + +/* + * This is a common superclass of all result items. Unfortunately this class + * cannot inherit QGraphicsItem or QObject, because the subclasses inherit + * these from an other source (TextResultItem inherits WorksheetTextItem, for + * example). Therefore this class mainly offers the interface, and the + * implementations are done in each subclasses, even when the code is literally + * the same for them. + */ + +namespace Cantor { + class Result; +} + +class CommandEntry; +class WorksheetEntry; + +class QMenu; +class QObject; +class QPointF; +class QGraphicsObject; + +class ResultItem +{ + public: + ResultItem(Cantor::Result* result); + virtual ~ResultItem() = default; + + static ResultItem* create(WorksheetEntry* parent, Cantor::Result* result); + + virtual double setGeometry(double x, double y, double w) = 0; + virtual void populateMenu(QMenu* menu, QPointF pos) = 0; + + virtual void update() = 0; + + virtual void deleteLater() = 0; + + virtual double width() const = 0; + virtual double height() const = 0; + + QGraphicsObject* graphicsObject(); + Cantor::Result* result(); + CommandEntry* parentEntry(); + + protected: + void addCommonActions(QObject* self, QMenu* menu); + void needRemove(); + + protected: + Cantor::Result* m_result; +}; + +#endif // RESULTITEM_H diff --git a/src/scripteditor/CMakeLists.txt b/src/scripteditor/CMakeLists.txt new file mode 100644 index 0000000..ae969a4 --- /dev/null +++ b/src/scripteditor/CMakeLists.txt @@ -0,0 +1,10 @@ +set( scripteditor_SRCS + main.cpp + scripteditorwidget.cpp +) + +add_executable( cantor_scripteditor ${scripteditor_SRCS} ) + +target_link_libraries(cantor_scripteditor KF5::TextEditor) + +install(TARGETS cantor_scripteditor ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} ) diff --git a/src/scripteditor/main.cpp b/src/scripteditor/main.cpp new file mode 100644 index 0000000..f55ae67 --- /dev/null +++ b/src/scripteditor/main.cpp @@ -0,0 +1,29 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2018 Sirgienko Nikita +*/ + +#include +#include +#include +#include "scripteditorwidget.h" + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + + ScriptEditorWidget* editor = new ScriptEditorWidget(QLatin1String(""),QLatin1String("")); + + if (argc == 2) + { + // Open file, passed in arguments + QString filename = QLatin1String(argv[1]); + QUrl path = QUrl::fromLocalFile(filename); + qDebug() << "open " << path; + editor->open(path); + } + + editor->show(); + + return app.exec(); +} diff --git a/src/scripteditor/scripteditorwidget.cpp b/src/scripteditor/scripteditorwidget.cpp new file mode 100644 index 0000000..76949c9 --- /dev/null +++ b/src/scripteditor/scripteditorwidget.cpp @@ -0,0 +1,146 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#include "scripteditorwidget.h" + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +ScriptEditorWidget::ScriptEditorWidget(const QString& filter, const QString& highlightingMode, QWidget* parent) : KXmlGuiWindow(parent), +m_filter(filter), +m_editor(nullptr), +m_script(nullptr), +m_tmpFile(nullptr) +{ + setObjectName(QStringLiteral("ScriptEditor")); + + KStandardAction::openNew(this, SLOT(newScript()), actionCollection()); + KStandardAction::open(this, SLOT(open()), actionCollection()); + KStandardAction::close(this, SLOT(close()), actionCollection()); + QAction * runAction = actionCollection()->addAction(QStringLiteral("file_execute"), this, SLOT(run())); + runAction->setIcon(QIcon::fromTheme(QStringLiteral("system-run"))); + runAction->setText(i18n("Run Script")); + + KTextEditor::Editor* editor = KTextEditor::Editor::instance(); + if (!editor) + { + KMessageBox::error(this, i18n("A KDE text-editor component could not be found;\n" + "please check your KDE installation.")); + } + else + { + m_script=editor->createDocument(nullptr); + m_editor=qobject_cast(m_script->createView(this)); + + m_script->setHighlightingMode(highlightingMode); + + KConfigGroup cg(KSharedConfig::openConfig(), "ScriptEditor"); + setAutoSaveSettings(cg, true); + + setCentralWidget(m_editor); + setupGUI(QSize(500,600), Default, QStringLiteral("cantor_scripteditor.rc")); + guiFactory()->addClient(m_editor); + + KWindowConfig::restoreWindowSize(this->windowHandle(), cg); + + connect(m_script, &KTextEditor::Document::modifiedChanged, this, &ScriptEditorWidget::updateCaption); + connect(m_script, &KTextEditor::Document::documentUrlChanged, this, &ScriptEditorWidget::updateCaption); + updateCaption(); + } +} + +ScriptEditorWidget::~ScriptEditorWidget() +{ + if (m_script) + delete m_script; + if (m_tmpFile) + delete m_tmpFile; +} + +void ScriptEditorWidget::newScript() +{ + QString highlightingMode = m_script->highlightingMode(); + m_script->closeUrl(); + m_script->setHighlightingMode(highlightingMode); +} + +void ScriptEditorWidget::open() +{ + QUrl url = QFileDialog::getOpenFileUrl(this, QString(), QUrl(), m_filter); + m_script->openUrl(url); +} + +void ScriptEditorWidget::open(const QUrl &url) +{ + m_script->openUrl(url); +} + +void ScriptEditorWidget::run() +{ + QString filename; + if(!m_script->url().isLocalFile()) + { + // If the script is not in a local file, write it to a temporary file + if(m_tmpFile==nullptr) + { + m_tmpFile=new QTemporaryFile(); + } + else + { + m_tmpFile->resize(0); + } + m_tmpFile->open(); + QString text=m_script->text(); + m_tmpFile->write(text.toUtf8()); + m_tmpFile->close(); + + filename=m_tmpFile->fileName(); + }else + { + m_script->save(); + filename=m_script->url().toLocalFile(); + } + + qDebug()<<"running "<queryClose(); + else + return true; +} + +void ScriptEditorWidget::updateCaption() +{ + QString fileName = m_script->url().toLocalFile(); + bool modified = m_script->isModified(); + if (fileName.isEmpty()) + { + setCaption(i18n("Script Editor"), modified); + }else + { + setCaption(i18n("Script Editor - %1", fileName), modified); + } +} + + diff --git a/src/scripteditor/scripteditorwidget.h b/src/scripteditor/scripteditorwidget.h new file mode 100644 index 0000000..8da42ea --- /dev/null +++ b/src/scripteditor/scripteditorwidget.h @@ -0,0 +1,47 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder +*/ + +#ifndef _SCRIPTEDITORWIDGET_H +#define _SCRIPTEDITORWIDGET_H + +#include + +class QTemporaryFile; +class QGridLayout; +namespace KTextEditor +{ + class View; + class Document; +} + + +class ScriptEditorWidget : public KXmlGuiWindow +{ + Q_OBJECT + public: + explicit ScriptEditorWidget( const QString& filter, const QString& highlightingMode, QWidget* parent = nullptr ); + ~ScriptEditorWidget() override; + void open(const QUrl &url); + + Q_SIGNALS: + void runScript(const QString& filename); + + private Q_SLOTS: + void newScript(); + void open(); + void run(); + void updateCaption(); + + protected: + bool queryClose() override; + + private: + QString m_filter; + KTextEditor::View* m_editor; + KTextEditor::Document* m_script; + QTemporaryFile* m_tmpFile; +}; + +#endif /* _SCRIPTEDITORWIDGET_H */ diff --git a/src/searchbar.cpp b/src/searchbar.cpp new file mode 100644 index 0000000..6749e5e --- /dev/null +++ b/src/searchbar.cpp @@ -0,0 +1,479 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#include "searchbar.h" + +#include "worksheet.h" +#include "worksheetentry.h" +#include "worksheettextitem.h" +#include "worksheetview.h" + +#include +#include +#include + +SearchBar::SearchBar(QWidget* parent, Worksheet* worksheet) : QWidget(parent), + m_stdUi(new Ui::StandardSearchBar()), + m_worksheet(worksheet), + m_searchFlags{WorksheetEntry::SearchAll} +{ + setupStdUi(); + setStartCursor(worksheet->worksheetCursor()); + setCurrentCursor(m_startCursor); +} + +SearchBar::~SearchBar() +{ + if (m_stdUi) + delete m_stdUi; + else + delete m_extUi; + if (m_currentCursor.isValid()) { + worksheet()->worksheetView()->setFocus(); + m_currentCursor.entry()->focusEntry(); + } else if (m_startCursor.isValid()) { + worksheet()->worksheetView()->setFocus(); + m_startCursor.entry()->focusEntry(); + } +} + +void SearchBar::showStandard() +{ + if (m_stdUi) + return; + + delete m_extUi; + m_extUi = nullptr; + for (auto* child : children()) + delete child; + + delete layout(); + m_stdUi = new Ui::StandardSearchBar(); + setupStdUi(); +} + +void SearchBar::showExtended() +{ + if (m_extUi) + return; + + delete m_stdUi; + m_stdUi = nullptr; + for (auto* child : children()) + delete child; + + delete layout(); + m_extUi = new Ui::ExtendedSearchBar(); + setupExtUi(); + +} + +void SearchBar::next() +{ + if (!m_currentCursor.isValid() && !m_currentCursor.entry() && !m_atEnd) + return; + searchForward(true); +} + +void SearchBar::prev() +{ + if (!m_currentCursor.isValid() && !m_currentCursor.entry() && + !m_atBeginning) + return; + searchBackward(true); +} + +void SearchBar::searchBackward(bool skipFirstChar) +{ + WorksheetCursor result; + WorksheetEntry* entry; + worksheet()->setWorksheetCursor(WorksheetCursor()); + QTextDocument::FindFlags f = m_qtFlags | QTextDocument::FindBackward; + if (m_currentCursor.isValid()) { + bool atBeginningOfEntry = false; + if (skipFirstChar) { + QTextCursor c = m_currentCursor.textCursor(); + c.movePosition(QTextCursor::PreviousCharacter); + atBeginningOfEntry = (c == m_currentCursor.textCursor()); + setCurrentCursor(WorksheetCursor(m_currentCursor.entry(), + m_currentCursor.textItem(), c)); + } + if (!atBeginningOfEntry) + result = m_currentCursor.entry()->search(m_pattern, m_searchFlags, + f, m_currentCursor); + entry = m_currentCursor.entry()->previous(); + } else if (m_currentCursor.entry() && m_currentCursor.entry()->previous()) { + entry = m_currentCursor.entry()->previous(); + } else { + entry = worksheet()->lastEntry(); + } + setCurrentCursor(WorksheetCursor()); + + while (!result.isValid() && entry) { + result = entry->search(m_pattern, m_searchFlags, f); + entry = entry->previous(); + } + if (result.isValid()) { + m_atBeginning = false; + QTextCursor c = result.textCursor(); + if (result.textCursor().hasSelection()) + c.setPosition(result.textCursor().selectionStart()); + setCurrentCursor(WorksheetCursor(result.entry(), result.textItem(), c)); + worksheet()->makeVisible(m_currentCursor); + clearStatus(); + worksheet()->setWorksheetCursor(result); + } else { + if (m_atBeginning) { + m_notFound = true; + setStatus(i18n("Not found")); + } else { + m_atBeginning = true; + setStatus(i18n("Reached beginning")); + } + worksheet()->setWorksheetCursor(m_startCursor); + } +} + +void SearchBar::searchForward(bool skipFirstChar) +{ + WorksheetCursor result; + WorksheetEntry* entry; + worksheet()->setWorksheetCursor(WorksheetCursor()); + if (m_currentCursor.isValid()) { + if (skipFirstChar) { + QTextCursor c = m_currentCursor.textCursor(); + c.movePosition(QTextCursor::NextCharacter); + setCurrentCursor(WorksheetCursor(m_currentCursor.entry(), + m_currentCursor.textItem(), c)); + } + result = m_currentCursor.entry()->search(m_pattern, m_searchFlags, + m_qtFlags, m_currentCursor); + entry = m_currentCursor.entry()->next(); + } else if (m_currentCursor.entry()) { + entry = m_currentCursor.entry(); + } else { + entry = worksheet()->firstEntry(); + } + setCurrentCursor(WorksheetCursor()); + + while (!result.isValid() && entry) { + result = entry->search(m_pattern, m_searchFlags, m_qtFlags); + entry = entry->next(); + } + + if (result.isValid()) { + m_atEnd = false; + QTextCursor c = result.textCursor(); + if (result.textCursor().hasSelection()) + c.setPosition(result.textCursor().selectionStart()); + setCurrentCursor(WorksheetCursor(result.entry(), result.textItem(), c)); + worksheet()->makeVisible(m_currentCursor); + clearStatus(); + worksheet()->setWorksheetCursor(result); + } else { + if (m_atEnd) { + m_notFound = true; + setStatus(i18n("Not found")); + } else { + m_atEnd = true; + setStatus(i18n("Reached end")); + } + worksheet()->setWorksheetCursor(m_startCursor); + } +} + +void SearchBar::on_close_clicked() +{ + deleteLater(); +} + +void SearchBar::on_openExtended_clicked() +{ + showExtended(); +} + +void SearchBar::on_openStandard_clicked() +{ + showStandard(); +} + +void SearchBar::on_next_clicked() +{ + next(); +} + +void SearchBar::on_previous_clicked() +{ + prev(); +} + +void SearchBar::on_replace_clicked() +{ + if (!m_currentCursor.isValid()) + return; + + QTextCursor cursor = m_currentCursor.textCursor(); + cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, + m_pattern.length()); + cursor.insertText(m_replacement); + next(); +} + +void SearchBar::on_replaceAll_clicked() +{ + int count = 0; + WorksheetEntry* entry = worksheet()->firstEntry(); + WorksheetCursor cursor; + for (; entry; entry = entry->next()) { + cursor = entry->search(m_pattern, m_searchFlags, m_qtFlags); + while (cursor.isValid()) { + cursor.textCursor().insertText(m_replacement); + cursor = entry->search(m_pattern, m_searchFlags, m_qtFlags, + cursor); + ++count; + } + } + setStatus(i18np("Replaced %1 instance", "Replaced %1 instances", count)); +} + +void SearchBar::on_pattern_textChanged(const QString& p) +{ + worksheet()->setWorksheetCursor(WorksheetCursor()); + m_atBeginning = m_atEnd = m_notFound = false; + if (!p.startsWith(m_pattern)) + setCurrentCursor(m_startCursor); + m_pattern = p; + if (!m_pattern.isEmpty()) { + searchForward(); + nextButton()->setEnabled(true); + previousButton()->setEnabled(true); + if (m_extUi) { + m_extUi->replace->setEnabled(true); + m_extUi->replaceAll->setEnabled(true); + } + } else { + worksheet()->setWorksheetCursor(m_startCursor); + nextButton()->setEnabled(false); + previousButton()->setEnabled(false); + if (m_extUi) { + m_extUi->replace->setEnabled(false); + m_extUi->replaceAll->setEnabled(false); + } + } +} + +void SearchBar::on_replacement_textChanged(const QString& r) +{ + m_replacement = r; +} + +void SearchBar::on_removeFlag_clicked() +{ + QMenu* menu = new QMenu(this); + fillLocationsMenu(menu, m_searchFlags); + connect(menu, SIGNAL("aboutToHide()"), menu, SLOT("deleteLater()")); + menu->exec(mapToGlobal(m_extUi->removeFlag->geometry().topLeft())); +} + +void SearchBar::on_addFlag_clicked() +{ + QMenu* menu = new QMenu(this); + fillLocationsMenu(menu, WorksheetEntry::SearchAll ^ m_searchFlags); + connect(menu, SIGNAL("aboutToHide()"), menu, SLOT("deleteLater()")); + menu->exec(mapToGlobal(m_extUi->addFlag->geometry().topLeft())); +} + +void SearchBar::invalidateStartCursor() +{ + if (!m_startCursor.isValid()) + return; + + WorksheetEntry* entry = m_startCursor.entry()->next(); + if (!entry && worksheet()->firstEntry() != m_startCursor.entry()) + entry = worksheet()->firstEntry(); + + setStartCursor(WorksheetCursor(entry, nullptr, QTextCursor())); +} + +void SearchBar::invalidateCurrentCursor() +{ + if (!m_currentCursor.isValid()) + return; + + WorksheetEntry* entry = m_currentCursor.entry()->next(); + if (!entry) + entry = worksheet()->firstEntry(); + + setCurrentCursor(WorksheetCursor(entry, nullptr, QTextCursor())); +} + +void SearchBar::toggleFlag() +{ + if (!sender()) + return; + int flag = sender()->property("searchFlag").toInt(); + m_searchFlags ^= flag; + updateSearchLocations(); +} + +void SearchBar::on_matchCase_toggled(bool b) +{ + m_qtFlags &= ~QTextDocument::FindCaseSensitively; + if (b) + m_qtFlags |= QTextDocument::FindCaseSensitively; + searchForward(); +} + +void SearchBar::updateSearchLocations() +{ + static QList names; + if (names.empty()) + names << i18n("Commands") << i18n("Results") << i18n("Errors") + << i18n("Text") << i18n("LaTeX Code"); + + QString text = QLatin1String(""); + int flag = 1; + for (int i = 0; flag < WorksheetEntry::SearchAll; flag = (1<<(++i))) { + if (m_searchFlags & flag) { + if (!text.isEmpty()) + text += QLatin1String(", "); + text += names.at(i); + } + } + m_extUi->searchFlagsList->setText(text); + if (m_searchFlags == 0) { + m_extUi->removeFlag->setEnabled(false); + m_extUi->addFlag->setEnabled(true); + } else if (m_searchFlags == WorksheetEntry::SearchAll) { + m_extUi->removeFlag->setEnabled(true); + m_extUi->addFlag->setEnabled(false); + } else { + m_extUi->addFlag->setEnabled(true); + m_extUi->removeFlag->setEnabled(true); + } +} + +void SearchBar::fillLocationsMenu(QMenu* menu, int flags) +{ + static QList names; + if (names.empty()) + names << i18n("Commands") << i18n("Results") << i18n("Errors") + << i18n("Text") << i18n("LaTeX Code"); + int flag = 1; + for (int i = 0; flag < WorksheetEntry::SearchAll; flag = (1<<(++i))) { + if (flags & flag) { + QAction* a = menu->addAction(names.at(i), this, SLOT(toggleFlag())); + a->setProperty("searchFlag", flag); + } + } +} + +void SearchBar::setStartCursor(WorksheetCursor cursor) +{ + if (m_startCursor.entry()) + disconnect(m_startCursor.entry(), SIGNAL(aboutToBeDeleted()), this, + SLOT(invalidateStartCursor())); + if (cursor.entry()) + connect(cursor.entry(), SIGNAL(aboutToBeDeleted()), this, + SLOT(invalidateStartCursor()), Qt::DirectConnection); + m_startCursor = cursor; +} + +void SearchBar::setCurrentCursor(WorksheetCursor cursor) +{ + if (m_currentCursor.entry()) + disconnect(m_currentCursor.entry(), SIGNAL(aboutToBeDeleted()), this, + SLOT(invalidateCurrentCursor())); + if (cursor.entry()) + connect(cursor.entry(), SIGNAL(aboutToBeDeleted()), this, + SLOT(invalidateCurrentCursor()), Qt::DirectConnection); + m_currentCursor = cursor; +} + +void SearchBar::setStatus(QString message) +{ + KSqueezedTextLabel* status; + if (m_stdUi) + status = m_stdUi->status; + else + status = m_extUi->status; + + status->setText(message); +} + +void SearchBar::clearStatus() +{ + setStatus(QLatin1String("")); +} + +void SearchBar::setupStdUi() +{ + if (!m_stdUi) + return; + + m_stdUi->setupUi(this); + m_stdUi->close->setIcon(QIcon::fromTheme(QLatin1String("dialog-close"))); + m_stdUi->openExtended->setIcon(QIcon::fromTheme(QLatin1String("arrow-up-double"))); + m_stdUi->pattern->setText(m_pattern); + m_stdUi->matchCase->setChecked(m_qtFlags & QTextDocument::FindCaseSensitively); + m_stdUi->next->setIcon(QIcon::fromTheme(QLatin1String("go-down-search"))); + m_stdUi->previous->setIcon(QIcon::fromTheme(QLatin1String("go-up-search"))); + if (m_pattern.isEmpty()) { + m_stdUi->next->setEnabled(false); + m_stdUi->previous->setEnabled(false); + } + + m_stdUi->close->setShortcut(Qt::Key_Escape); + setFocusProxy(m_stdUi->pattern); +} + +void SearchBar::setupExtUi() +{ + if (!m_extUi) + return; + + m_extUi->setupUi(this); + m_extUi->close->setIcon(QIcon::fromTheme(QLatin1String("dialog-close"))); + m_extUi->openStandard->setIcon(QIcon::fromTheme(QLatin1String("arrow-down-double"))); + m_extUi->pattern->setText(m_pattern); + m_extUi->replacement->setText(m_replacement); + m_extUi->matchCase->setChecked(m_qtFlags & QTextDocument::FindCaseSensitively); + m_extUi->next->setIcon(QIcon::fromTheme(QLatin1String("go-down-search"))); + m_extUi->previous->setIcon(QIcon::fromTheme(QLatin1String("go-up-search"))); + if (m_pattern.isEmpty()) { + m_extUi->next->setEnabled(false); + m_extUi->previous->setEnabled(false); + m_extUi->replace->setEnabled(false); + m_extUi->replaceAll->setEnabled(false); + } + + m_extUi->addFlag->setIcon(QIcon::fromTheme(QLatin1String("list-add"))); + m_extUi->removeFlag->setIcon(QIcon::fromTheme(QLatin1String("list-remove"))); + + m_extUi->close->setShortcut(Qt::Key_Escape); + setFocusProxy(m_extUi->pattern); + updateSearchLocations(); +} + +QPushButton* SearchBar::previousButton() +{ + if (m_stdUi) + return m_stdUi->previous; + else + return m_extUi->previous; +} + +QPushButton* SearchBar::nextButton() +{ + if (m_stdUi) + return m_stdUi->next; + else + return m_extUi->next; +} + +Worksheet* SearchBar::worksheet() +{ + return m_worksheet; +} diff --git a/src/searchbar.h b/src/searchbar.h new file mode 100644 index 0000000..50fb3a9 --- /dev/null +++ b/src/searchbar.h @@ -0,0 +1,97 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#ifndef SEARCHBAR_H +#define SEARCHBAR_H + +#include +#include + +#include "ui_standardsearchbar.h" +#include "ui_extendedsearchbar.h" + +#include "worksheetcursor.h" + +class Worksheet; +class WorksheetEntry; +class WorksheetTextItem; + +class QMenu; + +class SearchBar : public QWidget +{ + Q_OBJECT + public: + SearchBar(QWidget*, Worksheet*); + ~SearchBar() override; + + void showStandard(); + void showExtended(); + + void next(); + void prev(); + + void searchForward(bool skipFirstChar = false); + void searchBackward(bool skipFirstChar = false); + + public Q_SLOTS: + void on_close_clicked(); + void on_openExtended_clicked(); + void on_openStandard_clicked(); + void on_next_clicked(); + void on_previous_clicked(); + void on_replace_clicked(); + void on_replaceAll_clicked(); + void on_pattern_textChanged(const QString&); + void on_replacement_textChanged(const QString&); + void on_addFlag_clicked(); + void on_removeFlag_clicked(); + void on_matchCase_toggled(bool b); + + void invalidateStartCursor(); + void invalidateCurrentCursor(); + + protected Q_SLOTS: + void toggleFlag(); + + private: + + void updateSearchLocations(); + void fillLocationsMenu(QMenu*, int flags); + + void setupStdUi(); + void setupExtUi(); + + void setStatus(QString); + void clearStatus(); + + void setStartCursor(WorksheetCursor); + void setCurrentCursor(WorksheetCursor); + + Worksheet* worksheet(); + + QPushButton* nextButton(); + QPushButton* previousButton(); + + private: + Ui::StandardSearchBar* m_stdUi; + Ui::ExtendedSearchBar* m_extUi{nullptr}; + + WorksheetCursor m_startCursor; + WorksheetCursor m_currentCursor; + + Worksheet* m_worksheet; + QString m_pattern; + QString m_replacement; + QTextDocument::FindFlags m_qtFlags; + unsigned int m_searchFlags; + + bool m_atBeginning{false}; + bool m_atEnd{false}; + bool m_notFound{false}; +}; + +#endif // SEARCHBAR_H + diff --git a/src/settings.kcfgc b/src/settings.kcfgc new file mode 100644 index 0000000..cc51742 --- /dev/null +++ b/src/settings.kcfgc @@ -0,0 +1,5 @@ +File=cantor.kcfg +ClassName=Settings +Singleton=true +Visibility=Q_DECL_EXPORT +Mutators=true diff --git a/src/settings.ui b/src/settings.ui new file mode 100644 index 0000000..d3be1e3 --- /dev/null +++ b/src/settings.ui @@ -0,0 +1,311 @@ + + + SettingsBase + + + + 0 + 0 + 525 + 586 + + + + + + + + 75 + true + + + + Startup: + + + + + + + Create a new worksheet for the selected backend system. If none is selected, the user is asked about which system to use on startup. + + + Default Backend: + + + + + + + Qt::Horizontal + + + + 188 + 20 + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 10 + + + + + + + + + 75 + true + + + + Worksheet: + + + + + + + Enable LaTeX typesetting for the results of the calculations, if supported by the backend system + + + LaTeX typesetting + + + + + + + Enable syntax highlighting + + + Syntax highlighting + + + + + + + Enable syntax completion + + + Completion + + + + + + + Show line numbers + + + Line numbers + + + + + + + Enable animation effects in the worksheet + + + Animations + + + + + + + If enabled, text entries are aligned at the worksheet border and not at the prompt border + + + Don't indent text entries + + + + + + + Use rich text format for text entries when saving in Jupyter Notebook Format + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 10 + + + + + + + + + 75 + true + + + + Evaluation: + + + + + + + If enabled, the user will be asked for confirmation prior to restarting the backend system + + + Ask for confirmation when restarting the backend + + + + + + + If enabled, all entries below the current one will be evaluated automatically + + + Reevaluate entries automatically + + + + + + + + + + Number of rows in the result (0 for unlimited): + + + + + + + Qt::Horizontal + + + + 92 + 20 + + + + + + + + Maximal number of visible rows in the result of a command entry. Use 0 to work without limitations. + + + 10000 + + + 0 + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 10 + + + + + + + + + 75 + true + + + + Markdown: + + + + + + + Enable LaTeX typesetting for mathematical expressions in Markdown entries + + + Mathematical expressions via LaTeX + + + + + + + Notify about render failures for mathematical expressions + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Create a new worksheet for the selected backend system. If none is selected, the user is asked about which system to use on startup. + + + true + + + + + + + + KComboBox + QComboBox +
        kcombobox.h
        +
        +
        + + +
        diff --git a/src/standardsearchbar.ui b/src/standardsearchbar.ui new file mode 100644 index 0000000..a4a5ced --- /dev/null +++ b/src/standardsearchbar.ui @@ -0,0 +1,118 @@ + + + StandardSearchBar + + + + 0 + 0 + 736 + 34 + + + + SearchBar + + + + + + + + ... + + + true + + + + + + + true + + + Find… + + + + 16777215 + 16777215 + + + + + + + + &Next + + + + + + + &Previous + + + + + + + &Match case + + + true + + + + + + + Qt::AlignCenter + + + + 160 + 16777215 + + + + + + + + ... + + + true + + + + + + + + + + KLineEdit + QLineEdit +
        klineedit.h
        +
        + + KSqueezedTextLabel + QLabel +
        ksqueezedtextlabel.h
        +
        +
        + + pattern + next + previous + matchCase + openExtended + close + + + +
        diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt new file mode 100644 index 0000000..da91efa --- /dev/null +++ b/src/test/CMakeLists.txt @@ -0,0 +1,77 @@ +set(worksheettest_SRCS + ../worksheet.cpp + ../worksheetview.cpp + ../worksheetentry.cpp + ../worksheettextitem.cpp + ../worksheetimageitem.cpp + ../commandentry.cpp + ../textentry.cpp + ../markdownentry.cpp + ../pagebreakentry.cpp + ../imageentry.cpp + ../latexentry.cpp + ../placeholderentry.cpp + ../horizontalruleentry.cpp + ../hierarchyentry.cpp + ../worksheetcursor.cpp + ../searchbar.cpp + ../actionbar.cpp + ../worksheettoolbutton.cpp + ../imagesettingsdialog.cpp + ../scripteditor/scripteditorwidget.cpp + ../resultitem.cpp + ../textresultitem.cpp + ../imageresultitem.cpp + ../animationresultitem.cpp + ../loadedexpression.cpp + ../animation.cpp + ../mathrender.cpp + ../mathrendertask.cpp + ../worksheetcontrolitem.cpp + worksheet_test.cpp) + +ki18n_wrap_ui(worksheettest_SRCS ../imagesettings.ui) +ki18n_wrap_ui(worksheettest_SRCS ../standardsearchbar.ui) +ki18n_wrap_ui(worksheettest_SRCS ../extendedsearchbar.ui) +kconfig_add_kcfg_files(worksheettest_SRCS ../settings.kcfgc) + +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data) +configure_file("data/Lecture-2B-Single-Atom-Lasing.ipynb" data COPYONLY) +configure_file("data/AEC.04 - Evolutionary Strategies and Covariance Matrix Adaptation.ipynb" data COPYONLY) +configure_file("data/Population_Genetics.ipynb" data COPYONLY) +configure_file("data/A Reaction-Diffusion Equation Solver in Python with Numpy.ipynb" data COPYONLY) +configure_file("data/Automata and Computability using Jupyter.ipynb" data COPYONLY) +configure_file("data/Cue Combination with Neural Populations .ipynb" data COPYONLY) +configure_file("data/Transformation2D.ipynb" data COPYONLY) +configure_file("data/TestMarkdownAttachment.ipynb" data COPYONLY) +configure_file("data/TestEntryLoad1.ipynb" data COPYONLY) +configure_file("data/TestEntryLoad2.ipynb" data COPYONLY) +configure_file("data/TestResultsLoad.ipynb" data COPYONLY) +configure_file("data/TestNotebookWithJson.ipynb" data COPYONLY) +configure_file("data/TestNotebookWithModJson.ipynb" data COPYONLY) +configure_file("data/EmptyPythonWorksheet.cws" data COPYONLY) +configure_file("data/TestCommandEntryExecutionAction.cws" data COPYONLY) +configure_file("data/TwoCommandEntryWithResults.cws" data COPYONLY) + +set(PATH_TO_TEST_NOTEBOOKS ${CMAKE_CURRENT_BINARY_DIR}/data) +configure_file (config-cantor-test.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-cantor-test.h ) + +add_executable( testworksheet ${worksheettest_SRCS}) +#add_test(NAME testworksheet COMMAND testworksheet) +target_link_libraries( testworksheet + cantorlibs + cantor_config + Qt5::Test + Qt5::PrintSupport + Qt5::Xml + ${Qt5XmlPatterns_LIBRARIES} + KF5::TextEditor + Poppler::Qt5 +) + +if(LIBSPECTRE_FOUND) + target_link_libraries(testworksheet ${LIBSPECTRE_LIBRARY}) +endif(LIBSPECTRE_FOUND) +if(Discount_FOUND) + target_link_libraries(testworksheet Discount::Lib) +endif(Discount_FOUND) diff --git a/src/test/config-cantor-test.h.cmake b/src/test/config-cantor-test.h.cmake new file mode 100644 index 0000000..ae83b2a --- /dev/null +++ b/src/test/config-cantor-test.h.cmake @@ -0,0 +1 @@ +#define PATH_TO_TEST_NOTEBOOKS "${PATH_TO_TEST_NOTEBOOKS}" diff --git a/src/test/data/A Reaction-Diffusion Equation Solver in Python with Numpy.ipynb b/src/test/data/A Reaction-Diffusion Equation Solver in Python with Numpy.ipynb new file mode 100644 index 0000000..76eb957 --- /dev/null +++ b/src/test/data/A Reaction-Diffusion Equation Solver in Python with Numpy.ipynb @@ -0,0 +1,785 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook demonstrates how IPython notebooks can be used to discuss the theory and implementation of numerical algorithms on one page.\n", + "\n", + "With `ipython nbconvert --to markdown name.ipynb` a notebook like this one can be made into a \n", + "[blog post](http://georg.io/2013/12/Crank_Nicolson) in one easy step. To display the graphics in your resultant blog post use,\n", + "for instance, your [Dropbox Public folder](https://www.dropbox.com/help/16/en) that you can \n", + "[activate here](https://www.dropbox.com/enable_public_folder)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# The Crank-Nicolson Method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The [Crank-Nicolson method](http://en.wikipedia.org/wiki/Crank%E2%80%93Nicolson_method) is a well-known finite difference method for the\n", + "numerical integration of the heat equation and closely related partial differential equations.\n", + "\n", + "We often resort to a Crank-Nicolson (CN) scheme when we integrate numerically reaction-diffusion systems in one space dimension\n", + "\n", + "$$\\frac{\\partial u}{\\partial t} = D \\frac{\\partial^2 u}{\\partial x^2} + f(u),$$\n", + "\n", + "$$\\frac{\\partial u}{\\partial x}\\Bigg|_{x = 0, L} = 0,$$\n", + "\n", + "where $u$ is our concentration variable, $x$ is the space variable, $D$ is the diffusion coefficient of $u$, $f$ is the reaction term,\n", + "and $L$ is the length of our one-dimensional space domain.\n", + "\n", + "Note that we use [Neumann boundary conditions](http://en.wikipedia.org/wiki/Neumann_boundary_condition) and specify that the solution\n", + "$u$ has zero space slope at the boundaries, effectively prohibiting entrance or exit of material at the boundaries (no-flux boundary conditions)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Finite Difference Methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Many fantastic textbooks and tutorials have been written about finite difference methods, for instance a free textbook by\n", + "[Lloyd Trefethen](http://people.maths.ox.ac.uk/trefethen/pdetext.html).\n", + "\n", + "Here we describe a few basic aspects of finite difference methods.\n", + "\n", + "The above reaction-diffusion equation describes the time evolution of variable $u(x,t)$ in one space dimension ($u$ is a line concentration).\n", + "If we knew an analytic expression for $u(x,t)$ then we could plot $u$ in a two-dimensional coordinate system with axes $t$ and $x$.\n", + "\n", + "To approximate $u(x,t)$ numerically we discretize this two-dimensional coordinate system resulting, in the simplest case, in a\n", + "two-dimensional [regular grid](http://en.wikipedia.org/wiki/Regular_grid).\n", + "This picture is employed commonly when constructing finite differences methods, see for instance \n", + "[Figure 3.2.1 of Trefethen](http://people.maths.ox.ac.uk/trefethen/3all.pdf).\n", + "\n", + "Let us discretize both time and space as follows:\n", + "\n", + "$$t_n = n \\Delta t,~ n = 0, \\ldots, N-1,$$\n", + "\n", + "$$x_j = j \\Delta x,~ j = 0, \\ldots, J-1,$$\n", + "\n", + "where $N$ and $J$ are the number of discrete time and space points in our grid respectively.\n", + "$\\Delta t$ and $\\Delta x$ are the time step and space step respectively and defined as follows:\n", + "\n", + "$$\\Delta t = T / N,$$\n", + "\n", + "$$\\Delta x = L / J,$$\n", + "\n", + "where $T$ is the point in time up to which we will integrate $u$ numerically.\n", + "\n", + "Our ultimate goal is to construct a numerical method that allows us to approximate the unknonwn analytic solution $u(x,t)$\n", + "reasonably well in these discrete grid points.\n", + "\n", + "That is we want construct a method that computes values $U(j \\Delta x, n \\Delta t)$ (note: capital $U$) so that\n", + "\n", + "$$U(j \\Delta x, n \\Delta t) \\approx u(j \\Delta x, n \\Delta t)$$\n", + "\n", + "As a shorthand we will write $U_j^n = U(j \\Delta x, n \\Delta t)$ and $(j,n)$ to refer to grid point $(j \\Delta x, n \\Delta t)$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The Crank-Nicolson Stencil" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Based on the two-dimensional grid we construct we then approximate the operators of our reaction-diffusion system.\n", + "\n", + "For instance, to approximate the time derivative on the left-hand side in grid point $(j,n)$ we use the values of $U$ in two specific grid points:\n", + "\n", + "$$\\frac{\\partial u}{\\partial t}\\Bigg|_{x = j \\Delta x, t = n \\Delta t} \\approx \\frac{U_j^{n+1} - U_j^n}{\\Delta t}.$$\n", + "\n", + "We can think of this scheme as a stencil that we superimpose on our $(x,t)$-grid and this particular stencil is\n", + "commonly referred to as [forward difference](http://en.wikipedia.org/wiki/Finite_difference#Forward.2C_backward.2C_and_central_differences).\n", + "\n", + "The spatial part of the [Crank-Nicolson stencil](http://journals.cambridge.org/abstract_S0305004100023197)\n", + "(or see [Table 3.2.2 of Trefethen](http://people.maths.ox.ac.uk/trefethen/3all.pdf))\n", + "for the heat equation ($u_t = u_{xx}$) approximates the \n", + "[Laplace operator](http://en.wikipedia.org/wiki/Laplace_operator) of our equation and takes the following form\n", + "\n", + "$$\\frac{\\partial^2 u}{\\partial x^2}\\Bigg|_{x = j \\Delta x, t = n \\Delta t} \\approx \\frac{1}{2 \\Delta x^2} \\left( U_{j+1}^n - 2 U_j^n + U_{j-1}^n + U_{j+1}^{n+1} - 2 U_j^{n+1} + U_{j-1}^{n+1}\\right).$$\n", + "\n", + "To approximate $f(u(j \\Delta x, n \\Delta t))$ we write simply $f(U_j^n)$.\n", + "\n", + "These approximations define the stencil for our numerical method as pictured on [Wikipedia](http://en.wikipedia.org/wiki/Crank%E2%80%93Nicolson_method).\n", + "\n", + "![SVG](https://dl.dropboxusercontent.com/u/129945779/georgio/CN-stencil.svg)\n", + "\n", + "Applying this stencil to grid point $(j,n)$ gives us the following approximation of our reaction-diffusion equation:\n", + "\n", + "$$\\frac{U_j^{n+1} - U_j^n}{\\Delta t} = \\frac{D}{2 \\Delta x^2} \\left( U_{j+1}^n - 2 U_j^n + U_{j-1}^n + U_{j+1}^{n+1} - 2 U_j^{n+1} + U_{j-1}^{n+1}\\right) + f(U_j^n).$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reordering Stencil into Linear System" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us define $\\sigma = \\frac{D \\Delta t}{2 \\Delta x^2}$ and reorder the above approximation of our reaction-diffusion equation:\n", + "\n", + "$$-\\sigma U_{j-1}^{n+1} + (1+2\\sigma) U_j^{n+1} -\\sigma U_{j+1}^{n+1} = \\sigma U_{j-1}^n + (1-2\\sigma) U_j^n + \\sigma U_{j+1}^n + \\Delta t f(U_j^n).$$\n", + "\n", + "This equation makes sense for space indices $j = 1,\\ldots,J-2$ but it does not make sense for indices $j=0$ and $j=J-1$ (on the boundaries):\n", + "\n", + "$$j=0:~-\\sigma U_{-1}^{n+1} + (1+2\\sigma) U_0^{n+1} -\\sigma U_{1}^{n+1} = \\sigma U_{-1}^n + (1-2\\sigma) U_0^n + \\sigma U_{1}^n + \\Delta t f(U_0^n),$$\n", + "\n", + "$$j=J-1:~-\\sigma U_{J-2}^{n+1} + (1+2\\sigma) U_{J-1}^{n+1} -\\sigma U_{J}^{n+1} = \\sigma U_{J-2}^n + (1-2\\sigma) U_{J-1}^n + \\sigma U_{J}^n + \\Delta t f(U_{J-1}^n).$$\n", + "\n", + "The problem here is that the values $U_{-1}^n$ and $U_J^n$ lie outside our grid.\n", + "\n", + "However, we can work out what these values should equal by considering our Neumann boundary condition.\n", + "Let us discretize our boundary condition at $j=0$ with the \n", + "[backward difference](http://en.wikipedia.org/wiki/Finite_difference#Forward.2C_backward.2C_and_central_differences) and\n", + "at $j=J-1$ with the\n", + "[forward difference](http://en.wikipedia.org/wiki/Finite_difference#Forward.2C_backward.2C_and_central_differences):\n", + "\n", + "$$\\frac{U_1^n - U_0^n}{\\Delta x} = 0,$$\n", + "\n", + "$$\\frac{U_J^n - U_{J-1}^n}{\\Delta x} = 0.$$\n", + "\n", + "These two equations make it clear that we need to amend our above numerical approximation for\n", + "$j=0$ with the identities $U_0^n = U_1^n$ and $U_0^{n+1} = U_1^{n+1}$, and\n", + "for $j=J-1$ with the identities $U_{J-1}^n = U_J^n$ and $U_{J-1}^{n+1} = U_J^{n+1}$.\n", + "\n", + "Let us reinterpret our numerical approximation of the line concentration of $u$ in a fixed point in time as a vector $\\mathbf{U}^n$:\n", + "\n", + "$$\\mathbf{U}^n = \n", + "\\begin{bmatrix} U_0^n \\\\ \\vdots \\\\ U_{J-1}^n \\end{bmatrix}.$$\n", + "\n", + "Using this notation we can now write our above approximation for a fixed point in time, $t = n \\Delta t$, compactly as a linear system:\n", + "\n", + "$$\n", + "\\begin{bmatrix}\n", + "1+\\sigma & -\\sigma & 0 & 0 & 0 & \\cdots & 0 & 0 & 0 & 0\\\\\n", + "-\\sigma & 1+2\\sigma & -\\sigma & 0 & 0 & \\cdots & 0 & 0 & 0 & 0 \\\\\n", + "0 & -\\sigma & 1+2\\sigma & -\\sigma & \\cdots & 0 & 0 & 0 & 0 & 0 \\\\\n", + "0 & 0 & \\ddots & \\ddots & \\ddots & \\ddots & 0 & 0 & 0 & 0 \\\\\n", + "0 & 0 & 0 & 0 & 0 & 0 & 0 & -\\sigma & 1+2\\sigma & -\\sigma \\\\\n", + "0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & -\\sigma & 1+\\sigma\n", + "\\end{bmatrix}\n", + "\\begin{bmatrix}\n", + "U_0^{n+1} \\\\\n", + "U_1^{n+1} \\\\\n", + "U_2^{n+1} \\\\\n", + "\\vdots \\\\\n", + "U_{J-2}^{n+1} \\\\\n", + "U_{J-1}^{n+1}\n", + "\\end{bmatrix} =\n", + "\\begin{bmatrix}\n", + "1-\\sigma & \\sigma & 0 & 0 & 0 & \\cdots & 0 & 0 & 0 & 0\\\\\n", + "\\sigma & 1-2\\sigma & \\sigma & 0 & 0 & \\cdots & 0 & 0 & 0 & 0 \\\\\n", + "0 & \\sigma & 1-2\\sigma & \\sigma & \\cdots & 0 & 0 & 0 & 0 & 0 \\\\\n", + "0 & 0 & \\ddots & \\ddots & \\ddots & \\ddots & 0 & 0 & 0 & 0 \\\\\n", + "0 & 0 & 0 & 0 & 0 & 0 & 0 & \\sigma & 1-2\\sigma & \\sigma \\\\\n", + "0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \\sigma & 1-\\sigma\n", + "\\end{bmatrix}\n", + "\\begin{bmatrix}\n", + "U_0^{n} \\\\\n", + "U_1^{n} \\\\\n", + "U_2^{n} \\\\\n", + "\\vdots \\\\\n", + "U_{J-2}^{n} \\\\\n", + "U_{J-1}^{n}\n", + "\\end{bmatrix} +\n", + "\\begin{bmatrix}\n", + "\\Delta t f(U_0^n) \\\\\n", + "\\Delta t f(U_1^n) \\\\\n", + "\\Delta t f(U_2^n) \\\\\n", + "\\vdots \\\\\n", + "\\Delta t f(U_{J-2}^n) \\\\\n", + "\\Delta t f(U_{J-1}^n)\n", + "\\end{bmatrix}.\n", + "$$\n", + "\n", + "Note that since our numerical integration starts with a well-defined initial condition at $n=0$, $\\mathbf{U}^0$, the\n", + "vector $\\mathbf{U}^{n+1}$ on the left-hand side is the only unknown in this system of linear equations.\n", + "\n", + "Thus, to integrate numerically our reaction-diffusion system from time point $n$ to $n+1$ we need to solve numerically for vector $\\mathbf{U}^{n+1}$.\n", + "\n", + "Let us call the matrix on the left-hand side $A$, the one on the right-hand side $B$,\n", + "and the vector on the right-hand side $\\mathbf{f}^n$.\n", + "Using this notation we can write the above system as\n", + "\n", + "$$A \\mathbf{U}^{n+1} = B \\mathbf{U}^n + f^n.$$\n", + "\n", + "In this linear equation, matrices $A$ and $B$ are defined by our problem: we need to specify these matrices once for our\n", + "problem and incorporate our boundary conditions in them.\n", + "Vector $\\mathbf{f}^n$ is a function of $\\mathbf{U}^n$ and so needs to be reevaluated in every time point $n$.\n", + "We also need to carry out one matrix-vector multiplication every time point, $B \\mathbf{U}^n$, and\n", + "one vector-vector addition, $B \\mathbf{U}^n + f^n$.\n", + "\n", + "The most expensive numerical operation is inversion of matrix $A$ to solve for $\\mathbf{U}^{n+1}$, however we may\n", + "get away with doing this only once and store the inverse of $A$ as $A^{-1}$:\n", + "\n", + "$$\\mathbf{U}^{n+1} = A^{-1} \\left( B \\mathbf{U}^n + f^n \\right).$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A Crank-Nicolson Example in Python" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us apply the CN method to a two-variable reaction-diffusion system that was introduced by \n", + "[Mori *et al.*](http://www.sciencedirect.com/science/article/pii/S0006349508704442):\n", + "\n", + "$$\\frac{\\partial u}{\\partial t} = D_u \\frac{\\partial^2 u}{\\partial x^2} + f(u,v),$$\n", + "\n", + "$$\\frac{\\partial v}{\\partial t} = D_v \\frac{\\partial^2 v}{\\partial x^2} - f(u,v),$$\n", + "\n", + "with Neumann boundary conditions\n", + "\n", + "$$\\frac{\\partial u}{\\partial x}\\Bigg|_{x=0,L} = 0,$$\n", + "\n", + "$$\\frac{\\partial v}{\\partial x}\\Bigg|_{x=0,L} = 0.$$\n", + "\n", + "The variables of this system, $u$ and $v$, represent the concetrations of the active form and its inactive form respectively.\n", + "The reaction term $f(u,v)$ describes the interchange (activation and inactivation) between these two states of the protein.\n", + "A particular property of this system is that the inactive has much greater diffusivity that the active form, $D_v \\gg D_u$.\n", + "\n", + "Using the CN method to integrate this system numerically, we need to set up two separate approximations\n", + "\n", + "$$A_u \\mathbf{U}^{n+1} = B_u \\mathbf{U}^n + \\mathbf{f}^n,$$\n", + "\n", + "$$A_v \\mathbf{V}^{n+1} = B_v \\mathbf{V}^n - \\mathbf{f}^n,$$\n", + "\n", + "with two different $\\sigma$ terms, $\\sigma_u = \\frac{D_u \\Delta t}{2 \\Delta x^2}$ and $\\sigma_v = \\frac{D_v \\Delta t}{2 \\Delta x^2}$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Import Packages" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the matrix-vector multiplication, vector-vector addition, and matrix inversion that we will need to carry\n", + "out we will use the Python library [NumPy](http://www.numpy.org/).\n", + "To visualize our numerical solutions, we will use [pyplot](http://matplotlib.org/api/pyplot_api.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy\n", + "from matplotlib import pyplot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Numpy allows us to truncate the numerical values of matrices and vectors to improve their display with \n", + "[`set_printoptions`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.set_printoptions.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "numpy.set_printoptions(precision=3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Specify Grid" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our one-dimensional domain has unit length and we define `J = 100` equally spaced\n", + "grid points in this domain.\n", + "This divides our domain into `J-1` subintervals, each of length `dx`." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "L = 1.\n", + "J = 100\n", + "dx = float(L)/float(J-1)\n", + "x_grid = numpy.array([j*dx for j in range(J)])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Equally, we define `N = 1000` equally spaced grid points on our time domain of length `T = 200` thus dividing our time domain into `N-1` intervals of length `dt`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "T = 200\n", + "N = 1000\n", + "dt = float(T)/float(N-1)\n", + "t_grid = numpy.array([n*dt for n in range(N)])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Specify System Parameters and the Reaction Term" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We choose our parameter values based on the work by\n", + "[Mori *et al.*](http://www.sciencedirect.com/science/article/pii/S0006349508704442)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "D_v = float(10.)/float(100.)\n", + "D_u = 0.01 * D_v\n", + "\n", + "k0 = 0.067\n", + "f = lambda u, v: dt*(v*(k0 + float(u*u)/float(1. + u*u)) - u)\n", + "g = lambda u, v: -f(u,v)\n", + " \n", + "sigma_u = float(D_u*dt)/float((2.*dx*dx))\n", + "sigma_v = float(D_v*dt)/float((2.*dx*dx))\n", + "\n", + "total_protein = 2.26" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Specify the Initial Condition" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As discussed by\n", + "[Mori *et al.*](http://www.sciencedirect.com/science/article/pii/S0006349508704442),\n", + "we can expect to observe interesting behaviour in the steady state of this system\n", + "if we choose a heterogeneous initial condition for $u$.\n", + "\n", + "Here, we initialize $u$ with a step-like heterogeneity:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "no_high = 10\n", + "U = numpy.array([0.1 for i in range(no_high,J)] + [2. for i in range(0,no_high)])\n", + "V = numpy.array([float(total_protein-dx*sum(U))/float(J*dx) for i in range(0,J)])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that we make certain that total protein amounts equal a certain value,\n", + "`total_protein`.\n", + "The importance of this was discussed by \n", + "[Walther *et al.*](http://link.springer.com/article/10.1007%2Fs11538-012-9766-5).\n", + "\n", + "Let us plot our initial condition for confirmation:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pyplot.ylim((0., 2.1))\n", + "pyplot.xlabel('x'); pyplot.ylabel('concentration')\n", + "pyplot.plot(x_grid, U)\n", + "pyplot.plot(x_grid, V)\n", + "pyplot.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The blue curve is the initial condition for $U$, stored in Python variable `U`,\n", + "and the green curve is the initial condition for $V$ stored in `V`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create Matrices" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The matrices that we need to construct are all tridiagonal so they are easy to\n", + "construct with \n", + "[`numpy.diagflat`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.diagflat.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "A_u = numpy.diagflat([-sigma_u for i in range(J-1)], -1) +\\\n", + " numpy.diagflat([1.+sigma_u]+[1.+2.*sigma_u for i in range(J-2)]+[1.+sigma_u]) +\\\n", + " numpy.diagflat([-sigma_u for i in range(J-1)], 1)\n", + " \n", + "B_u = numpy.diagflat([sigma_u for i in range(J-1)], -1) +\\\n", + " numpy.diagflat([1.-sigma_u]+[1.-2.*sigma_u for i in range(J-2)]+[1.-sigma_u]) +\\\n", + " numpy.diagflat([sigma_u for i in range(J-1)], 1)\n", + " \n", + "A_v = numpy.diagflat([-sigma_v for i in range(J-1)], -1) +\\\n", + " numpy.diagflat([1.+sigma_v]+[1.+2.*sigma_v for i in range(J-2)]+[1.+sigma_v]) +\\\n", + " numpy.diagflat([-sigma_v for i in range(J-1)], 1)\n", + " \n", + "B_v = numpy.diagflat([sigma_v for i in range(J-1)], -1) +\\\n", + " numpy.diagflat([1.-sigma_v]+[1.-2.*sigma_v for i in range(J-2)]+[1.-sigma_v]) +\\\n", + " numpy.diagflat([sigma_v for i in range(J-1)], 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To confirm, this is what `A_u` looks like:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 1.981 -0.981 0. ... 0. 0. 0. ]\n", + " [-0.981 2.962 -0.981 ... 0. 0. 0. ]\n", + " [ 0. -0.981 2.962 ... 0. 0. 0. ]\n", + " ...\n", + " [ 0. 0. 0. ... 2.962 -0.981 0. ]\n", + " [ 0. 0. 0. ... -0.981 2.962 -0.981]\n", + " [ 0. 0. 0. ... 0. -0.981 1.981]]\n" + ] + } + ], + "source": [ + "print A_u" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Solve the System Iteratively" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To advance our system by one time step, we need to do one matrix-vector multiplication followed by one vector-vector addition on the right hand side.\n", + "\n", + "To facilitate this, we rewrite our reaction term so that it accepts concentration vectors $\\mathbf{U}^n$ and $\\mathbf{V}^n$ as arguments\n", + "and returns vector $\\mathbf{f}^n$.\n", + "\n", + "As a reminder, this is our non-vectorial definition of $f$\n", + "\n", + " f = lambda u, v: v*(k0 + float(u*u)/float(1. + u*u)) - u" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "f_vec = lambda U, V: numpy.multiply(dt, numpy.subtract(numpy.multiply(V, \n", + " numpy.add(k0, numpy.divide(numpy.multiply(U,U), numpy.add(1., numpy.multiply(U,U))))), U))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us make certain that this produces the same values as our non-vectorial `f`:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.009961358982745121\n" + ] + } + ], + "source": [ + "print f(U[0], V[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-0.06238322322322325\n" + ] + } + ], + "source": [ + "print f(U[-1], V[-1])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n", + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n", + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n", + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n", + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n", + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n", + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n", + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n", + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n", + " -0.062 -0.062 -0.062 -0.062 -0.062 -0.062 -0.062 -0.062 -0.062 -0.062]\n" + ] + } + ], + "source": [ + "print f_vec(U, V)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Accounting for rounding of the displayed values due to the `set_printoptions` we set above, we\n", + "can see that `f` and `f_vec` generate the same values for our initial condition at both ends of our domain." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will use [`numpy.linalg.solve`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.solve.html) to solve\n", + "our linear system each time step." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "While we integrate our system over time we will record both `U` and `V` at each\n", + "time step in `U_record` and `V_record` respectively so that we can plot\n", + "our numerical solutions over time." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "U_record = []\n", + "V_record = []\n", + "\n", + "U_record.append(U)\n", + "V_record.append(V)\n", + "\n", + "for ti in range(1,N):\n", + " U_new = numpy.linalg.solve(A_u, B_u.dot(U) + f_vec(U,V))\n", + " V_new = numpy.linalg.solve(A_v, B_v.dot(V) - f_vec(U,V))\n", + " \n", + " U = U_new\n", + " V = V_new\n", + " \n", + " U_record.append(U)\n", + " V_record.append(V)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plot the Numerical Solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us take a look at the numerical solution we attain after `N` time steps." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pyplot.ylim((0., 2.1))\n", + "pyplot.xlabel('x'); pyplot.ylabel('concentration')\n", + "pyplot.plot(x_grid, U)\n", + "pyplot.plot(x_grid, V)\n", + "pyplot.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here is a [kymograph](http://en.wikipedia.org/wiki/Kymograph) of the values of `U`.\n", + "This plot shows concisely the behaviour of `U` over time and we can clear observe the wave-pinning\n", + "behaviour described by [Mori *et al.*](http://www.sciencedirect.com/science/article/pii/S0006349508704442).\n", + "Furthermore, we observe that this wave pattern is stable for about 50 units of time and we therefore\n", + "conclude that this wave pattern is a stable steady state of our system." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "U_record = numpy.array(U_record)\n", + "V_record = numpy.array(V_record)\n", + "\n", + "fig, ax = pyplot.subplots()\n", + "pyplot.xlabel('x'); pyplot.ylabel('t')\n", + "heatmap = ax.pcolor(x_grid, t_grid, U_record, vmin=0., vmax=1.2)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/src/test/data/AEC.04 - Evolutionary Strategies and Covariance Matrix Adaptation.ipynb b/src/test/data/AEC.04 - Evolutionary Strategies and Covariance Matrix Adaptation.ipynb new file mode 100644 index 0000000..b2f5cd5 --- /dev/null +++ b/src/test/data/AEC.04 - Evolutionary Strategies and Covariance Matrix Adaptation.ipynb @@ -0,0 +1,4246 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "
        \n", + "\n", + "UFF logo\n", + "\n", + "\n", + "IC logo\n", + "\n", + "
        " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "# Understanding evolutionary strategies and covariance matrix adaptation\n", + "\n", + "## Luis Martí, [IC](http://www.ic.uff.br)/[UFF](http://www.uff.br)\n", + "\n", + "[http://lmarti.com](http://lmarti.com); [lmarti@ic.uff.br](mailto:lmarti@ic.uff.br) \n", + "\n", + "[Advanced Evolutionary Computation: Theory and Practice](http://lmarti.com/aec-2014) " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "subslide_end", + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The notebook is better viewed rendered as slides. You can convert it to slides and view them by:\n", + "- using [nbconvert](http://ipython.org/ipython-doc/1/interactive/nbconvert.html) with a command like:\n", + " ```bash\n", + " $ ipython nbconvert --to slides --post serve \n", + " ```\n", + "- installing [Reveal.js - Jupyter/IPython Slideshow Extension](https://github.com/damianavila/live_reveal)\n", + "- using the online [IPython notebook slide viewer](https://slideviewer.herokuapp.com/) (some slides of the notebook might not be properly rendered).\n", + "\n", + "This and other related IPython notebooks can be found at the course github repository:\n", + "* [https://github.com/lmarti/evolutionary-computation-course](https://github.com/lmarti/evolutionary-computation-course)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.colors as colors\n", + "from matplotlib import cm \n", + "from mpl_toolkits.mplot3d import axes3d\n", + "from scipy.stats import norm, multivariate_normal\n", + "import math\n", + "\n", + "%matplotlib inline\n", + "%config InlineBackend.figure_format = 'retina'\n", + "plt.rc('text', usetex=True)\n", + "plt.rc('font', family='serif')\n", + "plt.rcParams['text.latex.preamble'] ='\\\\usepackage{libertine}\\n\\\\usepackage[utf8]{inputenc}'\n", + "\n", + "import seaborn\n", + "seaborn.set(style='whitegrid')\n", + "seaborn.set_context('notebook')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Statistics recap\n", + "\n", + "* [Random variable](http://en.wikipedia.org/wiki/Random_variable): a variable whose value is subject to variations due to __chance__. A random variable can take on a set of possible different values, each with an associated probability, in contrast to other mathematical variables.\n", + "\n", + "* [Probability distribution](http://en.wikipedia.org/wiki/Probability_distribution): mathematical function describing the possible values of a random variable and their associated probabilities.\n", + "\n", + "* [Probability density function (pdf)](http://en.wikipedia.org/wiki/Probability_density_function) of a __continuous random variable__ is a function that describes the relative likelihood for this random variable to take on a given value. \n", + " * The probability of the random variable falling within a particular range of values is given by the integral of this variable’s density over that range.\n", + " * The probability density function is nonnegative everywhere, and its integral over the entire space is equal to one.\n", + " \n", + "\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### [Moments](http://en.wikipedia.org/wiki/Moment_(mathematics)\n", + "\n", + "The probability distribution of a random variable is often characterised by a small number of parameters, which also have a practical interpretation.\n", + "\n", + "* [Mean](http://en.wikipedia.org/wiki/Mean) (a.k.a expected value) refers to one measure of the central tendency either of a probability distribution or of the random variable characterized by that distribution.\n", + " * population mean: $\\mu = \\operatorname{E}[X]$.\n", + " * estimation of sample mean: $\\bar{x}$.\n", + "* [Standard deviation](http://en.wikipedia.org/wiki/Standard_deviation) measures the amount of variation or dispersion from the mean.\n", + " * population deviation:\n", + " $$\n", + "\\sigma = \\sqrt{\\operatorname E[X^2]-(\\operatorname E[X])^2} = \\sqrt{\\frac{1}{N} \\sum_{i=1}^N (x_i - \\mu)^2}.\n", + "$$\n", + " * unbiased estimator:\n", + " $$ \n", + " s^2 = \\frac{1}{N-1} \\sum_{i=1}^N (x_i - \\overline{x})^2.\n", + " $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Two samples" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "sample1 = np.random.normal(0, 0.5, 1000)\n", + "sample2 = np.random.normal(1,1,500)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "def plot_normal_sample(sample, mu, sigma):\n", + " 'Plots an histogram and the normal distribution corresponding to the parameters.'\n", + " x = np.linspace(mu - 4*sigma, mu + 4*sigma, 100)\n", + " plt.plot(x, norm.pdf(x, mu, sigma), 'b', lw=2)\n", + " plt.hist(sample, 30, normed=True, alpha=0.2)\n", + " plt.annotate('3$\\sigma$', \n", + " xy=(mu + 3*sigma, 0), xycoords='data',\n", + " xytext=(0, 100), textcoords='offset points',\n", + " fontsize=15,\n", + " arrowprops=dict(arrowstyle=\"->\",\n", + " connectionstyle=\"arc,angleA=180,armA=20,angleB=90,armB=15,rad=7\"))\n", + " plt.annotate('-3$\\sigma$', \n", + " xy=(mu -3*sigma, 0), xycoords='data', \n", + " xytext=(0, 100), textcoords='offset points',\n", + " fontsize=15,\n", + " arrowprops=dict(arrowstyle=\"->\",\n", + " connectionstyle=\"arc,angleA=180,armA=20,angleB=90,armB=15,rad=7\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n", + " warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n" + ] + }, + { + "data": { + "image/png": "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qblP3hl/cJybmazNpYv//w1Eshf3lCl0b13z4yG1dY2YCwhxi9fS2EayATHvzTffXPR7bW1twSe20Cet2traZz7RSdKPf/zjMEWJtWrrHFnR17unHmjGFwheX5SbpprybIP/AmD17IcUXqaVEsKM11IAsY7nOSzE3p6yYXuRHA4qoRF+ia61fzyXlpamtLTFz2DIzUrR7q0FljlaKSGceC2FRLIBMW54eFg//elPgyVXdt/+9rclzR4QF1qy9frrr2t4eHjBQ2ja2tr0wx/+UH/3d39HVjXCTHl9y/46bzsY+sAOFg6IXvXbihT629vaNaKewQlj8SC2jI2N8VoKIKaxZsBCxia98jwcsMw1uGmhhPWz0g109q+eIe8zf8bRemvP+08vtysQCCxya2D5WDPgCZINiGltbW2SZp/U3nzzTTU1NampqUlvv/22jh8/rqamJr3xxhtPHRD36quv6vDhw/rBD35gmT99+rT+6q/+St/5znf03e9+d8P+HQiv4bFp3Xs0aJk7sLPYUDTA2uVkJqvaVplDdQPCpbt79neJ11IAsYo1AxZy/V6vfP7QSuhUlRdmGIwI8WAlG+jsX8txeE+pXAnz25Tae0b14PHTH/ICK8WaAU+4wnEnbrf7e5JqJA1KypHU6PF4frHG+2yU9IrH4xl85o2BRdTV1enChQv66U9/qrfffls//elPg/OHDx/WN7/5TVVWVi547VtvvaU333xT//AP/6CcnBwNDg4qJydHv/71rxe9BtHhyp1uhW7eKC/MUEl+urmAgDBocBfpfvtQcHzJ060vPLeJih2s2ZYtW3gtRdiEY93gdrt/Mnftgbmpn6917YH4xpoBC7l8hxZKiD2ZaUlqcBfpws358ws/vfzoqY1LwEqxZsATa042uN3un0uSx+P5VsjcO263u8bj8Xx/lff595L2rTU2QJo9ZOZHP/rRqq795je/GeZoEAme6r1KOTRiwN5thfr1x/fkn9uB19U/ro7eMZWxAw9hwGspwiEc6wa32/2BpG95PJ7mufFxSR+43e4veDyer69H3IgPPM8h1PDYtO62Wfc9smZArDhWX25JNpy80q7/+Uu1JNOwZryWQlpjG6W5N/d/L8m+OPi+pO+53e7qVdxnzgL3BwBh0Tc0oYedI5a5fduLDEUDhE9GaqLcm3Itc/bEGgCYEo51w1xFw/ef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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 281, + "width": 781 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(11,4))\n", + "plt.subplot(121)\n", + "plot_normal_sample(sample1, 0, 0.5)\n", + "plt.title('Sample 1: $\\mu=0$, $\\sigma=0.5$')\n", + "plt.subplot(122)\n", + "plot_normal_sample(sample2, 1, 1)\n", + "plt.title('Sample 2: $\\mu=1$, $\\sigma=1$')\n", + "plt.tight_layout();" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sample 1; estimated mean: 0.007446590585087637 and std. dev.: 0.5083158965764596\n", + "Sample 2; estimated mean: 0.969635147915706 and std. dev.: 1.0213164282805647\n" + ] + } + ], + "source": [ + "print('Sample 1; estimated mean:', sample1.mean(), ' and std. dev.: ', sample1.std())\n", + "print('Sample 2; estimated mean:', sample2.mean(), ' and std. dev.: ', sample2.std())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "[Covariance](http://en.wikipedia.org/wiki/Covariance) is a measure of how much two random variables change together. \n", + "$$\n", + "\\operatorname{cov}(X,Y) = \\operatorname{E}{\\big[(X - \\operatorname{E}[X])(Y - \\operatorname{E}[Y])\\big]},\n", + "$$\n", + "$$\n", + "\\operatorname{cov}(X,X) = s(X),\n", + "$$\n", + "\n", + "* The sign of the covariance therefore shows the tendency in the linear relationship between the variables. \n", + "* The magnitude of the covariance is not easy to interpret. \n", + "* The normalized version of the covariance, the correlation coefficient, however, shows by its magnitude the strength of the linear relation." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Understanding covariance" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "sample_2d = np.array(list(zip(sample1, np.ones(len(sample1))))).T" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 254, + "width": 386 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(sample_2d[0,:], sample_2d[1,:], marker='x');" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.25864369, 0. ],\n", + " [0. , 0. ]])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.cov(sample_2d) # computes covariance between the two components of the sample" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "As the sample is only distributed along one axis, the covariance does not detects any relationship between them." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "What happens when we rotate the sample?" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "def rotate_sample(sample, angle=-45):\n", + " 'Rotates a sample by `angle` degrees.'\n", + " theta = (angle/180.) * np.pi\n", + " rot_matrix = np.array([[np.cos(theta), -np.sin(theta)], \n", + " [np.sin(theta), np.cos(theta)]])\n", + " return sample.T.dot(rot_matrix).T" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "rot_sample_2d = rotate_sample(sample_2d)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 254, + "width": 375 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(rot_sample_2d[0,:], rot_sample_2d[1,:], marker='x');" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.12932185, 0.12932185],\n", + " [0.12932185, 0.12932185]])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.cov(rot_sample_2d)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### A two-dimensional normally-distributed variable" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " s)\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAu8AAAH8CAYAAABhKUH5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3WmQG2ee5/dv4r5RhboP3hJBURLJFlvsuzXTq+mwx+Nx2NG7633j2Bf2zIYd+8Jv3LHv+qVnwu/XvQ6H991OeHbt8ezO7E5L05daUjdFiqQokSyKZPGoG1fhRiaATL9AAaxCoQ6SVSxC/H0iKiRWoRKJBFD45ZP/5/8YjuMgIiIiIiIvPtdB74CIiIiIiOyOwruIiIiISJ9QeBcRERER6RMK7yIiIiIifULhXURERESkTyi8i4iIiIj0CYV3EREREZE+ofAuIiIiItInFN5FRERERPqEwruIiIiISJ9QeBcRERER6RMK7yIiIiIifULhXURERESkTyi8i4iIiIj0CYV3EREREZE+ofAuIiIiItInFN5FRERERPqEwruIiIiISJ/wHPQOPG+XL1++AhwDSsCdA94dEREREfnqegWIALPnz5//2l5s8KUL77SCe3zta+qA90VEREREvvqO7dWGXsbwXgLiLpeLUCh00PvS90qlEgCRSOSA9+SrQcdzb+l47i0dz72jY7m3dDz3lo7n3qlUKti2Da38uSdexvB+B5gKhUIkk8mD3pe+d/nyZQAdyz2i47m3dDz3lo7n3tGx3Fs6nntLx3PvzMzMtE+G9qxUWxNWRURERET6hMK7iIiIiEifUHgXEREREekTCu8iIiIiIn1C4V1EREREpE8ovIuIiIiI9AmFdxERERGRPqHwLiIiIiLSJxTeRURERET6hMK7iIiIiEifUHgXEREREekTCu8iIiIiIn1C4V1EREREpE8ovIuIiIiI9AmFdxERERGRPqHwLiIiIiLSJxTeRURERET6hMK7iIiIiEifUHgXEREREekTCu8iIiIiIn1C4V1EREREpE8ovIuIiIiI9AmFdxERERGRPqHwLiIiIiLSJxTeRURERET6hMK7iIiIiEifUHgXEREREekTCu8iIiIiIn1C4V1EREREpE8ovIuIiIiI9AmFdxERERGRPqHwLiIiIiLSJxTeRURERET6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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 254, + "width": 375 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "mu = [0,1]\n", + "cov = [[1,0],[0,0.2]] # diagonal covariance, points lie on x or y-axis\n", + "sample = np.random.multivariate_normal(mu,cov,1000).T\n", + "plt.scatter(sample[0], sample[1], marker='x', alpha=0.29)\n", + "\n", + "estimated_mean = sample.mean(axis=1)\n", + "estimated_cov = np.cov(sample)\n", + "e_x,e_y = np.random.multivariate_normal(estimated_mean,estimated_cov,500).T\n", + "\n", + "plt.plot(e_x,e_y,'rx', alpha=0.47)\n", + "x, y = np.mgrid[-4:4:.01, -1:3:.01]\n", + "pos = np.empty(x.shape + (2,))\n", + "pos[:, :, 0] = x; pos[:, :, 1] = y\n", + "rv = multivariate_normal(estimated_mean, estimated_cov)\n", + "plt.contour(x, y, rv.pdf(pos), cmap=cm.viridis_r, lw=4)\n", + "plt.axis('equal');" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### This is better understood in 3D" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 292, + "width": 634 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=(11,5))\n", + "ax = fig.gca(projection='3d')\n", + "ax.plot_surface(x, y, rv.pdf(pos), cmap=cm.viridis_r, rstride=30, cstride=10, linewidth=1, alpha=0.47)\n", + "ax.plot_wireframe(x, y, rv.pdf(pos), linewidth=0.47, alpha=0.47)\n", + "ax.scatter(e_x, e_y, 0.4, marker='.', alpha=0.47)\n", + "ax.axis('tight');" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Again, what happens if we rotate the sample?" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "rot_sample = rotate_sample(sample)\n", + "estimated_mean = rot_sample.mean(axis=1)\n", + "estimated_cov = np.cov(rot_sample)\n", + "e_x,e_y = np.random.multivariate_normal(estimated_mean,estimated_cov,500).T" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "data": { + "image/png": "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7/MwaN76pznrn+asf5qz/mnO+qc56892rDt3TehYDxq3paS6ze+Bx0ZHR7Esq+MF165da4xpB4azt2huetP8dKe56U5z05vmpzvNTW/7YX5s224smFWauzetu+7cqP3w+zwMmrf+ac76pznrn+asf5qz/mnO+rMd685dETpaljUDYNv27E69Zj6fb/4CdrPe9w8yzU1vmp/uNDfdaW560/x0p7npTfMjIiIiIrLzdkXoCLxu2/alYQ9CREREREREREREtm7ooaNlWa8QdKveUclkct3y6rNnz+7kkPYEzU1vmp/uNDfdaW560/x0p7npbT/MT0uZi4iIiIjInmIO88UtyxoH/tS27evDHIeIiIiIiIiIiIgMzrB3Ol4EzliW9Xbb42fqf75tWVYO+IGCSRERERERERERkb1hqKGjbds/BX7a/rhlWW8CrwGv2rad2/GBiYiIiIiIiIiIyKYNtbx6AyaGPQARERERERERERHpz7DLq1exLOt7wLcJyq4B3rMs6zpBd+vZ4Y1MRERERERERERENmpXhY62bf8Q+OGwxyEiIiIiIiIiIiKbt9vLq0VERERERERERGSPUegoIiKyDvtWBt/3e17j+z72rcwOjUhERERERGR321Xl1SIiIrvNL66n+eDjNM8+eZS//OYMhmGsucb3fX724SyffPGAF5+b4ltnpoYwUhERERGRg2WhkGEul6bqVomGokyPTzGZUE/i3UKho4iISBf2rQwffJwG4JMvHgCsCR5bA0eADz5O8+iRUazHtdgREREREdkOc9k0V+5c5WbmNnmnhOe7mEaIZCTO6YlTnD95bthDFBQ6ioiIdPXUqRTPPnm0GSi2B4/tgSPAs08e5alTqaGMV0RERERkv7tx/zPesd9nvrBAySmTiI4SMkM4boVMMcuDYoa5bJqnzJOcHlUF0jApdBQREenCMAz+8pszAGuCx5demOHdj9YGjt1KsEVEREREZGvmsmnesd8nvXyPRDTBseQkpvGwXYnne2RLS6SX77HMEolQfIijFYWOIiIiPXQLHlvDRlDgKCIiIiKy3a7cucp8YYFENMGR0bXVRaZhNh/PFVb4bGWWv9jpQUqTuleLiIisoxE8Pvvk0Y7fV+AoIiIiIrK9FgoZbmZuU3LKpOKHe16bGjlM1XO4X1lgoZDZoRFKO4WOIiIiG2AYBi+9MNPx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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 266, + "width": 654 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=(11,4))\n", + "plt.subplot(121)\n", + "plt.scatter(rot_sample[0,:], rot_sample[1,:], marker='x', alpha=0.7)\n", + "plt.title('\"Original\" data')\n", + "plt.axis('equal')\n", + "plt.subplot(122)\n", + "plt.scatter(e_x, e_y, marker='o', color='g', alpha=0.7)\n", + "plt.title('Sampled data')\n", + "plt.axis('equal');" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "Covariance captures the dependency and can model disposition of the \"original\" sample." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "x, y = np.mgrid[-4:4:.01, -3:3:.01]\n", + "pos = np.empty(x.shape + (2,))\n", + "pos[:, :, 0] = x; pos[:, :, 1] = y\n", + "rv = multivariate_normal(estimated_mean, estimated_cov)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABPQAAAJICAYAAADmYbpbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3VlzI/l5LvgnV+wACW5VrL26u1qt7pa6W5KlscO2HI6JEzFz5xt/JX8H3/hznDgxc3EW2UeyRmr13rWxqrgTWwLIPfM/F8nMSqCwkQQJJPn8IipIVqEAZGJh5oP3/b+SEAJERERERERERESUDfKi7wARERERERERERHNjoEeERERERERERFRhjDQIyIiIiIiIiIiyhAGekRERERERERERBnCQI+IiIiIiIiIiChDGOgRERERERERERFlCAM9IiIiIiIiIiKiDGGgR0RERERERERElCEM9IiIiIiIiIiIiDKEgR4REREREREREVGGMNAjIiIiIiIiIiLKEAZ6REREREREREREGcJAj4iIiIiIiIiIKEMY6BEREREREREREWUIAz0iIiIiIiIiIqIMYaBHRERERERERESUIQz0iIiIiIiIiIiIMoSBHhERERERERERUYYw0CMiIiIiIiIiIsoQ9RKuU1zCdRIREREREREREWWVNM8rY4UeERERERERERFRhjDQIyIiIiIiIiIiyhAGekRERERERERERBnCQI+IiIiIiIiIiChDGOgRERERERERERFlCAM9IiIiIiIiIiKiDGGgR0RERERERERElCEM9IiIiIiIiIiIiDKEgR4REREREREREVGGMNAjIiIiIiIiIiLKEAZ6REREREREREREGcJAj4iIiIiIiIiIKEMY6BEREREREREREWUIAz0iIiIiIiIiIqIMYaBHRERERERERESUIQz0iIiIiIiIiIiIMoSBHhERERERERERUYYw0CMiIiIiIiIiIsoQBnpEREREREREREQZwkCPiIiIiIiIiIgoQxjoERERERERERERZQgDPSIiIiIiIiIiogxhoEdERERERERERJQhDPSIiIiIiIiIiIgyhIEeERERERERERFRhjDQIyIiIiIiIiIiyhAGekRERERERERERBnCQI+IiIiIiIiIiChDGOgRERERERERERFlCAM9IiIiIiIiIiKi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G9vCE/WmgwcPQlEU/Nd//RcURen2cYgeCOdEEhHRJuJSDCIiIqLNxplwazPbb19++WWGedT3VpsT+c477/B7AhER9RTO0CMiIiKidVNVFbOzs5iYmMDS0hLOnTuHY8eOdftYRA+McyKJiKifsEKPiIiIiNZtZGTEWhKytLSEV199FTMzMxgZGenyyYgeDOdEEhFRP+EMPSIiIiK6bydPnsSFCxdw7tw5hnq0LXFOJBERdUhHZ+ix5ZaIiIiI7tuRI0eQSqUwOzvb7aP0hImJCaRSqW4fgzqEcyKJiKhXseWWiIiIiNY0PT2NS5cuNS0GMKvyLly40I1j9ZT5+flVNyNTf1BVFb/61a9w4cIFpFIpnDt3jm24RETUcxjoEREREdGa5ufnAQDLy8t14YaqqgAAv9/flXP1ilQqhbm5uW4fgzqAcyKJiKgfsOWWiIiIiNY0OjqK48ePN1UqmRVpR48e7caxesbrr7+OycnJbh+DOmxsbAw+nw8TExNWeE1ERNQLWKFHRERERGt6+eWX8frrryOVSlmzxFRVxfz8PEZHR62Kpp1oaWkJTzzxBAOfLhsfH9/QxyuK0tRC3sqRI0ewuLiI2dlZnDlz5n6PR0RE1FEM9IiIiIhoTWZo9+qrryKRSAAA0uk0Tp06hRMnTnT5dN21sLCAmZkZttx22fnz5x/oz3NOJBER9RMGekRERES0LiMjI5iZmen2MXrK3Nzcjg80twvOiSQion7CQI+IiIiI6D6YQQ+XJWwPo6OjOHz4MOdEEhFRX+BSDCIiIiKi+8DqvO3l5ZdfhqqqSKVS1m2cE0lERL2KFXpERERERBu0sLDArbbbDOdEEhFRP2GgR0RERES0AalUChcvXsSxY8e6fRTqMM6JJCKifiEYhtHpx+z4AxIRERER9YqFhQXMz8/D5/PV3f7xxx9DVVWMjY3B5/Phb//2b5vmsREREdGOJXT0wRjoERERERE9uOnpaczPz+PDDz+EoijdPg4RERH1lo4GelyKQURERETUQclksttHICIiom2OFXpERERERA9gbm4OS0tLWFpaAlCdw/b444/j9OnTGBkZ6fLpiIiIqEew5ZaIiIiIiIiIiKiPsOWWiIiIiIiIiIhop2KgR0RERERERERE1EekTXjMjpYQEhERERERERER0VdYoUdERERERERERNRHGOgRERERERERERH1EQZ6REREREREREREfYSBHhERERERERERUR9hoEdERERERERERNRHGOgRERERERERERH1EQZ6REREREREREREfYSBHhERERERERERUR9hoEdERERERERERNRHGOgRERERERERERH1EQZ6REREREREREREfYSBHhERERERERERUR9hoEdERERERERERNRHGOgRERERERERERH1EQZ6REREREREREREfYSBHhERERERERERUR9hoEdERERERERERNRHGOgRERERERERERH1EQZ6REREREREREREfeT/A8Q23bW1yicfAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 292, + "width": 634 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=(11,5))\n", + "ax = fig.gca(projection='3d')\n", + "ax.plot_surface(x, y, rv.pdf(pos), cmap=cm.viridis_r, rstride=30, cstride=10, linewidth=1, alpha=0.47)\n", + "ax.plot_wireframe(x, y, rv.pdf(pos), linewidth=0.47, alpha=0.47)\n", + "ax.scatter(e_x, e_y, 0.4, marker='.', alpha=0.47)\n", + "ax.axis('tight');" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Evolutionary Strategies\n", + "\n", + "We will be using DEAP again to present some of the ES main concepts." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "import array, random, time, copy\n", + "\n", + "from deap import base, creator, benchmarks, tools, algorithms\n", + "\n", + "random.seed(42) # Fixing a random seed: You should not do this in practice." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Before we dive into the discussion lets code some support functions." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "subslide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "def plot_problem_3d(problem, bounds, resolution=100., \n", + " cmap=cm.viridis_r, rstride=10, cstride=10, \n", + " linewidth=0.15, alpha=0.65, ax=None):\n", + " 'Plots a given deap benchmark problem in 3D mesh.'\n", + " (minx,miny),(maxx,maxy) = bounds\n", + " x_range = np.arange(minx, maxx, (maxx-minx)/resolution)\n", + " y_range = np.arange(miny, maxy, (maxy-miny)/resolution)\n", + " \n", + " X, Y = np.meshgrid(x_range, y_range)\n", + " Z = np.zeros((len(x_range), len(y_range)))\n", + " \n", + " for i in range(len(x_range)):\n", + " for j in range(len(y_range)):\n", + " Z[i,j] = problem((x_range[i], y_range[j]))[0]\n", + " \n", + " if not ax:\n", + " fig = plt.figure(figsize=(11,6))\n", + " ax = fig.gca(projection='3d')\n", + " \n", + " cset = ax.plot_surface(X, Y, Z, cmap=cmap, rstride=rstride, cstride=cstride, linewidth=linewidth, alpha=alpha)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "subslide_end", + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "def plot_problem_controur(problem, bounds, optimum=None,\n", + " resolution=100., cmap=cm.viridis_r, \n", + " rstride=1, cstride=10, linewidth=0.15,\n", + " alpha=0.65, ax=None):\n", + " 'Plots a given deap benchmark problem as a countour plot'\n", + " (minx,miny),(maxx,maxy) = bounds\n", + " x_range = np.arange(minx, maxx, (maxx-minx)/resolution)\n", + " y_range = np.arange(miny, maxy, (maxy-miny)/resolution)\n", + " \n", + " X, Y = np.meshgrid(x_range, y_range)\n", + " Z = np.zeros((len(x_range), len(y_range)))\n", + " \n", + " for i in range(len(x_range)):\n", + " for j in range(len(y_range)):\n", + " Z[i,j] = problem((x_range[i], y_range[j]))[0]\n", + " \n", + " if not ax:\n", + " fig = plt.figure(figsize=(6,6))\n", + " ax = fig.gca()\n", + " ax.set_aspect('equal')\n", + " ax.autoscale(tight=True)\n", + " \n", + " cset = ax.contourf(X, Y, Z, cmap=cmap, rstride=rstride, cstride=cstride, linewidth=linewidth, alpha=alpha)\n", + " \n", + " if optimum:\n", + " ax.plot(optimum[0], optimum[1], 'bx', linewidth=4, markersize=15)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "def plot_cov_ellipse(pos, cov, volume=.99, ax=None, fc='lightblue', ec='darkblue', alpha=1, lw=1):\n", + " ''' Plots an ellipse that corresponds to a bivariate normal distribution.\n", + " Adapted from http://www.nhsilbert.net/source/2014/06/bivariate-normal-ellipse-plotting-in-python/'''\n", + " from scipy.stats import chi2\n", + " from matplotlib.patches import Ellipse\n", + "\n", + " def eigsorted(cov):\n", + " vals, vecs = np.linalg.eigh(cov)\n", + " order = vals.argsort()[::-1]\n", + " return vals[order], vecs[:,order]\n", + "\n", + " if ax is None:\n", + " ax = plt.gca()\n", + "\n", + " vals, vecs = eigsorted(cov)\n", + " theta = np.degrees(np.arctan2(*vecs[:,0][::-1]))\n", + "\n", + " kwrg = {'facecolor':fc, 'edgecolor':ec, 'alpha':alpha, 'linewidth':lw}\n", + "\n", + " # Width and height are \"full\" widths, not radius\n", + " width, height = 2 * np.sqrt(chi2.ppf(volume,2)) * np.sqrt(vals)\n", + " ellip = Ellipse(xy=pos, width=width, height=height, angle=theta, **kwrg)\n", + " ax.add_artist(ellip)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Why benchmarks (test) functions?\n", + "\n", + "In applied mathematics, [test functions](http://en.wikipedia.org/wiki/Test_functions_for_optimization), also known as artificial landscapes, are useful to evaluate characteristics of optimization algorithms, such as:\n", + "\n", + "* Velocity of convergence.\n", + "* Precision.\n", + "* Robustness.\n", + "* General performance.\n", + "\n", + "DEAP has a number of test problems already implemented. See http://deap.readthedocs.org/en/latest/api/benchmarks.html" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### [Bohachevsky benchmark problem](http://deap.readthedocs.org/en/latest/api/benchmarks.html#deap.benchmarks.bohachevsky)\n", + "\n", + "$$\\text{minimize } f(\\mathbf{x}) = \\sum_{i=1}^{N-1}(x_i^2 + 2x_{i+1}^2 - 0.3\\cos(3\\pi x_i) - 0.4\\cos(4\\pi x_{i+1}) + 0.7), \\mathbf{x}\\in \\left[-100,100\\right]^n,$$\n", + "\n", + "> Optimum in $\\mathbf{x}=\\mathbf{0}$, $f(\\mathbf{x})=0$." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "current_problem = benchmarks.bohachevsky" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 346, + "width": 634 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_problem_3d(current_problem, ((-10,-10), (10,10)))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The Bohachevsky problem has many local optima." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABPQAAAK1CAYAAABPbbCcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3VeQI+eZLug3E0AZlEOCttmGbdhkk2w2PSVaiRRJjTga6Yg7Rxpzzk5oIrTavdmIidDs7sWMLhS6k/ZCsxFnNnZ0hkfjYjgjNxQ9u0m2d2zf1Ybtq6p9V8JUoeDS7EX1n5XISvgEkAm8T0RHV6FQqCwggcp88X3/J5mmCSIiIiIiIiIiIgoGudMbQERERERERERERLVjoEdERERERERERBQgDPSIiIiIiIiIiIgChIEeERERERERERFRgDDQIyIiIiIiIiIiChAGekRERERERERERAHCQI+IiIiIiIiIiChAGOgREREREREREREFCAM9IiIiIiIiIiKiAGGgR0REREREREREFCAM9IiIiIiIiIiIiAKEgR4REREREREREVGAMNAjIiIiIiIiIiIKEAZ6REREREREREREAcJAj4iIiIiIiIiIKEAY6BEREREREREREQUIAz0iIiIiIiIiIqIAYaBHREREREREREQUIAz0iIiIiIiIiIiIAiTcgts0W3CbREREREREREREQSV5eWOs0CMiIiIiIiIiIgoQBnpEREREREREREQBwkCPiIiIiIiIiIgoQBjoERERERERERERBQgDPSIiIiIiIiIiogBhoEdERERERERERBQgDPSIiIiIiIiIiIgChIEeERERERERERFRgDDQIyIiIiIiIiIiChAGekRERERERERERAHCQI+IiIiIiIiIiChAGOgREREREREREREFCAM9IiIiIiIiIiKiAGGgR0REREREREREFCAM9IiIiIiIiIiIiAKEgR4REREREREREVGAMNAjIiIiIiIiIiIKEAZ6REREREREREREAcJAj4iIiIiIiIiIKEAY6BEREREREREREQUIAz0iIiIiIiIiIqIAYaBHREREREREREQUIAz0iIiIiIiIiIiIAoSBHhERERERERERUYAw0CMiIiIiIiIiIgoQBnpEREREREREREQBwkCPiIiIiIiIiIgoQBjoERERERERERER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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 346, + "width": 634 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_problem_3d(current_problem, ((-2.5,-2.5), (2.5,2.5)))" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 254, + "width": 258 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "ax = plt.figure().gca()\n", + "plot_problem_controur(current_problem, ((-2.5,-2.5), (2.5,2.5)), optimum=(0,0), ax=ax)\n", + "ax.set_aspect('equal')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## ($\\mu$,$\\lambda$) evolutionary strategy\n", + "\n", + "Some basic initialization parameters." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "search_space_dims = 2 # we want to plot the individuals so this must be 2\n", + "\n", + "MIN_VALUE, MAX_VALUE = -10., 10.\n", + "MIN_STRAT, MAX_STRAT = 0.0000001, 1. " + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "# We are facing a minimization problem\n", + "creator.create(\"FitnessMin\", base.Fitness, weights=(-1.0,))\n", + "\n", + "# Evolutionary strategies need a location (mean)\n", + "creator.create(\"Individual\", array.array, typecode='d', \n", + " fitness=creator.FitnessMin, strategy=None)\n", + "# ...and a value of the strategy parameter.\n", + "creator.create(\"Strategy\", array.array, typecode=\"d\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Evolutionary strategy individuals are more complex than those we have seen so far.\n", + "\n", + "They need a custom creation/initialization function." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "def init_univariate_es_ind(individual_class, strategy_class,\n", + " size, min_value, max_value, \n", + " min_strat, max_strat):\n", + " ind = individual_class(random.uniform(min_value, max_value) \n", + " for _ in range(size))\n", + " # we modify the instance to include the strategy in run-time.\n", + " ind.strategy = strategy_class(random.uniform(min_strat, max_strat) for _ in range(size))\n", + " return ind" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "toolbox = base.Toolbox() \n", + "toolbox.register(\"individual\", init_univariate_es_ind, \n", + " creator.Individual, \n", + " creator.Strategy,\n", + " search_space_dims, \n", + " MIN_VALUE, MAX_VALUE, \n", + " MIN_STRAT, MAX_STRAT)\n", + "toolbox.register(\"population\", tools.initRepeat, list, \n", + " toolbox.individual)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "How does an individual and a population looks like?" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "ind = toolbox.individual()\n", + "pop = toolbox.population(n=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "subslide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "def plot_individual(individual, ax=None):\n", + " 'Plots an ES indiviual as center and 3*sigma ellipsis.'\n", + " cov = np.eye(len(individual)) * individual.strategy\n", + " plot_cov_ellipse(individual, cov, volume=0.99, alpha=0.56, ax=ax)\n", + " if ax:\n", + " ax.scatter(individual[0], individual[1], \n", + " marker='+', color='k', zorder=100)\n", + " else:\n", + " plt.scatter(individual[0], individual[1], \n", + " marker='+', color='k', zorder=100)\n", + "\n", + " \n", + "def plot_population(pop, gen=None, max_gen=None, ax=None):\n", + " if gen:\n", + " plt.subplot(max_gen, 1, gen)\n", + " \n", + " for ind in pop:\n", + " plot_individual(ind, ax)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "subslide_end", + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 363, + "width": 381 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_problem_controur(current_problem, ((-10,-10), (10,10)), optimum=(0,0))\n", + "plot_individual(ind)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvoAAALWCAYAAAA3cTeYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3ftzXOd95/lPN/qCKxtoUITAi0iBkg5hy6IpwU48ShTakTzFyaZqZmLFM5PdndTUxt79YabmJ6n2L3DJP6Vma6tWTm1qqrKZisaeJN7ZhBNbiRk7cpwJKJgKZbAlEaIMghAg4kbi1hd07w+NJkGwAfTldJ/nec77pUIBbACNB0focz7ne77PcyKlUkkAAAAA3BINegAAAAAA/EfQBwAAABxE0AcAAAAcRNAHAAAAHETQBwAAABxE0AcAAAAcRNAHAAAAHETQBwAAABxE0AcAAAAcRNAHAAAAHETQBwAAABxE0AcAAAAcRNAHAAAAHETQBwAAABxE0AcAAAAcRNAHAAAAHETQBwAAABxE0AcAAAAcFAt6AK67fPnyhKTHJa1K+iDg4QAAAMBMT0jqlfThc889d86PJyTot97jklLbb8cCHgsAAADM9rhfT0TQb71VSal8dkurixs1f9PaWlaS1D3Q06Jh1W91I6euVGdgP7+Qz0uSYvH4vl+3mt3edr3Jlo+p1e7myr9Lb0/Ct+fMb2/H+AHb0QZrhU1JUn9nML9LvrC9LWP2b8sgsR39EfR2XN4s//yeWHDHCb+0Yj+5upaTJPUl7D82ra9uH5uS+/8utR63W2ljZVO9Xf4dQ5u1vrQmSerpeXjb9aa7FE92SOXs6AuCfut9IOnY6uKGLv/Z9Zq/6d2rN+V9+RlJ6y0bWD2ufHBLkvTk8ycDG8Pi4pIkKZ0e2PNrJqZnJUmj545Ka2Zsu0aNz89Iks6ODkm1nyMeaHFxUZKUTqf9e9I2u7py497H50cGAxvH4qr929IEbEd/BL4dE9KlqQVJ0tOpU8GMwSct2U9GpSuTc5KksSP2X+CfnLilcyeG9/2aWo7brfb+Wx9Jks4+cTSwMeyW+d47+vTTxx96/LlfO62B4V7Jx1ZvJuMa6N2rN4MeQlVBhvx6jJ4z58XcqAdCPh5QCfnnRwYDDfkAHlZ5XV5dufHACTnKXNqnj547eq+4ZjJbskurEPQNVa7mm+HKB7eseKHYsMOph0sHBL/sDPkAzFV5jRL2q6sUc1xgy7G30plgAu/Lz7StqEvQN4xp1XyTXhj7eaBlx3IuHQD8RMgH7ELYr65SxHFhX2/LMdeGYmWrEPQNZFI1X7LnBWLLDmc/tOxUd3XlBq06gIUI+9W5Fvap6jemHcVdgr5BqOY3ZmJ6lpDvqEqfLwEfsBdhvzrX9vWmh33TipbtKuoS9A1DNb8+pu9YakXIfxitOoA7mKRb3dnRIWeq+pL5x+Qnnz9pXBGz1UVegr4hqObXz5W+fEL+wwj5gJuo7j+sEvZtD/y2hH3JnIzTjuIuQd8gVPNrR8h3085qHyEfcBNh/2Gu9OzbcEw2Ldu0egUegr4BTKzmm/ZCqMaGHcp+CPn37Q74hHzAbbTyPMyVsC9R1TcJQd8QplTzbfjDt2EHchBC/n0EfCC8CPwPciHs29DCY1oxs5VVfYJ+wEyr5kvmvQB2em9xRZLd1XxCftnOFXUI+EC47WznCXvgdynsm8zEibmtQNA3ANX8+tiwA9kLIb+MPnwAu+086Sfs23+MGD139F5xDgfzvvyM1tayvj8vQT9AVPPr48oOw4UdeDMI+QD2Q9gvc2XpTZOP3WGo6hP0A0Y1vz6PPZUKeggNG5+fIeQT8gHUgLB/n81h3+ZjdhC6B3p8f06CfkCo5tdnYnrW6h2GzTtqvxDyAdSDfYU7V4BNnpgr2VPsbARBP0BU82tj+g6iVq7ssBtByAfQiMqKPGFmewuP6UU6k4ucfiDoB4Bqfv1cmIAbdoR8AI0Ke9iX7D+WmF60M73o2SiCfkCo5tfG9B1DrcJezSfkA2gU/fr2H0NML9aZXuxsBkEfxv+Bm76D2E/YJ+CG+cAMwD+E/TKbq/qj544aX7wzvfjZCIJ+m7179SbV/BqZvkM4iM07ZD/Qlw/AT2EP+64UjUw9tpte9GwUQT/kTP/DtrmaL7mzY64XIR9AKxD27Z6Ya8Mx3fQiaL0I+m1k0iRc0/+QTT3jr5XNO+JmVXryCfkAWiHsYV8K9zGmlUwvfjaCoN9mprTtSOb/Qdtw5l9NZQcctmr+1ZUbTLwF0BZhDvu2H1vo1W8vgn6brK1lgx7CPab/AZu+A6iF7TvietGqA6Ddwhz2Jar6rWJ6EbReBP02oppfO9ur+WFCyAcQlEqbYOWKYlhUikm2HnOo6rcPQT9kTP/DNf2Fv58wtuwQ8gGYIIzVfdvDvmTuMb9SDDU9M9WCoN8m3QM9QQ/hHlOr+ZUXvI3VfEI+UJ/p9Wv33haj01qMTj/wGFAvwr5dTD/Wm5qV6hULegBonysf3DL+D9f0F341hHyEkR9h/MJwSpK0uLgoSUqny/++OLvS9POf6D7T3OBgpfMjg7o0taCrKzf0dOpU0MNpi7OjQ7oyORf0MBo2MT2rcyeGgx7Gnq58cEtnn7Avm1QQ9EPC9MtPpl6+OwghH2GxO3hXQnorNPvc1U4UCP7hEdawPz45o7Ejx4IeSl1Gzx3V5IS5+eTJ50/q/bc+CnoYTSHohwjV/NYg5MNmtVbOWxns/bZ7rPVcIeCEwA1hDPtSufhkY9ifmLhlbFX/yedP6spbH1lb1SfohwDV/NYYn58JXcgn4LthZ+i1KcA3qtbfcecJAYHffmEL+5UWHhvDvmR+C4+tmIwbEqZW822dgGvjxKdmEPLdsHOi64XhVChCfj0q2+TCcIqJwY4I2wRdWyfnmp4Bnnz+pPFF071Q0XecDX+Ypr/AdwtbX35YDpAuqhZSCfe1qWwn+v3tF9bKvm1Mb+GxFUE/BEyv5tsobCGfar759qo8E+ybU2u/P+HfbGEL+5Kd/fqS2S08Nq7AQ9B3mMnVfFp2zEfIN187V8JBWbVtvDv8E/rNFKawb2u/vsmr8Ni6Ag9B33GmVvMle0N+GKr5hHxzEe7Ns/P/ARN6zVYJ+2FgawuPRFXfT0zGRdvRsmM2Qr6Zqk2kJeSbp9qEXpjl/MhgaOYenR0dsu5KdKUIaGJWMLl4uheCvqNMvwuurdX8sCDkm4WVcuxE4DdbWMK+ZN8xzPSMYHJr9G4EfbTVxPSs8S/gvYSpmg8zVAIiAd9ulf93BH5zhGnZTZuPXVT1m0fQd5BNZ5o2CMuNsWjZMcfuNh3Yb+fJGoHfDGEK+xJV/bBiMq6jTDzjtLGab9uOsVGE/GAxwTY8WJ/fLGFZiYeJuf6zZVIuQR84gOvVfEJ+cHYGPcJ9uOy3Pj+Bv73CtBIPy236w6alNmndcYypbTtU881EyA8OE2yx0+7WHrRXGFbisbloZWKvvi0I+g4ysW3HVjbvGA9CyA8GE2yxH8J+cMIQ9iX7ilgmFwlNLa7uRNBHy9l4Jm7bjrBeNwq3JRHy240JtqgFy3IGx/Ww73Lxqt1sKaoS9B1i8tr5Jp+R78XVHSIhv/1YRQeNoLofjPMjg/f2ky6y9SZaphYNTa/qMxkXLWXqC3M/tu0AGzE2lAx6CKHAZFs06/4qPff/lpis23pjQ0mNz91WWumgh9Iytk3MNZENk3Kp6DuCar6/XK3mX125Qchvg90VfEI+msU6/MFwtY3HxmMcVf3GUNFHy5j6gtyPyzfHcvWAZQqq92iHauvwU+FvjbGhpN5ZLjm9xj5V/eaZXtWnou8Aqvn+cLllhxV2WovqPdqt8rfGpN3WcnmfaWNRi6p+/Qj6aAlTX4gHsXHHVyuXD1hBWYxOazE6TcBHoCp/e5W/R/jP1SuiNk7MNZGpxVaJoG89qvn+cHlH5+oBKkiVCuoLfTG90EcHJIJ3YTh172+RCr+/KkUSl/elth0DTS0mmljVJ+jDd6a+APdS2cG5WM2nZcdfLJMJ073QF2NZzhZwOezbduwztYhoatGVoG8xqvn+sW1HVwtCvr/ow4dN6N/3n8v7UttaeOjVrx1BH74y9YW3F5dX2ZHcPjC1C1V82Izqvv9crOpX2BT2TWRi8ZWgbymq+c1zeYd2deUGId8HVPHhAtbf908YWnhsOTZS1a8NQR++MfUFV43rffmE/OZRxYdLdt9wC40LQ9hH40wrwhL0LUQ13x8u7tBcPPC0G606cBlh3x+uh32q+s0zpapP0IcvTH2hVWPLDqxeTL5tHq06CAMm6vrD9X2tq8fKdjCpGEvQt4wpZ4jVUM0PnusHnlapBB4CPsKE3v3mnR8ZdLaqbwuTq/omIOhbyKQzRcm+ar5NO7Ba0ZffGNp0EHb07vvDxbAvUdVvlgnFWYI+fGFTNd81rh5gWo02HeA+2nka52q/vm1FMdOKjqYUZQn6FjHhzNBmLlbz6ctvDFV8oDqq+41xeR9sQ1WfYuPeCPqWMeUMsWJiepYXWMBcPsC0AiEf2B+vjcZR1Q+WiVX9oIu0BH1LBP2HYjsbKhL1cu2A0g6EfKA2lTYe1M7VFh7JjmMoRcfqCPoWoZrfHNsqE/uhZad+hHygPoT9+rm4T7bt2GlaVV8KtlgbC+wn18nzvBFJ1w/4slczmcw3D3iey5KelbQsaVFSevtT38pkMq82PVAYx4ZKRCNcPKC0GiEfqN/0+jWd6D4T9DCscnXlhp5OnQp6GKEzeu6oJifM6oB48vmTev+tjwL7+TZV9J+VNCXpbUlv7np7W9LUQSF/hylJ/SqH/HFJL5sc8k1s2zHxjHk/tlUk9uPiZeFWq6yRD6A+TM6tn4stPDbdLVeyL6O0kjUVfUmfk/RcJpNZ3v0Jz/Nek/RGjc8zlclkXvZ1ZG1gWtuOZEc/nE07plrQslM/Qj7QnAvDKV2cXaGyX4fzI4O6NLUQ9DBCydSq/pW3PtLZJ9qfm2yq6C/sEfJflKRMJvN2+4cUTradKbtUzZcI+bXaebdbAM3hLrqNcamqL7lXPAsDa4L+Pm05r5rcdtOsKx/coprfINd2SK4dMFqJibeA/7iLbn1ca+GxqWg2eu6okUXJIFqxbWrdeYjnea9Leq2B73tR5Z5/STot6XImk/mWn2NzlYkvnP3YtGPaDy07tSHgA623s5VHEu08+6i08LgyOffs6JDGJ2c0duRY0EOxTlCTcq0N+tur8IxlMpmv1/mtI5L6d14h8Dzvsud5p1t5ZSBfKGhxcbGu77n+8R1J0uLiUiuG1JBsNqvHnkrV/bv4qZaffW1tueavNd2Nwm1J0thQ0tffx4VtU7EYnb738Qt9sbb/bi5tyyCxHf3Rju34C8ny+x/eLeiD3BWliyda/jOD4Me2fKY/ovG5rDN/37ls/b9LEL/70MlO/eS9G3oqbU7hJ5fL6e9/dkOnHz1U9fP5woDvP9Oa1p0qXpP0egPf93Imk/nOrsdel/SK53nPVvuGIA2fPRz0EO55b3El6CHU5fRjvUEPwTdjQ8mgh2CsSsh/oS+mF/qsrV0AVqq87haj0w+ccONhlaKN7U4/1nuvmGYDk7JLEJnOyqOi53n9kr4iqe4KfCaTmary8Pj2+69vv/kuHospnU4f/IXbrnxwS4lEQum0/2d3jUqubQbam1+pCBy0HcfnZ5RIJuva3qa6unJDiY6Er79LrdvRBtPr15RUMrBWHZe2ZZDYjv4Icjv+07R0cXZFa5p3opXH72355bR0aWpBt3THiRae6bm8pgobB7bwBP3aTv9iWpMTt4zKUguJO3tuj3jM/1hua0X/a9KeoX1f2ycJu1VOTUeaGZTfTJqES29++9GXvz/68QGzMFF3fy7ty207xpqUYZ58/mRbJ+XaGvRfauSbtu+Ku7RH2DeGiTfIkuxZace2HdB+XDow+KmybCYhHzALYX9/50cGnVmFR7JjdTsbsksr2Rr0x3S/Cl+valcBKpV8Y9bip5pfPxt2OLVy6UDgN9bGB8xG2D+YC/t4l4pqQWhXUdfWoN8vad8p3J7njVSZXPumqt9dt3KF4Bs+jc85tpwRu7TjoZr/MEI+YAfC/t5c27fbUGQzbV39dhZzrQv628tq1uK6pMu72nS+Ien3dj62fTLwisqr8QQ+jdzUth3T2bCjqdXVlRvOHQj8QMgH7ELY3x9VfbSDdUF/ewLulMrV+f28KentneF9++PfkfSa53mve573bUn/u8pV/t1LbgbGtLYdqvnt48KOvxUICoCdCPvVuVbMsaXYZlJVX2pPcdfK5TUzmczpGr6m6oTd7bDfkiU0EQxbdjC1cu0A0CxW1wHstvNOui4sveknF+6Ye3Z0SFcm54IexoFGzx3V5IQ5XRPtulOudRV9l5nWtmPame9+qOa7iZAPuIHX8MNcK+q4VnRzBUHfMCa17UjmT8J1bcfi2o7fDwQEwB208DzMhSKPLcU20yblSq0v8hL0YT1bdjD7cWFH7zcCAeAW+vUfVinuuHIMcK341mrtKO4S9FGVaWe81bi2Q6Gafx8tO4CbeE0/zJV9vwtFNxcR9A1x5YNbtO00wIUdC8tpVkcgANx0YThFVb8KqvrtYWL7TisR9IEAubJj9xPr5QPhQNi/z5VijwvFt3Z78vmTLe3TJ+jjITac6Y7PzzizQ3FlB+8HQj4QDvTrP+z8yKAzxR/Tq/phQtA3gGnLakp2tO3YzpUduh+m168R8oGQIexXZ/uxwYYiXJjadwj6hjCtP99kLlQKKjtyqvlMvAXCbGfYJ/C7dUxw4VjdLq1s3yHo4wET07NWVPNtqBjshZB/HyEfwIXhFNX9HVxo4bHlGB2Gqj5BP2AmrrZjsmtry0EPwReEfEI+gAcR9h9ke9iXzD5mm1jUXN3I+f6cBH3cY8uZrS2Vgmpc2HH7odKPT8gHsBNhv8yFG2nZcqw2Jfu0quhL0A8Qk3Drc21tWacf6w16GE0LezU/7AdwAPsj7Je5cqygqh8sgn7ATGnbMeWM1mXcGIt2HQC1IezfZ3NV34XiXDt1pTp9f06CPu4x+cx2fH7G6h2GzTtqvxDyAdSDfYU7VX3TV+BxudhJ0A8Ik3DDx5UddjM4cAOoF1V9u4tFphfpTC5y+oGgD+OX1LT9Lrg276D9woEaQCNo4XGnSERVPxgE/QCYOAkXreXKjroRtOwAaAb7jjKbi0amF+tMLnY2i6AfEFPadkw/gzW9AnAQm3fMfuJADaAZF4ZTVPUdYPsx3UYEfRh/Jmt6JeAgruygGxHmAzMA/4V9n2Jz8ciGY7npxc9GEPTbjEm4tbP9zN/mHbIfaNkB4Kew9+uHuWjUDqYXPRtF0A8x0yfhSnZUAPYT1h0zIR9AK7BPsb+IZHsRzzYEfQAtwQEZQCuEuV/f9uKR6cW70XNHnWvfIei3EW07tbP9jN/2ikszptevEfIBtFxYwz5QD4J+SNlwxmr6mf9BbK+8NIIDL4B2CHu/vu3FJNuLeTYh6IeY6f35trJ9B9wo+vIBtFNY9zW2F5FML+K51r5D0G+T1Y1c0EOwhgtn+rbviBsV1gMvgOBQ1Qf2RtBvI1P68204UzX9jH8vYd3xhvVACyBYYW3hcaGYZHpRz4asVAuCfkjRttM6LuyA60HLDoAghTXsS/YWl0wv5rmUkQj6IWP6GarpZ/j7sXWH2wxCPgAThHEfFLaiEhpD0G+TrlRn0EO4x/QzVdPP9PcTxh1vGA+wAMwUtqr++ZFBa4tMZ0eHjC/umV4crQVBH8Yw/QW/H1t3tM1gvXw0Yz07fu8tGp9UND75wGNAvWjhgZ9ML4rWKhb0ANA+E9Ozxv/hUs23QxgPpNhbo8H8/ED5NbO4uChJSg+kJUmXlhYaes7u5FhD44A7LgyndHF2RdPr13Si+0zQw2mL8yODujS1EPQwGjY+P6OxI8eCHsaeJqZnde7EcNDDaBhBH2jS1ZUboQz5VPPDqVoArwR2vzTyfNVODgj+4VQJ+2FzdeWGnk6dCnoYdTk7OqQrk3NBD2NPo+eOanLiVtDDaApBPyRM7zOztW0nrJdLCfnhsjtA+x3s/VBtTJeW7o+b0B8+VPXtYXpV32YE/RChbac1wlbNJ+S7pdYWGRPD/UF2jnln6N8PJwRuCGMLj0RVvxVGzx3VxMQta9t3CPohQDW/NcJWzacv3y07A76NIb5etfyOlfYfwr4bwhb2K1V9G8M+WodVd0KCan5rhKWaT1++Wyoh//zAYChCfq0q24OVf9wRtn2WrcckltpsHYI+AmX6C3svYavmS+E7YLqoEmAJ+PurbBsCvxsuDKdCd0UyjMeoVjK9WLofgr7jbDgDpZpvtrAdIF2ze216An5tdp4Msb6/G8KyL7P12GRDVd9G9OiHgKlnora+oMO0nCYtO/axYYUcmzw4oZclPG0VxiU36dX3n41r6hP0EShbq/lhQsi3Q9gm1wZh93bdGfwJ/HYI28RcG5m61Kata+rTugPUIUx9j2G5zG273W05hPz22d3eA7NRtDAfxT//EfQdZnJ/vq1tO5K9/Y+N4MBoNgK+GVitxy5hKWKcHxkMVXEK1RH0HWdqf77EmTvQKFbPMROr9ZiP4oX5TJ+Ua3IRtRqCPlCjsE3C5YBoJlbPMRvtPHYIS1VfClfLaauZXDzdC0EfbWfymTpgMkK+PQj75gpTESMsxSnsjaDvKNMvLdnWthOmikiYKl02IeTbh7BvNvZ15jK9fccmBH2H2XiJyWRhqoyEqeJlOvrx7UbYN1PY9nFhKla1g+nF1J0I+mir8fkZ66r5YUJvvlmo4ruBVXnMFYaqvs1FKhOr+rYVUQn6wAHCMgk3DAc8mxDy3UN13yxhK2rYVtWnKOgPgr6DJqZnjTzjNPHMHA8K24HPNJWKLyHfXSzBaZ4wFDnCUKxCdbGgB4Bwse0M3bYKSKPCcKAz2c7AR7h3387/x5eW7v+/706OBTGcULswnNLF2RVNr1/Tie4zQQ8HVYzPz2jsyLGgh/GQielZnTsxHPQwDkRFHziA65WQSsinmt9+uyfaEvLDZ/e6+1T52y9M+z7bilemFgdN7JrYC0HfMabOBKdtx2xhOtCZgvYc7MSNtoJ1YTjl/JVN14tWqI6g7yBTzzRNPTPfSxgm4bLKTjAI+dgLYT9Yrod9yc6qvqnFQlOLqzsR9IGQCsMBzUSsiY+DEPaDUSl6uLxvdL141U6mFlV3I+g7xNQzSxvXzret4lGvxei0JFp22mlnPz5wEMJ+MCr7xMo+0lU2HuNMreqbjqDvGFvOMG3gauWDkN9+tOqgEYT9YLi+b7Tx2GZysdDUImsFQR8tZeMZuI2Vjnq90MfKuu1CyEczuKtuMF7oizlf1UfzbCiuEvQdYfIZpcln4nuxseJRC5d7T02ze+lMoBkswQk/nR8ZtLKoZWPxMGgEfYfYcGaJ4FHNbz2q+GgFluBsrxf6YhRHDGJy0dDkYitBH9jB5SU1OWC1HlV8tANhH36xsapvGtOLrAR9tIyNq+24zvVJZkGiio92one/fVwtkrha1MKDCPoOmJieNf6MEnAZIR9BobrfWhRHzGLyzbNMRdAHttG2g0ZE45OSCPkITuVvr/K3CNSD9p3mjZ47amyfPkEfLcEZt3moTPmPkA9TEPZb58JwytliiavFLdxn1fIbnuddlvSspGVJi5LS25/6ViaTebWO53lF0unt5+mXdDmTyXzL5+G2halnkJLZM+SBZlVaJcbinQGPBCgbi3dqPL8Z9DCAlhufn9HYkWNBD8MKNlb0p1QO52lJ45JerjPkvy7pdCaT+Xomk3k1k8l8XdJLnue91prhth79+c1zvW2Har6/CPkw1Vi8k379FnG1qm8bk4uIJhZfraroS5rKZDIvN/rNnue9KOlrkgZ2fepVSdc9z3s9k8lMNTNAAOFwfmBQi4uLQQ8DqGo9O67u5FjQw3DGheGULs6uBD2Mljg/MqhLUzf0dOpU0EOx2ui5o5qcuBX0MB5iY0W/GS+rfLKwvPPBHeH+K+0fEtA6VKD8V1knHzAVK/EAqAhb0H9R5b78apYlfbWNY2maiZeIJPvWz3e5bUdiEq6fCE6wBWG/NSiewDa2te5U2m+e3f7nadU3kXZE0pt7fG5x+/MtUcjntbi45OtzZrNZPfZUyrj2gVw229Ix+f3cuULOuG3ol2x07/8Xrv7OrRSNZzUW73xo27Et/cF29EdlOz6jiMbzm9pcY7s2auff5C8kpR/eLWhx073t+Ux/RONz7+lU7HBLnt/343Y2qx9PT+lMT7+vz9usbDbbVNYr5PskJfwbkOwL+iOS+jOZzDcrD3ied9nzvNMHTcj1PO+gv4ZltTDow0w3CreDHkLLLEangx6CU6LxSSbfwkrR+KSK+dGghwH45vRjvbr+89Wgh/GQx55K6b33VvRU2pwr6bYF/ZerTJZ9XdLrnue9kclk3t7neytLce7VutNSsXhc6fTuOcDNSa5tKp1OH/yFbTQ+P6NEMtmScVUqAn4+962VO8627aytz1dt22nFdnRduf0hqfTAg9uMbekPtqM/qm3HL0u6tLQgJaaYnFuHvf4mk9kVrWleJ7rPBDGslkosL+iW7vg6KbeVr+3pubyR+4y55GbDeS8Wj/s8Gst69PdYEafSgPj1A779oOtGZl3/OYCp/fmS2Utf7eTy3QDpI/VPpceZCbiwFf36/qkUT1zcx9pY9OLmnAezKujv0X5TqdDv23azY6WdvQJ9WgFV+xvF+vnNs3HHVism4TaPkA9XEPb94/q+1ZYimKlFxdFzR40qxloT9LfvirtUQ6/9fpZ1v4WnGtbQbwJn1mbgBln+IOTDNYR9f1HVhw2sCfrbqgXxSiV/v/78ije1d0W/X3uvyGMUk84UdzP1DHs3V5fUdPHAEwRCPlzF37Q/XC+m2FLVlygyHsSmoP+mpOd23+xK0kvb77+x80HP80Y8z3t219e+Lmlk91WBHV/3hl+DbTXadrAX1w9ArUbIh+vODwxqPTtOZb9JF4ZTThZXbCqCmVpcNKl9x6ag/w1Jv7czpG8H9FdUXo1n9wnAdUmXd359JpN5U9J3JL2262urJJreAAAgAElEQVRfk/TNA1btwT5sOqOmmo+9EPIRFrTx+MfVfa9NVX3szZrlNTOZzLLneb8j6TXP86T7vfbP7RHQ35SU3n0CkMlkXvY87xXP816TtCDpc5K+XcdNtwJlyhliNaaeWYcJ1fzGEPARRucHBnVpaUHr2XGW3mzQheGULs6uBD0M350fGdSlqYWgh1GTs6NDGp+c0diRY0EPxUjWBH3p3so5By2jWfnal/b53Df3+pwNaNtpnKsVClcrSu1AyEeYVf7uLy2VXwcE/sZMr19zcm19NGdielbnTgwHOgabWndgKJvadiS7+g/rQTW/foR8oIxWnsa5uu89PzLobHGsHUwpyhL04Qsb2nZc3WGxnGZjCPnAgwj7zeHKanDOjg5ZV3RsF4K+RUzuz7eFq9V81IeQD1THa6IxLhdbXC2ShQVB3zKmXAqq4Aw6WFTzG0egAaqrLL+J+rlW1ac41rygi7QEfTTNhrYdoIIAA6AVKLoEz7TiownFWYI+QoFLj9iJaj5wME6KYROKjtUR9BEarl2CpG0HQKtwMtw419p3YDeCviWC7vECXLCeHSfAAHWgql8fF4svLLNpN6tumBV2JvR67TQ+P8OlMgBwVOXOuUErlaR8Vspt7njb/nd288HH8zmpVNx+K+14rwcfj0QkRaRodPv9rn9vrCcUjUnpQSnRefBbR0egmwjYE0EfsBCXhutHZRIwQ6kkZTek1WXp7lL5/frqriC/660sKpUi5ffaTuaK7ni88qYd73d/vOeoHvg4l++WVNR8PCZFStufLz74PnL/41j8fuj/IJfQXO+64p1SLBlRojuirlRUXamoulNRJfsiikZrGRPqdXZ0SOOTMxo7cizoodwzeu6oJiZuBXaHXII+nOfqJUcXLxG3Gm07QP3Ws+PqTo7V9T353INB/u7y/X/fXZIKOUmlDpVjSHT7413hXZF7wT6WiCjZGVWiM6JEZ1SJZLT8fte/44mIIlHdC9LlCn1kR+U+Uv4RJalUKpWr/SWpVNzxcUna3Mhqq1CSSnHlNovKbRaVzxWV3Szd+3cuW1Ru+9+FzZIKm0WtR0o6rJI++TinZEe3StsnBkVtqVTKq6iiIh0ldR6K3Av+Xamouvuj6kpF1NUfVaIrokiEEwH4g6CPUHBpIi7V/PpRzQcaU2nfqRb2C3lp8WNp+ZP7Ab4S6jfXJKljO8B3SKVo+f32Y7FEh/oGYupNld/39HU8ENyT94J8VPFk+yvgm5vln9fZ2Xng15ZKJRVypXvBP7tZ1IdLWcULvcpni8qub2l1uaD1lbxWl/LaWNuSlotaWy7qrooqqahSqaDS9glBNK574b+7P6quQxF1p6NKPdqhZE9wUyuvrtzQ06lTgf18NIagb4GJ6Vn68/EAqvn1o5oPNOb8wKD+amFBix9Lt29Jn8yU3y/NSaViTOUo8WCoj3Z0qDcVU29/h/r6d76Pqa+/Q8muqDNV60gkongyongyqp5D5cc2BiOSCuqLDTz09Vv5otZWCuW35bxWVwpaW8lrbbn8WG6zoK2FklYWilrWVvkEoJRXURtKHoqo/9EOpYbLb4ce7VA82frteH5kUJemgp+vUavxebPad4JE0AfgNKr5QH1KJWlxIapbMzHNzMR062ZMfzfVpa3CouLRYakUlxSXFNPAI3GlhxLqGygH+EqQ7+7rcCbIN+LxnoQ+XMtV/VxHPKpDhxM6dDhR9fO5zS2trRS0upTX+kpBq8t53VnIa+njrPJ3C1q6u6WF97dULGVV1Ja6B6M7wn9UfUc61BEL77Y/OzqkK5NzQQ/jIRPTs4H06RP04bSrKzdo2wmxSsinmg/sbfVuRDdvxjQzHdOtmZhu3YppfT2mrVJSW8WEtkoJ9Skp9UtHjg3o8HBCh48mNPhoXPEEq3Tv525hqWpVfz+Jzg4lOjs0MJR84PFSqaS7C3ktzmbvvS3PZ1VY3NIniwXN/WxLxVJepeiW+o5EH6j89x525wqKjUbPHdXkxK1AfjZBH3Uz7RbTYUPbTm0I+UB1xaJ0czqm9zNxvZ9JaPbjuIqlhAqlpIqlpLZKCXX1xPTo0ZiGjsY1dDSmI0dj6uqO6mZ2U/GOvqB/BSvsV9VvRCQSuXcl4NRnyv8PilslLc/ntDi7eS/831nIKT+3pY/ntnTrSkHFUk7xnpIeGYnp8EhMhx+PNdTuU27foU/fNgR9w5l6oyz689uPan79CPlA2cZ6RB+8H9d7mYQ+eD+utbWECqVuFYqdisY69eiJuI4cjenRYzEdGY6p91D1CvDxZKduZucV7zgSwG+B3aIdEaWHk0oP36/+53NFLX98v+p/+9am1u/kNX81r9l/yKsY3dDA8Q49MhLTI6dj6h10s9pPn34ZQd8Cpk3EtYWLy2pSza8Nd8AFyi05kz9LaPLdhD78MKH8VqcKxS5tlbrUN5DQE08kdOqJhI6diitWZ093fouwX6tG2neaEU9E9chjXXrksS5J5ZafO7fzunV9TbPX17Uws6n16YKmpvN679K6utMRPerFNPRUXIeG3Aj99OnfR9BHXWxr23GlP59qfu0I+QizQkF69x8Smric1AcfJFQoditf7FZRnRp+LKHHnyy/9Q82Plm2XNXfJOzXwO/2nUZEIhGlHkko9UhCo784oNzGlj6+saHZ6+uavb6uzaWcfv6TvD782w11paXjn4nr6Kfj6ux7eP4F7TuNC6pPn6CPutG2Ewyq+Qcj5COsZmc79KNL/frZu93aKqaVL/aqGOnSY6eTOn0mqREvoc4u/ybOEvbr0+6q/n4SXR16bLRXj432qlgs6ZPpTd28tqqZ99a0vpTT9R/m9N4PV3X48ZiOPxPXI6dj1q7iQ/sOQd9oJq6fbwsX23awP5bRRNgUi9LVdxL68d90anY2qbXNpLbUpyPHevTpz3bqqaeT6upu3ao4hP3amFDV30s0GtHQyS4NnezSuZcOa+7DDX34zl3NfLCmOx/m9M5UVh1dmzrx2bhOPpcI9IZd9TK1fafdCPpwlkttO1Tz98cKOwiTXE6auJzU3/5NlxaWupQrptSR7NKZ5zo0ejah4yd72jYWwn7tTKrqVxONRjR8ulvDp7uVXd/SRz9b1Yfv3NXy/IZ+/pOsPvz7VR3/TFz5IyVdFe07jRg9d1QTE7fa2qdP0EfNuBsuTETIR1hks9JPftylv/txp+6sdSu3lVJfuku/+IVunXkmqUIhG8i4KmEfezO5ql9NsrtDT42l9ORzh7RwK6trP1nWzPurmv1pVltKaCG9qcdfKKhnkBhpOv4PwTkute0wCbc2hHy4rFSS/uFKQt//i24trfQpu5XS4eFOjT3frREvoWi03D9dKAQ3RpbddFMkEtHhY536pd94VCuf5JT5u2V99LO7WpmOauKNJQ1/plOPfa5H8U4zW3rOjg5pfDLcffoEfUPRn98cV9p2JCbh7oe+fLju1kyH/tuf9ejDG93KbqV1eLhHX/hSt048HndiGcSwMb19Zz+pRxL6/P9wRJ/+5QG99Vef6PbPsrr9DznNZxZ16gs9enS0U5Eof5OmIegDsBrVfLioUJDe/F63fvLjbm0W+hXrOqQv/mqPRs8mjQ34VPX3Z1v7zl56UnF96ktp3f1MTtNvbWju52v68NK6Pn53U2e+fEhd/R1BDxE7EPQBWIlqPly1tBjVd97o1UfTfcoWD+vs57v1+Re6lTS0PQLhczzVqZuSfuk3BzWTWdXVH36ilYUNTbyxqCe/1KdHnuwMeojGaveEXII+asJEXJiIaj5cM/mzuL77X3q1spZWsq9fv/6VPj16LB70sOrCCjzhEYlEdPxMn4Ye79bbfzGn6cyKMt9b1cqtvEae7w16eJBEeQBOcW0iLv35QHiM//ek/ugP+7W4OqzjTx7Wv/xav3Uh/3iSSm4YxZMd+vyvD+vci48qlezRJ+/m9e6frai4VQp6aJLKxcqwIujDOS5NxEV1tO3ANROXk/qv3z2k9cKQfuFLA/q13+zz9U627Zbfmg96CEZ6vCehu4WloIfREpFIRKfPDehX/sVjSvf1am2mpOt/mQ087Ie9G8HevYjDJqZngx4CYDzaduCKd36a0Hf/uBzy/9GLKY09323shNtaUNUPh+OpTi1k7zz0+MBwp55/+bj6+3q0ORvV1A+CD/thRtA3FEtrAtVRzYdLbn8S1Z/+cZ/WCkP6hS+m9OwXuoMeEtC01CNJPf+VY0qn+rQ+E9HNifWghxRaBH0cKMy9bUGhP39/VPPhglJJ+v++26ONXL+8Z3r1uV9yJ+QfT3bSvhNy/Uc69dyFIfUmejT99+taXwrwjm4Galf3BkEfNbGhx+3qyg368x1HNR8ueXs8qetTvYp1p/TLX+4Jejih8ee//8f33oLgcp/+bo881qWTnz6khJJ6/wd3VSoF18JjUtGynV0bBH0AVqGaDxeUStJbP+pUdmtAL3y51+qJt3sxtap/8T/+yb03NGevPv2dPvXLaR3q7dTq7JbuzgVT1behWNkq7u1ZAMtNr18LeghGopoPl8x93KGFhYQS3Z164lOJoIcDtEyis0PHz/QpHo1pYSob9HBCh6BvGFbcaYxL6+dLoj9/D1Tz4Yprkwnliz0aeSqhaNTeFXZqYWJV3wRhad+RpOEnexWPxHT7ejbQ9p0wIugbyKQVd0zqaTsI/fnuopoP18zOdGirlNRjI25X81lqs7rHe9z6/35Q+87gsS4lEjFtrhS1lSPot1Ms6AHAfGHubWs32nb2RjUfLslmIyqVIursdruaX5Hfmle840jbf+6f//4f79uL/29f+J8e+PeF3/5n+if/5p+3elhOOZ7q1M2VzX2/JhqNKJ7sUGQjoq18SbFkmwa3y/j8jMaOHAvmh+8yeu6oJiZu6dyJ4Zb+HCr6sB5tO26jmg8XdXRIEUnFraBH0npU9fcWpvadYrGkkkqKdgRzchvWoiVBH3uibQemoJoP1/QdKioaKeiTgFYhaTdTV+AJUpjad9bv5JVdLygakzoS4biKZQpadwwyMT1rVH++FN4z4CDQtvMwqvlwlTea0+XL67o+mdPY8+7cKOsg7W7h+Sf/5p8/1Iqzs13n//jhH7RtLC47qH1n9oNV5UsFpU8mAqvoV5jUvtMOVPRhNdp23Ec1Hy46/UReycSG5mezWlkKQf+OaOGpJgw3zyqVSrqZWVW+WNDg6YCa87eZWLxs9WqLBH1Yz4W2Har5D6OaD5clEtKnP51TInpXP/yLVZYchBOqte/cen9Nn8ysqRTbUvqkW+1KzWpHFwdBHzAE1fyHUc2Hy371H6+rr2tZH72/pg9+lgt6OG1Br351LlT1j6cevmKT29jSu5cWtFHY1OPP9yqWJHa2Gz36qMqmibgAYKNDh0r68oV1/emfLOoHFxM6PNShgcMcllvtwm//s6CH8IDHexL6cM29E73iVkk//f4nWrm7rp7jHXr0U7RuBYE9CvZkYi/bTq715+O+9ew41XyEwrNjWU2+u6rJzG398R9E9Bv/ul/96Y6gh+U01slvvWKxpPE//1g3P7ijTW3o3JeGFYmw2k4QuIZiCBNX3LGBK/35tO0A4RSJSL/5r+7qiZEVba3f1p/8wbLuLLs9OZf2HbcViyW9/d/m9NG1Ja0VV/XkP+5UV785deWzo0Oh6log6AMAEKBEQvpX//MdjZxaVn71tt74v5f18+vutXJgb66svnM4FtP3/+i6Pnx3UZuRrJ74cqd6HuEKVZAI+gCMQtsOwiiZlH7rX9+V9+SSItlZ/b//aVF/+4M1FYusxgM7zH+0oe/9/k3d+HBBuXhWn/71Q+odIuQfZPTc0ZYusUnQBwLEspoAKjo7S/off/uufvXFZfXEZ/X23yzqT/6fFS0tuNfKQ/uOO7byRV390aIu/dGMlldXVDi8oWf/xYBSR1lK0wTmNE0BIUV/PoCKaFQ6/6UNnTyZ13/5zwXdnt7Uf/q/cvrsL/boc7/UrUSSCY0wQ/lGWGu68lcLunNnQ3lt6PEvxBU/GlWih0q+Kajo4yE2TFK5unLDiYm4eBBtO0DZ46cL+t/+7Yo+P/aJuqK39M7ffqI/+D8Xde2dTadurkVV/z6b+vRXPsnpr/9oVm/96awWV5aVeGRTn/uXXXrqhU5FopyMmoSKPqoyfWlNAHBdT29J//Q31vS5X9jUn//XrH4+vaq//O6ALv+4W8/9oy49+emkOjrsDVXHk526md0Mehiow9LHWV37ybKmM6vKlTakzpzO/HKnjp+NK0rANxJBH4AR1rPjQQ8BMNKx41v6X/7XO/rpxKZ+8P0NLS126y+/e0h/+4MePfuFLn3qs52KJwhZaI1SqaT5n2/q2k+W9fGHa8orq61oVsfPxvXkL/Uq0f1gc8j5kUFdmrqhp1OnghkwHkDQN0ArZ1vDXEzEfRhtO0B1kYh07tmcPvNMTv9wZUNv/WhNc/Pdeut7h/R3P+zW0892aeSMrLzZVn5rXvGOI0EPA7vkc0VNT65q6qd3dXt2XXltqhTL67HPJnRyrFddh+zt/j47OqTxyRmNHTkW9FBajqBvCG6WFU5MxAVQj1hMOvdcVp99Nqtrk+v6m79e0/TNTr3z4z793V8n9ejxpM5+TnpiNGnFxF3adx52t7CkvthAID+7VCrp9vSmPnznrqYza8rlc8qXsuro2tLjYwk9dq5PiS7z/65wH0EfQOCYhAvUJxKRRj+V15nRvH7+0bomLq/p8t8XtXCzV5fm0vrri9164lNJeZ9J6tjJuPG9/FT1yx7vSejDtfbfLO3OQk43r63pxtW7urOUVUE5FUo59R+P6sln4nr0TJdicbP/hmw3MT2rX34q7fvzEvRhHRdW3KFt5z5684HGRSLSyVMFnTxV0C8+v6Rrk12aej+rjz5Kaupqj957p1uxzk6NPJXQ6TMJHT+VMK7ST1W//UqlkpY+zunWB2u6mVnTyu2sCsprq5RTvK+ox56O69jT3eqxsBXMRqPnjmpy4lZLnpugjweMz8+w4k6b0LZzH9V8oHmJREnPnF3X+S/e0cLtqN756arevZrQJ58kNHW1W++90yVFO3XsZEKnniy/mdLTXw77VPWlSlXf//adfLaojz9c1+z1dX08ta71tby2lNdWKa9o55aOPBHX8GhSg6c6ml5BpzIh96gO+TR6NIqgDyAwVPOB1hg8XNQXX9zQF1/c0CfzUf3s3VW9n4nr5s24Pvl5l2ZvdOpH3+tSKp3QqScSOn4qrqGjcfX0BTvBkhYe/xRyRS3P57Qws6lb19d1++aGCsXCvXCfOCQ9OhLTkSeTGjzZoajh7V2tMD7v/oRcgn7AWHGnPjcKt5XosPu22tPr16jm637Ip5oPtNYjR4r6lSMb+pUvbmhtNaIP3o/r/fcS+uC9uNZXkpoc79LV/57UlhLq6YvryNGYhna8JTvbE/5p4XlQPZNyi1slrdzOaXE2e+/tzu2ctooFbWlLW6W8ipGC+o916MjpmB453a3ew1FFIuEL9xVnR4d0ZXIu6GG0HEHfAKy4Ux/b+/NxHyEfaK+e3pLOnsvp7LmcikVp+ucxffBeXDdvxnTrZkwbG3HNfpDQzfeS2iolVFRCqXRMQ0fj94L/I4/GWjYxkxaesv0m5ZZKJa0u5R8I9UtzWRUKWypqS0UVVCxtqRjdUu8jUR0e7tDgybgGT3W1fcWcG4XbOhU73NafabPVbFaP9PlbzCToA2g7WnaA4EWj9yfySlKpJC3cjmrmZky3ZmKauRnTx7Mdyt1J6KPlhD58N6lCKSFFEkofqVT843rk0Q6lBjrU2WXvuuqm2iqUtLaS192FSrDf1OJsVrnslrZUKAf7Uvl910BEg8MdSj3aodRwUn1DHYGulHN+ZFDfm6RroVatKvoS9HEPE3Fbj7ad+6jmA2aJRKTDjxR1+JFyxV+Strak+bkOzdwsB/9bN2Oan+/Q+u2Ern+S1Hs/TWirlFBJMcUTUR0a6NCh/g6l+qM61N9R/neq/HE9d+8NS69+sVjS+t0trS5v6e5yQavLBd3d/nj6k6yKa4sqqbj9X0FbpXLVPtErpYY71L8d6g892sH69qiKoA8AAKrq6JCGj25p+OiWxj6flSRls9LHs+XQPzMT0ydzHVpejmoz26GN2zGt3Y5pphRTqRRTsRRTUTEV1aHung4dSnXo0EBUqYEO9aU6lBoonwT0HoreW+vfpV79UqmkzfWiVle2dHepsB3mt0P9SkFrK1sqbm1JkS1Jxe33BUlFfby+oVJ0S0fSg+odiJYr9Y/GlRruVGfAk6Zd4vqEXOuCvud5r0nqlzS2/dDrmUzmW3V8/2VJz0palrQoqXJ3gm9lMplX/Rwr/HWjcDvoIcAHtO0AdksmH2z5kcptP+trES0vR7W02HH//VJUS0tRrSx3qJDt0J25mJY/Lof/yolASTEVS+U2k2RnRMnOqDZiBXV1RZXojCjRGS2/JaNKdu54LLn9eGdE8WS0JTcFK5VKyudKym0Wt99KymXLH2d3/Xvn5/PZ+59XqRLgt98eCPVb6kxJff1Sb7/UN7D98YDUNxDTj9bW9Fhvn++/F8rCMCHXqqDved73JX09k8lMbf/7RUnf9zzvpUwm83IdTzUlaWT743FJr2UymTf9He3BWHGnfmNDyaCHAB/QtgO4JRIpT/Tt6d3SseNbD32+WJTu3o1qabEc/JeXOrS8GNXycoeWFqO6ezeqUimi0mZU2c2o5rJ5SVHFooclRSVFpNL2e0XuP3bv8ahiiYhiiYiiESkSjSi6/SURRRSJlscYiUYUiZRPTFQqqbSdw4ulklQqj1MlKZ/Pa6sgbRWi5S+ObH9ClffbH0eqPHbv8ZIULSmeLAf4SpDvTUmH0uV/9/ZLsfg+23XDj/87wbpRuK20/L/jK2pjTdDfruS/Wgn5kpTJZN70PO9bkr7med5XMpnMd2p4qqk6TwpaihV3woO74QIIq2hUSqWKSqWKOvX4w58vlaRcTtrcjGpzI6LNzYh+NL+i6FafcptSLqvy+ypv2e33hS2psFE5EajYVeUv7f2pnV+wubkpqaTOzqRiCSnZKSX2e0vu/bloiLtsxoaSGp/LBj0Ma3T3+l/MtCboS3pR0le2q/dTOx7/tqSvSfqqpFqCPhAYJuICwMMikXJLUDJZVGp7N/lhalPdNeaeUkkq5KRctiSVSipuF9QrFfp77yudNNHt6wH3Kv3b77ffllfW1BEraWg4GeqgDvvZFPSlcrvNiMqtNxWLOz4HwGD05wNohUhEiifLb37IFcuV/aBD/oXhlC7OXtOJ7jPBDgTWsino/6qkkUwm8/aux3f22tdku7f/2e1/npZ0uZ4JvS5iaU20C/35AAC0hzVBP5PJLEvaHfKlcsuOJL1e41ONSOrPZDLfrDzged5lz/NOt3LVnUI+r8XFpQcey2azWlxc3OM72itn0FgOYss4d8tGzdrGQYwlGjdrG/jFxd8pCGxHf7iyHXP5rHK5t1TMjwY2BhO2ZTZX0OJm8ONohgnbcS8m5Z9Culfq9PfOuFZ3nnme96ykr0j6ZpVK/15erjJp93VJr2w/HwzE0poAEC5j8c6ghwBYz5qK/h6+rTrXv981kbei0vbz9e0338XicaXTAw88llzbVDptxpJTicKGMWOp5tbKHT3TX14iweRx7mdtfV7pdPCTcSuViyC243o2qfSAnf//qglyW7qE7egPF7djYmlB3X3t/31M2pbJ7IrS3cGPoxEmbce9TM/ljRlfLL7PWqsNsrai73ne65LezGQydQVzz/P6qzy8vP2eCb0AAAAhcXZ0SOPzM0EPo2WsDPqe570iabmBkH9Z0tIeYR8AAAA+u7pyI+ghhJZ1Qd/zvK9IGtzdrrN9Q61aVGvdqVTya+3zbxp3xQ2X6fVroV9Dfz07zoo7ABAy3NE+WFYF/e3Jsp+rEvL7JfXvemykyuTaNyU9t72Cz04vbb//hp/jPQh3xQUAYH/cf4M7q6Nx1gR9z/NGJP2lpGc9z/v+jrfLkj6UdHnXt1yXdHlXm843JP3ezse2TwZeUXk1nt0nAAAAICBcBeSO6miOTavufFvlqv2Le3x+d0vOm5LSO8N7JpNZ9jzvdyS95nmeJFWmWT9Xx/KczjF9Egq9fQAAAPWzJuhnMpnn6vz6l/Z4fFktWkLTZqbfFff8yKAxN7RA/ejPBwCg/axp3QFsRW8lADTu/MAgffqWOz8yaPzVedO7GxpF0AfagB5LAEAzKBq1juldDc0g6AdgYnqWFXcQGlTiAKA5FIvQKII+jGb6pT7Uhv58AM2iaADUj6AP450fISQCQJhRLAAaQ9APufH5Gad704IW9jviUoEDAEh2TMh1EUEfQEtRiQPglzAXDy4Mp5iQ22IurrxD0AcAAMajaIBWcrW7gaAPAAAAOIig32YsrQkAAIB2IOgDAAAADiLoA2iJME+aAwDABAR9GOvqyg3W0Lcck+cAAAgOQR8AAFiDq4VA7Qj6QIuw3jEA+IurhEB9CPpAC4X5rrgAACBYBP0QG5+fcfYGEQAAwCznRwZ1deVG0MMIFYI+AN/RQwsArUFbKOpB0AfQEvTSAoC/aAdFvQj6AADAKlw1RCucHR3S+PxM0MPwFUEfAABYg6uFQO0I+gAAAICDCPptNDE9q9FzR4MehhVsn5Uf5slS69lxKm4AWo72HeBgBH0Y6/yI3WGRSVMA0BoUE4DaEPRDijX00QpU2ACgtS4Mp6y/amz7VXubEPQB+IpKG4B2obhgHxuu1ru08g5BHwAAWIeiAlrBtW4Hgj4AAADgIII+4LPp9WuhnIjLajsAAJiFoA8AAAA4iKAPAACsxYRcYG8EfQAAYKWwtgu6sMQm2oOg3yar2Sx3xa3R1ZUbViy/BQAAYDKCPgAAAOAggj4AAADgIII+AAAA4CCCPgAAAOAggj4AAADgIII+AAAA4CCCPqCchPAAACAASURBVAAAAOAggn4Ijc/PBD0EAAAAtBhBP6TOjg4FPQQ4ZD07Hto7VAIA6nd15UbQQwgFgj4AALDW+YFBrWfHgx4G6nB+hMJQuxD0AR9Nr1/TheFU0MMAAAANOjs65EybM0EfAADAQtPr14IeAgxH0AfQFPrzAaD9uHqMWhD0AQCA9ejTBx5G0AcAAFbjqiJQHUEfAAAAcBBBH0a5unKDZbcAAAB8QNBvk+7eZNBDAAAAQIgQ9ENmfH6Gu+K2CGvoAwAAkxD0ATSMpTUBADAXQR8AAABtdX5kUFdXbgQ9DOcR9AEAANBWl6YW9HTqVNDDcB5BH0BTLi0tBD0EAABQBUEfQMO6k2NBDwEAAOyBoB8yY0eO6crkXNDDcNKJ7jO6OLsS9DCAwFwaP6E7a4m2/bw7awldGj/Rtp8HALYh6AMAmnZp/ITe+N6ofvcPx9oS9u+sJfS7fzimN743StgHgD0Q9NtkfTUb9BAAoGWeHZ3T8OFVzd7ubXnYr4T82du9Gj68qmdHuUoJANUQ9AEATTvUk9O//63xlof93SH/3//WuA715Hz/OQDgAoJ+m3T3JoMeAgC0VKvDPiEfAOpD0AcA+KZVYZ+QDwD1I+iHzPj8jM6ODgU9DCdNr1/TheFU0MMAAud32CfkA0BjCPoAAN/5FfYJ+QDQOII+gIatZ8d1fmAw6GHAUM2GfUI+ADQnFvQAGuF53iuSTktaltQv6XImk/lWu58DALC/StivBPbf/cOxmgI7IR9w2/mRQV2auqGnU6eCHorTrKvoe573uqTTmUzm65lM5tVMJvN1SS95nvdaO58DAFCbeiv7hHw0aj07HvQQ2urCcErT69eCHgYMZlXQ9zzvRUlfk/Tqrk+9KukVz/NG2vEcAID61Br2CfloFG2E8Nv4/EzQQ2iaVUFf0suSpjKZzPLOBzOZzNT2h19p03MAAOp0UNgn5AMwhSsrFNoW9F9Uuae+mmVJX23TcwAAGlAt7K9uJLW6kSTkA4DPbJuMOyLpzT0+t7j9+XY8BwCgQbsn6P6HNy5IktY2Own5AOAja4K+53n9B3zJsg4I6X48R6MK+bwWFxdb8dR1yWWzRoxjL7lC7sDxmTr+bNTsbbubH2ONxu36nVuFbdCY3/617+s/vHFBa5udkqSezk399q99X4VsVovZgAdnsTD/PebyWW2u+ff727Ats7mCFjfNHude2zGXPfiYH6R2Z6ZCulfqbP5O4jvZ1LqT3n6/V9tNu54DAAAAMJ41FX2V22r2c1C13q/naEgsHlc6nT74C1ssUdgwYhx7ubVyZ8/xVc6qTR3/2vq80ulU0MM4kJ/bcT2bVHrAzP8f7WD636TJ7qwl9B+/M6a1zU71dG5KKrfu/Mc/e4nWnQbx9ygllhbU3df872/TtkxmV5TuNnOcB23HxPKC0ikzxy5J03P5tv4NxOJx35/Tmor+jlVy9grjaR1QqffjOQAAzdm9us6/++pF/buvXmz4DroAgOqsCfrblnW//aaaqX0+5+dzAAAaUG0Jzd6urHq7snXdVAsAcDDbgv6b2rsa36+9V9Px+zkAAHU6aJ38eu+gCwDYn21B/3VJI7tXz/E879ntD9/Y9fjIjs819BwAgObVejMswj4adWlpIeghwCFXJuc0duRY0MNomlVBP5PJvCnpO5Je2/Wp1yR9M5PJvL3r8euSLu8M9Q08BwCgCfXe8Zawj0Z1J8eCHkJbXZxd0YnuM0EPAwazKuhLUiaTeVnSdc/zXvM87xXP874t6duZTObVKl/+pqS3d0zCbeQ5AAANqjfkVxD2AbddmlrQ06lTQQ/DeTYtr3lPJpP5Zo1f91KzzwFgf5eWFnR+YDDoYcBAjYb8it130P3dPxxj6U0AqIN1FX0A5gjbZXLUrtmQX0FlHwAaR9APmbEjx3Rlci7oYTjpRPcZXZxdCXoYQOD8CvkVhH0AaAxBHwDgG79DfgVhHwDqR9Bvk/XVbNBDAICWalXIryDsA0B9CPoAgKa1OuRXEPYBoHYEfQBA096eHGp5yK/YHfbfnhxq2c8CAJtZubymjbp7k9LaetDDAICWOD82LUl6dnSuLctfVsL+25ND9342AOBBBP2QGZ+fCXoIzppev6YLw6mghwEEpt2B+1BPjpAPAPugdSeEzo5ymRsAAMB1BH0ADVvPjnNXXAAADEXQBwAAQFudHxnU1ZUbQQ/DeQR9AAAAtNWlqQU9nToV9DCcR9AH0JRLSwtBDwEAAFRB0A+ZsSPHdGVyLuhhOOvi7ErQQ2ir7uRY0EMAAAB7IOi3yfpqNughoMVOdJ8JeggAAAD3EPRhnEtTtIIAAAA0i6APozAxBwAAwB8EfQAAAMBBBH0AAGC1S0sLLA4AVEHQB9A0ltgEgPYK2ypvaAxBH0BTqKIBQDBY7Q0HIegDPqPKAgCAva5MzmnsyLGgh+ELgj7gI6orANBe9Ofbh2W024egH1LcHRd+o08fAFArltNuD4J+CLlyOQrmoJoGAIB5CPoAAACAgwj6AAAAgIMI+gAAAICDCPoAAACAgwj6AAAAgIMI+gAAAICDCPoAAACAgwj6bdKbTGpy4lbQw7DC06lT3DUPAACgSQR9AAAAi1ycXdGJ7jNBDwMWIOgDAAArXVpa4M7cwD4I+gAAAICDCPpAC1ycXQl6CG3XnRzTpSXmVgAAYAqCPuAz+iYBAIAJCPoAAACApCuTc0EPwVcEfQC+on0HQDswERetMnbkWNBD8A1BP8RcO2tF8DjoAkBr2T4H7NLUgp5OnQp6GKFB0A8pG85Wbb9plu07YwAwVdivHDIXDLUi6LfRuRPD3B23Rraf7Yd9Jxz2gzCA1uMKInAwgj4AX3HwBQDADAR9AAAAwEEEfQAAYA1W20GrXJmcs2IOYz0I+gBagj59AACCRdAH4DuqbQDgv4uzK6Ff7AH1IeiHHGvpAwCAdmAN/fYj6IeYa31oAAAAuI+gD7TIie4z3DQLAAAEhqAPAACswIo7QH0I+jDW06lTujTFyi0AAACNIOgDaInu5BhLbAIAECCCPgAAAOAggj4AAADgIIJ+m507MazJiVtBDwMAAACOI+gDAADjMecHqB9BH0BLcXAG4JcwL615cXZFJ7rPBD0MZ12ZnHPyRqIEfejK5FzQQ3BamG+aFeaDMgDgPpbLDgZBP+RsOHu1eedA9QUAgLKnU6eCHkLoEPRhNHYKAADuiAs0hqAfEFbeQVhw4ywAaE6YW0DRHIJ+AM6dGA56CAAAwCK0gqIRBH2gxU50n6EaAwAN4oqg/Uyfa+fqijsSQR9Am3CwBtAo+vPtx5y7YBD0obEjx4xeYvPp1CnjqwHYHwdpAADaj6APAABgKFo/0YxY0AOol+d5r0nql1QpEb6eyWS+Vcf3X5b0rKRlSYuS0tuf+lYmk3nVz7ECAIDGsaxmGRNx0SirKvqe531f5WD/9Uwm85ykVyW97nnet+t8qimVTxbSksYlvdzukH/uxDBLbIYIE3JZZhMAgHazpqK/Xcl/NZPJTFUey2Qyb3qe9y1JX/M87yuZTOY7NTzVVCaTebllAwUAAIAkaXwuq2ePPBX0MELLpor+i5K+7XneyK7HK9X8r7Z5PAAAALCYyYuR+MGmoC9JI9tvOy3u+BwAAABQM1fX0Jcsat2R9KuSRjKZzNu7Hq8E/PFan8jzvBdVnpArSaclXa5nQm8jCvm8FheXHngsm81qcXFxj+9or5xBY6nmqA5pfO62xoaSRo9zP9moWds4iLFE42ZtA7+4+DsFge3oD1e243h+U5K0uRbc72PCtszmClrcDH4czTBhO+7FpPxTSPdKnQlfn9OaoJ/JZJYl7Q750v2WnddrfKoRSf2ZTOablQc8z7vsed5pVt0BAMAcxfxo0EMArGZN0K/G87xnJX1F0jerVPr38vLOCb3bXld59Z436nieusTicaXTAw88llzbVDqd3uM72itR2ND0XF5nR4eCHsqebszfliRjtlm91tbnlU6ngh7GvcpFENtxPZtUesDO/3/VBLktXcJ29Idr2zGxtKDuvmB+F5O2ZTK7onR38ONohEnbcS/Tc3ljxheLx31/Ttt69Hf7tupc/75KyJfut/183ZdRWcjl/jSYgyU2AaB2F2dXWEMfTWlbRd/zvOt1fsvy9lr5ez3f65LezGQydYVzz/P6t9uAHvhZ2++Z0IuWuji7ogvDwVf1AQCA+9oW9DOZzGm/nsvzvFdUPhGoq6e+cldcz/MGqoR9oKVOdJ/R9Pq1oIcBAMbjyp8bxueyQQ8h9Kxr3fE87yuSBneH/O0batWiWutOpZLfkv78vXB3XIQVB3EAB+lOjgU9BPjgVOxw0EOwxvqq/ydGVgX97cm3n6sS8vsl9e96bGT763d6U9JzVar5L22//4af44W/TsUOUx1wAAdvAIAJXL9ZlmTRqjvbd8T9S0njnud9f8en0ipX5He38Vzf/r6dbTrfkPR7nuf9TuWx7ZOBV1RejYd2HgAAEDgm4raH64uRWBP0VV5hp1/Si3t8fndLzpuS0jvDeyaTWfY873ckveZ5nlQ+SZDKVf62tu2Y6srknNFLbLqACbkAsLdLSwtc+QN8Yk3Q328Fnj2+/qU9Hl9WiJfR3M/YkWMan58JehhOY0JuWXmZzXGdHxgMeigAgBa4NMVcrHpMTtzSF37pCd+f16oefUBi5+ESJuUC2Il9QtnF2ZWgh+ALJuLWpzeZ9P05CfoBY+Wd+riy03BlJ94MLs0D2KkS8tk3lNGfDz8Q9IE2Y+f9ICp4ACoI+WiXK5Nzzk/ElQj6qCIMy02ZgKr+/YM6YR8IN/YB97lwbKDF1hwEfTzAlrNb23ciVPXvo4IHhBstOw9z4RjxdOpU0EOACPqwEDsPN1HRA8KLkF/mQjUf9ZucuKVzJ4Zb8twEfUMwITec2KmXcZAHwokT/Ie5UM2HOQj6BmjVWRzMxs78YRz0gfDhRB/tFqa5iAR9AEbgYA8A9rNlDp0tcxKbRdBHVWE62wUAtB9X8NzFXDpzEPTxEBvOcp9OnbKmaoD6cPAHwoMrefcxZwutQNAHAsbO/T4O+gDCjLlb8BtBHwgQO3UAYcSVO6A9CPoAjEMIANzHFTyg9curE/QBGIWDP4CwcaWFk7lzjWnlMusEfYNw06z6ubJTcWUnDwAH4Ypdda60cpq+4s6VyTkrFh3xC0HfENw0q37/f3v3+hvHeecL/lt9v/DapEjdKEuU5JJs2YolxU7sxFYSOzPJnJMzybFnBnMwc4Ddk+Q/sLHAAosFFgicl/tOCbBYzJ45OxknmcwkE+3ESqJkLDsXSrJs2VTZFnWzSJHirXlp9rVqX3SX2Ww1yb5UVz3PU98PQMjipfioXf3Ut371q6dEn0wapcrk7qRE9BTDAJHCeOWOyB0M+lTXqaE9XEufiIiow3hFlzqJQZ9IEJzsiUh1vFJXH6/sUqcw6JP0VOjT5yT/ILbvEKmJbTtqOj8xp0xLrUoY9ElqnFSIiOTAE/cH8Uquu0RrSR6/PNnxezQZ9AXyxMgu4VbeEe1NobKRxBFO+jVY1SdSC6v5D1Lhiq5MV9b9tOIOwKBPW5DpzSDTJEPNY9gnkhvfw+rjFXYxMeiT9FSbXFjV34gVQCI18L280dmptBLVfBIbgz6RQDjpb44VQSI5nV+YY8hXmCxX1EV7UJZbrdoM+gISqU9fpvX0ZZlsqHkMCUSkEtWu3Kp2Zd0tbjwslUFfMHxCbmtUm2RUOwg4hVV9Irmwmr85XsElNzDoEwmGk399DAtERETNYdAnIqmwqk8kB75X1SdLy6wsLcidwKBPSpFl0qHWsKpPJBe+Zx+kWmumLK2zIt2I6yYGfQGVihbWlopYWShgea6ApfsFpGfyWJrJY3m2/LmVhQKyKyWYJavj45HlhlxZJptGqXYwICL/YDV/a2zR9Dc3nohrC7nyW+gTZsnCylIRK4tFrK2WkM+ZyGdN5LLlP/NZE9PpLK7/5g76B5PlH9IArfLzVlWut2DBsiyEIhoi8SDCsQAi8fWPeHcQXQNhxLuD0ALaA2MhcY0kjuBO5prXwxBS+Wm5YzjdP+D1UIhoC6zmE3mPQd8lq0tFvPX/zWJ1uQQtoCEYKIdvLRBAQAMQCCEQ0BBPajjY24VisITeVByahvL3VXK6ZZVPFizLQiFnIpsplv+et1DIWcgvWLCsEkwUYJoWSmYJWgBI9ofQlQpV/gwj2R9COMoLOkRE5CxW8/2BrbJyYNB3SbEAmGYEXb1BdPWG0TcYRVdvBLFEENF4CPFEENFECLFEEKFwAPdXMhgY6tp2u5Zlla8IZIrIZorIZUrIZorIrpawPJ/D4mwOmaUCzBUTC0smZieyMM1VlEwTXakQUnui6N8TRe9QGIGgGlX/8xNzOD3Kaq/KWNUnEhur+fWp1pKpWsusihj0XdLTH8ELf3EAPakIQmHnKumapiEaDyIaD6JnIFr3e/LZEtKzuQc+Cpkipq8V8PF7a9ACFvp2RZDaG0VqdwTxHjl3jWO9+3E1fdPrYTjm7FQaX9nV6/UwiIgawmr+9tif7y7RnojrNjnTnIRiyRBSw0FPfnckFsSOvQns2Jv45HOloon7d9cwfWsVM7dXkZ7NITNdxNJkBh+Zy4j3BLHzUAzDB+OIJsvjvjI+jeNHhz35N/gR+/S3d35hjlV9IsGwmk8kDgZ9nwqGAtj5UBI7Hyrf8JtZLlRCfwbTt1eRXSvgzpUsblxaRf/uCB56eAA3o7Mej5poXSJ6CpncmNfDICIiatj45UlXfx+DPgEAEt1hHDjWhwPH+mCaFqZvruLWeBqTEytYu1/Atall3Mvn0DW/jJ1HY+jaEfZ6yEREJBC27WxNpf788xNz7M9vg1tLawJcR19oczMrnvzeQEDDrtEufObP9uDP/ueDOPWlPdi9tw9DsV7Mv1fC2/+Yxrv/vIj03bwn42uESqsBqHRwcFr5plx1/l8TyY5tO1tjfz65jUFfUEPdSa+HAACIJkI49Kl+fOmvH8Izf7EXj5waRirRjdxUAFd/soQrP17Awp08LKvzD+5qlEpVBh4UGsOwT+QtvgdJRDI87LPT2LpDDdE0DT07oujZEcXRzw7g+uVFfHRxAZmZHN7/lyUkh4PY9+kE+vdFoGlqLNNJcmCvPpG37JDPav7meGXWO35ecQdgRZ+aMJwor+sfiQdx9OkB/Om3DuBTn9+JgZ4elGZDGP/ZMt7+4SLSUwWPR1rG9h3/YAsPkTcY8hunyhVa9ue3zu0bcQEGfeF51affiHA0CP0zA/iT/3YAn3puJwZ7emDOhfDujxfxwa+WUVgzPRubSpOQKgcHNzDsE7mPIZ9EJGrbjps34gIM+kITpU+/1ux8ZsPfQ5EAHn4yhS9/8wCOfXYIvdEuLFwrYezv53Hv/TWh+vdlxqr+1uywwbBP5I7zC3MM+Q04O5VmwcYjfm/bARj0qUl2+049oXAAj3xuEF/6r/ux70A/YsU4Jn6dwTs/XsTKbNHFUaqHB4nGMOwTuYMh35/YtiMfBn1yXHcqgmde2oOn/sNuDPR2o3A/iLf/cQE33lyBWXKvun+sd79SffoAq/qNYNgn6iyG/Maxmk+28cuTrrftAAz6whvqTgrdp78ZTdMwcrQHL/xP+3Hk5A50h5K4dzmPd/5pEdnlktfDkxIPFo1j2CfqDL6nSAZXxqfZtlPBoE9NG050PdCnv5lwNIjjXxzCc3+1D4OpbhTuB3D5BwuYu5Hr8CjJ7xj2iZzFFXaao9oVWNWukPsFgz65YmBPHF/4m4ew71A/osUYxn++jIkL7rTyqDQ5jSSOKHfw6CQGEiJnMOS3RrUrsezPlw+DPrkmGg/is1/fjePPDaMnksT0251v5eGkRACr+kROYMhvHAsy3hFxWU2v+vMBBn0piNqn32j7TjVN0/Dwkyk8+5cjG1p5lu6J8ZAtWfAg0ji28BC1h++d1qhWzZcJ+/PXMehTS7ZaZrMRdivPyGgfosUo3v3JIuYmOte3r1r7DjWHlUii9vA95G9cVlNeDPrkmXIrzx4cfDyFBOIYP7uEqatrjv8eTk5kY2WSqDl8zzSPV1xJJAz65KlAUMMTXx7Go88MoSuUwPXfrOLOpeZbgvyGN+U2jxVJotbwvdM8Xnn1hojLao5fnvT09zPoU1ta6dOvpWkajj49gBMv7ER3OIHbb2Vw83crsCz3Hq5FREQbsZpP5AyvbsQFGPSlIeINue326dc6cLwPp76yC92RJCYvZnHzrVVHt08EMLwQNYPV/OaoeKVVpXvc/IhBn4Sy75EePPUfd6MrksTk5Szuvu1cG4+Kk5WKB5VOYmghok5TsW2H97rJi0GfhLP7cBdO/ulOJEMJ3LiQwf0Ps21vU8VJSsWDiVtY1Sfa2vmFOZ4YEymAQZ+EtO+RHjz27A4kQ3F88PoyFj/Oez0kUgTDCxF1Aq+wekvEG3FFwKBPbRlOdDlyQ249hz/dj4dPpBAPxPH+z9PIzHfuCboy48GlNazqE9XH90brVLvSqmLLq5u8fCKujUFfIiLekNtJmqbhsS/swENH+hA1Y/joF1nkVsy2tqnapKXaQcUtrOoT1WeHfL5HmqNywUXF1lc/YdAnoWmahpNfGcauh7oRKcZx/VwWZrG1ZTdVnqxUPsh0EiuXROsY8tvDwot3roxPez0EYTHoU9s62b4DAMFQAE99bTcGBrtQSodwg8tubsCDS2sS0VNIRE/h/MIcAz/5HkN+61QttMh2BVy0/nyvH5RlY9CXkJ/ad2yRWBAn/mQI3bEkpt7JYv5mrqXtHOvdL93k1Qg+Kbd1drBh2Ce/Yshvn6oFF5WvhLvB6/58gEFfOkPdSa+H4Jm+nVEcfSaFRDAG49wyciu8OZecwbBPfsWQ3x5VCywyFcTYtrM1Bn1yRKfbd2wHT/Ri94FuBAthGOeWYZmt9evLNIk1ilX99lSHfQZ+Up29n9stbNQ6VvO9J1rbjkgY9Ekq5Ztzd6K3K46VuyXcudT8yYVMk1crGPZbVx16GPZJVaziO0PVuVbFQpjbROnPB4CQ1wNohq7rFwGcALAIYB5AqvKl7xmG8UoT23kZwMHKdvoAXDQM43sOD7djhrqTmJlZwcBQl9dDecDsfAaDqURHf0csGcLJr+zEhR8VcfsPqxg4EEVyoPld+fzEHE6PDnRghN4ZSRzBncw1r4chvUT0FDK5MZxfmMPpfrX2EfI3hnxn2CGf1XxvifyQLBH68wE5K/oTKIfzFIAxAC81GfLPADhoGMa3DcN4xTCMbwN4Qdf1VzszXP8YTrh34jF8IInR432IalFMvLECy2quhUeWSaxVqlaa3MTKPqmGId9ZqoZ8UotUFX0AE4ZhvNTqD+u6/jyAbwHor/nSKwCu67p+xjCMiXYGSO45+rlB3P1gBXMfL2HuRh6Do9Gmt6FyVf/sVBpf2dXr9XCkZlf2iWTHkO8clQsp5yfmpCmEiXoTrkhtO4CcFf12vITyycJi9Serwv2L7g+pNSI/JdeNm3IBIBoP4sjTKcSDUdx4Y6XpB2nJMpm1gpUm59hr7RPJiiHfeZxjxcC2ne3JVtFv1/Mo9+XXswjgLwF8txO/2DQtZLOtrf2+mVKphGw26+g229UbCGG+kOvouKq3vUuPoedSBHfvrmL8t9PY9alIU9vKF/P4xfgUTg03fzVAdLlADj+5NYNnu+u/zefn510ekbwC4Rx+MT2JU+FY3a/ztXQGX0dn1L6O+UIOZuEosqt8fZtV+1r+drmIlDmC+ax6r+XYdA77Q4MdeR92Ypv5XE7IOSOXy2F+fqGlny0WugE0l2O2I13Qr7TfnKj89SCau5F2FMC5Tb42X/k6SSQQ0PDoswNY/FEW995ZwsDhECLJxi9U7Q8N4mZxtoMj9E7KHMF84I7Xw1CCWTiKQHgcY4XspmGfSERjhSzMwlGvh0HkC7c/EK+tS7agPwqgzzCMT6ruuq5f1HX94HY35Oq63rfNthfRwaAfCGiIxZytGgcLRawuFYVbfSdoFhGLOR+G7Ep+7bb3Ho5h/yNrmLhmIX0tAP2Fnqa2O5leQiqV2v4bJbSamUEqtbFP366AqPpv7pxnkMmNIdW//rrxtXQGX0dn1L6O5xfmEIlEkejm69qsevvk2ak0opEgUgn1Xs/zE3OIRCNI9Tr7b+vUe/vK+DSeHhGvNjsdzbbVthMKhx0cTZlsPfovGYbxw5rPnQHwsq7rJ+r9QBV7L9usdUc6Ij8l160+fdux53YgHori/gc5ZJeaf2KuyusGq3zjmNvYr0+yYV++s1TuzVf5vjU/kyrob7Iijr0kxre3+fHtGrm2q/hTg9xcZtOW7A1j75EeRAJh3L2y1tTPqjy5qXxQ8hLDPonOfuotEfmba607uq5fb/JHFg3DOFmzjb7aFXOwXqHf8hqOYRiLuq4Dmwf6FBSq9vvRoVN9uP1+GvfeX8W+TycQjkl1HkuSqH6Y1uPQvB4O0QN4Iuo8la+MqnxF202iLatpcy3oG4ZxsJ2ft5+Kq+t6f52w36hFrLfw1CPlGvpzgj4l1219QzEMPZTE2kQO997LYuRkc0/oVXFNfRvX1HeWHfZ5cy6JZqyQLffls5rvOJWvkMp0ZVvU9fMBsZbVtMlW8qwXxO1K/qUGfv4cNq/o92HzFXmExT79jQ6f6kc0EMHkOxmYpcbX1ZdpkmuWygcnL9lBaqwg1hK35F/2vsiQT6oTdf18EckU9M8BOFmnmv9C5c/vVH9S1/XROjfongEwWrsCT9X3/cCpwfqdF336ADC0P4H+oThKmQDuf+jscwuIatnLFrJVgrxm74NcStN5bNshmckU9L8D4PvVIb0S0F9GeTWe2hOA6wAuVn+/YRjnAPwQwKs13/sqgO8ahtHIVQESmKZpOHyqH7FgGJPvNHdTLqDupDeSOKL0wcpLDPvkNYb8zlP5hh+1PQAAIABJREFUyqjKV7TdImp/PiDROvqVm2m/CeDVyk21dq/9yU0C+jkAqdoTAMMwXtJ1/WVd118FMAfg0wBea+KhW0Jin/66PXoXYr+MYP5+FmvpEuK9wYZ+7ljvflxN3+zs4EhJ1Tfonu5X8z4PEpMd8hPRU3zybQewQCIW9uc3T5qgD5TDPrZfRtP+3he2+Np3N/uajIa6k5hZXvV6GHXNzmcwmGrupth2BUMB7DyYxPLVNcx+lGv6plyVnZ1K4ylnn9tGFQz75LbqkE+do2o1X9Yr2OzPb45MrTskGa/69AFgz8PdCAeCmL3efJ++rJPfdlQ9WInEDlznF+bYykMdY+9fiegphnxqC9t21MegT0oa3p9ALBrB6v0i1tKNPymXkx61qzp8MeyT01jFd89vl4teD4EkMH55Uti2HYBBXxlD3UnMzax4PYy6vFhmMxgut++EtXBLVX1VjSSO8ODlElb3yUnV+xFDvntUvRIq45XrK+PTbNtpAYM+dZS37Ttd5fadj5oL+sd690s5CTaDYd8drO6TE6oDPkO+O/wwR/IKtj8w6CtG1Kq+F4b3JxGNRrByv4jcSuPtO6pLmSNeD8F3GPapVaziu89eaUfVuVLGQpaoq+2I3rYDMOgrhU/J3SgYDmBgdwwhLYjl6eaqM6pX9VPmCJeNcxnDPjWLN9y6T/WQb5Oxms+2ndYw6FPHedm+078rhqAWxPJ0wbMxiIxh310M+9SI6lV1yH2q9uUDclbzRSXyQ7KqMegriO0761K74whpASzday3oqzwp2gczhn13MezTVtiq452zU2mlQ75Ntmq+qG07gLgPyarGoK8YUdt3hhNdnrTv9O+MIaiFsDJThFmymvpZ2SbDVjDse8Nux2DYp2oM+d7hHCg2tu20jkGflBaNB9GdigAlDZm51lZRULmqD6h9mVp0dtjnEpz+xqUzvWWHfNXnwvMTc74oYNFGIa8HQP4yO5/BYCrh6u/s3xnD/ftBLE0X0TUUbupnj/Xux9X0zc4MTCAjiSM4O3UNX9nV6/VQfMcOdpnc2Iawf7p/wKshkQuq/18z3HtP9ZAvK1HXzpdhtR0bK/oKEvXhWV7dlJvaFUMwEMTKDG/I3Q4vX3vHbufhg7bUVlu9Z8j3ll/mPNWvTNPmGPRJecn+MALQkF0yW96GHyZJVrTEwQdtqYkBXyx+admxyda2I/JNuDJh0CfXuX1TbrwrhIAWQG61tYdmyTY5tssvFS4ZMOyrgz34YvJLyJeViG07smHQJ1d50b4T7w5BQwD5VROW1dzKO9VY1ScvMOzLjyFfPH4qaPAmXGfJ1J8PMOgrS9Q+fS+Eo0GEIwGYBaCYay3o+22S9NNBUAYM+3KqfvAVQ754WNgQF9t2nMOgT67zYk39eHcIAU1DfrX1Pn2/4MFPTFx7Xy6s4ovLT4UMma9Es23HGQz6kvjNj//+kw9qXqwrhAACyK201qdvk3nSbJafDoYyqV57n8TEkC8+PxU0/HZFmjbiOvqS+Pef/I9P/vu5b/wXD0ciJ7uin1tpvaLvlzX1gfJB8E7mmtfDoE0koqc2rLvPNffFwLXxxccChvhEbtuRrT8fYEVfaSL36bvdvhOOBgFoKOVbvxnXj3hQFBeX4BQLl86Uh1+q+TJfgWbbjnMY9MkXAgFA04A2Ft0BUK7qyzx5NsMvB0PZ8QFb3uINtyQytu0QW3fIU7PzGQymEh3/PVpAAwBYJiv6zTo7lcZXdvV6PQzagh0wq9t5ALb0dErtCRUDvhzOTqV9U8CQtSB1ZXya1XyHMegL6Dc//vsNPfm1/o+//bMNf//8n//1ln37czMrGBhyf/367QwnujCdcae1SKtcu7IcWnTn/MQcTo+qH6LYqy+X2sB5fmFsw98Z/FvDYC8/P7YhsprvLBn78wEGfeUNdScxs7zq9TC25EZV3w74mtb+tvx0U66NVX05VQdS3rzbPK6eoxZW88Um8k24MmOPPnnKrSfl2k/EtVt4nCDrZNos++Dox4qYSmpv3mU//+aqXx+GfPn5ce6StZovatvO+OVJr4fQMlb0BfTcN/7LA6041e06/+vf/WvT2xS1fcfW6aq+WVk+X3Po1NZvVX228Kijtp+f1f11XB5TPXbIZzVfbDJU82Vs2wEY9H1B9PYdN3r1iwUTlgUEQs5V9Msr8Nz0Ra8+UD5Qnp26xhYeRaxX98e2+U41Wn0avYLBgK8Ov4V8G6v5VI1Bn3whu1KECRPRpPPdan65MdfGfn21NBJsq08GZAv9rNL7m59CPqv5nSFz2w7AoO8bQ91JzAjcvjOc6ML0/ErH2nfWloswLRPRLmeDvl9beBj2/WWz5TsB8YI/V8ghwH99+XbIZzW/M2Rt2wEY9KXx+T//a6+HILVyRd9CpCvYke37qarPsO9ftaG5XvBv1HYnCO3cLMxw729s2SGnyF7NBxj0pbHVOvnN8ONNucWCiVy2BE0DwnHnevRtfqvqA7w5l8paDdS1JwiPQ8NYIYsI22yoTX4M+bK27AByPCBL5mo+wOU1fWWoO+n1ELbUqaU2sytFWJW2Hc2JhfTrKN+YK+9k2yq/XR4nZ9hLfdofY4XsA58napWfQr6N1XzaDIO+D83NuPM0WlGsrRRhWhYiDvfn1+OnsM/19ckpZuEozMJRr4dBkvPjXCTzMUeGm3Blr+YDDPquKeZKXg8BgBxV/dn5jKPbXF0slFfc6VB/vs2PFRWGfSISgR9bdmwyH3tEb9tRAYM+KW9hKouSaaJrhzu3pMhcYWmFHw+sRCQOv4b88xNz0oZ8Gar5qmDQd9Hi5LLXQwBQruqL3r7jZFV/4V4WJauE7p1hx7a5GVkn3XaVH6bFqj4RecNvIV8FolfzVWjbARj0XRMOdbZtRCVO3pRbzJtIz+ZQ0tyr6AP+q+rbGPaJyE1np9K+DPkyV/PJXQz6pLSF6SyKpRK6BkMIhjqz4k4tv06+7NcnIjdxrqFOUKltB2DQ9y2/tO/MT1badobdf2SEH6v6fqysEZH7/NqXD8hfzefa+e5i0HfRYF9SmD590TnVvrMwZQf9zvfnV5N5EnYCK21E1Gl+DPlEzWLQJ2WZpoW5yTUULRM9LtyIS2Vs4SGiTvLz3OLHK8VuUq1tB2DQ9zXV23dm76xhbTWPaK+GWK83u7pfJ2VW2oioE/zcsmOT+Yox23bcx6DvAbbvNKbd9p3JD5ZRsIrYcSgKTXPnRtxqMk/GTuCSm0TkJIZ8ouYx6LtssE+8J9OKXtVvhWlamPxwBXmziMFDMU/H4teqvo1hn4ic4ueQr8JNuCIbvzypXDUfYND3jChV/aFu8U48qg0nulpq35n7eA2ZSttOcsC7ZxjIPCk7gf36ROQEziFqEL1tR0UM+h4QsaqvmrtGuW1n8KA3bTu1/FzV93MFjojax5YdVvM7TcWbcG0M+gRA/PadZqr61W07Ow5FOziqxsg8OTuF/fpE1A4/h3xViF7NV7FtB2DQ9xTbdxrT7E250zdWy207PRqSg+4/KGszfq7q2xj2iagZZ6fSvg/5slfzr98Wu5CoOgZ9j4jYviN6VT+9XGjo+z4aW0DOLGDXsbgQbTsAq/oA+/WJqDmcK9QpEIlczVf1Jlwbg77HWNVvTKNV/YWpLGbuZGCGitj5iLer7dSjyqTdKr9X5oioMezLXydzoYjV/OaspbOOb5NB30MiVvVFt11V/8OLC8iV8th1LI5QVKzdW+bJ2kns1yeiRvg95KtSGDqS7PN6CJtS+SZcm1hJiDwl+pNyU+Gtb6xdTRdw94NlFFDA7sfiLo2qOcd69yszebeLYZ+Iap2dSrMvv4rMBSLRV9qxidK28+GFWx3ZLoO+AERp35FBKhzddAWe65cWkSvmseNwFNFu79bOb4Tfw351vz4DPxEBbNepJvsNuDZW85vTFY84vk0GfY+J2L4jclV/M/m1Em6+m0bOLGDPp8Ss5tvsyZth/whv0CUiAAz51VQ4NrCaLw4GfdpA9JtygfpPyx1/aw5r2Rx694bQtSPs0cgap0KlxikM+0T+xpC/zg75KhwjRF5pRzSdatsBGPSFMNiXZPtOG9L3c5h4exFZM4cDzzS35r6X2K+/jmGfyJ/sfnyG/HWyh3wZqvkitu0cP7S7I9tl0KcHiH5Trm12PgPLsvDur+9jrZDDzkdj6BLoAVmNYtgvY9gn8hfedLuRSscCGar5fmjbARj0SVL2uvqTH67g3u0VmJEiHnpK/LajWrJXbpzGsE/kDwz5G6nSsiNDNV80nWzbARj0hcL2neaUiiZ+f3YSa8UsHnoqiXBc3t1ZpUpOuxj2idTG93Z9sod8m+jVfD+17QAM+sIQbfUdGdp30uMFLCxkEE1p2PWoeE/BbZQqk7uTWOkjUhNvvH0QCz3u80vbDsCgT5JK389i/A+zSK9lUNidhRbQvB5SW3hjbn2s/BGphyH/QSoUfK6MTwtfzRdNp9t2AAZ94bB9Z3vFgonfn51CZi2Lxx4fQHxI7IdjNYNhfx1beB5kmkBuDVhbAVbT5T/zWcCyvB4Z0fb4Xn4Q53x3+a1tBwDkW6JEYYN9Scwurno9jE8MdScxM7OCgSGxlqy88psZzN9fRbgbOPRkDy4vrODK+DSOHx32emhtOda7H1fTN70ehlBGEkdwJ3MNZ6fS+MquXq+H46rVJWDqBpCeBdJz5T+X5gGzBABa5cMCYCEUAXoHgJ4U0DsI9O0Ado8CUbGfHUc+wpadzalSzZeFn9p2AAZ9kszdD1cwcXUBuVIeJ06nEAxrODW0B2Mzd70emmPOT8zh9OiA18MQhh32VWdZwPw0cNsA7nwAzE1qgBUBEAKs4Cd/hqMBBEMaNK38M8WCheJaCXN3yx/QigCK0AJ5DD8E7NOBkYfLJwFEXmDIr+/8xJwSId8metuOaNV8N9p2AAZ9IS1OLqNvd7fXw/jEnCBV/dV0AVfO30cmm8XBz3Sjq3/jE3BZ1VfXSOIIzk5dU7KqXyoCH10Brr4FLM0Fy+HeiiIYimD3/hgGdobROxBGTyqE3oEQwtEHOy6zmRKW5otIzxWxNF/E/bt53Ludxb2JPO7dyOEP/5bDjj0Wjj1TDv4BNm2SSxjy61OpZUem3nzRqvmdbtsBGPSFI2T7zrL34zFLFi6dm0F6aRWD+2PYrW/sSWBV3x9UauHJZYFrfwTe/z2QXYkAVgKxZAz7Dsex7+EYdu2PIRRu7CbzWCKIWCKIob3Rqu2buHs9i9sfrOHjj7K4f2cNv/5BBj2DRRz7LHDoOBDkEYBcwJBfn0rVfBKXNNO8ruujAK5v822vGIbx3W22cxHACQCLAOYB2Be0v2cYxittD1RRXlb1LcvCpV/dw/THyzCDBeifG4am1Q9ArOqrS5V+fdMExv8AXPo1UMxFASuJ1HAcj322G/uPxhFwaAWpaCyA0UcTGH00gULexIdXMnjv98tYur+GN3+aweXzeTz1p8D+R4BN3k5EbeFDsepjNd99fm3bASQK+iiH8wmsB/RqKQB924X8KhMARiv/PQbgVcMwzjkySoeI1L7jdVX/vbdmMXF1Aav5DI6cTtRtXQDUquqXl9u8yap+DdnD/tw94MJPgbm7YcDqxq79STz22W7sPhDd9OTVCeFIAI98ugtHTiZxc3wN7761jPnpDM7/cAl7D5fw2a8CXX0d+/XkQwz5W2M1331+bNsB5Ar6nwZw0jCMxdov6Lr+KoAfNLidCcMwXnJ0ZA4TrX3HSxPvLGL8D7PI5LI49HQcXQPbL6WpQlXfxhaeB8kY9gt54PJ54L23NMDsQrK7C5/50z7se9jdZXECAQ2jjyZw4JE4jMurGPtlBB9/sIJ/urmKJ74APPIU+/epPezJ3xqr+e4TrZrvNpmC/twmIf95ADAM45L7Q/IPL5bavPvRMi79+h5Ws2t4+JkeRAfWtv0Z1ar6bOGpb32N/fJqPCIH/uVF4Jf/ACzciwJWNx55sgcnnu3Z9MqUGzRNw5ETXdh3OI7fv76Im+NR/PHfljF5vYDnXgSi8j5omjzEkL81O+SrUM2XaTlNQKxqvpttO4BEQX+LtpxXDMN4wdXBtMA0TeSyhYa/vzsWxNydRSR3iLMQdqlUQjabdeV3zU2u4c2fTWIhvYydj4Q2hPz5+drOrY1GQ3H88e3bOLjP+5WC2pUv5vGL8SmcGo5u/81N2u51lEESQ5gP3MFPbs3g2W7vprPNXsuZ2wFc+Jcoitk+9KV68Ln/2IeBXWGUrDxK7ryVthQIA5/9ahIjDwfx5s8DuPH+Aqb/z2V8/hs59KTcfwqXCvukCLx4HX+7XAQApMwRzGfV+f/o5GuZz+WxPzSoxH6ez+VwJNnX8L/Fq3/z7Q/Sld+/4Mnvryefz+Pgzp66r0mh2O/475Mm6Nej6/oZAK+28HPPo9zzDwAHAVw0DON7To5NRf2xKBYWcujpdz50Vkvfz+H3P7+H9PIKBg4EsfuRSEvbuX57Rfqwvz80iJvFWYxN5zoS9lWQMkcwH7iD3y4XPQ371SwL+OjtEC7/KoqAlcLe0R58/mu9iMTE7IvZeyiGr/7XMM7/KIC5mTDO/fcFPPXVPPYcKnk9NBKcHfCB8nuR6hubznk9BMdcv73i9RCa8nBKnCu+U1dmXf+dYhwVW1BZheeUYRjfbvJHR1Fz466u6xd1XT/YyVV3AoEAorHmrocPx2KYnV8V5qZcAAgWiog1+e9oxuzkGn73sxmsZvIYHk3i0S/0QausQmKf/aZS2z/55+lUCmMzdxv6XtGlkMLV9E28s2g50q/fzOsoi1Rl8azfZ9xt5an3WloW8MfXgfffCiIa6sOxz/Ti5Bd6HVtNp1NiMeA//bc43vhZHDfH4xg7u4jIf7Cgn+z871Zxn/SC26/j2ak0opGgkq06Tr6W5yfmEIlGlGjZAYA704WGe/O9fG+PX55ENBpFKuV8lbxVc5GlLW/CDYecj+Vilpca8yqAMy383EuGYfyw5nNnALys6/qJej9A64a6k5ib6czZ/MztVbzxT3ewtLSK/r0hPHJ6PeS3SrY+ws2ocoDotPXe/bQnv98O+e+9GUIAKTz3n3bg01/qEz7k28KRAE5/PYUnnh0AzBTe/FkAH/DuJ6pxdirNfvwGqdSXD8h3TPVzb75NyqCv63ofgBcBNL0kpmEYE3U+PVb5s9mrA65YnFz2eggdd+eDJbzxzx9jaSWDwdEIHjndi0CwvXAkw2oAzVJpxYZOGUkcqTxJN+1q4LcsYOwc8N6bQQS0fnzhPw9i9FjCtd/vFE3T8KnP9+DJ51OA2YcLPw3gw7e9HhWJojrgM+Q3RpWQb5Ph2CrqSjtuLalZzbXWHV3Xt3vYVa1FwzA2u2j8LWDT0L7dOPrqrN5j/3209vu9JuJSm06vwPPhpXm8/dsZZLJr2HU0hkNPdju6prgqy23aq/Bwyc3GuLkMp2UBl34FXL0QhIYUTn9j0PWlM5326FPdME1g7FfAG/+8AE2zcOi416MiL7GK3xzVCjOs5svJtaBvGMZBBzfX0io79lNxdV3vr7dUp8hEeoCWU8yShXf+fQYfvj2P1ewaDpzswsixhKMhX6XlNgEuudkst8L++78H3nmjEvK/PoCHdLlDvu2xz3bDsixc/DXw7z9ZQCxhYe9hr0dFXuADsJqjWsuOjdX81njVtgNI2roD4BTWq/DNqncVwK7kC9mNOtiX9HoID2i3Vz+zVMBvfngbxqVZZHJrOPJsD/Y9luzo00FVUX5qrlqVok7qdN/+9K0A/vgLDTD78OzXBrD/qHztOlt5/OkeHP9cP2D24fyPgDR3Pd9hyG+NSiGf1fz2edG2A8gb9PsAbLkoq67ro3Vurj2H+k/Xta8QfMeh8dEWpiZW8Mv/cQuTd9IohQo4/qf9GB7tXAX01NAe6SapRjDsN65TYX81reHNn0ZhlXrx+NN9UvbkN+KJZ3uw7+FuFNa68asfAAV1VgqkbXh1Y7vMVJ2bWc1vjZfVfEDCoF9ZVrMR1wFcrNy4a/sOgO9Xf65yMvAyyqvxCN3OI+JNuc1U9c2ShXf/fQZv/MvHWEivoGs4gFNfG0DvcGvr5PuZSpUitzgd9gt54I2flB+GtedgD554rseR7YpI0zQ8+7UU+ga7sTgTw29/Ur4vgdTGnvzmqdiyI1uhjNX8jaQL+pUbcCew/Yo75wBcqg7vlf/+JoBXdV0/o+v6awD+F5Sr/LVLbgpF1PadRmWWCvjtj+7g/T/ex2o2g4dOJPDY830Iu/QAIRWr+mzhaZ5TYd+ygDd/BqTvJ9Hb34Pn/jwlzRKarQpHA/jiiwMIh3txezyEd/7d6xFRJzHkt06lkG9jNV9eUj4wq5Ebew3DqHvDbiXsC7mMpqzmtliBx7Is3LiaxtUL97G8sgYtYuJTX+pnFd9BXIWnOU7coHvjKjDxbhDRSB9O/+d+RAV94q3TegfCOP31FF7/QRGXz89jzyELg94VqqhDGPJbo2LhRbYCmWjVfK/bdgAJK/p+NtiXFK59Z6uq/sJMFr/+wW2MnZvEwuIKund636oj26S1HRUrR25op7K/ugS89XMAZg9OfakbfYNS1ktatvdQHI8+2Qur1I3f/hNQKno9InISQ35rVGzZsclQzReZl207AIM+OaS6V7+QK+Ht89P45f97E5N3FlEI5HD0dA+Ofcm9Vp16VJ2s2MLTmlbCvmUBb/0rkF9LYs/Bbhx6XI1lNJt14nQvelNdSN+P4vJ5r0dDTuDTbtunWsiXqTA2fnlSuGq+KBj0JSRqVd+yLNwxlvBvf3cD4xfvY2Utg2E9iie/MYgd+2PCLJ0p0+TVDIb95lWH/UYC/61x4M4HQYTDXXjmz/qF2afdFgpr+NzX+gGrG1ff1DB3z+sRUTv4tNv2nJ+YUy7k21QtkLnhwwu3PK/mAwz60hHxplzLsjBzJ4N//b8+wls/v4v5+WVE+kyc/FoKh57sRigszm6m6qRlH2QY9ptXHW62Cvy5bFXLzhd7kewOujhK8QztieLoqW5YpS5c+Clgml6PiJrFKn77VJ1zZSqI8SbcrYmTwEg6lmXh7sQKfvnD23jvV3O49dEc8sji0Ge78MRXU+hKhb0eYl0qrsADqHfZ2G21gb/Wu28A2ZUYhvYmoZ8Q74TbCydP9yLZ3YW5uyFMvOv1aKhRtQGfIb81KvflA3IVxkRr2xHhJlwbg76kvGzfMU0Ldz5axuv/eAtv/OsdTN1aRLGQRc8+E595cQd2PZyQoqVB1bCvaoXJLfXC/uoS8N7vAJhJPPlCnxT7txvC0QBOnO4BrG5c+jVvzJUBA76zVAz5Mh0bRa7mi9C2A0i6vKbfDfYlMbu46vrvzedKuPPhMj58ZwHpuSzy2TyCYQsHjyWxZzSOYFDD5atTOPqEGDv3Vk4N7cHYzF2vh9ExXHKzPeth/xoAoOePvTCLCTx0tAs7dnNp2GqjxxK4+rs4FmZXcW0sj0c/4/WIaDNs03GOqn35dshnNV8drOhLzI2qvmlamL6zit+/PoWf/t8T+MMv72Lm7hJMM4fDxxP43FcHse9wAsHgeoVT5DPsaqq38LCy376RxBFk5jS8fqEADUmcPK3u029bFQhoOPXFXsDqwtu/AfJZr0dE9TDkO0fVkG+TJeSLmjVEuQnXxoq+pDpd1V9J53HLWMLNa0tYSedQzBdQKBTRPxTBngNJDO2N1X0S6BMju3D5zlTHxtUJV8ancfzosNfDcNSx3v24mr7Jyr4DVsdGENOy6Dsaw3zMQmuP2FLbnoMxDI8kMP1xBu9eyOLkl7weEdkY8J2lcgHlyvi0NCHfJlo1X6TefBsr+pJzqqpvmhbm7q3hvT/M4lc/uo2z//0Grly4h9l7S7CsHEYOR/HMVwdx8rl+7NwXrxvyq4l6pl3LntRY2ad60vdKmPmghP7YIE4+uxcAcGM17/GoxKNpGk59qRcwk3jvd0A24/WICGDId5rKN9/KdgwUOWOIVM0HWNGXWrtV/cxKAdO3M7h3ZxUzH2eQzRRQKpZQLJYAq4ShvTHsPtCL/h3hpm4+lK2qr3K/vl3Zp9bcGssjrEVx8FM9iHeFAPRjubjwSdjf5e8VNjcY2hPFnoMJ3L2xCuNiFsc/7/WI/IsB33l+CPms5rdHxGo+wKDvmkLeRKGgIdyBNeUXJ5fRt7t7y+/JrhWRnsshPZvD4lwOCzM5LM3nUCwWy+G+UEQ8GcTQ3ggGdibQvyPc9vr345cnpbgxF6iE/fG7yrXw2NjC07zsiompawXEtQQOn1xv2OkO9QMAlosL+DhvAQAOxTwZonAeebIbdydWce2PWRx7GgjyRMhVv10uL3sUjQQZ8jtAxZBvkynks5rfHAZ9lyzMZvHjv7uLrp4welNR9A9E0dUbQSwerHyEEIkGml62z67qm6aFfLaEbKaEbKaIbKaIpYU80nM5LM7mkF0tolQyYZZKME0TpZKJgGahfyiCgZ1xDOyMINHl3O4gW1Xfxn59st25nEfQjGCv3oVk34PPhOgO9SNbzCGrLX9S4T+Q9PeKPHtGo+gdiCE9H8at9wsYfczrEflD9VKwKXMEqUTKw9GoR+Wbb2Vr2bGxmt84Bn2XBCwT2bkVZBc0zN8N4lYoAC0QgBbUoGkBaAENgaCGaCX0x+JBhMIBaIHyqhaapgGWBcsCTMuCZZaXu8yulbCwsIZ8zkQkEa58zYRlWTBLZvnDNBEIAF19IXT1htDdF0VXbwg9qfC2vfbtkq6qr3gLz/mJOTzexzXgt1MqWLh9uYAwunD41NYr7cSsbsRC0Q0tPX4N/Jqm4dEnu/Dm2VW89/s0DhwD+MiBzqkO+COJI5jPzns4GjWpfI+TjC07rOY3j0HfJb29IfzJlwewulrC0lIRS8slrK2VkM+byGZN5PMmikULmUAACGjQ7HBv0zQAFmCtf8oyLVimBVgmZuZXsGN/L6KxACLRIK6CAAAZWklEQVRdQUSiASS6IujuC6GrL4R4Muj6Q35Y1RcL+/UbN/l+AaW1IIZ2xTG4t7G+nOqWHj8H/tFjCYz9OobZuyuYuVPC8D6vR6Se2oBPnTE2nUMkGlG2mg/IFfJtrOY3h0HfRYGAhu7uELq7Q6j31iqVLOTzJnI5E7m8iVIJsCpVfMssf49WPg8ANA3hkIZoNIBIRMO12zlogTUcfuYhN/9JDWFVXyxj0zmcGo56PQyh3bmSR1iL4/Cp3qZPkOsFfsA/oT8cCeDIiS688+YqjIsrDPoOYbj3hqohX8aWHVbzW8OgL5BgUEM8HkQ83vwdbJ96eA+ufCTem0DGqr7KN+Ye692PSzMfYGw6hy+zjbeu1fkSlqYs9EQjGNGTLW/HDvzAeuj3S9g/9HgC71yI4da1FRQLQOjBWxyoCVxFx31j0zmvh9BxrOa3T/RqPsB19JUjw04nCxkrHo3YHxoEoHbvaTumxosIaRHsfTiJoEOrZNmh/8Zq3hfr8PcOhDG4O4piLow7H3g9GnmdnUrj7FQaI4kjDPkusudGe65UjYzHNlbzW8egrxBRd7YnRnYJ/SatR8ZKRzMY9uuzLAuT4wWEEMa+R7oc3XZ3qH9D4Ffd6KMJwIph4qrXI5ETq/jeUD3k22Q8xolWzZcFg76CWNV3joyVj0bxybkPWpo2sTZnIZ6IYGh/vCO/wy9hf/8jCQAxfPwBkMt6PRp5sIrvHZUfimW7Mj4tXcgXtVD44YVbwhZYqzHoK0bknU7UN+tmZJsMW8Gwv9HU+wWEtAhGjnZ1dOlZP7TyJLuD2PVQDGYpilvjXo9GDqzie8cPIV9mrOa3jkGfXCHzm1Tlqj7AsG+zLAv3jAKCiGDfUWfbduqpbeVRMfSX23eiuPme1yMRk129tz8Ahnwv+CXks5rvHJk6J7jqjqI+vHCLS206wA/LbQJ8ei4ArM6byC4B/ckwBva4t/xo9eo8AHBjdeGT/5Z9lZ6RwzHAiuLeLaBUBII84mxYJhNgsPean0K+rEQtFIrcQVGNFX0FibrzifpmbYTMk2SjVD/QbWfuZglBLYzh/XHXHy5Xza70d4f6pa/yx7uC6B+OoFQIYfq216PxXnXVnj343vNLyLexmu9PDPrkOtnevLJNju041rvfty08szeLCCKE4f0Jr4fyCRV6+feMRgFEcfe61yPxDm+wFZcfQr7MhSoRC4Qyte0ADPpKE3FnFPFN24hTQ3ukniyb5bewb5YszN0qB/2dBzqz2k6rZF+Wc89oDLAimJzweiTuY++9uM5PzPki5NtkK1iJXhAUtXOiHgZ9RYm8E8q4rr7ND2HfjzfnLk6WgEIQvYNRxLvFbCSvbeeRJfQPj0QRCIYxfw9YW/F6NO6oDfgM+WLx09wm8zFL1sKgaBj0FSdiVd8mW9iXrSLSDr+F/dkbRQQ08ar59ci2Wk8wpGHnvihgRTF1w+vRdE691XMY8MXjp758O+TLduwavzwpbMiXZe38amKWrsgRxw/txpWPxAzTT4zswuU7U14Po2mnhvZgbPwujh8d9nooHWevxOMHi5MlBBHDjhHxg76terWe5eLCA2FfpBV7dj4UxeSNMGY+zmH0Ma9H44za1XMAtueIzk8h3yZjyCdnMej7gKhLbT4xsguXJVtu03ZlfNo3Yf/8xE2ll9y0LAtL0yWEEURql3vLajqpdonOesEf8C78D+6KAAhhVtJjeL1QDzDYy8RvIV/GNfNtrOY7i0FfcSJX9W1cW198Kq+vn1m0UMxq6OkKIdYV9Ho4jqgN/sDG8O924B/YGQascp++aQIBCZpGq8M9A70a/BTyZcRqfmdIMN2SykQ9c9+On1bhUb1ff2m6hACC6BuOerp+fqfVW5/frd7+WCKIrr4QSsUg0vdd+ZUtY5+9evy2wg4gb8uOqJlA5Psdt8OKvg8cP7QbVwRt37HJVtW3+amFR9Un5y7dKyGoydu20wq74r9Zi08tJ64ADOyKYGUphLl7JfR79JbZrAWnFsO9OvwW8tmy0zkytu0ADPq+InSv/p0p6cK+3cLDsC+39HQJAcTQv9M/Qd9Wr8WnnhurCxv+3krwH9wVxq1rYcxO5nDoeNM/3pLaYM8A7x9+68kH2LLTKTJX8wEGfd8QvVdf6lV4GPalZt+I2z/sv6DfqO1W+GnEWq+GuTzwxgdr+MxXtl/dqNHq+1YY7P3JzyGf1Xxn2SFf1mo+wKDvO6JW9W2yVfUBf4Z9AEqsxpNfs1BcA+KRIOLdatyI22mNXgWoFdhRQDywgtIqcHZq483suXwRABDNsQJP7WHIl4vIa+bbZA75AIO+r7Cq3zl+XInHXnoTgLSBfy1tQkMAXX0hpW/EFUG8O4RgMIDMioVdYR2h8PrrPZ+dBwCkEimvhkcKYMiXC1t23MFVd1ySWVj1eggAymFf9J1X9Df/Zvy0Eo9N9hV57KCf7At7PRTlBQIaEj0hBBDAWtr0ejikGIZ8ObGa33kM+j4latgX/U3fCIZ9eWQWTQS08tKP1HnJvjA0Bn1ymB9Dvk3WkC96QU/UjNQKBn2XJJNRGL94x+thABD/DPWJkV3CTwKbsSddhn05rC2WK/qJXlb03dDVF0JAC2Bt0fJ6KKQIv4Z8mZfRtIle2BM9KzWKQd/HVDpjFYnsk2+rZAz7mbSJQKVHnzov2Vuu6GcWWdGn9tlr5Psx5MtM9ELehxduKRPyAQZ917Gq3xiZq/qAP/v1AfnC/tqSVe7RZ0XfFcneEDQEkF1i0KfWnZ+Y892DsGrJXlASvZqvEgZ9Fz16bK/XQ3gAq/qdxbAvtsKaBQ0aInFOhW6IJILQoCGfZesOtcavrTo22Y8pohfwVKvmAwz6nmBVvzEqVPX9yr6cLnLYtywLxZwFQEMkxjX03RCJBqBBQ4FBn1rg95Bvk/3Ywmq+uxj0Xcaqvv/IXoFpl6hhv1QEzBIQDGkIhriGvhvCsQA0BFBk0KcW+Tnky34DruiFOxWr+QCDvmdY1W8Mq/pyE7mNp5ittO1EOQ26JRIrv9aFHIM+NcfvPfmqFIxYzXcfj3AeYFW/ebKHfVUm6VaIGvYLdtCXsG3n/N/9wycfMglHA9C0AIo5wDQZ9qkxos0dXpG5cCT6MVzVaj7AoO8pVvUbo0oFgGFfrAP2J0Ffwhtxf/P//OMnHzLRNK0c9gG271BD2Jcv/7Hj9gdpAOocy2Uj3xFOEazqN8+eLGQkcyXGKaKF/WK+fCNuKMJp0E3hiAYNGop5r0dComPIXw/5sh9DRA75KlfzAQZ9z7Gq3xiRJ4lmyF6ZaZdIYd+qLOUeCPBGXDcFghoADRZbd2gLDPnrZA75MhfovJBZWHV8mwz6HmJVvzkPp3qlnjTsyZphf7/XQwCwHvQ1zoLuqpxXWcz5tAmG/DJVjhUPp3q9HsKmRM48TuFz3wVg/OId6F9+3Oth4Pih3bjykdg3zADlm3qOPiH2FYjNnBrag7GZu14Pw3PlNfZvAgBOjw54MgbLAjRo0DSxK/rn/+4ftuzF/99f+MaGvz/3N3+B03/7V50eVssCldebQZ/qYcgvU6FlR/QbcG2idDQYv3gHxx7+jOPbZS3LY6zqN0fkykCj7FV4VKnWtKq6jceLVh7B8z2Rr1TPAwz56oR8kY/ZImadZDLq+DYZ9AXBXv3Gyb62PsA2Hpv9BF3Am759CxYslpZdZVZeb55oEfBgwGfIlz/k22S4t06UzNPJDMjWHQE8emwv3rv6sdfD2ODDC7dw+JmHvB7GlmRu4QHW23iujE/j+NFhr4fjqfWwfxOAO+08dm++3asvqtN/+1cPtOJUt+v8b6//2O0htadyXsWg72/VJ/Z+D/c2VUL++OVJ4UO+iCvtdKrDgxV9gbCq3zh7EmFlXy1uVvcDledk8cFN7jJLFixY0LjakW+xgv8glUK+6ERr2el09mPQF4RovfrHD+0W7s1QS/SKQaMY9jeyD/6d7t0PhjUAFgo5wUv6iim/3hZCUQZ9P2If/oNUC/kyHJtFK2h2MgMy6AtGlKq+TYawL0MFYTsM+w/qdHU/HNdgwUI+y6DvFtMsn1hZAELO33NGgmPIf5AqId8mesgXLdMYv3in44VeBn2BiFjVlwXDvpo6GfbD0XLQL2RLjm+70577m7/45EMmxZwJCxZCUT6ozG8Y8h+kUsiXoS/fJlO2cQKDvoBY1W+OKv36gBoTvtM6FfbDsfWKvmwr79g36Iq8Xn49+UqbVDjGkO8Xdgse+/E3Ui3ky0C0G3DdqOYDDPrCYVW/NbJUEhrFqv5GnVhzPxAq35BbKlkwi3IFfVnl10xYMBn0fYJV/K2pFPJFPwaLXrDsJAZ9aogsbxJZKgtbYQtPfU6vua9pWiVwsk/fLYVcqdK6w6CvOob8zak2t4se8m0iFS7d7Nxg0BfQo8f2CtW+I9KbYysqtvCodkBwgpNh374hN7cmX5++jHJr5R79SJxBX2UM+Ztjy477RC1UutXBwaBPDRP1zVJNlspCI1Q4EHSKU2E/3hOABROr6aIDo6LtrKYLsGAi3sNDj4rYj781FUO+LMdckQqWbhdyOdsKilX99shSaWgEq/r1ObHefrxXgwkTq4sFh0dH9awuFstBv4+HHtWwit8YFUK+TYaQL2qB0s37MYWabXVd79N1vc/rcVB9MjxEC2ALj9+0U91P9Jcr+iuLrOi7YXWxANMykehj644qqk+0GfI3p9IcLtuxVaRCpRcF3JDrv3ETuq6/COD7AF4B8L0tvu9lAAcBLALoA3DRMIxNv79T23DDo8f24r1fvAP9y497PRTpPDGyC5fvTHk9DEecGtqDsZm7uDI+jeNHh70ejpDWw/5NAMDp0YGGfi7RG4BpFZBh644rVuyKfq9QNSZqEQN+Y1Rq2bGxmt86t1dX9Dzo67r+OsqBewLl0L3V954BAMMwvl31udd0XT9oGMYrDf6+trfhZ8cP7caVC7dw+JmHvB5KQ8YvT+LoE+KczbfKDvu0tWO9+3E1ffOTALJd4I/32hV9tu50mmlayCwVYTLoS6/66hlD/tZUC/ms5rfOq3Zsz2dbwzBeMAzjJQBntvo+XdefB/AtlCv+1V4B8LKu66Pb/S4ntuEFkXr1baKeKVeToeLQjFNDe5S6/NspzSzDGe+r3Iy7WJTuoVmyWVsqwjRNxLo1BENs3ZFVdRWfIb8xqoR8mwzHVlEzihfPSvI86DfhJQAThmEsVn/SMIyJyn++6NI2XCXaA7QAsc6QGyFbBWI7DPuNaeQhW+GohnBCQ7FYQmaJ7TudtDRXgIkSErwRV0pcUad5V8anlQr545cnpQj5NpGyipcFW5lm3OdRbvGpZxHAX7q0DU+wqt8amSalRvDm3OY0Ut3vGQ7ARAkL9/Iujsx/Fu7lYKKEnuGg10OhJrEXv3mqzdEyFcw+vHBLqJBv86pw63mPfhNGAZzb5Gvzla+7sY1mHQKAZH8Uj395X0sbePzL+5DNFhHtjTs6sHY8cbIfa/kiosmwe7/0QHdLP3Z8JAEAiMXVCBjPpXRkzCJioRb/PUO9zg5IAl8cOI6sVUB35sHaxqPPWig8EUSyN4LkWrMtJbHyH2vtj1F1Q/u68dTXo4j3Wwhnar4Yq5yQ136emtOB13E5b+Lh1DBimotzvQjamCezuRKefrgLiYBMEWtrTz19EIlWjjktHrfbcWJIRzwi1mv/yKEnEYttP6Zkf9T+z0NO/W6xXolNNLDk5iK2CelObKNFXQAQiYUxtK+/A5snorb0Vz6oo3oHg/jkxIiksVOc+pI8VNzN3c/rrUt5PYA6hrua/Ymmf2AzUgR9rP9v26ztxq1ttOIGgAMAVgB85PLvJiIiIiI5HEI55N9waoOyBP35bb7eyEO2nNhG006ePPlEJ7ZLRERERLSVtoK+ruvXm/yRRcMwTjb7ewzDWNR1Hdg8jKewTaXeiW0QEREREcmiraBvGMZBpwbSgEVs3Xk1scXXnNwGEREREZHwZFpe8xw2r8b3YfPVdJzeBhERERGR8GQK+mcAjNaunqPr+onKf/6g5vOjVV9raRtERERERLISKej31fy5gWEY5wD8EMCrNV96FcB3DcO4VPP56wAuVof6FrZBRERERCQlzbIsTweg6/oZlNevP4X1kH8J5X75bxqGsVjz/S8DGAAwB+DTAF43DON7dbb7OoBUvZt/G90GEREREZGsPA/6RERERETkPJFad4iIiIiIyCEM+kRERERECmLQJyIiIiJSEIM+EREREZGCGPSJiIiIiBTEoE9EREREpCAGfSIiIiIiBTHoExEREREpiEGfiIiIiEhBDPpERERERAoKeT0AVei63gcAhmEsej0WIiIR6Lr+MoCDABYB9AG4aBjG99zehsx0XX8V5X/3qcqnzjTz79d1/SKAEyi/fvMAUpUvfc8wjFecHKvInHod/Lw/6ro+CuD6Nt/2imEY391mO9wnXcSg7wBd118E8H0ArwDY9A3Pgx4R+YWu62cAwDCMb1d97jVd1w82ejB3Yhsy03X9dQDfNgxjovL35wG8ruv6C4ZhvNTEpiYAjFb+ewzAq4ZhnHN2tFJo63Xw+/6IcjifwHpAr5YC0LddyK/CfdIlDPptqEzCiyjvsH3bfC8Pek1g5cBZrGY5hxXW7VUC6bcA9Nd86RUA13VdP2OH105uQ2aV/eyV6n+jYRjndF3/HoBv6br+omEYP2xgUxNNnhSoqq3Xwe/7Y8WnAZys17lQ2V9/0OB2uE+6iD36bTAMw66qnNnq+6omiNqD+CsAXq6E2i05sQ3J2JWDSwDO1XxcQnmiaKZy0IdyoBoD8JIqgapJbb0OlRPNg4ZhfNswjFcqJ5wvVCZ4X6ic3J+pvAYnUX7/ndF1/bUmN6X6PvkSyu/RDYGgKgi96NI2ZPY8gNfqzO32vvaXLo/H7/y+PwLA3CYh/3kAMAzjkvtDou2wou+OTScIXdeB8gSxXWh1YhsyYeXAWaxmtYkV1qY8j/IVi3oWUQ6p281XTmxDdqOVj+r31nzV18g9vt8ftyiuvWIYxguuDoYaxqDvDh70msfKgVj8dqJZz/MAXqz0R1cHr9dQPgn6SwCNBH0/GEX56ls982gspDqxDZl9CcBonbmuuq+5IZV580Tlrwfhw5Y7oO3Xwe/7Y12VK71NX9XlPukeBn138KDXJFYOhOO3E83NsMK6DXsFsi0sYpvXyoltyK5yUl2voGG37GzZMlplFDU3Seq6flHFe7u20fLrwP2xvkpb2anq+wYbxH3SRQz6HcaDnnNYOWgPq1ltY4W1MfbNxe0sNezENpSj6/oJVK6eNXFV86U6bXVnUL635Ac+ujrazuvA/bG+V9H4CWc17pMuYtDvPB70HMDKQdtYzWoTK6wNq112r9Z2+5NT21DRa2hydaZN7p2xT0q/XflQXpuvA/fHGpXjwot4cIGQbXGfdBdX3ek8HvSc0U7loLZv+gzKKxWdqPcDimrndfD9ieZm2qiwKrtPVt3Hsdm8lMI2+5IT21BN5YrmuWaLHZucqNuvnfIn6LZ2Xgfuj3V9C9g0tG+J+6S7fFvR13V9uzXaay1WltNrimEYi5WbFds66LW7DZmxctA+VrM6hhXW+haxfoJYTyPhwIltKKHy/IrFZq/42M9s0HW9v97iBn7h0OvA/XGjlu6V4z7pPt8GfcMwDrr463x30HP4RKqtykGdyUSqyoETr2U7r4MqJ5pOn9y3U2GVfZ9swDms34NQqw+b3+/h9DakV3ny+kBtyNd1/dUGg3+9edPez/zUC93u68D9caNTaH3e5z7pIt8GfZf57qDn8ImUrysH7b6WrGaVOblPssK6rTMAXq89qalqTdrwHIzKPTh9Ne1PTW1DRZV/66frhPw+1Jx4b/IangPwnTr7mj2nfsfhIYuqqdeB+2ND+rDNvM99Ugzs0XfHGQCjtX1pWx306vTqNrUNxbBy0D4nqlmbVfSFO9HspK0qrA1uQvl90jCMcyg/U6D2NXkV9e9nuA7gYvX81sI2lFIJSb9E+cTw9aqPiwBuALhY8yMPvIYoh6bvV3+ucsx4GeV7RVQ+2azW7OvA/XELdZ7WvBnukwJgRd8ZfTV/blB5eqY9QVRf5t/qoIfqql8L21AJKwftYTXLIaywNs4wjJd0XX+5cgI0h/LTrl/bZBnRcwBSdR7I1sw2VPMayvvU85t8vXZOfOA1rLTdfRPAq5X2O/uq3EnFjxkbtPA6cH/cQuVBiRPYvsDDfVIAmmVZXo9BWpUe3VGUK872Qf4SyhPwN2snicrl/gGsTxCv15sgdF1/HeU3xwP9wY1uQxWVsHQd5aeybtp6oeu6vSN/cnJUCV/fR9X/i0pQu4j6K58oqdnXod5rWfn8awDmq3vSK/vqJUWWhdxSZV+8iAfXy0+hPA+8Uv1e5D5JREReY9An4VVuotzypsfNTo4qwcq+1GpXDr7jt8pBM68DTzTrs/vrt/iWFyqX9+3v5z5JRESeYtAnIiIiIlIQb8YlIiIiIlIQgz4RERERkYIY9ImIiIiIFMSgT0RERESkIAZ9IiIiIiIFMegTERERESmIQZ+IiIiISEEM+kRERERECmLQJyIiIiJSEIM+EREREZGCGPSJiIiIiBTEoE9EREREpCAGfSIiIiIiBTHoExEREREpiEGfiIiIiEhB/z8Ec/LqtgIRuwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 363, + "width": 381 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_problem_controur(current_problem, ((-10,-10), (10,10)), optimum=(0,0))\n", + "plot_population(pop)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Mutation of an evolution strategy individual according to its strategy attribute. \n", + "First the strategy is mutated according to an extended log normal rule, \n", + "$$\n", + "\\boldsymbol{\\sigma}_t = \\exp(\\tau_0 \\mathcal{N}_0(0, 1)) \\left[ \\sigma_{t-1, 1}\\exp(\\tau\n", + "\\mathcal{N}_1(0, 1)), \\ldots, \\sigma_{t-1, n} \\exp(\\tau\n", + "\\mathcal{N}_n(0, 1))\\right],\n", + "$$\n", + "with \n", + "$$\\tau_0 =\n", + "\\frac{c}{\\sqrt{2n}}\\text{ and }\\tau = \\frac{c}{\\sqrt{2\\sqrt{n}}},\n", + "$$\n", + "\n", + "the individual is mutated by a normal distribution of mean 0 and standard deviation of $\\boldsymbol{\\sigma}_{t}$ (its current strategy). \n", + "\n", + "A recommended choice is $c=1$ when using a $(10,100)$ evolution strategy." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "toolbox.register(\"mutate\", tools.mutESLogNormal, c=1, indpb=0.1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Blend crossover on both, the individual and the strategy." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "toolbox.register(\"mate\", tools.cxESBlend, alpha=0.1)\n", + "toolbox.register(\"evaluate\", current_problem)\n", + "toolbox.register(\"select\", tools.selBest)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "mu_es, lambda_es = 3,21\n", + "\n", + "pop = toolbox.population(n=mu_es)\n", + "hof = tools.HallOfFame(1)\n", + "\n", + "pop_stats = tools.Statistics(key=copy.deepcopy)\n", + "pop_stats.register('pop', copy.deepcopy) # -- copies the populations themselves\n", + " \n", + "pop, logbook = algorithms.eaMuCommaLambda(pop, toolbox, mu=mu_es, lambda_=lambda_es, \n", + " cxpb=0.6, mutpb=0.3, ngen=40, stats=pop_stats, halloffame=hof, verbose=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### The final population" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 363, + "width": 381 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_problem_controur(current_problem, ((-10,-10), (10,10)), optimum=(0,0))\n", + "plot_population(pop)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "The plot (most probably) shows a \"dark blue\" ellipse as all individuals are overlapping. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Let's see how the evolutionary process took place in animated form." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "from matplotlib import animation\n", + "from IPython.display import HTML" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "def animate(i):\n", + " 'Updates all plots to match frame _i_ of the animation.'\n", + " ax.clear()\n", + " plot_problem_controur(current_problem, ((-10.1,-10.1), (10.1,10.1)), optimum=(0,0), ax=ax)\n", + " plot_population(logbook[i]['pop'], ax=ax)\n", + " ax.set_title('$t=$' +str(i))\n", + " return []" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "scrolled": false, + "slide_helper": "subslide_end", + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n" + ] + } + ], + "source": [ + "fig = plt.figure(figsize=(5,5))\n", + "ax = fig.gca()\n", + "anim = animation.FuncAnimation(fig, animate, frames=len(logbook), interval=300, blit=True)\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n", + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n" + ] + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "HTML(anim.to_html5_video())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "How the population progressed as the evolution proceeded?" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "subslide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "pop = toolbox.population(n=mu_es)\n", + "\n", + "stats = tools.Statistics(lambda ind: ind.fitness.values)\n", + "stats.register(\"avg\", np.mean)\n", + "stats.register(\"std\", np.std)\n", + "stats.register(\"min\", np.min)\n", + "stats.register(\"max\", np.max)\n", + " \n", + "pop, logbook = algorithms.eaMuCommaLambda(pop, toolbox, \n", + " mu=mu_es, lambda_=lambda_es, \n", + " cxpb=0.6, mutpb=0.3, \n", + " ngen=40, stats=stats, \n", + " verbose=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 269, + "width": 449 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(1, figsize=(7, 4))\n", + "plt.plot(logbook.select('avg'), 'b-', label='Avg. fitness')\n", + "plt.fill_between(range(len(logbook)), logbook.select('max'), logbook.select('min'), facecolor='blue', alpha=0.47)\n", + "plt.plot(logbook.select('std'), 'm--', label='Std. deviation')\n", + "plt.legend(frameon=True)\n", + "plt.ylabel('Fitness'); plt.xlabel('Iterations');" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "What happens if we increase $\\mu$ and $\\lambda$?" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 269, + "width": 449 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "mu_es, lambda_es = 10,100\n", + "pop, logbook = algorithms.eaMuCommaLambda(toolbox.population(n=mu_es), toolbox, mu=mu_es, lambda_=lambda_es, \n", + " cxpb=0.6, mutpb=0.3, ngen=40, stats=stats, halloffame=hof, verbose=False)\n", + "plt.figure(1, figsize=(7, 4))\n", + "plt.plot(logbook.select('avg'), 'b-', label='Avg. fitness')\n", + "plt.fill_between(range(len(logbook)), logbook.select('max'), logbook.select('min'), facecolor='blue', alpha=0.47)\n", + "plt.plot(logbook.select('std'), 'm--', label='Std. deviation')\n", + "plt.legend(frameon=True)\n", + "plt.ylabel('Fitness'); plt.xlabel('Iterations');" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Covariance Matrix Adaptation Evolutionary Strategy" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "* In an evolution strategy, new candidate solutions are sampled according to a multivariate normal distribution in the $\\mathbb{R}^n$. \n", + "* Recombination amounts to selecting a new mean value for the distribution. \n", + "* Mutation amounts to adding a random vector, a perturbation with zero mean. \n", + "* Pairwise dependencies between the variables in the distribution are represented by a covariance matrix. \n", + "\n", + "### The covariance matrix adaptation (CMA) is a method to update the covariance matrix of this distribution. \n", + "\n", + "> This is particularly useful, if the objective function $f()$ is ill-conditioned." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### CMA-ES features\n", + "\n", + "* Adaptation of the covariance matrix amounts to learning a second order model of the underlying objective function.\n", + "* This is similar to the approximation of the inverse Hessian matrix in the Quasi-Newton method in classical optimization. \n", + "* In contrast to most classical methods, fewer assumptions on the nature of the underlying objective function are made. \n", + "* *Only the ranking between candidate solutions is exploited* for learning the sample distribution and neither derivatives nor even the function values themselves are required by the method." + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "from deap import cma" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "A similar setup to the previous one." + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/mmmm1998/.local/lib/python3.6/site-packages/deap/creator.py:141: RuntimeWarning: A class named 'Individual' has already been created and it will be overwritten. Consider deleting previous creation of that class or rename it.\n", + " RuntimeWarning)\n" + ] + } + ], + "source": [ + "creator.create(\"Individual\", list, fitness=creator.FitnessMin)\n", + "toolbox = base.Toolbox()\n", + "toolbox.register(\"evaluate\", current_problem)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We will place our start point by hand at $(5,5)$." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Best individual is [-2.524016407520609e-08, -4.0857988576506457e-08], fitness: (6.517009154549669e-14,)\n" + ] + } + ], + "source": [ + "cma_es = cma.Strategy(centroid=[5.0]*search_space_dims, sigma=5.0, lambda_=5*search_space_dims)\n", + "toolbox.register(\"generate\", cma_es.generate, creator.Individual)\n", + "toolbox.register(\"update\", cma_es.update)\n", + "\n", + "hof = tools.HallOfFame(1)\n", + "stats = tools.Statistics(lambda ind: ind.fitness.values)\n", + "stats.register(\"avg\", np.mean)\n", + "stats.register(\"std\", np.std)\n", + "stats.register(\"min\", np.min)\n", + "stats.register(\"max\", np.max)\n", + "\n", + "# The CMA-ES algorithm converge with good probability with those settings\n", + "pop, logbook = algorithms.eaGenerateUpdate(toolbox, ngen=60, stats=stats, \n", + " halloffame=hof, verbose=False)\n", + " \n", + "print(\"Best individual is %s, fitness: %s\" % (hof[0], hof[0].fitness.values))" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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dGXuii7NvKl3rXlvSa8TiUgXLkg33yzdeWdpzjky4oa+q1evH5uacpeHRiJSW1tprgMAAABUqjAsDUU5ZD0nKEnnJl/STLz0D/S9+ab7FSnR6tM333TDZTaWhwIAAKBaEASxLDV1rXJqW+SsepdizmpJUiIZ12sTv1AymSzptWIxt7Onte6WDzfi6lU37I2OLnzPqxTe6DUAAACASkcQxLLUrH636tffr/q2j+jWts708fG5K7o480bJr3flivtMX65KXjGynw3MNDvrBsVcIREAAAAIE4IgblhL/XrdtuZ96ddvTA76skT03DlpaGj520mMj0sXL7qhMh+WhwIAAKAaEARRErc33aU1te5G834tEZ2ddSt6r766vM+/+ab0u98tPmZkxA2DMX+2RQQAAAAqAkEQNyyZjCk5+7bubPlw+phfS0Tffttd2vn228V9bmLCrQa+887i42Ixd2noYlVDAAAAIOgIgrghyfikYld/rPjEL9UYn1qRJaKvv+5+XbtW+Ge8amAhRUqWhwIAACDsCIK4IfGp15SMT7jfT/xa7avf7fsS0akp6fx56bXXChsfjboVxMuXCxt/9aq7RLSYoAkAAAAECUEQN6S2qUNOKvhJCcUjv9CdTfem3/drieiFC24YHBlZeuz5824QLHRbiETCPS9VQQAAAIQVQRA3xKmpU13rRySnzj2QmFbD9Bu6rWFLeswb0dIvEU0k3C6ir766eGOXqSl3SejFi8Wd/8qVwiuIAAAAQNAQBHHDnLpm1bV8KP06OfeObnNqry8RlT9LRMfH3crguXP5xxRbDcw89+jo8reqAAAAACoZQRAlUbP6XappvN4oJjn9ukzDHenXfi0RffNN9ysSWfjezIzbYbTYaqCHpjEAAAAIK4IgSqa20cipvyX9un7qNd2++noYdJeITpb0mrGY9MYb7hLR7Krf+fNuCIzHl3dugiAAAADCiiCIknEcR3WtH5Zq1rgHkjFtiI2pqaZJkrdE9JclXyJ65Yq7RPTChevHZmeXt99gpslJt4NormojAAAAEGQEQZSUU7PKbR6T+qvl1KzWluYPpt/3a4nouXPS0ND1Z/qGh91q4GKNZApBVRAAAABhRBBEydXUt6m25QOqWbNZdW0fVcvqW+dvNB8d1HQ8WtJrzs66zwq++qq7/99bb7ndQm+U1z202GYzAAAAQCUj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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "image/png": { + "height": 269, + "width": 449 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(1, figsize=(7, 4))\n", + "plt.plot(logbook.select('avg'), 'b-', label='Avg. fitness')\n", + "plt.fill_between(range(len(logbook)), logbook.select('max'), logbook.select('min'), facecolor='blue', alpha=0.47)\n", + "plt.plot(logbook.select('std'), 'm--', label='Std. deviation')\n", + "plt.legend(frameon=True)\n", + "plt.ylabel('Fitness'); plt.xlabel('Iterations');" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "subslide_end", + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### OK, but wouldn't it be nice to have an animated plot of how CMA-ES progressed? \n", + "\n", + "* We need to do some coding to make this animation work.\n", + "* We are going to create a class named `PlotableStrategy` that inherits from `deap.cma.Strategy`. This class logs the features we need to make the plots as evolution takes place. That is, for every iteration we store:\n", + " * Current centroid and covariance ellipsoid.\n", + " * Updated centroid and covariance.\n", + " * Sampled individuals.\n", + " * Evolution path.\n", + " \n", + "_Note_: I think that DEAP's implementation of CMA-ES has the drawback of storing information that should be stored as part of \"individuals\". I leave this for an afternoon hack." + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "from math import sqrt, log, exp\n", + "class PlotableStrategy(cma.Strategy):\n", + " \"\"\"This is a modification of deap.cma.Strategy class.\n", + " We store the execution data in order to plot it.\n", + " **Note:** This class should not be used for other uses than\n", + " the one it is meant for.\"\"\"\n", + " \n", + " def __init__(self, centroid, sigma, **kargs):\n", + " \"\"\"Does the original initialization and then reserves \n", + " the space for the statistics.\"\"\"\n", + " super(PlotableStrategy, self).__init__(centroid, sigma, **kargs)\n", + " \n", + " self.stats_centroids = []\n", + " self.stats_new_centroids = []\n", + " self.stats_covs = []\n", + " self.stats_new_covs = []\n", + " self.stats_offspring = []\n", + " self.stats_offspring_weights = []\n", + " self.stats_ps = []\n", + " \n", + " def update(self, population):\n", + " \"\"\"Update the current covariance matrix strategy from the\n", + " *population*.\n", + " \n", + " :param population: A list of individuals from which to update the\n", + " parameters.\n", + " \"\"\"\n", + " # -- store current state of the algorithm\n", + " self.stats_centroids.append(copy.deepcopy(self.centroid))\n", + " self.stats_covs.append(copy.deepcopy(self.C))\n", + " \n", + " \n", + " population.sort(key=lambda ind: ind.fitness, reverse=True)\n", + " \n", + " # -- store sorted offspring\n", + " self.stats_offspring.append(copy.deepcopy(population))\n", + " \n", + " old_centroid = self.centroid\n", + " self.centroid = np.dot(self.weights, population[0:self.mu])\n", + " \n", + " # -- store new centroid\n", + " self.stats_new_centroids.append(copy.deepcopy(self.centroid))\n", + " \n", + " c_diff = self.centroid - old_centroid\n", + " \n", + " \n", + " # Cumulation : update evolution path\n", + " self.ps = (1 - self.cs) * self.ps \\\n", + " + sqrt(self.cs * (2 - self.cs) * self.mueff) / self.sigma \\\n", + " * np.dot(self.B, (1. / self.diagD) \\\n", + " * np.dot(self.B.T, c_diff))\n", + " \n", + " # -- store new evol path\n", + " self.stats_ps.append(copy.deepcopy(self.ps))\n", + " \n", + " hsig = float((np.linalg.norm(self.ps) / \n", + " sqrt(1. - (1. - self.cs)**(2. * (self.update_count + 1.))) / self.chiN\n", + " < (1.4 + 2. / (self.dim + 1.))))\n", + " \n", + " self.update_count += 1\n", + " \n", + " self.pc = (1 - self.cc) * self.pc + hsig \\\n", + " * sqrt(self.cc * (2 - self.cc) * self.mueff) / self.sigma \\\n", + " * c_diff\n", + " \n", + " # Update covariance matrix\n", + " artmp = population[0:self.mu] - old_centroid\n", + " self.C = (1 - self.ccov1 - self.ccovmu + (1 - hsig) \\\n", + " * self.ccov1 * self.cc * (2 - self.cc)) * self.C \\\n", + " + self.ccov1 * np.outer(self.pc, self.pc) \\\n", + " + self.ccovmu * np.dot((self.weights * artmp.T), artmp) \\\n", + " / self.sigma**2\n", + " \n", + " # -- store new covs\n", + " self.stats_new_covs.append(copy.deepcopy(self.C))\n", + " \n", + " self.sigma *= np.exp((np.linalg.norm(self.ps) / self.chiN - 1.) \\\n", + " * self.cs / self.damps)\n", + " \n", + " self.diagD, self.B = np.linalg.eigh(self.C)\n", + " indx = np.argsort(self.diagD)\n", + " \n", + " self.cond = self.diagD[indx[-1]]/self.diagD[indx[0]]\n", + " \n", + " self.diagD = self.diagD[indx]**0.5\n", + " self.B = self.B[:, indx]\n", + " self.BD = self.B * self.diagD" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "It is now possible to use/test our new class." + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "toolbox = base.Toolbox()\n", + "toolbox.register(\"evaluate\", current_problem)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "max_gens = 40\n", + "cma_es = PlotableStrategy(centroid=[5.0]*search_space_dims, sigma=1.0, lambda_=5*search_space_dims)\n", + "toolbox.register(\"generate\", cma_es.generate, creator.Individual)\n", + "toolbox.register(\"update\", cma_es.update)\n", + "\n", + "# The CMA-ES algorithm converge with good probability with those settings\n", + "a = algorithms.eaGenerateUpdate(toolbox, ngen=max_gens, verbose=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Me can now code the `animate_cma_es()` function." + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "internals": {}, + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "norm=colors.Normalize(vmin=np.min(cma_es.weights), vmax=np.max(cma_es.weights))\n", + "sm = cm.ScalarMappable(norm=norm, cmap=plt.get_cmap('gray'))" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "def animate_cma_es(gen):\n", + " ax.cla()\n", + " plot_problem_controur(current_problem, ((-11,-11), (11,11)), optimum=(0,0), ax=ax)\n", + " \n", + " plot_cov_ellipse(cma_es.stats_centroids[gen], cma_es.stats_covs[gen], volume=0.99, alpha=0.29, ax=ax)\n", + " ax.plot(cma_es.stats_centroids[gen][0], cma_es.stats_centroids[gen][1], 'ro', markeredgecolor = 'none', ms=10)\n", + " \n", + " plot_cov_ellipse(cma_es.stats_new_centroids[gen], cma_es.stats_new_covs[gen], volume=0.99, \n", + " alpha=0.29, fc='green', ec='darkgreen', ax=ax)\n", + " ax.plot(cma_es.stats_new_centroids[gen][0], cma_es.stats_new_centroids[gen][1], 'go', markeredgecolor = 'none', ms=10)\n", + " \n", + " for i in range(gen+1):\n", + " if i == 0:\n", + " ax.plot((0,cma_es.stats_ps[i][0]),\n", + " (0,cma_es.stats_ps[i][1]), 'b--')\n", + " else:\n", + " ax.plot((cma_es.stats_ps[i-1][0],cma_es.stats_ps[i][0]),\n", + " (cma_es.stats_ps[i-1][1],cma_es.stats_ps[i][1]),'b--')\n", + " \n", + " for i,ind in enumerate(cma_es.stats_offspring[gen]):\n", + " if i < len(cma_es.weights):\n", + " color = sm.to_rgba(cma_es.weights[i])\n", + " else:\n", + " color= sm.to_rgba(norm.vmin)\n", + " ax.plot(ind[0], ind[1], 'o', color = color, ms=5, markeredgecolor = 'none')\n", + " \n", + " ax.set_ylim((-10,10))\n", + " ax.set_xlim((-10,10))\n", + " ax.set_title('$t=$' +str(gen))\n", + " return []" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_type": "subslide" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### CMA-ES progress " + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "internals": {}, + "scrolled": false, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n" + ] + } + ], + "source": [ + "fig = plt.figure(figsize=(6,6))\n", + "ax = fig.gca()\n", + "anim = animation.FuncAnimation(fig, animate_cma_es, frames=max_gens, interval=300, blit=True)\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n", + " s)\n" + ] + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "HTML(anim.to_html5_video())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_helper": "subslide_end" + }, + "slide_helper": "subslide_end", + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "* Current centroid and covariance: **red**.\n", + "* Updated centroid and covariance: **green**. \n", + "* Sampled individuals: **shades of gray representing their corresponding weight**.\n", + "* Evolution path: **blue line starting in (0,0)**. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "internals": { + "slide_helper": "subslide_end", + "slide_type": "subslide" + }, + "slide_helper": "slide_end", + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Homework\n", + "\n", + "1. Make an animated plot with the covariance update process. You can rely on the notebook of the previous demonstration class.\n", + "2. Compare ES, CMA-ES and a genetic algortihm.\n", + "2. How do you think that evolutionary strategies and CMA-ES should be modified in order to cope with combinatorial problems?\n", + "3. How can evolution strategies be improved?\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "source": [ + "
        \n", + "
        \n", + "
        \n", + "
        \n", + "
        \n", + " \"Creative\n", + "
        \n", + "
        \n", + " This work is licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-nc-sa/4.0/).\n", + "
        \n", + "
        \n", + "
        \n", + "
        " + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [ + { + "data": { + "application/json": { + "Software versions": [ + { + "module": "Python", + "version": "3.6.7 64bit [GCC 8.2.0]" + }, + { + "module": "IPython", + "version": "6.3.1" + }, + { + "module": "OS", + "version": "Linux 4.15.0 50 generic x86_64 with Ubuntu 18.04 bionic" + }, + { + "module": "scipy", + "version": "1.1.0" + }, + { + "module": "numpy", + "version": "1.14.5" + }, + { + "module": "matplotlib", + "version": "2.2.2" + }, + { + "module": "seaborn", + "version": "0.9.0" + }, + { + "module": "deap", + "version": "1.2" + } + ] + }, + "text/html": [ + "
        SoftwareVersion
        Python3.6.7 64bit [GCC 8.2.0]
        IPython6.3.1
        OSLinux 4.15.0 50 generic x86_64 with Ubuntu 18.04 bionic
        scipy1.1.0
        numpy1.14.5
        matplotlib2.2.2
        seaborn0.9.0
        deap1.2
        Wed May 29 19:31:25 2019 MSK
        " + ], + "text/latex": [ + "\\begin{tabular}{|l|l|}\\hline\n", + "{\\bf Software} & {\\bf Version} \\\\ \\hline\\hline\n", + "Python & 3.6.7 64bit [GCC 8.2.0] \\\\ \\hline\n", + "IPython & 6.3.1 \\\\ \\hline\n", + "OS & Linux 4.15.0 50 generic x86\\_64 with Ubuntu 18.04 bionic \\\\ \\hline\n", + "scipy & 1.1.0 \\\\ \\hline\n", + "numpy & 1.14.5 \\\\ \\hline\n", + "matplotlib & 2.2.2 \\\\ \\hline\n", + "seaborn & 0.9.0 \\\\ \\hline\n", + "deap & 1.2 \\\\ \\hline\n", + "\\hline \\multicolumn{2}{|l|}{Wed May 29 19:31:25 2019 MSK} \\\\ \\hline\n", + "\\end{tabular}\n" + ], + "text/plain": [ + "Software versions\n", + "Python 3.6.7 64bit [GCC 8.2.0]\n", + "IPython 6.3.1\n", + "OS Linux 4.15.0 50 generic x86_64 with Ubuntu 18.04 bionic\n", + "scipy 1.1.0\n", + "numpy 1.14.5\n", + "matplotlib 2.2.2\n", + "seaborn 0.9.0\n", + "deap 1.2\n", + "Wed May 29 19:31:25 2019 MSK" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# To install run: pip install version_information\n", + "%load_ext version_information\n", + "%version_information scipy, numpy, matplotlib, seaborn, deap" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# this code is here for cosmetic reasons\n", + "from IPython.core.display import HTML\n", + "from urllib.request import urlopen\n", + "HTML(urlopen('https://raw.githubusercontent.com/lmarti/jupyter_custom/master/custom.include').read().decode('utf-8'))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "source": [ + " " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/src/test/data/Automata and Computability using Jupyter.ipynb b/src/test/data/Automata and Computability using Jupyter.ipynb new file mode 100644 index 0000000..145a82b --- /dev/null +++ b/src/test/data/Automata and Computability using Jupyter.ipynb @@ -0,0 +1,2095 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "source": [ + "# Jove helps teach models of computation using Jupyter \n", + "\n", + "Included are modules on:\n", + "\n", + "* Sets, strings and languages\n", + "* Language operations\n", + "* Construction of and operations on DFA and NFA\n", + "* Regular expression parsing and automata inter-conversion\n", + "* Derivate-based parsing\n", + "* Pushdown automata\n", + "* The construction of parsers using context-free productions, including\n", + " a full lexer/parser for Jove's own markdown syntax\n", + "* Studies of parsing: ambiguity, associativity, precedence\n", + "* Turing machines (including one for the Collatz problem)\n", + "\n", + "For a complete Jove top-level reference, kindly refer to https://github.com/ganeshutah/Jove from where you can download and obtain Jove. You can also visit this Github link now and poke around (the NBViewer will display the contents).\n", + "\n", + "Once you are in the top-level Gallery link we provide, feel free to explore the hierarchy of modules found there.\n", + "\n", + "These notebooks should give you an idea of the contents.\n", + "\n", + "* [DFA Illustrations (has a Youtube)](http://nbviewer.jupyter.org/github/ganeshutah/Jove/blob/master/notebooks/tutorial/DFAUnit2.ipynb)\n", + "\n", + "* [Regular Operations](http://nbviewer.jupyter.org/github/ganeshutah/Jove/blob/master/notebooks/driver/Drive_AllRegularOps.ipynb)\n", + "\n", + "* [PDA Operations](http://nbviewer.jupyter.org/github/ganeshutah/Jove/blob/master/notebooks/driver/Drive_PDA_Based_Parsing.ipynb)\n", + "\n", + "* [TM Operations](http://nbviewer.jupyter.org/github/ganeshutah/Jove/blob/master/notebooks/driver/Drive_TM.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [ + { + "data": { + "image/jpeg": "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\n", + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import YouTubeVideo\n", + "YouTubeVideo('dGcLHtYLgDU')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "You may use any of these help commands:\n", + "help(ResetStNum)\n", + "help(NxtStateStr)\n", + "\n", + "You may use any of these help commands:\n", + "help(mkp_dfa)\n", + "help(mk_dfa)\n", + "help(totalize_dfa)\n", + "help(addtosigma_delta)\n", + "help(step_dfa)\n", + "help(run_dfa)\n", + "help(accepts_dfa)\n", + "help(comp_dfa)\n", + "help(union_dfa)\n", + "help(intersect_dfa)\n", + "help(pruneUnreach)\n", + "help(iso_dfa)\n", + "help(langeq_dfa)\n", + "help(same_status)\n", + "help(h_langeq_dfa)\n", + "help(fixptDist)\n", + "help(min_dfa)\n", + "help(pairFR)\n", + "help(state_combos)\n", + "help(sepFinNonFin)\n", + "help(bash_eql_classes)\n", + "help(listminus)\n", + "help(bash_1)\n", + "help(mk_rep_eqc)\n", + "help(F_of)\n", + "help(rep_of_s)\n", + "help(q0_of)\n", + "help(Delta_of)\n", + "help(mk_state_eqc_name)\n", + "\n", + "You may use any of these help commands:\n", + "help(mk_nfa)\n", + "help(totalize_nfa)\n", + "help(step_nfa)\n", + "help(run_nfa)\n", + "help(ec_step_nfa)\n", + "help(Eclosure)\n", + "help(Echelp)\n", + "help(accepts_nfa)\n", + "help(nfa2dfa)\n", + "help(n2d)\n", + "help(inSets)\n", + "help(rev_dfa)\n", + "help(min_dfa_brz)\n", + "\n", + "You may use any of these help commands:\n", + "help(re2nfa)\n", + "\n", + "You may use any of these help commands:\n", + "help(RE2Str)\n", + "help(mk_gnfa)\n", + "help(mk_gnfa_from_D)\n", + "help(dfa2nfa)\n", + "help(del_gnfa_states)\n", + "help(gnfa_w_REStr)\n", + "help(del_one_gnfa_state)\n", + "help(Edges_Exist_Via)\n", + "help(choose_state_to_del)\n", + "help(form_alt_RE)\n", + "help(form_concat_RE)\n", + "help(form_kleene_RE)\n", + "\n", + "You may use any of these help commands:\n", + "help(md2mc)\n", + ".. and if you want to dig more, then ..\n", + "help(default_line_attr)\n", + "help(length_ok_input_items)\n", + "help(union_line_attr_list_fld)\n", + "help(extend_rsltdict)\n", + "help(form_delta)\n", + "help(get_machine_components)\n", + "\n" + ] + } + ], + "source": [ + "import sys\n", + "sys.path[0:0] = ['/home/mmmm1998/Документы/Репозитории/Jove','/home/mmmm1998/Документы/Репозитории/Jove/3rdparty'] # Put these at the head of the search path\n", + "from jove.DotBashers import *\n", + "from jove.Def_DFA import *\n", + "from jove.Def_NFA import *\n", + "from jove.Def_RE2NFA import *\n", + "from jove.Def_NFA2RE import *\n", + "from jove.Def_md2mc import *" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "source": [ + " # Jove allows you to set problems in markdown and have students solve" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "source": [ + "1) LOdd1Three0 : Set of strings over {0,1} with an odd # of 1s OR exactly three 0s. \n", + "\n", + "* Hint on how to arrive at the language:\n", + "\n", + " - develop NFAs for the two cases and perform their union. Obtain DFA\n", + "\n", + " - develop REs for the two cases and perform the union. \n", + "\n", + " - Testing the creations:\n", + "\n", + " . Come up with language for even # of 1s and separately for \"other than three 0s\". \n", + " \n", + " . Do two intersections. \n", + " \n", + " . Is the language empty?\n", + "\n", + "\n", + "2) Language of strings over {0,1} with exactly two occurrences of 0101 in it.\n", + "\n", + " * Come up with it directly (take overlaps into account, i.e. 010101 has two occurrences in it\n", + "\n", + " * Come up in another way\n", + "\n", + "Notes:\n", + "\n", + "* Most of the problem students will have in this course is interpreting English (technical English)\n", + "\n", + "* So again, read the writeup at the beginning of Module6 (should be ready soon today) and work on using the tool.\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "source": [ + "__Solutions__\n", + "\n", + "1) LOdd1Three0 : Set of strings over {0,1} with an odd # of 1s OR exactly three 0s. \n", + "\n", + "* Hint on how to arrive at the language:\n", + "\n", + " - develop NFAs for the two cases and perform their union. Obtain DFA\n", + "\n", + " - develop REs for the two cases and perform the union. \n", + "\n", + " - Testing the creations:\n", + "\n", + " . Come up with language for even # of 1s and separately for \"other than three 0s\". \n", + " \n", + " . Do two intersections. \n", + " \n", + " . Is the language empty?\n", + "\n", + "\n", + "2) Language of strings over {0,1} with exactly two occurrences of 0101 in it.\n", + "\n", + " * Come up with it directly (take overlaps into account, i.e. 010101 has two occurrences in it\n", + "\n", + " * Come up in another way\n", + "\n", + "Notes:\n", + "\n", + "* Most of the problem students will have in this course is interpreting English (technical English)\n", + "\n", + "* So again, read the writeup at the beginning of Module6 (should be ready soon today) and work on using the tool.\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "%3\n", + "\n", + "\n", + "\n", + "EMPTY\n", + "\n", + "\n", + "\n", + "St6\n", + "\n", + "\n", + "St6\n", + "\n", + "\n", + "\n", + "EMPTY->St6\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "St7\n", + "\n", + "St7\n", + "\n", + "\n", + "\n", + "St7->St7\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St3\n", + "\n", + "\n", + "St3\n", + "\n", + "\n", + "\n", + "St7->St3\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St3->St3\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St3->St3\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St6->St7\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St6->St3\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "RE_Odd1s = \"(0* 1 0* (1 0* 1 0)*)*\"\n", + "NFA_Odd1s = re2nfa(RE_Odd1s)\n", + "DO_Odd1s = dotObj_dfa(min_dfa(nfa2dfa(NFA_Odd1s)))\n", + "DO_Odd1s" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "%3\n", + "\n", + "\n", + "\n", + "EMPTY\n", + "\n", + "\n", + "\n", + "St3\n", + "\n", + "St3\n", + "\n", + "\n", + "\n", + "EMPTY->St3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "St28\n", + "\n", + "St28\n", + "\n", + "\n", + "\n", + "St3->St28\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St2\n", + "\n", + "\n", + "St2\n", + "\n", + "\n", + "\n", + "St3->St2\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St7\n", + "\n", + "St7\n", + "\n", + "\n", + "\n", + "St14\n", + "\n", + "\n", + "St14\n", + "\n", + "\n", + "\n", + "St7->St14\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St9\n", + "\n", + "\n", + "St9\n", + "\n", + "\n", + "\n", + "St7->St9\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St28->St7\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St20\n", + "\n", + "\n", + "St20\n", + "\n", + "\n", + "\n", + "St28->St20\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St31\n", + "\n", + "St31\n", + "\n", + "\n", + "\n", + "St31->St31\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St21\n", + "\n", + "\n", + "St21\n", + "\n", + "\n", + "\n", + "St31->St21\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St13\n", + "\n", + "\n", + "St13\n", + "\n", + "\n", + "\n", + "St13->St14\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St13->St21\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St14->St31\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St14->St13\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St20->St28\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St20->St9\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St2->St3\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St2->St20\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St9->St7\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St9->St13\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St21->St31\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St21->St21\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "RE_Ex3z = \"1* 0 1* 0 1* 0 1* + (0* 1 0* (1 0* 1 0*)*)\"\n", + "NFA_Ex3z = re2nfa(RE_Ex3z)\n", + "DO_Ex3z = dotObj_dfa(min_dfa(nfa2dfa(NFA_Ex3z)))\n", + "DO_Ex3z" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "source": [ + "# Check out all remaining modules of Jove covering these\n", + "\n", + "* Brzozowski derivatives for parsing\n", + "* Brzozowski minimization\n", + "* Context-free parsing\n", + "* (soon to come) [Binary Decision Diagrams; obtain now from software/ at](http://www.cs.utah.edu/fv)\n", + "* (soon to come) Post Correspondence Problem" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "source": [ + "# Brzozowski's minimization defined\n", + "\n", + "It is nothing but these steps done in this order:\n", + "\n", + "* Reverse\n", + "* Determinize\n", + "* Reverse\n", + "* Determinize\n", + "\n", + "Voila! The machine is now minimal!" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [], + "source": [ + "# The above example, with min_dfa replaced by the rev;det;rev;det\n", + "\n", + "DofNFA_Ex3z = nfa2dfa(re2nfa(\"1* 0 1* 0 1* 0 1* + (0* 1 0* (1 0* 1 0*)*)\"))\n", + "dotObj_dfa(DofNFA_Ex3z)\n", + "dotObj_dfa(DofNFA_Ex3z)\n", + "minDofNFA_Ex3z = nfa2dfa(rev_dfa(nfa2dfa(rev_dfa(DofNFA_Ex3z))))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "%3\n", + "\n", + "\n", + "\n", + "EMPTY\n", + "\n", + "\n", + "\n", + "St0\n", + "\n", + "St0\n", + "\n", + "\n", + "\n", + "EMPTY->St0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "St4\n", + "\n", + "St4\n", + "\n", + "\n", + "\n", + "St2\n", + "\n", + "St2\n", + "\n", + "\n", + "\n", + "St4->St2\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St7\n", + "\n", + "\n", + "St7\n", + "\n", + "\n", + "\n", + "St4->St7\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St5\n", + "\n", + "St5\n", + "\n", + "\n", + "\n", + "St5->St5\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St9\n", + "\n", + "\n", + "St9\n", + "\n", + "\n", + "\n", + "St5->St9\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St3\n", + "\n", + "\n", + "St3\n", + "\n", + "\n", + "\n", + "St2->St3\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St8\n", + "\n", + "\n", + "St8\n", + "\n", + "\n", + "\n", + "St2->St8\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St0->St4\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St1\n", + "\n", + "\n", + "St1\n", + "\n", + "\n", + "\n", + "St0->St1\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St3->St5\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St6\n", + "\n", + "\n", + "St6\n", + "\n", + "\n", + "\n", + "St3->St6\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St9->St5\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St9->St9\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St6->St3\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St6->St9\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St8->St2\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St8->St6\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St7->St4\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St7->St8\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n", + "St1->St0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St1->St7\n", + "\n", + "\n", + "0\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dotObj_dfa(minDofNFA_Ex3z)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "source": [ + "# What's the largest postage that can't be made using 3,5 and 7 cents?\n", + "\n", + "Answer is 4. Find it out." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "%3\n", + "\n", + "\n", + "\n", + "EMPTY\n", + "\n", + "\n", + "\n", + "St5\n", + "\n", + "\n", + "St5\n", + "\n", + "\n", + "\n", + "EMPTY->St5\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "St1\n", + "\n", + "St1\n", + "\n", + "\n", + "\n", + "St0\n", + "\n", + "\n", + "St0\n", + "\n", + "\n", + "\n", + "St1->St0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St4\n", + "\n", + "St4\n", + "\n", + "\n", + "\n", + "St2\n", + "\n", + "St2\n", + "\n", + "\n", + "\n", + "St4->St2\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St3\n", + "\n", + "\n", + "St3\n", + "\n", + "\n", + "\n", + "St2->St3\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St3->St1\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St5->St4\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n", + "St0->St0\n", + "\n", + "\n", + "1\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dotObj_dfa(min_dfa_brz(nfa2dfa(re2nfa(\"(111+11111+1111111)*\"))))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "source": [ + "# Show ambiguity in parsing" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating LALR tables\n" + ] + } + ], + "source": [ + "# Parsing an arithmetic expression\n", + "pdaEamb = md2mc('''PDA\n", + "!!E -> E * E | E + E | ~E | ( E ) | 2 | 3\n", + "I : '', # ; E# -> M\n", + "M : '', E ; ~E -> M\n", + "M : '', E ; E+E -> M\n", + "M : '', E ; E*E -> M\n", + "M : '', E ; (E) -> M\n", + "M : '', E ; 2 -> M\n", + "M : '', E ; 3 -> M\n", + "M : ~, ~ ; '' -> M\n", + "M : 2, 2 ; '' -> M\n", + "M : 3, 3 ; '' -> M\n", + "M : (, ( ; '' -> M\n", + "M : ), ) ; '' -> M\n", + "M : +, + ; '' -> M\n", + "M : *, * ; '' -> M\n", + "M : '', # ; # -> F\n", + "'''\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "You may use any of these help commands:\n", + "help(explore_pda)\n", + "help(run_pda)\n", + "help(classify_l_id_path)\n", + "help(h_run_pda)\n", + "help(interpret_w_eps)\n", + "help(step_pda)\n", + "help(suvivor_id)\n", + "help(term_id)\n", + "help(final_id)\n", + "help(cvt_str_to_sym)\n", + "help(is_surv_id)\n", + "help(subsumed)\n", + "help(is_term_id)\n", + "help(is_final_id)\n", + "\n" + ] + } + ], + "source": [ + "from jove.Def_PDA import *" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "*** Exploring wrt STKMAX = 7 ; increase it if needed ***\n", + "String 3+2*3+2*3 accepted by your PDA in 13 ways :-) \n", + "Here are the ways: \n", + "Final state ('F', '', '#')\n", + "Reached as follows:\n", + "-> ('I', '3+2*3+2*3', '#')\n", + "-> ('M', '3+2*3+2*3', 'E#')\n", + "-> ('M', '3+2*3+2*3', 'E*E#')\n", + "-> ('M', '3+2*3+2*3', 'E*E*E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E*E*E#')\n", + "-> ('M', '3+2*3+2*3', '3+E*E*E#')\n", + "-> ('M', '+2*3+2*3', '+E*E*E#')\n", + "-> ('M', '2*3+2*3', 'E*E*E#')\n", + "-> ('M', '2*3+2*3', '2*E*E#')\n", + "-> ('M', '*3+2*3', '*E*E#')\n", + "-> ('M', '3+2*3', 'E*E#')\n", + "-> ('M', '3+2*3', 'E+E*E#')\n", + "-> ('M', '3+2*3', '3+E*E#')\n", + "-> ('M', '+2*3', '+E*E#')\n", + "-> ('M', '2*3', 'E*E#')\n", + "-> ('M', '2*3', '2*E#')\n", + "-> ('M', '*3', '*E#')\n", + "-> ('M', '3', 'E#')\n", + "-> ('M', '3', '3#')\n", + "-> ('M', '', '#')\n", + "-> ('F', '', '#') .\n", + "Final state ('F', '', '#')\n", + "Reached as follows:\n", + "-> ('I', '3+2*3+2*3', '#')\n", + "-> ('M', '3+2*3+2*3', 'E#')\n", + "-> ('M', '3+2*3+2*3', 'E*E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E*E#')\n", + "-> ('M', '3+2*3+2*3', '3+E*E#')\n", + "-> ('M', '+2*3+2*3', '+E*E#')\n", + "-> ('M', '2*3+2*3', 'E*E#')\n", + "-> ('M', '2*3+2*3', 'E*E*E#')\n", + "-> ('M', '2*3+2*3', '2*E*E#')\n", + "-> ('M', '*3+2*3', '*E*E#')\n", + "-> ('M', '3+2*3', 'E*E#')\n", + "-> ('M', '3+2*3', 'E+E*E#')\n", + "-> ('M', '3+2*3', '3+E*E#')\n", + "-> ('M', '+2*3', '+E*E#')\n", + "-> ('M', '2*3', 'E*E#')\n", + "-> ('M', '2*3', '2*E#')\n", + "-> ('M', '*3', '*E#')\n", + "-> ('M', '3', 'E#')\n", + "-> ('M', '3', '3#')\n", + "-> ('M', '', '#')\n", + "-> ('F', '', '#') .\n", + "Final state ('F', '', '#')\n", + "Reached as follows:\n", + "-> ('I', '3+2*3+2*3', '#')\n", + "-> ('M', '3+2*3+2*3', 'E#')\n", + "-> ('M', '3+2*3+2*3', 'E*E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E*E#')\n", + "-> ('M', '3+2*3+2*3', '3+E*E#')\n", + "-> ('M', '+2*3+2*3', '+E*E#')\n", + "-> ('M', '2*3+2*3', 'E*E#')\n", + "-> ('M', '2*3+2*3', '2*E#')\n", + "-> ('M', '*3+2*3', '*E#')\n", + "-> ('M', '3+2*3', 'E#')\n", + "-> ('M', '3+2*3', 'E*E#')\n", + "-> ('M', '3+2*3', 'E+E*E#')\n", + "-> ('M', '3+2*3', '3+E*E#')\n", + "-> ('M', '+2*3', '+E*E#')\n", + "-> ('M', '2*3', 'E*E#')\n", + "-> ('M', '2*3', '2*E#')\n", + "-> ('M', '*3', '*E#')\n", + "-> ('M', '3', 'E#')\n", + "-> ('M', '3', '3#')\n", + "-> ('M', '', '#')\n", + "-> ('F', '', '#') .\n", + "Final state ('F', '', '#')\n", + "Reached as follows:\n", + "-> ('I', '3+2*3+2*3', '#')\n", + "-> ('M', '3+2*3+2*3', 'E#')\n", + "-> ('M', '3+2*3+2*3', 'E*E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E*E#')\n", + "-> ('M', '3+2*3+2*3', '3+E*E#')\n", + "-> ('M', '+2*3+2*3', '+E*E#')\n", + "-> ('M', '2*3+2*3', 'E*E#')\n", + "-> ('M', '2*3+2*3', '2*E#')\n", + "-> ('M', '*3+2*3', '*E#')\n", + "-> ('M', '3+2*3', 'E#')\n", + "-> ('M', '3+2*3', 'E+E#')\n", + "-> ('M', '3+2*3', '3+E#')\n", + "-> ('M', '+2*3', '+E#')\n", + "-> ('M', '2*3', 'E#')\n", + "-> ('M', '2*3', 'E*E#')\n", + "-> ('M', '2*3', '2*E#')\n", + "-> ('M', '*3', '*E#')\n", + "-> ('M', '3', 'E#')\n", + "-> ('M', '3', '3#')\n", + "-> ('M', '', '#')\n", + "-> ('F', '', '#') .\n", + "Final state ('F', '', '#')\n", + "Reached as follows:\n", + "-> ('I', '3+2*3+2*3', '#')\n", + "-> ('M', '3+2*3+2*3', 'E#')\n", + "-> ('M', '3+2*3+2*3', 'E*E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E*E#')\n", + "-> ('M', '3+2*3+2*3', '3+E*E#')\n", + "-> ('M', '+2*3+2*3', '+E*E#')\n", + "-> ('M', '2*3+2*3', 'E*E#')\n", + "-> ('M', '2*3+2*3', 'E+E*E#')\n", + "-> ('M', '2*3+2*3', 'E*E+E*E#')\n", + "-> ('M', '2*3+2*3', '2*E+E*E#')\n", + "-> ('M', '*3+2*3', '*E+E*E#')\n", + "-> ('M', '3+2*3', 'E+E*E#')\n", + "-> ('M', '3+2*3', '3+E*E#')\n", + "-> ('M', '+2*3', '+E*E#')\n", + "-> ('M', '2*3', 'E*E#')\n", + "-> ('M', '2*3', '2*E#')\n", + "-> ('M', '*3', '*E#')\n", + "-> ('M', '3', 'E#')\n", + "-> ('M', '3', '3#')\n", + "-> ('M', '', '#')\n", + "-> ('F', '', '#') .\n", + "Final state ('F', '', '#')\n", + "Reached as follows:\n", + "-> ('I', '3+2*3+2*3', '#')\n", + "-> ('M', '3+2*3+2*3', 'E#')\n", + "-> ('M', '3+2*3+2*3', 'E*E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E*E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E+E*E#')\n", + "-> ('M', '3+2*3+2*3', '3+E+E*E#')\n", + "-> ('M', '+2*3+2*3', '+E+E*E#')\n", + "-> ('M', '2*3+2*3', 'E+E*E#')\n", + "-> ('M', '2*3+2*3', 'E*E+E*E#')\n", + "-> ('M', '2*3+2*3', '2*E+E*E#')\n", + "-> ('M', '*3+2*3', '*E+E*E#')\n", + "-> ('M', '3+2*3', 'E+E*E#')\n", + "-> ('M', '3+2*3', '3+E*E#')\n", + "-> ('M', '+2*3', '+E*E#')\n", + "-> ('M', '2*3', 'E*E#')\n", + "-> ('M', '2*3', '2*E#')\n", + "-> ('M', '*3', '*E#')\n", + "-> ('M', '3', 'E#')\n", + "-> ('M', '3', '3#')\n", + "-> ('M', '', '#')\n", + "-> ('F', '', '#') .\n", + "Final state ('F', '', '#')\n", + "Reached as follows:\n", + "-> ('I', '3+2*3+2*3', '#')\n", + "-> ('M', '3+2*3+2*3', 'E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E#')\n", + "-> ('M', '3+2*3+2*3', 'E*E+E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E*E+E#')\n", + "-> ('M', '3+2*3+2*3', '3+E*E+E#')\n", + "-> ('M', '+2*3+2*3', '+E*E+E#')\n", + "-> ('M', '2*3+2*3', 'E*E+E#')\n", + "-> ('M', '2*3+2*3', '2*E+E#')\n", + "-> ('M', '*3+2*3', '*E+E#')\n", + "-> ('M', '3+2*3', 'E+E#')\n", + "-> ('M', '3+2*3', '3+E#')\n", + "-> ('M', '+2*3', '+E#')\n", + "-> ('M', '2*3', 'E#')\n", + "-> ('M', '2*3', 'E*E#')\n", + "-> ('M', '2*3', '2*E#')\n", + "-> ('M', '*3', '*E#')\n", + "-> ('M', '3', 'E#')\n", + "-> ('M', '3', '3#')\n", + "-> ('M', '', '#')\n", + "-> ('F', '', '#') .\n", + "Final state ('F', '', '#')\n", + "Reached as follows:\n", + "-> ('I', '3+2*3+2*3', '#')\n", + "-> ('M', '3+2*3+2*3', 'E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E#')\n", + "-> ('M', '3+2*3+2*3', '3+E#')\n", + "-> ('M', '+2*3+2*3', '+E#')\n", + "-> ('M', '2*3+2*3', 'E#')\n", + "-> ('M', '2*3+2*3', 'E*E#')\n", + "-> ('M', '2*3+2*3', 'E*E*E#')\n", + "-> ('M', '2*3+2*3', '2*E*E#')\n", + "-> ('M', '*3+2*3', '*E*E#')\n", + "-> ('M', '3+2*3', 'E*E#')\n", + "-> ('M', '3+2*3', 'E+E*E#')\n", + "-> ('M', '3+2*3', '3+E*E#')\n", + "-> ('M', '+2*3', '+E*E#')\n", + "-> ('M', '2*3', 'E*E#')\n", + "-> ('M', '2*3', '2*E#')\n", + "-> ('M', '*3', '*E#')\n", + "-> ('M', '3', 'E#')\n", + "-> ('M', '3', '3#')\n", + "-> ('M', '', '#')\n", + "-> ('F', '', '#') .\n", + "Final state ('F', '', '#')\n", + "Reached as follows:\n", + "-> ('I', '3+2*3+2*3', '#')\n", + "-> ('M', '3+2*3+2*3', 'E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E#')\n", + "-> ('M', '3+2*3+2*3', '3+E#')\n", + "-> ('M', '+2*3+2*3', '+E#')\n", + "-> ('M', '2*3+2*3', 'E#')\n", + "-> ('M', '2*3+2*3', 'E*E#')\n", + "-> ('M', '2*3+2*3', '2*E#')\n", + "-> ('M', '*3+2*3', '*E#')\n", + "-> ('M', '3+2*3', 'E#')\n", + "-> ('M', '3+2*3', 'E*E#')\n", + "-> ('M', '3+2*3', 'E+E*E#')\n", + "-> ('M', '3+2*3', '3+E*E#')\n", + "-> ('M', '+2*3', '+E*E#')\n", + "-> ('M', '2*3', 'E*E#')\n", + "-> ('M', '2*3', '2*E#')\n", + "-> ('M', '*3', '*E#')\n", + "-> ('M', '3', 'E#')\n", + "-> ('M', '3', '3#')\n", + "-> ('M', '', '#')\n", + "-> ('F', '', '#') .\n", + "Final state ('F', '', '#')\n", + "Reached as follows:\n", + "-> ('I', '3+2*3+2*3', '#')\n", + "-> ('M', '3+2*3+2*3', 'E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E#')\n", + "-> ('M', '3+2*3+2*3', '3+E#')\n", + "-> ('M', '+2*3+2*3', '+E#')\n", + "-> ('M', '2*3+2*3', 'E#')\n", + "-> ('M', '2*3+2*3', 'E*E#')\n", + "-> ('M', '2*3+2*3', '2*E#')\n", + "-> ('M', '*3+2*3', '*E#')\n", + "-> ('M', '3+2*3', 'E#')\n", + "-> ('M', '3+2*3', 'E+E#')\n", + "-> ('M', '3+2*3', '3+E#')\n", + "-> ('M', '+2*3', '+E#')\n", + "-> ('M', '2*3', 'E#')\n", + "-> ('M', '2*3', 'E*E#')\n", + "-> ('M', '2*3', '2*E#')\n", + "-> ('M', '*3', '*E#')\n", + "-> ('M', '3', 'E#')\n", + "-> ('M', '3', '3#')\n", + "-> ('M', '', '#')\n", + "-> ('F', '', '#') .\n", + "Final state ('F', '', '#')\n", + "Reached as follows:\n", + "-> ('I', '3+2*3+2*3', '#')\n", + "-> ('M', '3+2*3+2*3', 'E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E#')\n", + "-> ('M', '3+2*3+2*3', '3+E#')\n", + "-> ('M', '+2*3+2*3', '+E#')\n", + "-> ('M', '2*3+2*3', 'E#')\n", + "-> ('M', '2*3+2*3', 'E*E#')\n", + "-> ('M', '2*3+2*3', 'E+E*E#')\n", + "-> ('M', '2*3+2*3', 'E*E+E*E#')\n", + "-> ('M', '2*3+2*3', '2*E+E*E#')\n", + "-> ('M', '*3+2*3', '*E+E*E#')\n", + "-> ('M', '3+2*3', 'E+E*E#')\n", + "-> ('M', '3+2*3', '3+E*E#')\n", + "-> ('M', '+2*3', '+E*E#')\n", + "-> ('M', '2*3', 'E*E#')\n", + "-> ('M', '2*3', '2*E#')\n", + "-> ('M', '*3', '*E#')\n", + "-> ('M', '3', 'E#')\n", + "-> ('M', '3', '3#')\n", + "-> ('M', '', '#')\n", + "-> ('F', '', '#') .\n", + "Final state ('F', '', '#')\n", + "Reached as follows:\n", + "-> ('I', '3+2*3+2*3', '#')\n", + "-> ('M', '3+2*3+2*3', 'E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E#')\n", + "-> ('M', '3+2*3+2*3', '3+E#')\n", + "-> ('M', '+2*3+2*3', '+E#')\n", + "-> ('M', '2*3+2*3', 'E#')\n", + "-> ('M', '2*3+2*3', 'E+E#')\n", + "-> ('M', '2*3+2*3', 'E*E+E#')\n", + "-> ('M', '2*3+2*3', '2*E+E#')\n", + "-> ('M', '*3+2*3', '*E+E#')\n", + "-> ('M', '3+2*3', 'E+E#')\n", + "-> ('M', '3+2*3', '3+E#')\n", + "-> ('M', '+2*3', '+E#')\n", + "-> ('M', '2*3', 'E#')\n", + "-> ('M', '2*3', 'E*E#')\n", + "-> ('M', '2*3', '2*E#')\n", + "-> ('M', '*3', '*E#')\n", + "-> ('M', '3', 'E#')\n", + "-> ('M', '3', '3#')\n", + "-> ('M', '', '#')\n", + "-> ('F', '', '#') .\n", + "Final state ('F', '', '#')\n", + "Reached as follows:\n", + "-> ('I', '3+2*3+2*3', '#')\n", + "-> ('M', '3+2*3+2*3', 'E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E#')\n", + "-> ('M', '3+2*3+2*3', 'E+E+E#')\n", + "-> ('M', '3+2*3+2*3', '3+E+E#')\n", + "-> ('M', '+2*3+2*3', '+E+E#')\n", + "-> ('M', '2*3+2*3', 'E+E#')\n", + "-> ('M', '2*3+2*3', 'E*E+E#')\n", + "-> ('M', '2*3+2*3', '2*E+E#')\n", + "-> ('M', '*3+2*3', '*E+E#')\n", + "-> ('M', '3+2*3', 'E+E#')\n", + "-> ('M', '3+2*3', '3+E#')\n", + "-> ('M', '+2*3', '+E#')\n", + "-> ('M', '2*3', 'E#')\n", + "-> ('M', '2*3', 'E*E#')\n", + "-> ('M', '2*3', '2*E#')\n", + "-> ('M', '*3', '*E#')\n", + "-> ('M', '3', 'E#')\n", + "-> ('M', '3', '3#')\n", + "-> ('M', '', '#')\n", + "-> ('F', '', '#') .\n" + ] + } + ], + "source": [ + "explore_pda(\"3+2*3+2*3\", pdaEamb, STKMAX=7)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "source": [ + "# Show how to disambiguate" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating LALR tables\n" + ] + } + ], + "source": [ + "# Parsing an arithmetic expression\n", + "pdaE = md2mc('''PDA\n", + "!!E -> E+T | T\n", + "!!T -> T*F | F\n", + "!!F -> 2 | 3 | ~F | (E)\n", + "I : '', # ; E# -> M\n", + "M : '', E ; E+T -> M\n", + "M : '', E ; T -> M\n", + "M : '', T ; T*F -> M\n", + "M : '', T ; F -> M\n", + "M : '', F ; 2 -> M\n", + "M : '', F ; 3 -> M\n", + "M : '', F ; ~F -> M\n", + "M : '', F ; (E) -> M\n", + "M : ~, ~ ; '' -> M\n", + "M : 2, 2 ; '' -> M\n", + "M : 3, 3 ; '' -> M\n", + "M : (, ( ; '' -> M\n", + "M : ), ) ; '' -> M\n", + "M : +, + ; '' -> M\n", + "M : *, * ; '' -> M\n", + "M : '', # ; # -> F\n", + "'''\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "*** Exploring wrt STKMAX = 7 ; increase it if needed ***\n", + "String 3+2*3+2*3 accepted by your PDA in 1 ways :-) \n", + "Here are the ways: \n", + "Final state ('F', '', '#')\n", + "Reached as follows:\n", + "-> ('I', '3+2*3+2*3', '#')\n", + "-> ('M', '3+2*3+2*3', 'E#')\n", + "-> ('M', '3+2*3+2*3', 'E+T#')\n", + "-> ('M', '3+2*3+2*3', 'E+T+T#')\n", + "-> ('M', '3+2*3+2*3', 'T+T+T#')\n", + "-> ('M', '3+2*3+2*3', 'F+T+T#')\n", + "-> ('M', '3+2*3+2*3', '3+T+T#')\n", + "-> ('M', '+2*3+2*3', '+T+T#')\n", + "-> ('M', '2*3+2*3', 'T+T#')\n", + "-> ('M', '2*3+2*3', 'T*F+T#')\n", + "-> ('M', '2*3+2*3', 'F*F+T#')\n", + "-> ('M', '2*3+2*3', '2*F+T#')\n", + "-> ('M', '*3+2*3', '*F+T#')\n", + "-> ('M', '3+2*3', 'F+T#')\n", + "-> ('M', '3+2*3', '3+T#')\n", + "-> ('M', '+2*3', '+T#')\n", + "-> ('M', '2*3', 'T#')\n", + "-> ('M', '2*3', 'T*F#')\n", + "-> ('M', '2*3', 'F*F#')\n", + "-> ('M', '2*3', '2*F#')\n", + "-> ('M', '*3', '*F#')\n", + "-> ('M', '3', 'F#')\n", + "-> ('M', '3', '3#')\n", + "-> ('M', '', '#')\n", + "-> ('F', '', '#') .\n" + ] + } + ], + "source": [ + "explore_pda(\"3+2*3+2*3\", pdaE, STKMAX=7)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "source": [ + "# And finally, run a Turing Machine with \"dynamic tape allocation\" :-)\n", + "\n", + "* Why not show how TMs are encoded? \n", + "* This markdown gets parsed to build a TM!\n", + "* This TM is for the famous \"3x+1\" problem (Collatz's Problem)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [], + "source": [ + "collatz_tm_str = \"\"\"\n", + "TM\n", + "\n", + "i_start : 0; ., R -> i_start !! erase this zero and try to find more\n", + "i_start : 1; 1, R -> goto_lsb !! we have a proper number, go to the lsb\n", + "i_start : .; ., S -> error !! error on no input or input == 0\n", + "\n", + "\n", + "goto_lsb : 0; 0,R | 1; 1,R -> goto_lsb !! scan off the right edge of the number\n", + "goto_lsb : .; .,L -> branch !! take a step back to be on the lsb and start branch\n", + "\n", + "\n", + "branch : 0; .,L -> branch !! number is even, divide by two and re-branch\n", + "branch : 1; 1,L -> check_n_eq_1 !! number is odd, check if it is 1\n", + "\n", + "\n", + "check_n_eq_1 : 0; 0,R | 1; 1,R -> 01_fma !! number wasn't 1, goto 3n+1\n", + "check_n_eq_1 : .; .,R -> f_halt !! number was 1, halt\n", + "\n", + "\n", + "!! carrying 0 we see a 0 so write 0 and carry 0 forward\n", + "00_fma : 0; 0,L -> 00_fma\n", + "\n", + "!! carrying 0 we see a 1 (times 3 is 11) so write 1 and carry 1 forward\n", + "00_fma : 1; 1,L -> 01_fma\n", + "\n", + "!! reached the end of the number, go back to the start\n", + "00_fma : .; .,R -> goto_lsb \n", + "\n", + "\n", + "!! carrying 1 we see a 0 so write 1 and carry 0 forward\n", + "01_fma : 0; 1,L -> 00_fma \n", + "\n", + "!! carrying 1 we see a 1 (times 3 is 11, plus our carry is 100) so write 0 and carry 10 forward\n", + "01_fma : 1; 0,L -> 10_fma \n", + "\n", + "!! reached the end of the number, write our 1 and go back to the start\n", + "01_fma : .; 1,R -> goto_lsb \n", + "\n", + "\n", + "!! carrying 10 we see a 0, so write 0 and carry 1 forward\n", + "10_fma : 0; 0,L -> 01_fma\n", + "\n", + "!! carrying 10 we see a 1 (times 3 is 11, plus our carry is 101), so write 1 and carry 10 forward\n", + "10_fma : 1; 1,L -> 10_fma\n", + "\n", + "!! reached the end of the number, write a 0 from our 10 and carry 1\n", + "10_fma : .; 0,L -> 01_fma\n", + "\n", + "!!\"\"\"\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating LALR tables\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "%3\n", + "\n", + "\n", + "\n", + "EMPTY\n", + "\n", + "\n", + "\n", + "i_start\n", + "\n", + "i_start\n", + "\n", + "\n", + "\n", + "EMPTY->i_start\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "branch\n", + "\n", + "branch\n", + "\n", + "\n", + "\n", + "branch->branch\n", + "\n", + "\n", + "0 ; .,L\n", + "\n", + "\n", + "\n", + "check_n_eq_1\n", + "\n", + "check_n_eq_1\n", + "\n", + "\n", + "\n", + "branch->check_n_eq_1\n", + "\n", + "\n", + "1 ; 1,L\n", + "\n", + "\n", + "\n", + "01_fma\n", + "\n", + "01_fma\n", + "\n", + "\n", + "\n", + "check_n_eq_1->01_fma\n", + "\n", + "\n", + "0 ; 0,R \n", + " 1 ; 1,R\n", + "\n", + "\n", + "\n", + "f_halt\n", + "\n", + "\n", + "f_halt\n", + "\n", + "\n", + "\n", + "check_n_eq_1->f_halt\n", + "\n", + "\n", + ". ; .,R\n", + "\n", + "\n", + "\n", + "goto_lsb\n", + "\n", + "goto_lsb\n", + "\n", + "\n", + "\n", + "01_fma->goto_lsb\n", + "\n", + "\n", + ". ; 1,R\n", + "\n", + "\n", + "\n", + "10_fma\n", + "\n", + "10_fma\n", + "\n", + "\n", + "\n", + "01_fma->10_fma\n", + "\n", + "\n", + "1 ; 0,L\n", + "\n", + "\n", + "\n", + "00_fma\n", + "\n", + "00_fma\n", + "\n", + "\n", + "\n", + "01_fma->00_fma\n", + "\n", + "\n", + "0 ; 1,L\n", + "\n", + "\n", + "\n", + "i_start->i_start\n", + "\n", + "\n", + "0 ; .,R\n", + "\n", + "\n", + "\n", + "i_start->goto_lsb\n", + "\n", + "\n", + "1 ; 1,R\n", + "\n", + "\n", + "\n", + "error\n", + "\n", + "error\n", + "\n", + "\n", + "\n", + "i_start->error\n", + "\n", + "\n", + ". ; .,S\n", + "\n", + "\n", + "\n", + "goto_lsb->branch\n", + "\n", + "\n", + ". ; .,L\n", + "\n", + "\n", + "\n", + "goto_lsb->goto_lsb\n", + "\n", + "\n", + "0 ; 0,R \n", + " 1 ; 1,R\n", + "\n", + "\n", + "\n", + "10_fma->01_fma\n", + "\n", + "\n", + "0 ; 0,L \n", + " . ; 0,L\n", + "\n", + "\n", + "\n", + "10_fma->10_fma\n", + "\n", + "\n", + "1 ; 1,L\n", + "\n", + "\n", + "\n", + "00_fma->01_fma\n", + "\n", + "\n", + "1 ; 1,L\n", + "\n", + "\n", + "\n", + "00_fma->goto_lsb\n", + "\n", + "\n", + ". ; .,R\n", + "\n", + "\n", + "\n", + "00_fma->00_fma\n", + "\n", + "\n", + "0 ; 0,L\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Now show the above TM graphically!\n", + "collatz_tm = md2mc(collatz_tm_str)\n", + "dotObj_tm(collatz_tm, FuseEdges=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "You may use any of these help commands:\n", + "help(step_tm)\n", + "help(run_tm)\n", + "help(explore_tm)\n", + "\n" + ] + } + ], + "source": [ + "from jove.Def_TM import *" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Allocating 8 tape cells to the RIGHT!\n", + "Allocating 8 tape cells to the LEFT!\n", + "Detailing the halted configs now.\n", + "Accepted at ('f_halt', 5, '.....1..............', 65)\n", + " via .. \n", + " ->('i_start', 0, '0110', 100)\n", + " ->('i_start', 1, '.110', 99)\n", + " ->('goto_lsb', 2, '.110', 98)\n", + " ->('goto_lsb', 3, '.110', 97)\n", + " ->('goto_lsb', 4, '.110', 96)\n", + " ->('branch', 3, '.110........', 95)\n", + " ->('branch', 2, '.11.........', 94)\n", + " ->('check_n_eq_1', 1, '.11.........', 93)\n", + " ->('01_fma', 2, '.11.........', 92)\n", + " ->('10_fma', 1, '.10.........', 91)\n", + " ->('10_fma', 0, '.10.........', 90)\n", + " ->('01_fma', 7, '........010.........', 89)\n", + " ->('goto_lsb', 8, '.......1010.........', 88)\n", + " ->('goto_lsb', 9, '.......1010.........', 87)\n", + " ->('goto_lsb', 10, '.......1010.........', 86)\n", + " ->('goto_lsb', 11, '.......1010.........', 85)\n", + " ->('branch', 10, '.......1010.........', 84)\n", + " ->('branch', 9, '.......101..........', 83)\n", + " ->('check_n_eq_1', 8, '.......101..........', 82)\n", + " ->('01_fma', 9, '.......101..........', 81)\n", + " ->('10_fma', 8, '.......100..........', 80)\n", + " ->('01_fma', 7, '.......100..........', 79)\n", + " ->('10_fma', 6, '.......000..........', 78)\n", + " ->('01_fma', 5, '......0000..........', 77)\n", + " ->('goto_lsb', 6, '.....10000..........', 76)\n", + " ->('goto_lsb', 7, '.....10000..........', 75)\n", + " ->('goto_lsb', 8, '.....10000..........', 74)\n", + " ->('goto_lsb', 9, '.....10000..........', 73)\n", + " ->('goto_lsb', 10, '.....10000..........', 72)\n", + " ->('branch', 9, '.....10000..........', 71)\n", + " ->('branch', 8, '.....1000...........', 70)\n", + " ->('branch', 7, '.....100............', 69)\n", + " ->('branch', 6, '.....10.............', 68)\n", + " ->('branch', 5, '.....1..............', 67)\n", + " ->('check_n_eq_1', 4, '.....1..............', 66)\n", + " ->('f_halt', 5, '.....1..............', 65)\n" + ] + } + ], + "source": [ + "# Will loop if the Collatz (\"3x+1\") program will ever loop!\n", + "explore_tm(collatz_tm, \"0110\", 100)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "run_control": { + "frozen": false, + "read_only": false + } + }, + "source": [ + "# END: You have a ton more waiting for your execution pleasure!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + }, + "toc": { + "colors": { + "hover_highlight": "#DAA520", + "running_highlight": "#FF0000", + "selected_highlight": "#FFD700" + }, + "moveMenuLeft": true, + "nav_menu": { + "height": "318px", + "width": "252px" + }, + "navigate_menu": true, + "number_sections": true, + "sideBar": true, + "threshold": 4, + "toc_cell": false, + "toc_section_display": "block", + "toc_window_display": false, + "widenNotebook": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/test/data/Cue Combination with Neural Populations .ipynb b/src/test/data/Cue Combination with Neural Populations .ipynb new file mode 100644 index 0000000..1d11ff7 --- /dev/null +++ b/src/test/data/Cue Combination with Neural Populations .ipynb @@ -0,0 +1,9822 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Humans and animals integrate multisensory cues near-optimally\n", + "## An intuition for how populations of neurons can perform Bayesian inference" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "from __future__ import division\n", + "import numpy as np\n", + "from scipy.special import factorial\n", + "import scipy.stats as stats\n", + "import pylab\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "import seaborn as sns\n", + "sns.set_style(\"darkgrid\")\n", + "import ipywidgets\n", + "from IPython.display import display\n", + "from matplotlib.font_manager import FontProperties\n", + "fontP = FontProperties()\n", + "fontP.set_size('medium')\n", + "%config InlineBackend.figure_format = 'svg'\n", + "\n", + "\n", + "def mean_firing_rate(gain, stimulus, preferred_stimulus, std_tc, baseline):\n", + " # Gaussian tuning curve that determines the mean firing rate (Poisson rate parameter) for a given stimulus\n", + " return baseline + gain*stats.norm.pdf(preferred_stimulus, loc = stimulus, scale = std_tc)\n", + "\n", + "def get_spikes(gain, stimulus, preferred_stimuli, std_tc, baseline):\n", + " # produce a vector of spikes for some population given some stimulus\n", + " lambdas = mean_firing_rate(gain, stimulus, preferred_stimuli, std_tc, baseline)\n", + " return np.random.poisson(lambdas)\n", + " \n", + "def likelihood(stimulus, r, gain, preferred_stimuli, std_tc, baseline):\n", + " # returns p(r|s)\n", + " lambdas = mean_firing_rate(gain, stimulus, preferred_stimuli, std_tc, baseline)\n", + " return np.prod(lambdas**r)\n", + "\n", + "def spikes_and_inference(r_V = True,\n", + " r_A = True,\n", + " show_tuning_curves = False,\n", + " show_spike_count = False,\n", + " show_likelihoods = True,\n", + " true_stimulus = 10,\n", + " number_of_neurons = 40,\n", + " r_V_gain = 15,\n", + " r_A_gain = 75,\n", + " r_V_tuning_curve_sigma = 10,\n", + " r_A_tuning_curve_sigma = 10,\n", + " tuning_curve_baseline = 0,\n", + " joint_likelihood = True,\n", + " r_V_plus_r_A = True,\n", + " cue = False):\n", + " np.random.seed(7)\n", + " max_s = 40\n", + " preferred_stimuli = np.linspace(-max_s*2, max_s*2, number_of_neurons)\n", + " n_hypothesized_s = 250\n", + " hypothesized_s = np.linspace(-max_s, max_s, n_hypothesized_s)\n", + " gains = {'r1': r_V_gain,\n", + " 'r2': r_A_gain,\n", + " 'r1+r2': r_V_gain + r_A_gain}\n", + " sigma_TCs = {'r1': r_V_tuning_curve_sigma,\n", + " 'r2': r_A_tuning_curve_sigma,\n", + " 'r1+r2': (r_V_tuning_curve_sigma + r_A_tuning_curve_sigma)/2}\n", + " spikes = {'r1': get_spikes(gains['r1'], true_stimulus, preferred_stimuli, sigma_TCs['r1'], tuning_curve_baseline),\n", + " 'r2': get_spikes(gains['r2'], true_stimulus, preferred_stimuli, sigma_TCs['r2'], tuning_curve_baseline)}\n", + " spikes['r1+r2'] = spikes['r1'] + spikes['r2']\n", + " active_pops = []\n", + " if r_V: active_pops.append('r1')\n", + " if r_A: active_pops.append('r2')\n", + " if r_V_plus_r_A: active_pops.append('r1+r2')\n", + "\n", + " colors = {'r1': sns.xkcd_rgb['light purple'],\n", + " 'r2': sns.xkcd_rgb['dark pink'],\n", + " 'r1+r2': sns.xkcd_rgb['royal blue'],\n", + " 'joint': sns.xkcd_rgb['gold']}\n", + " nSubplots = show_spike_count + show_tuning_curves + show_likelihoods\n", + " fig, axes = plt.subplots(nSubplots, figsize = (7, 1.5*nSubplots)) # number of subplots according to what's been requested\n", + " if not isinstance(axes, np.ndarray): axes = [axes] # makes axes into a list even if it's just one subplot\n", + " subplot_idx = 0\n", + " \n", + " def plot_true_stimulus_and_legend(subplot_idx):\n", + " axes[subplot_idx].plot(true_stimulus, 0, 'k^', markersize = 12, clip_on = False, label = 'true rattlesnake location')\n", + " axes[subplot_idx].legend(loc = 'center left', bbox_to_anchor = (1, 0.5), prop = fontP)\n", + " \n", + " if show_tuning_curves:\n", + " for neuron in range(number_of_neurons):\n", + " if r_V:\n", + " axes[subplot_idx].plot(hypothesized_s,\n", + " mean_firing_rate(gains['r1'],\n", + " hypothesized_s,\n", + " preferred_stimuli[neuron],\n", + " sigma_TCs['r1'],\n", + " tuning_curve_baseline),\n", + " color = colors['r1'])\n", + " if r_A:\n", + " axes[subplot_idx].plot(hypothesized_s,\n", + " mean_firing_rate(gains['r2'],\n", + " hypothesized_s,\n", + " preferred_stimuli[neuron],\n", + " sigma_TCs['r2'],\n", + " tuning_curve_baseline),\n", + " color = colors['r2'])\n", + " axes[subplot_idx].set_xlabel('location $s$')\n", + " axes[subplot_idx].set_ylabel('mean firing rate\\n(spikes/s)')\n", + " axes[subplot_idx].set_ylim((0, 4))\n", + " axes[subplot_idx].set_xlim((-40, 40))\n", + " axes[subplot_idx].set_yticks(np.linspace(0, 4, 5))\n", + " subplot_idx += 1\n", + "\n", + " if show_spike_count:\n", + " idx = abs(preferred_stimuli) < max_s\n", + " if r_V:\n", + " axes[subplot_idx].plot(preferred_stimuli[idx], spikes['r1'][idx], 'o', color = colors['r1'],\n", + " clip_on = False, label = '$\\mathbf{r}_\\mathrm{V}$',\n", + " markersize=4)\n", + " if r_A:\n", + " axes[subplot_idx].plot(preferred_stimuli[idx], spikes['r2'][idx], 'o', color = colors['r2'],\n", + " clip_on = False, label = '$\\mathbf{r}_\\mathrm{A}$',\n", + " markersize=4)\n", + " if r_V_plus_r_A:\n", + " axes[subplot_idx].plot(preferred_stimuli[idx], spikes['r1+r2'][idx], 'o', color = colors['r1+r2'],\n", + " clip_on = False, label = '$\\mathbf{r}_\\mathrm{V}+\\mathbf{r}_\\mathrm{A}$',\n", + " markersize=8, zorder=1)\n", + " axes[subplot_idx].set_xlabel('preferred location')\n", + " axes[subplot_idx].set_ylabel('spike count')\n", + " axes[subplot_idx].set_ylim((0, 10))\n", + " axes[subplot_idx].set_xlim((-40, 40))\n", + " plot_true_stimulus_and_legend(subplot_idx)\n", + " subplot_idx += 1\n", + "\n", + " if show_likelihoods:\n", + " if cue:\n", + " var = 'c'\n", + " else:\n", + " var = '\\mathbf{r}'\n", + " likelihoods = {}\n", + " \n", + " for population in active_pops:\n", + " likelihoods[population] = np.zeros_like(hypothesized_s)\n", + " for idx, ort in enumerate(hypothesized_s):\n", + " likelihoods[population][idx] = likelihood(ort, spikes[population], gains[population],\n", + " preferred_stimuli, sigma_TCs[population], tuning_curve_baseline)\n", + " likelihoods[population] /= np.sum(likelihoods[population]) # normalize\n", + "\n", + " if r_V:\n", + " axes[subplot_idx].plot(hypothesized_s, likelihoods['r1'], color = colors['r1'],\n", + " linewidth = 2, label = '$p({}_\\mathrm{{V}}|s)$'.format(var))\n", + " if r_A:\n", + " axes[subplot_idx].plot(hypothesized_s, likelihoods['r2'], color = colors['r2'],\n", + " linewidth = 2, label = '$p({}_\\mathrm{{A}}|s)$'.format(var))\n", + " if r_V_plus_r_A:\n", + " axes[subplot_idx].plot(hypothesized_s, likelihoods['r1+r2'], color = colors['r1+r2'],\n", + " linewidth = 2, label = '$p({}_\\mathrm{{V}}+{}_\\mathrm{{A}}|s)$'.format(var, var))\n", + " if joint_likelihood:\n", + " product = likelihoods['r1']*likelihoods['r2']\n", + " product /= np.sum(product)\n", + " axes[subplot_idx].plot(hypothesized_s, product, color = colors['joint'],linewidth = 7,\n", + " label = '$p({}_\\mathrm{{V}}|s)\\ p({}_\\mathrm{{A}}|s)$'.format(var, var), zorder = 1)\n", + "\n", + " axes[subplot_idx].set_xlabel('location $s$')\n", + " axes[subplot_idx].set_ylabel('probability')\n", + " axes[subplot_idx].set_xlim((-40, 40))\n", + " axes[subplot_idx].legend()\n", + " axes[subplot_idx].set_yticks([])\n", + " \n", + " plot_true_stimulus_and_legend(subplot_idx)\n", + " subplot_idx += 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

        We live in a complex environment and must constantly integrate sensory information to interact with the world around us. Inputs from different modalities might not always be congruent with each other, but dissociating the true nature of the stimulus may be a matter of life or death for an organism.

        \n", + "\n", + "

        You hear and see evidence of a rattlesnake in tall grass near you. You get an auditory and a visual cue of the snake's location $s$. Both cues are associated with a likelihood function indicating the probability of that cue for all possible locations of the snake. The likelihood function associated with the visual cue, $p(c_\\mathrm{V}|s)$, has high uncertainty, because of the tall grass. The auditory cue is easier to localize, so its associated likelihood function, $p(c_\\mathrm{A}|s)$, is sharper. In accordance with Bayes' Rule, and assuming a flat prior over the snake's location, an optimal estimate of the location of the snake can be computed by multiplying the two likelihoods. This joint likelihood will be between the two cues but closer to the less uncertain cue, and will have less uncertainty than both unimodal likelihood functions.

        " + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "spikes_and_inference(show_likelihoods = True, r_V_plus_r_A = False, cue = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Behavioral experiments have demonstrated that humans perform near-optimal Bayesian inference on ambiguous sensory information (van Beers *et al.*, 1999; Ernst & Banks, 2002; Kording & Wolpert, 2004; Stocker & Simoncelli, 2006). This has been demonstrated in cue combination experiments in which subjects report a near-optimal estimate of the stimulus given two noisy measurements of that stimulus. However, the neural basis for how humans might perform these computations is unclear. \n", + "\n", + "Ma *et. al.* (2006) propose that variance in cortical activity, rather than impairing sensory systems, is an adaptive mechanism to encode uncertainty in sensory measurements. They provide theory showing how the brain might use probabilistic population codes to perform near-optimal cue combination. We will re-derive the theory in here, and demonstrate it by simulating and decoding neural populations.\n", + "\n", + "## Cues can be represented by neural populations\n", + "\n", + "To return to our deadly rattlesnake, let's now assume that $c_\\mathrm{V}$ and $c_\\mathrm{A}$ are represented by populations of neurons $\\mathbf{r}_\\mathrm{V}$ and $\\mathbf{r}_\\mathrm{A}$, respectively. For our math and simulations, we assume that $\\mathbf{r}_\\mathrm{V}$ and $\\mathbf{r}_\\mathrm{A}$ are each composed of $N$ neurons that:\n", + "\n", + "* have independent Poisson variability\n", + "* have regularly spaced Gaussian tuning curves that are identical in mean and variance for neurons with the same index in both populations\n", + "\n", + "The populations may have different gains, $g_\\mathrm{V}$ and $g_\\mathrm{A}$.\n", + "\n", + "These are the tuning curves for the neurons in $\\mathbf{r}_\\mathrm{V}$ (purple) and $\\mathbf{r}_\\mathrm{A}$ (red). Each curve represents the mean firing rate of a single neuron given a location $s$. Each neuron thus has a preferred location, which is where its tuning curve peaks." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "spikes_and_inference(show_tuning_curves = True, show_likelihoods = False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The tuning curves are dense enough that we can also assume that $\\sum_{i=0}^N f_i(s) = k$ (*i.e.*, the sum of the tuning curves in a population is constant.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, we will show how the brain can decode a likelihood over stimulus from neural activity. Then we will ask how the brain can compute joint likelihoods.\n", + "### How can the brain decode $p(\\mathbf{r_\\mathrm{V}}|s)$?\n", + "\n", + "\\begin{align}\n", + "L(s) &= p(\\mathbf{r_\\mathrm{V}}\\ |\\ s) \\tag{1} \\\\ \n", + "&= \\prod_{i=0}^N \\frac{e^{-g_\\mathrm{V}\\ f_i(s)}\\ g_\\mathrm{V}\\ f_i(s)^{r_{\\mathrm{V}i}}}{r_{\\mathrm{V}i}!} \\tag{2} \\\\\n", + "&\\propto \\prod_{i=0}^N e^{-g_\\mathrm{V}\\ f_i(s)}\\ f_i(s)^{r_{\\mathrm{V}i}} \\tag{3} \\\\\n", + "&= e^{-g_\\mathrm{V}\\sum_{i=0}^N f_i(s)} \\prod_{i=0}^N f_i(s)^{r_{\\mathrm{V}i}}\\tag{4} \\\\ \n", + "&= e^{-g_\\mathrm{V}k} \\prod_{i=0}^N f_i(s)^{r_{\\mathrm{V}i}} \\tag{5} \\\\\n", + "&\\propto \\prod_{i=0}^N f_i(s)^{r_{\\mathrm{V}i}} \\tag{6} \\\\\n", + "\\end{align}\n", + "\n", + "### Then what is the joint likelihood $p(\\mathbf{r_\\mathrm{V}}|s)\\ p(\\mathbf{r_\\mathrm{A}}|s)$?\n", + "\n", + "\\begin{align}\n", + "L(s) &= p(\\mathbf{r_\\mathrm{V}}\\ |\\ s)\\ p(\\mathbf{r_\\mathrm{A}}|s) \\tag{7} \\\\\n", + "&\\propto \\prod_{i=0}^N f_i(s)^{r_{\\mathrm{V}i}}\\ \\prod_{i=0}^N f_i(s)^{r_{\\mathrm{A}i}} \\tag{8} \\\\\n", + "&= \\prod_{i=0}^N f_i(s)^{r_{\\mathrm{V}i}+r_{\\mathrm{A}i}} \\tag{9} \\\\\n", + "\\end{align}\n", + "\n", + "## How can the brain compute the joint likelihood $p(\\mathbf{r}_\\mathrm{V}|s)\\ p(\\mathbf{r}_\\mathrm{A}|s)$?\n", + "The fact that we see neurons from $\\mathbf{r}_\\mathrm{V}$ and $\\mathbf{r}_\\mathrm{A}$ being added on a neuron-by-neuron basis in the exponent above suggests that we could construct a third population vector, $\\mathbf{r}_\\mathrm{V}+\\mathbf{r}_\\mathrm{A}$, and decode that.\n", + "\n", + "### First, we must prove that the sum of two Poisson-distributed random variables $X+Y$ is again Poisson-distributed.\n", + "\\begin{align}\n", + "X &\\sim \\textrm{Poisson}(\\lambda_x) \\textrm{, so } p(X=k)=\\frac{\\lambda_x^k\\ e^{-\\lambda_x}}{k!} \\tag{10} \\\\\n", + "Y &\\sim \\textrm{Poisson}(\\lambda_y) \\textrm{, so } p(X=k)=\\frac{\\lambda_y^k\\ e^{-\\lambda_y}}{k!} \\tag{11} \\\\\n", + "X+Y &\\overset{?}{\\sim} \\textrm{Poisson}(\\lambda_{x+y}) \\textrm{ and, if so, } \\lambda_{x+y}=? \\tag{12} \\\\\n", + "\\end{align}\n", + "\n", + "\\begin{align}\n", + "p(X+Y=n) &= p(X=0)\\ p(Y=n) + p(X=1)\\ p(Y=n-1)\\ +...+\\ p(X=n-1)\\ p(Y = 1) + p(X=n)\\ p(Y=0) \\tag{13} \\\\\n", + "&= \\sum_{k=0}^n p(X=k)\\ p(Y=n-k) \\tag{14} \\\\\n", + "&= \\sum_{k=0}^n \\frac{\\lambda_x^k\\ e^{-\\lambda_x}\\ \\lambda_y^{n-k}\\ e^{-\\lambda_y}}{k!(n-k)!} \\tag{15} \\\\\n", + "&= e^{-(\\lambda_x+\\lambda_y)} \\sum_{k=0}^n \\frac{1}{k!(n-k)!}\\ \\lambda_x^k\\ \\lambda_y^{n-k} \\tag{16} \\\\\n", + "&= e^{-(\\lambda_x+\\lambda_y)} \\frac{1}{n!} \\sum_{k=0}^n \\frac{n!}{k!(n-k)!}\\ \\lambda_x^k\\ \\lambda_y^{n-k} \\tag{17} \\\\\n", + "&= e^{-(\\lambda_x+\\lambda_y)} \\frac{1}{n!} \\sum_{k=0}^n \\binom{n}{k}\\ \\lambda_x^k\\ \\lambda_y^{n-k}\\ [ \\textrm{because} \\frac{n!}{k!(n-k)!}=\\binom{n}{k} ]\\tag{18} \\\\\n", + "&=\\frac{e^{-(\\lambda_x + \\lambda_y)}(\\lambda_x+\\lambda_y)^n}{n!} [ \\textrm{because} \\sum_{k=0}^n \\binom{n}{k}\\ x^ky^{n-k} = (x+y)^n ]\\tag{19} \\\\\n", + "\\end{align}\n", + "\n", + "Therefore, $X + Y \\sim \\mathrm{Poisson}(\\lambda_x + \\lambda_y)$.\n", + "\n", + "## What is $p(\\mathbf{r}_\\mathrm{V}+\\mathbf{r}_\\mathrm{A} | s)$?\n", + "\n", + "In our case:\n", + "\n", + "\\begin{align}\n", + "r_{\\mathrm{V}i} &\\sim \\textrm{Poisson}(g_\\mathrm{V}\\ f_i(s)) \\tag{20} \\\\\n", + "r_{\\mathrm{A}i} &\\sim \\textrm{Poisson}(g_\\mathrm{A}\\ f_i(s)) \\tag{21} \\\\\n", + "r_{\\mathrm{V}i}+r_{\\mathrm{A}i} &\\sim \\textrm{Poisson}((g_\\mathrm{V}+g_\\mathrm{A})\\ f_i(s)) \\tag{22} \\\\\n", + "\\end{align}\n", + "\n", + "\\begin{align}\n", + "L(s)&=p(\\mathbf{r}_\\mathrm{V} + \\mathbf{r}_\\mathrm{A}\\ |\\ s)\n", + "= \\prod_{i=0}^N \\frac{e^{-f_i(s)(g_\\mathrm{V}+g_\\mathrm{A})}\\ (g_\\mathrm{V}+g_\\mathrm{A})\\ f_i(s)^{r_{\\mathrm{V}i}+r_{\\mathrm{A}i}}}{(r_{\\mathrm{V}i}+r_{\\mathrm{A}i})!} \\tag{23} \\\\\n", + "&\\propto \\prod_{i=0}^N e^{-f_i(s)(g_\\mathrm{V}+g_\\mathrm{A})}\\ f_i(s)^{r_{\\mathrm{V}i}+r_{\\mathrm{A}i}} \\tag{24} \\\\\n", + "&= e^{-(g_\\mathrm{V}+g_\\mathrm{A})\\sum_{i=0}^Nf_i(s)} \\prod_{i=0}^N \\ f_i(s)^{r_{\\mathrm{V}i}+r_{\\mathrm{A}i}} \\tag{25} \\\\\n", + "&= e^{-(g_\\mathrm{V}+g_\\mathrm{A})k} \\prod_{i=0}^N \\ f_i(s)^{r_{\\mathrm{V}i}+r_{\\mathrm{A}i}} \\tag{26} \\\\\n", + "&\\propto \\prod_{i=0}^N f_i(s)^{r_{\\mathrm{V}i}+r_{\\mathrm{A}i}} \\tag{27} \\\\\n", + "\\end{align}\n", + "\n", + "Since equations $(9)$ and $(27)$ are proportional, we have shown that optimal cue combination can be executed by decoding linear sums of populations." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$x = 2$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simulation\n", + "Here are the spike counts (during 1 s) from the two populations on one trial. Depicted in blue is a third population vector that is the sum of $\\mathbf{r}_\\mathrm{V}$ and $\\mathbf{r}_\\mathrm{A}$." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "spikes_and_inference(show_spike_count = True, show_likelihoods = False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here are the decoded likelihoods for each population alone $(6)$, the joint likelihood $(9)$, and the likelihood for the summed population $(27)$. Note that the joint likelihood (gold) is less uncertain than either unimodal likelihood. Also note that it is identical to the likelihood for the summed population (blue)." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "spikes_and_inference()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here, we break the assumption that the two populations have the same tuning curve width. Note that the joint likelihood (gold) is no longer identical to the likelihood for the summed population (blue)." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "spikes_and_inference(r_V_tuning_curve_sigma = 7, r_A_tuning_curve_sigma = 10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now you can play interactively with the parameters of the simulation using these sliders, and watch the decoded likelihoods shift around. Every time you change a parameter, new sets of spikes are generated and used to infer $s$.\n", + "\n", + "For the simulation to be interactive, you'll have to download this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "i = ipywidgets.interactive(spikes_and_inference,\n", + " true_stimulus = (-40, 40, .1),\n", + " number_of_neurons = (2, 200, 1),\n", + " r_V_gain = (0, 100, 1),\n", + " r_A_gain = (0, 100, 1),\n", + " r_V_tuning_curve_sigma = (0.1, 50, .1),\n", + " r_A_tuning_curve_sigma = (0.1, 50, .1),\n", + " tuning_curve_baseline = (0, 20, .1));\n", + "display(ipywidgets.VBox(i.children[2:-1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "It has been shown behaviorally that humans perform near-optimal Bayesian inference on ambiguous sensory information. As suggested by Ma *et. al.* (2006) and shown here, it is possible that the brain does this operation by simply performing linear combinations of populations of Poisson neurons receiving various sensory input. Cortical neurons may be particularly well suited for this task because they have Poisson-like firing rates, displaying reliable variability from trial to trial (Tolhurst, Movshon & Dean, 1982; Softky & Koch, 1993).\n", + "\n", + "High levels of noise in these populations might at first be difficult to reconcile considering highly precise behavioral data. However, variability in neural populations might be direcly representative of uncertainty in environmental stimuli. Variability in cortical populations would then be critical for precise neural coding.\n", + "\n", + "## References\n", + "\n", + "* Ernst MO, Banks MS. (2002). Humans integrate visual and haptic information in a statistically optimal fashion. *Nature.*\n", + "* Körding KP, Wolpert DM. (2004). Bayesian integration in sensorimotor learning. *Nature.*\n", + "* Ma WJ, Beck JM, Latham PE, Pouget A. (2006). Bayesian inference with probabilistic population codes. *Nature Neuroscience.*\n", + "* Softky WR, Koch C. (1993). The highly irregular firing of cortical cells is inconsistent with temporal integration of random EPSPs. *Journal of Neuroscience.*\n", + "* Stocker AA, Simoncelli EP. (2006). Noise characteristics and prior expectations in human visual speed perception. *Nature Neuroscience.*\n", + "* Tolhurst, DJ, Movshon JA, Dean AF. (1983). The statistical reliability of signals in single neurons in cat and monkey visual cortex. *Vision Research.*\n", + "* van Beers RJ, Sittig AC, Gon JJ. (1999). Integration of proprioceptive and visual position-information: An experimentally supported model. *Journal of Neurophysiology.*" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + }, + "widgets": { + "state": { + "e94c39980c8b4b6ca5ea32c6bd86c5e5": { + "views": [ + { + "cell_index": 30 + } + ] + } + }, + "version": "1.2.0" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/src/test/data/EmptyPythonWorksheet.cws b/src/test/data/EmptyPythonWorksheet.cws new file mode 100644 index 0000000000000000000000000000000000000000..3e1e1805cb3341e06d958b92cb79ca4f5b6b73a5 GIT binary patch literal 207 zcmWIWW@Zs#U|`^2D9YUuux|GC_;4Vv0*JYRI5|JBBsH%@uOc^Rb70BGa=uQUg3toL zGukKhxz6jK(mUtjtGn^>rpC>plY}O34*ndJGnGlp+vwBhDQ|X&^I8-M=X zV8bf?{Lh^`NA`$VOV>(puW*x(oY-qO=^;aaHzSh>Gj10E9RUVQ8bK72djh;!*+4>! MKxhf18$cWe0P0&mF#rGn literal 0 HcmV?d00001 diff --git a/src/test/data/Lecture-2B-Single-Atom-Lasing.ipynb b/src/test/data/Lecture-2B-Single-Atom-Lasing.ipynb new file mode 100644 index 0000000..48af16f --- /dev/null +++ b/src/test/data/Lecture-2B-Single-Atom-Lasing.ipynb @@ -0,0 +1,714 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# QuTiP lecture: Single-Atom-Lasing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Author: J. R. Johansson (robert@riken.jp), http://dml.riken.jp/~rob/\n", + "\n", + "The latest version of this [IPython notebook](http://ipython.org/ipython-doc/dev/interactive/htmlnotebook.html) lecture is available at [http://github.com/jrjohansson/qutip-lectures](http://github.com/jrjohansson/qutip-lectures).\n", + "\n", + "The other notebooks in this lecture series are indexed at [http://jrjohansson.github.com](http://jrjohansson.github.com)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# setup the matplotlib graphics library and configure it to show \n", + "# figures inline in the notebook\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# make qutip available in the rest of the notebook\n", + "from qutip import *\n", + "\n", + "from IPython.display import Image" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Introduction and model\n", + "\n", + "Consider a single atom coupled to a single cavity mode, as illustrated in the figure below. If there atom excitation rate $\\Gamma$ exceeds the relaxation rate, a population inversion can occur in the atom, and if coupled to the cavity the atom can then act as a photon pump on the cavity." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Image(filename='images/schematic-lasing-model.png')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The coherent dynamics in this model is described by the Hamiltonian\n", + "\n", + "$H = \\hbar \\omega_0 a^\\dagger a + \\frac{1}{2}\\hbar\\omega_a\\sigma_z + \\hbar g\\sigma_x(a^\\dagger + a)$\n", + "\n", + "where $\\omega_0$ is the cavity energy splitting, $\\omega_a$ is the atom energy splitting and $g$ is the atom-cavity interaction strength.\n", + "\n", + "In addition to the coherent dynamics the following incoherent processes are also present: \n", + "\n", + "1. $\\kappa$ relaxation and thermal excitations of the cavity, \n", + "2. $\\Gamma$ atomic excitation rate (pumping process).\n", + "\n", + "The Lindblad master equation for the model is:\n", + "\n", + "$\\frac{d}{dt}\\rho = -i[H, \\rho] + \\Gamma\\left(\\sigma_+\\rho\\sigma_- - \\frac{1}{2}\\sigma_-\\sigma_+\\rho - \\frac{1}{2}\\rho\\sigma_-\\sigma_+\\right)\n", + "+ \\kappa (1 + n_{\\rm th}) \\left(a\\rho a^\\dagger - \\frac{1}{2}a^\\dagger a\\rho - \\frac{1}{2}\\rho a^\\dagger a\\right)\n", + "+ \\kappa n_{\\rm th} \\left(a^\\dagger\\rho a - \\frac{1}{2}a a^\\dagger \\rho - \\frac{1}{2}\\rho a a^\\dagger\\right)$\n", + "\n", + "in units where $\\hbar = 1$.\n", + "\n", + "References:\n", + "\n", + " * [Yi Mu, C.M. Savage, Phys. Rev. A 46, 5944 (1992)](http://dx.doi.org/10.1103/PhysRevA.46.5944)\n", + "\n", + " * [D.A. Rodrigues, J. Imbers, A.D. Armour, Phys. Rev. Lett. 98, 067204 (2007)](http://dx.doi.org/10.1103/PhysRevLett.98.067204)\n", + "\n", + " * [S. Ashhab, J.R. Johansson, A.M. Zagoskin, F. Nori, New J. Phys. 11, 023030 (2009)](http://dx.doi.org/10.1088/1367-2630/11/2/023030)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Problem parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "w0 = 1.0 * 2 * pi # cavity frequency\n", + "wa = 1.0 * 2 * pi # atom frequency\n", + "g = 0.05 * 2 * pi # coupling strength\n", + "\n", + "kappa = 0.04 # cavity dissipation rate\n", + "gamma = 0.00 # atom dissipation rate\n", + "Gamma = 0.35 # atom pump rate\n", + "\n", + "N = 50 # number of cavity fock states\n", + "n_th_a = 0.0 # avg number of thermal bath excitation\n", + "\n", + "tlist = np.linspace(0, 150, 101)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup the operators, the Hamiltonian and initial state" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# initial state\n", + "psi0 = tensor(basis(N,0), basis(2,0)) # start without excitations\n", + "\n", + "# operators\n", + "a = tensor(destroy(N), qeye(2))\n", + "sm = tensor(qeye(N), destroy(2))\n", + "sx = tensor(qeye(N), sigmax())\n", + "\n", + "# Hamiltonian\n", + "H = w0 * a.dag() * a + wa * sm.dag() * sm + g * (a.dag() + a) * sx" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "Quantum object: dims = [[50, 2], [50, 2]], shape = [100, 100], type = oper, isherm = True\\begin{equation*}\\left(\\begin{array}{*{11}c}0.0 & 0.0 & 0.0 & 0.314 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 6.283 & 0.314 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.314 & 6.283 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.314 & 0.0 & 0.0 & 12.566 & 0.444 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.444 & 12.566 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\\\vdots & \\vdots & \\vdots & \\vdots & \\vdots & \\ddots & \\vdots & \\vdots & \\vdots & \\vdots & \\vdots\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 301.593 & 2.177 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 2.177 & 301.593 & 0.0 & 0.0 & 2.199\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 307.876 & 2.199 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 2.199 & 307.876 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 2.199 & 0.0 & 0.0 & 314.159\\\\\\end{array}\\right)\\end{equation*}" + ], + "text/plain": [ + "Quantum object: dims = [[50, 2], [50, 2]], shape = [100, 100], type = oper, isherm = True\n", + "Qobj data =\n", + "[[ 0. 0. 0. ..., 0. 0. 0. ]\n", + " [ 0. 6.28318531 0.31415927 ..., 0. 0. 0. ]\n", + " [ 0. 0.31415927 6.28318531 ..., 0. 0. 0. ]\n", + " ..., \n", + " [ 0. 0. 0. ..., 307.87608005\n", + " 2.19911486 0. ]\n", + " [ 0. 0. 0. ..., 2.19911486\n", + " 307.87608005 0. ]\n", + " [ 0. 0. 0. ..., 0. 0.\n", + " 314.15926536]]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "H" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a list of collapse operators that describe the dissipation" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# collapse operators\n", + "c_ops = []\n", + "\n", + "rate = kappa * (1 + n_th_a)\n", + "if rate > 0.0:\n", + " c_ops.append(sqrt(rate) * a)\n", + "\n", + "rate = kappa * n_th_a\n", + "if rate > 0.0:\n", + " c_ops.append(sqrt(rate) * a.dag())\n", + "\n", + "rate = gamma\n", + "if rate > 0.0:\n", + " c_ops.append(sqrt(rate) * sm)\n", + "\n", + "rate = Gamma\n", + "if rate > 0.0:\n", + " c_ops.append(sqrt(rate) * sm.dag())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Evolve the system\n", + "\n", + "Here we evolve the system with the Lindblad master equation solver, and we request that the expectation values of the operators $a^\\dagger a$ and $\\sigma_+\\sigma_-$ are returned by the solver by passing the list `[a.dag()*a, sm.dag()*sm]` as the fifth argument to the solver." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "opt = Odeoptions(nsteps=2000) # allow extra time-steps \n", + "output = mesolve(H, psi0, tlist, c_ops, [a.dag() * a, sm.dag() * sm], options=opt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualize the results\n", + "\n", + "Here we plot the excitation probabilities of the cavity and the atom (these expectation values were calculated by the `mesolve` above)." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nEVm9ov7emPUvUWJionTs2FF27NiRL7hyjRgxQlauXGmYb9iwoVy9erVgkTYa3PXq1ZOlS5fKmTNn\nxMXFRZKTkw3r6tSpI9u3bzfM//nnn+Lm5ibbtm2TnJwc+eSTTyQoKEiys7MN2z/22GPy999/y+XL\nl8XX11ciIiLk6NGjkpGRIU8++aRMmTLFaB2HDx8WX19fiY2NFb1eL4sXL5Y6depIVlaWiIi88MIL\n8q9//UtSUlKkZs2a8vPPP4uIyIEDB8TT01O2bdsmIiKXL1+W06dPi4hIZGSkzJ8/X0REFi1aJG3b\nts33mePGjZNevXrJzZs35c6dO9KjRw95++23RURk06ZN4ufnJydPnpS7d+/KgAEDCg3utLQ0qVy5\nspw5c0ZERK5evSonT54s9HO1Wq388ccfIiJy/Phx8fPzk7Vr14qISEJCgmg0GtHpdIbt165dK0FB\nQXL69GnR6XQydepUadOmjdHfo7V/32ydXi/y998iv/0msmiRyLvvivTvL9KypYiPjxLOYWEivXqJ\njBsnMmuWyLp1IseOiaSmql09kWmpFtx9+/aVw4cPi1arNRrc3bt3l99++80w37FjRzl48GDBIm0w\nuHfv3i0VK1Y0HMmGh4fL559/blj/YHC///778vzzzxvm9Xq9+Pv7y86dOw3bL1++3LD+2WeflVGj\nRhnmv/zyS+ndu7fRWl555RX573//m29Zw4YNDftOTU2VWrVqSWhoqLzyyiuGbV5++WV5/fXXje4z\nb3AvXLgwX4Dq9Xpxc3PLF8R79+6VunXriojIiy++aAhxEZEzZ84UGdxeXl7y448/yr179/Kte/Bz\njXnttddk/PjxIiISHx9fILi7dOliaIeIiE6nE1dXV7l06VKBfVnz982WZGaKnDwp8uOPIh9+KDJk\niEirViJeXsrUqpXICy+ITJoksmSJyN69IsnJSrATOYqi/t6Y7Rr3xo0b4evri4iICGi12qJO1eeb\nf/C51GWhmWKafcmkh78munjxYnTu3BkeHh4AlGdnL168GOPGjTO6/ZUrV1CrVi3DvEajQWBgIC5f\nvmxY5ufnZ3hfqVKlfPMVK1ZEWlqa0X1fvHgR33//Pb788kvDsuzsbFy5cgUA4Onpib59++Lzzz/H\nmjVrDNskJSXh6aeffphmAwCuXbuGe/fuoXnz5oZlIgL9PwPwXrlyBS1btjSsy9vuB7m5uWHVqlWY\n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\nzcRnAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n_c = output.expect[0]\n", + "n_a = output.expect[1]\n", + "\n", + "fig, axes = plt.subplots(1, 1, figsize=(8,6))\n", + "\n", + "axes.plot(tlist, n_c, label=\"Cavity\")\n", + "axes.plot(tlist, n_a, label=\"Atom excited state\")\n", + "axes.set_xlim(0, 150)\n", + "axes.legend(loc=0)\n", + "axes.set_xlabel('Time')\n", + "axes.set_ylabel('Occupation probability');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Steady state: cavity fock-state distribution and wigner function" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "rho_ss = steadystate(H, c_ops)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nzjnnoNls4rjjjuv35fWF2fz/zZYtW/DBD34Q3/zmNzF37txBX07PKPO6MUhmrKjeaaedsGnTpvj2\npk2bsGDBggFeUf/YcccdsXnzZrzuda/D008/jR122GHQl1Q77XYbxxxzDD760Y/i/e9/P4DZ8bgB\nYNttt8X73vc+3H333SP9mG+//XZcf/31uOGGGzA1NYWXXnoJH/3oR0f6MQPA/PnzAQCvfe1rcfTR\nR2Pjxo0j/5j7zbp167Tb77//fjz22GNYtmwZAPEx8v7774+NGzfO+Ofc9JiJK6+8EjfccANuueWW\nPl1R/5mtuoBeLz/ykY/Er5ejiu5142Mf+xi+//3vD/rSAMxg+4c8PKbVauFHP/oRjjzyyEFfVl84\n8sgjcdVVVwEArrrqqpH7nygMQ5x44ol405vehNNOOy3ePsqP+y9/+Uuc+DA5OYl169Zhv/32G+nH\nfO6552LTpk147LHH8B//8R945zvfiX//938f6ce8detWvPzyywCAV155BTfffDP23nvvkX7Mw8Re\ne+2FZ555Bo899hgee+wxLFiwAL/+9a9nvKAuYu3atbjwwguxZs0ajI+PD/pyesZs1AWm18tRRfe6\nMSyCGgAGNqa8Dm644YZwjz32CBcuXBiee+65g76cnnDssceG8+fPDxuNRrhgwYJw9erV4XPPPRe+\n613vChctWhSuWLEifP755wd9mbXy85//PLQsK1y2bFm47777hvvuu2944403jvTjvu+++8L99tsv\nXLZsWbj33nuHF1xwQRiG4Ug/Zpn169eHRxxxRBiGo/2YH3300XDZsmXhsmXLwj333DP+uzXKj3mY\neeMb3xg+99xzg76MnrP77ruHb3jDG+K/p6eeeuqgL6lnzAZdIGN6vZwNyK8bwwIPf2EYhmEYhmGY\nLpmx9g+GYRiGYRiGGRZYVDMMwzAMwzBMl7CoZhiGYRiGYZguYVHNMAzDMAzDMF3CopphGIZhGIZh\nuoRFNcMwDMMwDMN0CYtqZsay66674h3veMegL6NnrFy5ErZt409/+tOgL4VhGIZhmAJYVDNdsX79\neti2bfzauHFjz+7bsixYltWz8zMMwzD9g15PLrrookFfCsN0hDvoC2BGg+OOOw6HH354ZvvChQt7\ndp88t4hhGGb04GIJM1NhUc3Uwpvf/GYcd9xxg74MpgtefvllzJs3b9CXwTAMwzAzErZ/MH1jw4YN\n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\nXk+I0uv1mEwmmZwQ90RmqsV9p9Pp2LVrFwsWLGDSpEksXboUo9FIeXk5p06d4p133nH7z4ulpaWk\npqbyzDPPkJOTQ0JCAu3t7Rw/fpzZs2ezYsUKjz4MBgOVlZXMnTuXRYsWUVZWRkZGRq+x9TUhTktL\nIy4ujvXr19Pa2srIkSM5efIkp06dIiIiol+JdX+T8K6uLqZNm4bFYuHGjRvs2bOH27dvs3PnTled\nqKgodu/ezZIlS4iPjycrK4vo6Gj++OMPamtrqaiooL6+3m2WXQgh/o96G2MTExOJjY2lvr7etT9F\nKUV5eTlNTU0YDAbg7vGuEydOvO/xiv8PSarFAzFnzhyOHTtGQUEBhYWF2O12xo4dS3FxsccJFBMn\nTuTHH39k06ZN7N+/n7a2NiIiIkhOTnbt+gbP2YiQkBC+/PJL5s+fzyuvvEJXVxcWi8VnTL7Ol/ZG\np9Nx6NAh8vLy+PjjjwkKCmLWrFkcP36clJSUPrfTU5/dy5119+7dy+7du3n//fdpb28nMTGRvXv3\nup1RDfDaa68xevRoPvzwQ4qKimhvbyciIoIxY8ZQUFDA0KFDffYlhBD/Rv0dq/oyrut0Oo4cOcK6\ndes4e/YsQUFBOBwO5s2bx759+8jIyODtt99m9uzZ/oQuHkKautedUUIIIYQQQghA1lQLIYQQQgjh\nN0mqhRBCCCGE8JMk1UIIIYQQQvhJkmohhBBCCCH8JEm1EEIIIYQQfpKkWgghhBBCCD9JUi2EEEII\nIYSfJKkWQgghhBDCT5JUCyGEEEII4SdJqoUQQgghhPDTn2J5mS49ZUbWAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(1, 2, figsize=(12,6))\n", + "\n", + "xvec = np.linspace(-5,5,200)\n", + "\n", + "rho_cavity = ptrace(rho_ss, 0)\n", + "W = wigner(rho_cavity, xvec, xvec)\n", + "wlim = abs(W).max()\n", + "\n", + "axes[1].contourf(xvec, xvec, W, 100, norm=mpl.colors.Normalize(-wlim,wlim), cmap=plt.get_cmap('RdBu'))\n", + "axes[1].set_xlabel(r'Im $\\alpha$', fontsize=18)\n", + "axes[1].set_ylabel(r'Re $\\alpha$', fontsize=18)\n", + "\n", + "axes[0].bar(arange(0, N), real(rho_cavity.diag()), color=\"blue\", alpha=0.6)\n", + "axes[0].set_ylim(0, 1)\n", + "axes[0].set_xlim(0, N)\n", + "axes[0].set_xlabel('Fock number', fontsize=18)\n", + "axes[0].set_ylabel('Occupation probability', fontsize=18);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cavity fock-state distribution and Wigner function as a function of time" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "tlist = np.linspace(0, 25, 5)\n", + "output = mesolve(H, psi0, tlist, c_ops, [], options=Odeoptions(nsteps=5000))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2YAAAF6CAYAAAByXks3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvWusLFlZPv7UWququ/fpM+fAGP4QIpgfYAQRGdCAysyY\nIMSYKI6XhEQFjIZPxgT0g0b95BgUMDjGT6LxwoiGxMQwigS8wAySqBiMQT4IQQYQRJzx7Dm9u7uq\n1uX/Ya131arqqu7q3n3dZz3JTl929f3t1e+znvd93sQYYxARERERERERERERERFxMLBDP4GIiIiI\niIiIiIiIiIg7HZGYRUREREREREREREREHBiRmEVERERERERERERERBwYkZhFREREREREREREREQc\nGJGYRUREREREREREREREHBiRmEVERERERERERERERBwYkZhFREREREREREREREQcGOLQTyCiwl/8\nxV/g05/+NBhjePazn42f+ImfuNRxERH7wGQywdvf/nZ8/dd/PZ566im89a1vRZIkC8e9973vxVe+\n8hX80z/9Ex544AG8/vWvP8CzjbiT8a//+q94+OGH8c53vtNf1zcun/e85+FLX/oSbt68iXe84x14\nwxvesK+nHXEHoy1mH3nkEXzpS1/CfD7Hc5/7XPzQD/1Q6237HhcRsS10rad918+Y3wIwEUeBW7du\nmZe97GX+8itf+Urzta99bePjIiL2hZ/8yZ80n//8540xxrzoRS/y50N85jOfMb/9279tjDHma1/7\nmrl586b53Oc+t9fnGXFn4zd/8zfNAw88YN70pjf569aJy9/93d81jz/+uCnLci/PNyKiLWa/8IUv\nmHe84x3+8k/91E+Z27dvL9y273EREdtC23r6n//5n8aYfutnzG8tYinjlvHqV78aUsq1b/foo4/i\nRS96kb/8rd/6rfj7v//7jY+LiFgHm8bt5z73OXz5y1/Gc5/7XADAhz70IX8+xL//+7/j7W9/OwDg\n677u6/D85z8f//Iv/3K5Jx1xx2HTOAWAt771rXjd615Xu26duMyyDM95znMgRCw0ieiPbcfs//7v\n/+Jv/uZvUBQFAODatWvIsmzhtn2Pi4hoYtOYbVtPP/GJTwDot37G/NYi/sJsEf/1X/8FY0wt8D73\nuc/h3e9+d+dtXvnKV+J1r3udl3gJN2/exGc+85mF4/seFxHRF5eJ27/7u7/DzZs38Z73vAe3bt3C\n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\nQyC72d1zzp5z7X4/MzuTZc/+ryu7vxzOf8/Dji6TQ3QTPdcvHD2ATIyVExozYAyZbDClWsfNQ+9y\nfePEq98v07q2vd40ZfnLxuYsFWwY5xYbm7PTgjYf2IvGDEjCy6bMS042xNw+Xj4bv7vTvWaZvs+2\nbNj6cWEFW16bIPFqr1mi56bz/GwJ6joV7nOS50TP90NQ5oHcQGMGZMCEQo43IPzeWxak/0xsuCKb\nLRu2Z/Pi6pqZXjQF50r3kC6nG7OjCcrhgBwSnn9sb878Hh/B4Ob6k8YMSJPTK0ilUiMIG0lOpPIa\nuX1J/HSWdft8naByer6d14ff5oNs/S27kV8/1zvsKcstXnwgBASZWx9w0ZgBachGU5buczK9lH6u\nSfd1dXPPQxBfWy+aMi8EZW+NF8688mgybuw1S+V5yZ7rJ6+PPoA/cu0w27ORO4zGaW4D35ht27aN\nMRnTd+kcuihJr7/2WsI6Y8nkjzoX3stUNrq2bdvm2l6zVJ39e9qwEZFJU3bm75mNw2+lxH8nXvHz\n7yTdfDg5v3Ws39PGDcrRXo9t27al1dR5sT7IhmyP6eZ4qb7mr73+uqPn2yBkTNbXeVJ+ZNbvMZ1c\nZfRsNGaMmfNjOpXJ9+mM9nt6cejY6eUTrRzSlc7KJIj58WKvWTq/ZxA2IjLdU+b0tc2k8bB5g1NK\nrXlKdUy3mqVUX1cbm7OzJdqYP5ubf5dBXO8FfbxUXv9kTXYQ1qtOnPmhQKqZdVM+ZDaIY2aa28A3\nZoCfMv2S00x4eUJ7Pp/348V/6ja+ftk+hyed1yiVpi9oG2epHqY42nPcWt7phqwtOXZ7vQrvubkH\nwY3n+8XWeSN9bp0eQWMGuMTpOT1ujuelTMZ1Olcvv0Q6H764N9tXEM10HDdq28zN809zpTlzcl5Z\nPmXHBk7PgbTt/cznD0TzlSvNmcmS6667zkjixi2j23XXXZetqJJZbq7cyCw3G2/Zzi2Z5eb0xrqW\nm223ZJkNGWPZRxAAAAAAkGM4lBEAAAAAfEZjBgAAAAA+s6ox27hxo8aNG6fDhw97Ptb999+vSCSi\nyspKLV++XJ999plnY3V2dqq8vFxlZWVqaWnxbJzTotGorr/+es2ZM0dz587VY4895vmYkhSLxVRV\nVaWlS5dmZbwgILPuILPZQ2bd4VdmpfzLLZl1B5nNrlzMLZl1QbZOlHRq//79pr6+3pSUlJhPPvnE\n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\njzzySPwNyVRPT48mTpyoVatW6Rvf+IbWrFmjEydOZFTr0ksv1a9+9StNmzZNU6dO1cUXX6zvfve7\njuYnSYODg/EvSJw8ebJr32S/efNmLVmyJOPnt7e3KxwOa/78+a7Mxw1e5TZXMyt5k1sym7p8yKwU\n/HUtmU0dmU2fTZmVci+3Qd6mJbPuCEJmPW3MvPpSvuPHj2vFihV69NFHNX78+IxqvPDCC5o0aZKq\nqqocf7owPDysnTt36s4779TOnTt1wQUXaMOGDRnV2rt3r/7whz+ot7dXAwMDOn78uJ599llH8ztb\nKBRy5b158MEHdd5552nlypUZPf/EiRNqbm7W+vXr4//m9L1wgxe5zeXMSt7nlswmlw+Zlexa15LZ\n5Mhs+mzJrJSbuQ3qNi2Zza3MetqYFRUVKRqNxu9Ho1GFw2FHNU+dOqWbbrpJP/vZz/SjH/0o4zpv\nvvmmnn/+ec2YMUM333yzXnnlFd16660Z1QqHwwqHw1q4cKEkacWKFdq5c2dGtd555x1dc801uuyy\ny1RQUKDly5frzTffzKjWmSZPnqyPP/5YkvTRRx9p0qRJjuo9+eST6ujocPQHtnfvXvX29qqyslIz\nZsxQX1+fqqurdeDAAUdzc8rt3OZ6ZiVvcktmU5cPmZWCv64ls6kjs+mzIbNS7uY2qNu0ZDa3Mutp\nY1ZTU6M9e/aot7dXQ0NDeu6557Rs2bKM6xljtHr1alVUVOiee+5xNLfm5mZFo1H19PToL3/5ixYt\nWqSnn346o1pTpkxRcXGx/vvf/0qStm7dqjlz5mRUq7y8XNu3b9fnn38uY4y2bt2qioqKjGqdadmy\nZXrqqackSU899ZSj/7g6Ozv1yCOPqL29XV/72tcyrjNv3jwNDg6qp6dHPT09CofD2rlzpyt/ZE64\nmdt8yKzkTW7JbOryIbNS8Ne1ZDZ1ZDZ9Qc+slNu5Deo2LZnNscymfbmQNHV0dJhZs2aZmTNnmubm\nZke1Xn/9dRMKhUxlZaVZsGCBWbBggXnxxRcdz7Grq8vxVWzeffddU1NTY+bPn29+/OMfO7rCXUtL\ni6moqDBz5841t956qxkaGkrr+Q0NDeaKK64whYWFJhwOm82bN5tPPvnEfOc73zFlZWVm8eLF5tNP\nP82o1hNPPGFKS0vNtGnT4u/B2rVr06p13nnnxed1phkzZvh+1aXT3MptvmTWGGe5JbPO5UNmjQnO\nupbMOkdm0xeUzI5WLx9yG/RtWjKbXr0gZpYvmAYAAAAAn3n+BdMAAAAAgORozAAAAADAZzRmAAAA\nAOAzGjMAAAAA8BmNGQAAAAD4jMYMAAAAAHxGYwYAAAAAPqMxAwAAAACf/R9jhv20ohCclwAAAABJ\nRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "rho_ss_sublist = output.states\n", + "\n", + "xvec = np.linspace(-5,5,200)\n", + "\n", + "fig, axes = plt.subplots(2, len(rho_ss_sublist), figsize=(3*len(rho_ss_sublist), 6))\n", + "\n", + "for idx, rho_ss in enumerate(rho_ss_sublist):\n", + "\n", + " # trace out the cavity density matrix\n", + " rho_ss_cavity = ptrace(rho_ss, 0)\n", + " \n", + " # calculate its wigner function\n", + " W = wigner(rho_ss_cavity, xvec, xvec)\n", + " \n", + " # plot its wigner function\n", + " wlim = abs(W).max()\n", + " axes[0,idx].contourf(xvec, xvec, W, 100, norm=mpl.colors.Normalize(-wlim,wlim), cmap=plt.get_cmap('RdBu'))\n", + " axes[0,idx].set_title(r'$t = %.1f$' % tlist[idx])\n", + " \n", + " # plot its fock-state distribution\n", + " axes[1,idx].bar(arange(0, N), real(rho_ss_cavity.diag()), color=\"blue\", alpha=0.8)\n", + " axes[1,idx].set_ylim(0, 1)\n", + " axes[1,idx].set_xlim(0, 15)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Steady state average photon occupation in cavity as a function of pump rate\n", + "\n", + "References:\n", + "\n", + " * [S. Ashhab, J.R. Johansson, A.M. Zagoskin, F. Nori, New J. Phys. 11, 023030 (2009)](http://dx.doi.org/10.1088/1367-2630/11/2/023030)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "def calulcate_avg_photons(N, Gamma):\n", + " \n", + " # collapse operators\n", + " c_ops = []\n", + "\n", + " rate = kappa * (1 + n_th_a)\n", + " if rate > 0.0:\n", + " c_ops.append(sqrt(rate) * a)\n", + "\n", + " rate = kappa * n_th_a\n", + " if rate > 0.0:\n", + " c_ops.append(sqrt(rate) * a.dag())\n", + "\n", + " rate = gamma\n", + " if rate > 0.0:\n", + " c_ops.append(sqrt(rate) * sm)\n", + "\n", + " rate = Gamma\n", + " if rate > 0.0:\n", + " c_ops.append(sqrt(rate) * sm.dag())\n", + " \n", + " # Ground state and steady state for the Hamiltonian: H = H0 + g * H1\n", + " rho_ss = steadystate(H, c_ops)\n", + " \n", + " # cavity photon number\n", + " n_cavity = expect(a.dag() * a, rho_ss)\n", + " \n", + " # cavity second order coherence function\n", + " g2_cavity = expect(a.dag() * a.dag() * a * a, rho_ss) / (n_cavity ** 2)\n", + "\n", + " return n_cavity, g2_cavity" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "Gamma_max = 2 * (4*g**2) / kappa\n", + "Gamma_vec = np.linspace(0.1, Gamma_max, 50)\n", + "\n", + "n_avg_vec = []\n", + "g2_vec = []\n", + "\n", + "for Gamma in Gamma_vec:\n", + " n_avg, g2 = calulcate_avg_photons(N, Gamma)\n", + " n_avg_vec.append(n_avg)\n", + " g2_vec.append(g2)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuEAAAGPCAYAAADyVg4lAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd41FXC9vHvpFATipTQRQIIAqGIgAghIM1VUMRVrBhA\nBJ59dhUfdm1Ls6HLK8jalSa6iooggoqgRERWioBUEwhFSugltBBS3j+OQAIEk/nNzJlyf65rrgwz\nk/ndRCQ3J6e4cnNzcxEREREREZ8Jsx1ARERERCTUqISLiIiIiPiYSriIiIiIiI+phIuIiIiI+JhK\nuIiIiIiIj6mEi4iIiIj4mN+W8B07dtCxY0caNWpE48aNmTBhAgAjR46kRo0aNG/enObNm/P1119b\nTioiIiIiUjQuf90nfM+ePezZs4dmzZpx/Phxrr32WmbNmsXHH39MdHQ0Q4cOtR1RRERERMQtEbYD\nFKRKlSpUqVIFgKioKBo2bMiuXbsA8NN/N4iIiIiIFIrfTkfJa9u2baxatYo2bdoA8O9//5umTZvS\nv39/jhw5YjmdiIiIiEjR+H0JP378OHfccQevvPIKUVFRDB48mK1bt7J69WqqVq3KY489ZjuiiIiI\niEiR+O2ccIAzZ85wyy23cNNNN/HII49c9Py2bdvo0aMHa9euzfd43bp1SU1N9VVMEREREQlRsbGx\nbN68ucif57dzwnNzc+nfvz/XXHNNvgKelpZG1apVAZg5cyZNmjS56HNTU1M1b1z80siRIxk5cqTt\nGCKXpD+f4q/0Z1P8mcvlcuvz/LaE//jjj7z//vvExcXRvHlzAJ5//nk+/PBDVq9ejcvl4qqrruKt\nt96ynFREREREpGj8toS3a9eOnJycix6/6aabLKQREREREfEcv1+YKRJMEhISbEcQKZD+fIq/0p9N\nCUZ+vTDTXS6XS3PC5Q/l5sLJk1CqFLg5nUtERERCnLu902+no4h4Q0YGbNwI69bB+vWmhGdnQ7ly\nUL78+Y9n75/9ddmyEKafG4mIiIiHaCRcglpuLuzaZQr3unXw229Qpw40bmxulSvDmTNw5Ii5HT58\n/mPe+8ePQ3T0+YLeqBG0aQMR+mesiIhISHO3d6qES9C5cLQ7IsKU5saNoX59KF686O+ZnQ3p6aaQ\nHzwIS5bAnj3QvTvccIPKuIiISKhSCc9DJTz07N0Lq1efH+2OjTWlu1EjM9rtjTnfW7bAl1/Czp3Q\nrRu0aweRkZ6/joiIiPgvlfA8VMJDR04OfPUVLFwI115rivfVV0OxYr7LsH07zJ0L27ZB167Qvr17\no+0iIiISeFTC81AJDw1798LkyWZ3kwceMIsobdqxw4yMb94MnTtDQoLKuIiISLBTCc9DJTy45eZC\nUhLMmQM9e0J8vH9tMbhrlynjyclw443QsSOUKGE7lYiIiHiDSngeKuHB68gRmDoVTp2CxESIibGd\nqGBpaWaqzPr10KmTKeOlStlOJSIiIp6kEp6HSnhwWr4cpk83hbZ798DZt3vvXlPG162DAQOgQQPb\niURERMRTVMLzUAkPLidOwH/+Y6Z5JCbClVfaTuSelBR45x24/Xa4/nrbaURERMQTVMLzUAkPHuvX\nw7Rp0KIF9OoV+FsApqXBq69C69bQo4d/zWUXERGRolMJz0MlPPCdPg0zZsDatdC3b3BN4UhPh9df\nN/uXP/CADvoREREJZCrheaiEB7YtW2DKFHO8/J13BudixsxMmDTJTLUZNAhKl7adSERERNyhEp6H\nSnjgWrwYPv8c7r7bTEEJZjk58NlnZrT/f/8XKla0nUhERESKSiU8D5XwwLRqFXz0Efzf/0GlSrbT\n+E5SktlXfNAgM/ovIiIigUMlPA+V8MCTkgJvvw1/+xvUrGk7je+tWWP2P7/33uD/CYCIiEgwUQnP\nQyU8sOzaBePGaQ/t334zCzZvvNEce6+dU0RERPyfSngeKuGB4+BB+Ne/oHdvuO4622nsO3TIbGFY\nty706RM4BxKJiIiEKpXwPFTCA8Px46aAd+hgTsEU49QpMzUnPBweegiKF7edSERERAribu/UOJtY\ncfq0GfFt1kwF/EIlS8Jf/gJly5p/pBw5YjuRiIiIeJpKuPhcdrY5vr1KFbjtNttp/FN4ONx3HzRv\nDuPHQ0aG7UQiIiLiSSrh4lO5ufD+++b+/fdr8eHluFzwpz+Z+eGTJpmvnYiIiAQHlXDxqc8/h7Q0\nM9c5PNx2Gv/ncpkFmidOwBdf2E4jIiIinqISLj6zcKE5kOcvf9Fiw6KIiICHH4b//hd+/tl2GhER\nEfEElXDxiZ9/hnnz4K9/hago22kCT5kyMHgw/Oc/sGOH7TQiIiLilEq4eN2vv8KHH5oR8AoVbKcJ\nXLVqmakpb7wBx47ZTiMiIiJOqISLV+3YAe++CwMHQo0attMEvuuuM7e33za7zIiIiEhgUgkXrzlw\nwOwFfs89UL++7TTB49ZbzZz6jz+2nURERETcpRIuXpGRARMmmC32WrSwnSa4hIVB//5mms8PP9hO\nIyIiIu5QCRevmDUL6tQxR9KL55UsCUOGmC0fN2+2nUZERESKSiVcPG7zZli5Ev78Z9tJgltMDCQm\nmvnhhw7ZTiMiIiJFoRIuHnXmDEybZnbxKF3adprg16gRdOlidkzJzLSdRkRERApLJVw8au5cqFZN\n88B9qXNnqFoV3ntPR9uLiIgECpVw8ZgdO2DxYjMKLr7jcsH998P+/fDNN7bTiIiISGGohItHZGfD\n1KnQuzeULWs7TeiJjIRBg+C772DtWttpRERE5I+ohItHzJ8P0dHQpo3tJKGrfHlzKNLUqbBnj+00\nIiIicjkq4eLY3r2mhN93n5kaIfbExkKvXvD662avdhEREfFPKuHiSG6uWRB4881QoYLtNAJwww1Q\nty589pntJCIiIlIQlXBx5PvvTRFPSLCdRPK64w5YvRpSU20nERERkUtRCRe3HTwIX3xhduYI058k\nv1KqFNx1l9mzPSvLdhoRERG5kKqTuCU3F/7zH7jxRrNHtfifFi2gcmWYN892EhEREbmQSri4ZelS\nOHoUunWznUQK4nLB3XebbQvT0mynERERkbxUwqXI0tNhxgx44AEID7edRi6nfHm45Rb44AOdpiki\nIuJPVMKlyD76CNq2hVq1bCeRwujQwcwLX7zYdhIRERE5SyVcimTVKti504yuSmAICzOLZ2fNMlOI\nRERExD6PlPAvvviC+++/n9mzZ3vi7cRPnTxpRsHvv98cky6Bo3p1iI83//1ERETEPrdL+OnTp3n7\n7beJj49n1apVPPnkk6xatYr27dvz9ttvc/r0aU/mFD8wYwY0awb16tlOIu74059g1y745RfbSURE\nRKTIJfzAgQOMGjWKbt26ERYWxvz58xk+fDgNGzZkxIgRzJ8/H4AuXbowatQoDh486PHQ4nu//gob\nNpgj0SUwRUbCfffBhx/qSHsRERHbXLm5hdszYdOmTbz88svs2LGDIUOG8Kc//emyr8/NzWXu3Lm8\n/vrr1K5dm0cffZR6PhpCdblcFPK3JYVw+jSMHm22u2vc2HYacWraNIiIMP89RURExBl3e+cflvAl\nS5Ywbtw4SpYsydChQ2nWrFmRL/Lzzz8zfvx4Tp06xWOPPcb1119f5PcoCpVwz/rsMzhyBPr1s51E\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(1, 1, figsize=(12,6))\n", + "\n", + "axes.plot(Gamma_vec * kappa / (4*g**2), n_avg_vec, color=\"blue\", alpha=0.6, label=\"numerical\")\n", + "\n", + "axes.set_xlabel(r'$\\Gamma\\kappa/(4g^2)$', fontsize=18)\n", + "axes.set_ylabel(r'Occupation probability $\\langle n \\rangle$', fontsize=18)\n", + "axes.set_xlim(0, 2);" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuUAAAGPCAYAAAD7va5fAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcVXX+x/H3RUBWFUFxgcR9yY0WlwxD0zLLpdTKXTAz\nJ220qZl2wSbN6teizozNlJlZmZmZY2qNTbivY27jkguoqKGICG7Icn5/nAFFEAEvnHu5r+fjcR73\nLN97zufifRzfHL7ne2yGYRgCAAAAYBk3qwsAAAAAXB2hHAAAALAYoRwAAACwGKEcAAAAsBihHAAA\nALAYoRwAAACwmEOH8qNHj6pLly669dZb1bJlS02bNq3Qds8884waN26sNm3a6JdffinnKgEAAICb\n4251AUXx8PDQe++9p7Zt2+rcuXO6/fbb1b17dzVv3jyvzdKlS3XgwAHt379fGzdu1JgxY7RhwwYL\nqwYAAABKxqGvlNeqVUtt27aVJPn5+al58+Y6fvx4vjaLFy/W8OHDJUnt27dXamqqkpKSyr1WAAAA\noLQcOpRfLSEhQb/88ovat2+fb/2xY8cUGhqatxwSEqLExMTyLg8AAAAoNacI5efOnVP//v31wQcf\nyM/Pr8B2wzDyLdtstvIqDQAAALhpDt2nXJIyMzPVr18/DRkyRH379i2wvW7dujp69GjecmJiourW\nrZuvTaNGjXTw4MEyrxUAAACurWHDhjpw4ECJ3+fQodwwDI0cOVItWrTQ+PHjC23Tu3dvzZgxQ48/\n/rg2bNigatWqKTg4OF+bgwcPFriaDjiKmJgYxcTEWF0GUADfTTgyvp9wVKXtseHQoXzt2rWaO3eu\nWrdurfDwcEnS5MmTdeTIEUnS6NGj1bNnTy1dulSNGjWSr6+vPvnkEytLBgAAAErMoUP53XffrZyc\nnBu2mzFjRjlUAwAAAJQNp7jRE6jIIiMjrS4BKBTfTTgyvp+oaGyGC3S2ttls9CkHAABAmStt7uRK\nOQAAAGAxQjkAAABgMYe+0RMAAAAobzk50uXLV6bMzCuvufPXLue+lhahHAAAAE7DMMwAnJFhhuDc\n16vnMzIK317cyTAkT0/Jw6P4r7nzpcWNngAAACgThiFlZUmXLhWccoNzRkbB5Rutd3c3A3Dlylde\nr56/3rbcKTdAX2+qVEkq5TOASp07CeUAAADIxzDMK8YXL5rB+OLFK9O1yxcvXgnQhU02m+TlVXDK\nDctXzxdn2dNTcnPguyIJ5UUglAMAAFdydai+cCH/VNS6q4N3pUqSt7cZir29r0zXW84N0NdO7i7W\nWZpQXgRCOQAAcEaGYV6FPn++6OnCBencuSvz58+bodrHx5y8va/MX29d7rKrhml7IZQXgVAOAAAc\nQVaWGZjT080Qfe7c9edzJw8PMyz7+kp+flfmi5p8fAjVViGUF4FQDgAAysrly1JaWv4pPV06e9Z8\nvXrd5ctmaPb3NwO2n1/++cKWCdfOhVBeBEI5AAAoCcMw+1anpprhOjX1ypSWZq7LDdrZ2VKVKlcm\nf3+palXz9dr13t6lH9UDzoFQXgRCOQAAyJWdbYbrlJQrQfva4H32rNknu2pVqVq1K1PVquZ0ddj2\n8iJo4wpCeREI5QAAuAbDMG90TEkpOJ05Y76mpZnBOiAgf+C+OnhXq2aOJgKUFKG8CIRyAAAqjkuX\npFOnzCk52Xy9OnzbbFL16tefqlVz7HGu4dwI5UUglAMA4DwMw+xCcnXozn09dcp8xHpQkFSjhjkF\nBUmBgVdCt7e31Z8AroxQXgRCOQAAjufCBem336SkJPM1dzp92hzSLzdwX/1ao4Z5wyR9uOGoCOVF\nIJQDAGCNnByzS8nVoTs3hF++LNWqJQUHm6+580FB9OeG8yKUF4FQDgBA2crtcnL0qHTsmJSYaAbv\nkyfNsbZzQ/fVIbxqVa54o+IhlBeBUA4AgP1cviwdP24G79wAnphoPnkyJESqW9d8rVNHqlmTq95w\nLYTyIhDKAQAondRU6ciRK8H72DGzO0pwsBm8rw7h/v5WVwtYj1BeBEI5AAA3dumSdPiwlJAgxceb\nr5mZUr16VwJ4SIgZyCtVsrpawDERyotAKAcAIL+cHPOqd274jo83hx0MDZXCwqT69c0pMJB+30BJ\nEMqLQCgHALi6tDRp/34zfMfHmzdkBgaaATw3hNetyxVw4GYRyotAKAcAuJrcEL5vnzmlp0uNGkkN\nGpghvF49HrIDlAVCeREI5QCAii49Xfr1VzOA//qrdPas1Lix1KSJ1LSpeRWcR8sDZY9QXgRCOQCg\noklPv3Il/NdfpTNnzBDetKkZxENCCOGAFQjlRSCUAwCcnWGYN2Tu2CHt3GnelNmo0ZUQHhpKCAcc\nAaG8CIRyAIAzysiQdu82g/iuXeaTMVu3Nqf69QnhgCMilBeBUA4AcBanT1+5Gn7woHljZqtWZhAP\nCrK6OgA3QigvAqEcAOCocnLMIQp37jTDeFqa1LKlGcJbtJC8vKyuEEBJEMqLQCgHADgSw5AOHZI2\nbpS2bpWqVLnSLSUsjG4pgDMjlBeBUA4AcAS//SZt2mSGcQ8PqX176c476ZYCVCSE8iIQygEAVklL\nk7ZsMYP4mTNSu3ZmGA8J4fH1QEVEKC8CoRwAUJ4yMqRt28wgHh8vtWljBvGmTemaAlR0hPIiEMoB\nAGUtJ8ccvnDjRvOmzUaNzCDepo3k6Wl1dQDKC6G8CIRyAEBZSU+XVq2SVq6UAgPNIH777ZK/v9WV\nAbACobwIhHIAgL0dPSr99JO0fbsZwrt2lerUsboqAFYjlBeBUA4AsIecHLOv+L//bT7mPjJSioiQ\nfH2trgyAoyht7uR2EwAAbuD8eenHH6WXX5ZWrJC6dJHeeEPq0YNAbhU3N7cbTg0aNJAkjRgxQqGh\noRZXbD8xMTFyc6A7hmfPni03NzcdOXLE6lKcmrvVBQAA4KhOnDCvim/ZYj7Y56mnpHr1rK4KkrRh\nw4a8ecMw9PDDD6tt27aKiYnJW1+5cuW8eVsFG3/SkT7PQw89pA0bNqhWrVpWl+LUCOUAAFzFMKRd\nu8wwnpgode4sxcaaT92E42jXrl2+5cqVKysoKKjA+lxl3Y01IyMj3y8BZa00n8cwDGVlZcnDw8Ou\ntQQFBSmIJ2DdNMf52wcAABYyDGnHDunPf5YWLzZHUZkyRerVi0BeUWzbtk0RERHy9fVVkyZN9OGH\nHxZoEx8fr8GDB6tmzZry8vJSeHi4Fi1alK9NbveR//73v7r//vvl7++vxx9/XJLZrebVV1/V22+/\nrVtuuUV+fn566KGHdOrUKZ04cUL9+vVT1apVVa9ePb311lv59pucnKzRo0eradOm8vX11S233KLB\ngwfr+PHjpfq8YWFhGjp0qGbNmqVmzZqpcuXKWrp0qSRp+/bt6t27t6pXry4fHx/dfffdWrNmTYF9\nvP/++woLC5O3t7fat2+vdevWKSwsTFFRUXltCuu+knvsOXPmqEmTJvLx8VHnzp21f/9+paena+TI\nkQoMDFStWrX0/PPPKzs7O99xT506paeeekohISHy8vJS8+bN9Y9//KNUPwdnwZVyAIDL279fWrRI\nunBB6tPHHFvcgXoHwA7S0tI0aNAgTZgwQTExMZo1a5bGjBmjpk2bKjIyUpJ09OhRtW/fXrVq1dL7\n77+vGjVqaN68eerXr58WLVqkXr165dtnnz599MQTT+jFF1/M18d7zpw5at26tT788EP99ttvGj9+\nvIYMGaIzZ86ob9++evrppzV//ny98MILatWqlR544AFJUkpKiipXrqw33nhDwcHBOnHihN555x11\n6tRJe/fuLfGVeJvNpp9//lnbt29XbGysatasqXr16mnr1q2KiIjQ7bffro8++kje3t6aOXOmunXr\npnXr1um2226TJH300Ud69tln9cQTT2jAgAE6cOCABg8erLNnz96w+4zNZtOqVat06NAhvfPOO8rI\nyND48ePVr18/hYSEqGXLlpo/f75WrlypP//5z2rQoIHGjBmT92919913KyMjQ7Gxsapfv76WL1+u\nMWPGKCMjQ2PHji3Rz8FpGC7ART4mAKCEDh82jA8+MIyXXjKM9esNIzvb6opQWmFhYcbQoUML3TZ8\n+HDDZrMZcXFxeesyMjKMwMBA48knn8xbFx0dbdSsWdNISUnJ9/7u3bsbbdu2zVueOHGiYbPZjGnT\nphU4ls1mM5o2bWpkX/VlevbZZw2bzWa88cYbeeuysrKMmjVrGlFRUdf9TFlZWcaRI0cMm81mfPvt\ntwWOfyP16tUzfH19jaSkpHzru3btarRo0cLIzMzMW5ednW00b97c6Nu3b95ySEiI8eCDD+Z778KF\nCw2bzZav7k8++cSw2WzG4cOH8x07MDDQSEtLy1s3bdo0w2azGaNGjcq3z9tuu83o0qVL3vKkSZMM\nLy8v48CBA/najRo1yggKCsr3s3VEpc2ddF8BALicpCTp73+XZswwr4rHxkodOkgONKAF7MzX11f3\n3HNP3rKnp6eaNGmio0eP5q1bvny5evbsqSpVqigrKytvuu+++7R9+3adO3cu3z4ffvjhQo/VvXv3\nfFfOmzZtKkm6//7789ZVqlRJjRo1UmJiYr73/u1vf1ObNm3k7+8vDw8P1fvfncW//vprqT53hw4d\nVLNmzbzlixcvatWqVRowYIAk5X3GnJwc3XvvvVq1apUkKTExUceOHctrl6t3795ydy9eR4uOHTvK\n/6qnaBX2c8hdf+2/Q4cOHRQWFlbg3+H06dPavXt3CX4CzsOhu69ER0fr+++/V82aNbVz584C25OT\nkzVkyBD99ttvysrK0nPPPacRI0aUf6EAAKeQkiItWWI+8Kd7d2n4cKkc782DhQICAgqs8/T01KVL\n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\ns/nWr1q1yrDZbMbcuXPzrf/8888Nm81mbNu2zTAMw/jwww8Nm81mbN68OV+7Nm3aGG5ubsbhw4fz\n1oWFhRlRUVEFjv3666/nrcvKyjJq1KhheHh4GAkJCXnrFy9ebNhsNmPlypWGYRhGenq6UaVKFWPk\nyJH5jhsfH294enoa77//fpGfG6W3Z49hPPecYfzvKwgAgNMqbe6k+4oDSktL05/+9Cc1bNhQXl5e\n8vT01LBhw2QYhvbv3y9JCg8Pl4eHhx577DF98803OnnyZLH3371797wr4pLUsmVLScrrorFz505d\nuHBBAwYMyPe+/v37l+hzPHzNk16WL18uT09PPfLII8rKysqbunfvLklavXq1JGnDhg2qV6+e7rjj\njnzvf+SRR2R+12/sgQceyJuvVKmSGjVqpKZNm6pevXp565s2bSpJSkxMlCStX79e6enpGjRoUL76\nQkJC1LRpU61atapEnx83ZhjSTz9JH38sPfGE1LGj1RUBAGANQrkDioqK0ocffqjx48drxYoV2rJl\ni/7yl79IUl6/8oYNG+qHH35QTk6Ohg4dqtq1a6tjx47FCo7Vr7l7LvcGzNx9nzhxQpJUs2bNfO2u\nXb6R2rVr51s+efKkLl++LF9fX3l6euZNwcHBstlsOn36dN7xCztWcHBwsY8dEBCQb9nT07PQddKV\nz537i023bt3y1efp6aldu3YpJSWl2MfHjWVmSp9+Kq1fL73wgvS/35EAAHBJ9Cl3MJcuXdLixYsV\nGxurcePG5a3fvn17gbaRkZGKjIxUZmam1qxZo9dee00PPvigDh8+XCB4l0RumD558qSaN2+etz4p\nKalE+7m2r3dgYKC8vLy0Zs2aQtvX+d+dfbVr19aePXsKbC/p8UsqMDBQkvTpp5/q1ltvLbDd39+/\nTI/vSs6ckWbOlIKCpOefZxxyAAAI5Q4mIyND2dnZcnfP/08ze/bs677Hw8NDXbp00fPPP6++ffsq\nPj7+pkJ5q1at5Ovrq/nz5+uee+7JW//111+Xep+S2aXkrbfeUmpqqrp27Xrddh07dtTs2bO1efNm\n3XnnnZIkwzD0zTffFPsm09K466675O/vr/3792vo0KFldhxXd/Cg9Pe/S127SvfdJ5XhPykAAE6D\nUG6RZcuWFeiOUa1aNXXr1k0dOnTQ//3f/6l27doKDAzUrFmzdPz48XxtZ86cqdWrV6tnz54KCQlR\n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\nIqIo+wdhfz7Nsc2PAgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(1, 1, figsize=(12,6))\n", + "\n", + "axes.plot(Gamma_vec * kappa / (4*g**2), g2_vec, color=\"blue\", alpha=0.6, label=\"numerical\")\n", + "\n", + "axes.set_xlabel(r'$\\Gamma\\kappa/(4g^2)$', fontsize=18)\n", + "axes.set_ylabel(r'$g^{(2)}(0)$', fontsize=18)\n", + "axes.set_xlim(0, 2)\n", + "axes.text(0.1, 1.1, \"Lasing regime\", fontsize=16)\n", + "axes.text(1.5, 1.8, \"Thermal regime\", fontsize=16);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we see that lasing is suppressed for $\\Gamma\\kappa/(4g^2) > 1$. \n", + "\n", + "\n", + "Let's look at the fock-state distribution at $\\Gamma\\kappa/(4g^2) = 0.5$ (lasing regime) and $\\Gamma\\kappa/(4g^2) = 1.5$ (suppressed regime):" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Case 1: $\\Gamma\\kappa/(4g^2) = 0.5$" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "Gamma = 0.5 * (4*g**2) / kappa" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "c_ops = [sqrt(kappa * (1 + n_th_a)) * a, sqrt(kappa * n_th_a) * a.dag(), sqrt(gamma) * sm, sqrt(Gamma) * sm.dag()]\n", + "\n", + "rho_ss = steadystate(H, c_ops)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nBFkgP2n+LTVbMY7695z2/wcYO/r6+rRv377Q+uXLl+viiy9OfZyxem8GALQxp0WeeeYZZ+HChbXl\n5cuXO3fccYevzbXXXuusXLmytnzCCSc4+/btCx1r+vTpjiS++OKLL774yuVr+vTpI3cD7DBnn322\n8+yzz9aWV6xY4axYsaK2vHDhQmfLli2h/bg388UXX3zxledX1ntzyyq6p556qnbu3Kldu3bp6KOP\n1qpVq7Ry5Upfm/7+ft13331asmSJtmzZoo9//OPWbssvv/zyaJ02AABjjmP0rurv79fll1+um266\nSXv27NHOnTv12c9+NrQP92YAQCu1LOj29PTovvvu08KFC1WpVHT11VfrxBNP1C9+4XbZu/baa/XF\nL35R69ev14wZM3TIIYfowQcfbNXpAgAwpqxevVo33HCD3n77bV100UXq7e3Vhg0bNGfOHF166aWa\nM2eOenp69POf/5yuywCAtlNwnMAgWAAAAAAAOlhHP/Ru48aNmj17tmbOnKk777yz1afTMa666ipN\nnjxZc+fOra1799131dfXp1mzZumCCy7Qe++918IzbH+7d+/WOeeco5NOOkmf/vSnde+990riOmax\nf/9+LViwQPPnz9ecOXP0/e9/XxLXsBGVSkW9vb21yYO4htlMmzZNJ598snp7e2tdcLmGjXn00Ud1\n0kknqVQq6Z///Kdv24oVKzRz5kzNnj1bjz/+eIvOELfeequmTp2q3t5e9fb2auPGja0+pTGLz7Ht\nyXZPwOjKK6t0bNCtVCq6/vrrtXHjRm3fvl0rV67Ujh07Wn1aHWHZsmWhG9sdd9yhvr4+vfTSSzrv\nvPN0xx13tOjsOkO5XNZPf/pTvfDCC9qyZYvuv/9+7dixg+uYwYQJE7Rp0yY999xzev7557Vp0yb9\n7W9/4xo24J577tGcOXNq3Ue5htkUCgVt3rxZ27Zt08DAgCSuYaPmzp2r1atXh54/uX37dq1atUrb\nt2/Xxo0b9fWvf13VarVFZzm2FQoF3XTTTdq2bZu2bdumCy+8sNWnNCbxObZ92e4JGF15ZZWODboD\nAwOaMWOGpk2bpnK5rCVLlmjt2rWtPq2OcNZZZ2nSpEm+devWrdPSpUslSUuXLtWaNWtacWod46ij\njtL8+fMlSYceeqhOPPFE7dmzh+uY0cSJEyVJg4ODqlQqmjRpEtcwozfeeEPr16/XNddcU5swiGuY\nXXAUD9ewMbNnz9asWbNC69euXavLLrtM5XJZ06ZN04wZM/gA2UKMWms9Pse2N/6NtFZeWaVjg+6e\nPXt07LHH1pZ5YH1z3nrrrdqM1pMnT9Zbb73V4jPqHLt27dK2bdu0YMECrmNG1WpV8+fP1+TJk2td\nwbmG2Xzzm9/UT37yExWL9f+dcw2zKRQKOv/883Xqqafql7/8pSSuYd7efPNNTZ06tbbMPbu1fvaz\nn2nevHm6+uqr6ZbfInyObV+2ewJar5H7cstmXW4WMzyOnEKhwPVN6YMPPtDixYt1zz336LDDDvNt\n4zomKxaLeu655/Sf//xHCxcu1KZNm3zbuYbxHnvsMR155JHq7e3V5s2brW24hsmeeuopTZkyRf/6\n17/U19en2bNn+7ZzDf36+vq0b9++0Prly5fXxomnwTUdOVF/Rrfffruuu+463XLLLZKkm2++Wd/6\n1rf061//erRPcczj73/7st0TzjrrrFafFgxp78sdG3SPOeYY7d69u7a8e/du32+Lkc3kyZO1b98+\nHXXUUdq7d6+OPPLIVp9S2xsaGtLixYt15ZVX6pJLLpHEdWzU4YcfrosuukjPPvss1zCDp59+WuvW\nrdP69eu1f/9+/fe//9WVV17JNcxoypQpkqRPfOIT+tKXvqSBgQGuYYwnnngi8z7Be/Ybb7yhY445\nJs/TgiHtn9E111yT6ZcTyA+fY9uX7Z5A0G29Ru7LHdt1+dRTT9XOnTu1a9cuDQ4OatWqVerv72/1\naXWs/v5+Pfzww5Kkhx9+uBbcYOc4jq6++mrNmTNHN954Y2091zG9t99+u9Zl7n//+5+eeOIJ9fb2\ncg0zWL58uXbv3q1XX31VjzzyiM4991z95je/4Rpm8NFHH+n999+XJH344Yd6/PHHNXfuXK5hDswx\nbv39/XrkkUc0ODioV199VTt37mQ20xbZu3dv7fXq1at9s5pi9PA5tj1F3RPQeg3dl50Otn79emfW\nrFnO9OnTneXLl7f6dDrGkiVLnClTpjjlctmZOnWq88ADDzjvvPOOc9555zkzZ850+vr6nH//+9+t\nPs229te//tUpFArOvHnznPnz5zvz5893NmzYwHXM4Pnnn3d6e3udefPmOXPnznV+/OMfO47jcA0b\ntHnzZufiiy92HIdrmMUrr7zizJs3z5k3b55z0kkn1e4lXMPG/PGPf3SmTp3qTJgwwZk8ebJz4YUX\n1rbdfvvtzvTp050TTjjB2bhxYwvPcmy78sornblz5zonn3yys2jRImffvn2tPqUxi8+x7SfqnoDR\nlVdWKTgO04oBAAAAALpHx3ZdBgAAAADAhqALAAAAAOgqBF0AAAAAQFch6AIAAAAAugpBFwAAAADQ\nVQi6AAAAAICuQtAFAAAAAHQVgi4AAACQwebNm1UsFnXXXXe1+lQARCDoAgAAAA0oFAqtPgUAEQi6\nAAAAAICuQtAFAAAAmvDQQw+pWCzqySef1G233aZp06Zp4sSJWrBggZ566ilJbnfnM888U4ceeqiO\nPvpo3XbbbS0+a6C7EXQBAACAHHzve9/TmjVrdOONN+qHP/yhXn31VV144YX6wx/+oMWLF+vzn/+8\n7rrrLs2ePVu33HKLfve737X6lIGu1dPqEwAwcu6991698MILGjdunH70ox/pV7/6lYrFogYGBrR4\n8WJ95StfafUpAgDQNarVqrZs2aKeHvcj9pw5c7Ro0SJdccUV2rp1q0455RRJ0lVXXaXjjjtO999/\nv6644opUx37wwQf1zDPP6JOf/KR27typr371q+rr65MkffjhhzrkkENG5ocCOhRBF+hSO3bs0BFH\nHKFvfOMbOvnkkzV+/HjdfvvtGj9+vNauXaurrrqKoAsAQI6uu+66WsiVpDPPPFOSdMYZZ9RCriSV\ny2WddtppevrppxOP6TiOvva1r2loaEi///3vVSwW9f777+v444/X1q1bNX36dN188826++678/+B\ngA5G0AW61MDAgPr7+/WnP/1JRxxxhG6++WaNHz9ekvTOO++oWGTkAgAAefrUpz7lW540aZIk6fjj\njw+1nTRpkt55553EY959993asGGDdu3aVbt3H3bYYfrMZz6j3/72t1q0aJEvRANw8UkX6FJLly7V\npEmTtGnTJvX19enwww+vbdu0aZPOPvvs1p0cAABdqFQqZVqfZHBwUHfeeaeWLVumQw891LftyCOP\n1Ouvv64HHnhAl19+eUPHB7oZQRfocsFQu3//fj322GN0WwYAoM29+OKLevvtt2tjcU2lUkmPP/64\nLrnkEnppARb8qwC62GuvvaZdu3bpnHPOqa1bs2aNyuWyFi1apE2bNqUaHwQAAPJXKBRit1cqFUnS\nscceG9pWKpV0xhln6Nxzzx2RcwM6HUEX6GJPPvmkpkyZolmzZtXWPf300/ryl7+scrmsdevW6fTT\nT2/hGQIAMHY5jhO7fd68eZo5c6Z27Njh2+eRRx7R66+/rsHBQUlMVOdWAAAAyElEQVTSP/7xjxE9\nT6ATMRkV0MVeeeWV0GMLLr/8cq1YsULf+c53tGzZMro7AQCQg6TqrK190j7FYlGPPfaYfvCDH+j5\n55/XuHHjVK1W1d/fr5UrV+rSSy/Vt7/9bX3hC19o5tSBrlRwkn6VBAAAAABAB6GUAwAAAADoKgRd\nAAAAAEBXIegCAAAAALoKQRcAAAAA0FUIugAAAACArkLQBQAAAAB0FYIuAAAAAKCrEHQBAAAAAF2F\noAsAAAAA6CoEXQAAAABAV/l/OtK274a/KB0AAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(1, 2, figsize=(16,6))\n", + "\n", + "xvec = np.linspace(-10,10,200)\n", + "\n", + "rho_cavity = ptrace(rho_ss, 0)\n", + "W = wigner(rho_cavity, xvec, xvec)\n", + "wlim = abs(W).max()\n", + "axes[1].contourf(xvec, xvec, W, 100, norm=mpl.colors.Normalize(-wlim,wlim), cmap=plt.get_cmap('RdBu'))\n", + "axes[1].set_xlabel(r'Im $\\alpha$', fontsize=18)\n", + "axes[1].set_ylabel(r'Re $\\alpha$', fontsize=18)\n", + "\n", + "axes[0].bar(arange(0, N), real(rho_cavity.diag()), color=\"blue\", alpha=0.6)\n", + "axes[0].set_xlabel(r'$n$', fontsize=18)\n", + "axes[0].set_ylabel(r'Occupation probability', fontsize=18)\n", + "axes[0].set_ylim(0, 1)\n", + "axes[0].set_xlim(0, N);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Case 2: $\\Gamma\\kappa/(4g^2) = 1.5$" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "Gamma = 1.5 * (4*g**2) / kappa" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "c_ops = [sqrt(kappa * (1 + n_th_a)) * a, sqrt(kappa * n_th_a) * a.dag(), sqrt(gamma) * sm, sqrt(Gamma) * sm.dag()]\n", + "\n", + "rho_ss = steadystate(H, c_ops)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nMjej+tKXvqSlS5dq69at2n333fW5z31O55xzTqR5VCsqlYpmzJihBx54QBMnTtRHP/rRumZUF110\nkcaPH68rr7xSmzdv1mGHHab//M//1G677RZ9EzQNAQDkiM+VztGMCgCQp1abUbXUdXn79u360Y9+\npFtuuUVr1qyR67r62Mc+pnPOOUennXaaxowZ09Jgf/azn+nCCy+Ubds6++yzdckll+jmm2+WJC1c\nuFCvv/66zjrrLL388styHEeXXHKJTj/99Po3wS8kAIAc8bnSOYIuACBPXQ26YS+++KJuvfVWLVmy\nRH/4wx80btw4nXrqqTrnnHM0e/bsdk7ZNn4hAQDkic+VzhF0AQB5GrSg69u2bZsWLlyoO++8M9h2\n0EEH6dJLL9Wpp57ayakz4xcSAECe+FzpHEEXAJCnVoNu2x2lfv3rX+uWW27RnXfeqS1btmjvvffW\n2WefrVKppJtvvlmnnXaann76aV155ZXtvgQAAAAAAC1rqaK7detWLV26VLfccosef/xxFQoFfepT\nn9K5556r448/PrhkUKVS0RlnnKHVq1dr8+bNXRu8j7+8AwDyxOdK56joAgDy1LWK7v/8n/9T99xz\nj7Zv3659991X3/rWt/SFL3xBe+21V/1JCwWddNJJ+rd/+7fMAwEAAAAAIA+ZK7qlUkknnXSSzjvv\nPM2bN6/p8S+99JJWr16tM888s9MxNsVf3gEAeeJzpXNUdAEAeepaM6o//vGP2mOPPdoeWDfxCwkA\nIE98rnSOoAsAyFOrQdfMeuDs2bN13333pe7/yU9+oqlTp2Z+YQAAAAAAuiFz0H3ppZf07rvvpu5/\n99139dJLL+UxJgAAAAAA2tb25YXiXnvtNY0ZMyav0wEAgGFsn3320fve9z5ZlqVisah169YN9ZAA\nAAg0DLpr1qzRmjVrgrnQ99xzj1544YW649544w398Ic/1CGHHNKdUQIAgGHFMAytXr1au+2221AP\nBQCAOg2D7i9+8QtdffXVweN77rlH99xzT+Kx06ZN04033pjv6AAAwLBFwy4AwHDVsOvy1q1btWXL\nFknS1KlTdeONN+qkk06KnsAwtMsuu+j9739/d0faAN0xAQB54nOlualTp2r8+PGyLEsLFy7Uueee\nG9lP12UAQJ5a7brcsKI7fvx4jR8/XpK0atUqffjDH9aee+7Z2QgBAMBO75e//KUmTJigP/7xj5o3\nb55mzpypo446aqiHBQCApBaaUc2dO7eLwwAAADuTCRMmSJL22GMPnXLKKVq3bl1d0L3mmmuC+3Pm\nzNGcOXMGdYwAgJ3X2rVrtXbt2rafnzp1+aqrrpJhGLrssstkWVbwuJkrrrii7cG0iylmAIA88bnS\n2LZt22TbtsaNG6f33ntPxx13nK688kodd9xxwTFMXQYA5KnVqcupQdc0vUvsbt++XaVSKXjcjOM4\nmV88L/xCAgDIE58rja1fv16nnHKKJKlSqeiMM87QJZdcEjmGoAsAyFNuQfell16S5F0nL/y4Gf/4\nwcQvJACAPPG50jmCLgAgT7kF3Z0Jv5AAAPLE50rnCLoAgDy1GnSzzUcGAAAAAGAnkdp1+fbbb8/U\nfCpuwYIFHQ0IAAAAAIBONG1G1dLJDEO2bXc8qHZelylmAIC88LnSOaYuAwDy1OrU5dSK7qpVq3IZ\nEAAAAAAAg4lmVAAAxPC50jkqugCAPNGMCgAAAAAwoqVOXV6zZo0Mw9BRRx0lwzC0du3aTCecM2dO\nboMDAAAAAKBVDZtRGYah/v5+lUqlTM2paEYFAOgFfK50jqnLAIA85daM6tZbb5VhGCoUCsFjAAAA\nAACGO5pRAQAQw+dK56joAgDyRDMqAAAAAMCIljp1OYnrurr77rt17733av369ZKkqVOn6uSTT9Zn\nPvOZrgwQAAAA6EW241WnLNMY4pEAvSfz1OX33ntPJ510klatWiVJGj9+vCRp69atkqS5c+fqxz/+\nscaOHduloaZjihkAIE98rnSOqcsYafzQOlgIxxhpujZ1+bLLLtOqVav0la98RX/4wx+0ZcsWbdmy\nRZs2bdJXvvIVrV69WpdeemlbgwYAAAB2BrbjJt5G6jiA4SpzRXfChAk66qijdPfddyfu/8u//Es9\n+OCDeuWVV3IdYBb85R0AkCc+VzpHRRe9YmcPj1R+0Su6VtF9++23deyxx6buP+aYY4JpzAAAAMDO\nqNcqpL32foCsMjejOvDAA/X888+n7n/hhRd00EEH5TIoAAAAYLCMpAAYfq9Ue9HLMgfda665Rqec\ncoqOPvpozZ8/P7Jv2bJl+qd/+ictW7Ys9wECAAAAeetGuB2suJxXPCX0opelrtE966yzZBjR/+Af\ne+wx/eY3v9HMmTM1a9YsSdLTTz+tZ599VgcccIAOO+ww3Xrrrd0fdQxrqQAAeeJzpXOs0cVwlUfA\nHa7/OuQRVQm8GK5aXaObGnRNM/Py3QjHcdp6Xif4hQQAkCc+VzpH0MVw0mm43Vn/Neg0shJ6MZy0\nGnRTpy4PRWAFAAAA8tJJwO0k3HZrzW+rwTM8inYiq/8+CLzYGWVeowsAAADsDNoNmq0+a7CbWKW9\nXpYg2knoJfBiZ0TQBQAAQE9oJ3i28oxOgm2rT20lU8bH1SyQtht6CbzYmbQUdN98803dcsstWrdu\nnbZs2RKZ3uy6rgzD0KpVq3IfJAAAAJCm1QCa9ehWzpt3cbfZ+RplzVaCr39kq4GXsIvhLnPQ3bBh\ng4488ki98sorGj9+vLZu3ar3v//9evPNN+W6rnbffXeNHTu2m2MFAAAAIloJo1mOzHK+dkJtq09p\nFiOTxpCWPbNcRqjVKi/VXQx3mVsrX3755dq6datWrlyp559/XpL0wx/+UG+//bYuueQS7bLLLlq7\ndm3XBgoAAAD4bMfNHHJdNQ6a/rnSzue40Vuj10i7taqd82UZZ7P3Gn7tLFr5OQCDKXPQfeCBB3TO\nOefo2GOPjWwfO3asvvWtb+nAAw/UxRdfnPsAAQAAgLC8A26SRoExa/AMh8pObo3eW6MxZA29aVoN\nvMBwkjnovvHGGzrwwAMlScViUZLUH7o+3rx587RixYqchwcAAAB4slYP2w24acGwUaBsNaBKkpNy\nazbeZq/RbujNK/BS3cVwknmN7h577KE333xTkjRu3DiNHj1a69evD/YPDAxEgi8AAACQl1aquK2e\nI61q2+o4GoXVLLI+P1ypSms8FR9leCWt/5T48tpm625dZV+/y9pdDLXMQffDH/6wfv3rX0uSTNPU\nRz/6Uf3jP/6j5s+fL8dx9P3vf18zZ87s2kABAAAw8gyHgJtY/W34eg12dsAy01/bD79pjaeSuiu3\nE3izdmkm7GKoZQ66J598sq6//nr19/err69PV1xxhY477jjtu+++krzw+6Mf/ahrAwUAAMDI0mnI\nTZuenOX5WcNto1DruvlM4zUMI/W1ksJvo9Cb1F05/FbD2bRZ4M0SdtOeD3Sb4Xbwf+AjjzyipUuX\nyrIs/fmf/7mOPPLIPMeWmWEYuf1DAgAAnyudMwxD21jShA5kXYvbynOT1t42e148WyaFzUb/Xtgd\n/lNiNciIfgCOHB/rwJPUkCcePONnSculaYE1S4wl7KJTY/r6Wvps7ijoDhf8QgIAyBOfK50j6KIT\neYfcVgNus3Cb9O9DWqB1Ovy3xEwIs1JyAI4H32aht53AS9jFUGk16Gaeuhy2bds2bdiwQZK09957\na8yYMe2cBgAAAIhoFnIHK+A2C7fxYJsWaDut6Ka/41ioNaJjNAwj8h4ss/b+4lOb49Oa41Oas0xn\nzrJ2l3W7GEyZLy8kSU899ZROPPFEjR8/Xvvvv7/2339/7brrrjrxxBP129/+tltjBAAAwAiQV8iN\nX0Ynfnmc8GVw4pf3sZ1ayHVdN7jZriI3x3Ujt/h+25UqjuS6nd0qTv15s7x+eOzx91X/nqOXBYp/\nn9MuSZSkWa7n8kMYLJmnLj/xxBM6+uij9d5772nevHmaNWuWJOl3v/udVq5cqbFjx2rNmjX6yEc+\n0tUBJ2GKGQAgT3yudI6py2hVniE37XnhY9Oqt+H/98PV2HjFNrwv6Z8LO+d/Q6yEKczhTeGpzOHp\nzuHt4anN4WnNjaY0N5vO3O5UZiq7aFXX1uh+8pOf1KOPPqpVq1bp0EMPjex7/PHHdcwxx+jwww/X\nypUrWxtxDviFBACQJz5XOkfQRSvaCbnNpio3mqacFHKzBNy0cBsPtWlvJ+s/KynLcutDZujAdkNv\nWuBttH4369pdwi7y1LU1ur/61a904YUX1oVcSTr00EP15S9/Wd/5zncyvzAAAACQR8jtpIqbFHCT\nwm1asK177djjtiq7oaeEw6ztRgOt47q10OnWjrXTTlaNnuH1vLZTC7zhNbxJ63ebrd1NWrfLml0M\nlcxBd/To0ZowYULq/gkTJqivry+XQQEAAKD3DVbIzSPgJoXbxlXd9Pc2kNKhqpjQStk/T1CZdaPh\nN9ozy607xg+9lhEeUzTwhhtXJQXepLDrjY2wi+Er89TlBQsWaPPmzbr//vsT9x9//PHaa6+9dMcd\nd+Q6wCyYYgYAyBOfK51j6jKayTvkNqviJq3DjQfcpKnJfoBtFG7DoTYpxLa7Xje+LjcehP3wmzSF\n2c+O/j4jeJz0fP+52aczN5rKzDRmdEOrU5czd12+4YYb9MYbb+gv/uIvtG7dOr3zzjt655139PDD\nD+vTn/603nzzTd14440tDXb58uWaOXOmpk+fruuuuy7xmNWrV+sjH/mIDjjgAM2dO7el8wMAAGD4\nGaqQG++gHO9YXOt07Mp2XQ04btDB2d9nu/4+R47rakfF0YDtasB2tb3iBPu3V5zg5u/fUXEy3cLn\n82/hc4bP51TH4r+uP05/3PHt/nv1voe1gB/u1Bzv0Jz0vQ1/z+M/zqSfb7N4Qjdm5C21omuaZuQv\n2ln+um0YhmzbbniMz7ZtzZgxQytXrtSkSZN0+OGH66677gq6OUvSW2+9pf/+3/+77r//fk2ePFmv\nv/66dt9998TX5S/vAIC88LnSOSq6SDMYIbfRVOW0Kq4fYsPnr6/qel/9qm24Uutvi09ZHmjwftOu\nSRtWNJOruOHqrhXbFq/0hqu8aRXeVqq7VHYxFHJrRrVgwYKWX9wwsv+HuW7dOk2bNk377LOPJOm0\n007TsmXLIkF36dKl+vSnP63JkydLUmLIBQAAwM5hMENuKwHXe+w2DLjxcJsUbP1QWz/mxu/bSVmz\naxpG5FxeCHRVNA3tqNTW7g7IVdEyZFfcapB1o0G4Gi+9b4kb2VYrUcXW78p/L9FmVY3W7eaxZhfI\nS2rQXbJkSVdfeNOmTZoyZUrwePLkyXr44Ycjxzz//PMaGBjQMccco3feeUdf/epX9bnPfa6r4wIA\nAMDgazfkNpuqLCWH3KQ1uNHQW1+9jYfbeLBNCr1p76UZP9T6iqYhx3Yj4TcefE3DkCz/BaWkwFvr\n3FwfeP2GVabhHRdvVjUYYZfmVMhL5q7LectS/R0YGNDjjz+uBx54QNu2bdMRRxyhj33sY5o+ffog\njBAAAAB5aRT0uh1ym01TblbBDQfctHCbVM0Nh91mVd0406n9rlw04+G2Pvj6oddxjUiVNy3w1qZ3\ne1Vg141Wd7OGXX9MhF0MNy0H3VWrVunee+/V+vXrJUlTp07VKaecomOOOaal80yaNEkbN24MHm/c\nuDGYouybMmWKdt99d/X19amvr09z5szRr3/968Sgu2jRouD+3LlzaVwFAMhs9erVWr169VAPA+hZ\nrVYzuxVy06YpNwq44SCbFG79bQOxfVK0A3MrQdc0otVcJxRS/QBsm/6UYiMSeqvvSkXT0ICt1MCb\nNp3ZMPw/CNSmMjcKu2Gtht1GCLvoVObLCzmOowULFmjp0qXeE6v/I/lPP+OMM3THHXdkXqdbqVQ0\nY8YMPfDAA5o4caI++tGP1jWjeuaZZ/TlL39Z999/v3bs2KHZs2frX//1X/XhD384+iZoGgIAyBGf\nK52jGRXCWqnm5hFym01VbjRNOamCGw644cptPNzWTW0OXdMoZRluqvBlgIrVjlDxRlTBY9OIVHqD\nxlLVEBx+nmUYkedbhpHarCrcqCqtSVUrDapabU5F0EVYbs2o4q6//notXbpUf/mXf6nLLrtMM2fO\nlOSF0W9/+9u68847dfDBB+vrX/96thcuFLR48WIdf/zxsm1bZ599tmbNmqWbb75ZkrRw4ULNnDlT\nJ5xwgg466CCZpqlzzz23LuQCAABg+Gp1ynJYWuOpYH/wGtVjYiG30VTleBU33GQqLeCGq7eOm7Bm\ntzoQ/3UHnFDQbWuNriLn88Om49aCb9EytMN2ZTpGMMXZD7hyFHk8YEuyFDStKlbX88aru+GpzP66\n3XCTqnbX7DKFGYMpc0V3//331+TJk3X//ffX7XNdVyeeeKI2btyop556KvdBNsNf3gEAeeJzpXNU\ndCF1ti63ne7KrYTcpCpuvGIbDrjh6m1kSrPt1AVbO3QOX7kSvuhRc6VCbWKwFZqmLElF09tnGdFq\nb9Ey6qq8fkU3XvENV3fDlyMyjFow9R8nXYIoz8ouVV1k0bWK7osvvqgvfvGLifsMw9Cf/dmfZa7m\nAgAAAGFpoTiPkBtfj9usitss4MbDbTzYlitOw5Cb9l7Doa6/bAdh19/uP7bNWhMov2GUN0YzCLED\nTu21LNNQ0Q2HYAXV3aS1u468YGq7rtepWdGOzP73vFllN038GKq66IbMQXfMmDF69dVXU/dv3rxZ\nY8eOzWVQAAAA2LnlNWU5fr48Q26zacrhKcrhgBuu3NqOGwTZ+H2pPuRWmkxhLoSnLMeuoRvvvFwq\nmLJNf2qyKbviVAOpF3idULVW8gKu/w30w264WVV4KnOjsNusQZUfThs1p4oj7CJvmYPunDlz9N3v\nflef+cxndMABB0T2PfXUU/rud7+ro48+OvcBAgAAoHe0M2W5UcitPa92v52QmzXghqu3fuU2KehW\nEoKu7TaL+B6/IdS2UFW3YBpBldcPfX4ADAdepQVex5DtT2d2DdmOUbd2N4+wG9fKel0gT5nX6P7n\nf/6njjjiCA0MDGj+/Pnaf//9JUm//e1v9eMf/1ilUkkPPfSQDjrooK4OOAlrqQAAeeJzpXOs0R3Z\n8uiy3GzKcqNLCHUz5MYDbjzcBqHXdSPvrX76cvSxZUZTYnzash9+SwUzqPr6oTf+1a/w+mt4w+t3\nk9bupq3bzbJmN9yNOct63Xi2Zb0usmp1jW7moCtJjz76qL761a/qP/7jPyLbjzzySP3f//t/ddhh\nh2UfaY74hQQAkCc+VzpH0B3Zsqy3TTo2azW3Wcj1z9VKyN1ecdoKuH649V83WuH1voZDbitTl2th\n1wweW6ZRF3pbCbyjCmbbYTd+6aFWmlPRmAqd6mrQ9b322mtav369JGnffffVnnvu2eopcsUvJACA\nPPG50jmC7sjVbjW31SnL8XW5SdfJbRZyd9hOahV3u5094Nb21YJt4tTljJcYsmJhN1rBrQ+9jQJv\nqWCmVndHV0Nvq2HXCCq86WGXqi7y1pWuy++8847Gjx+vq666St/4xje05557Dnm4BQAAwM4j66+n\nacelrcu1Q0/oNOTuqNh1Vdz+sp0p4MbDbbwZlRsLubYdm7ocW+BqhNbhSl7A885vq2Aash0v9JYK\npreG1vD2F6pNq/pKVq2ybNbWwxYtUwPVtbjbK45UMBObVKWt2ZW89bp+2E3qxCw17sLcrDEVkIdM\nQXfcuHHaddddCbcAAABIlbViGT82S5dlKXnKsrc9/5DbX7YjVdxtfuBNCbjx9bqu4wZhNhxynZTv\nkV19nhmugJqGKgO2LMuUEWtG5YVaJzHw+qxQ6JWk7fKmY48utBZ2RxWMoCFVOOz6zan8n0lwP0MX\n5vjPOuvlhoCsMnddPvbYY7VmzRotXLiwm+MBAABAj8mrmispVsGtbz4VeV7KmtxGIbdccYLQ6ldz\n/SBbtp2GAdcPt36w9UOtY0cfN+OHXbOaHF3HDSq8/n0/HMYDb1/J0rayHVR3fZZpVAOvI1WyhV0/\nboartmGuW70Mr5Kruo20W9WlWzOyyrxGd/369Tr66KN15pln6utf/7re9773dXtsmbGWCgCQJz5X\nOsca3ZGn22tz49XcpOvlJlVzd1Scho2nkkJuuJq7rWxHqrj95UrDgOs4rhzbrYXcaqU2XIH2t8WZ\nhdr0ZT84mgUzEnxN05BhGkGVN7wed0zJCqq7lmmor2gFa3f7SlYQdv0mVaMLtTW7oywzsk43vK/Z\net14F+asjanaXatL0B2ZutaMat9999W7776rN954Q4ZhaI899tCYMWOC/f5fb1588cXWR90hfiEB\nAOSJz5XOEXRHnk6DbtrlhJo1oMoyZTkItqGpy62EXG9brYrrV3rTAq5TfT0pFHRj1d00fhU3CLfV\n8GsaRhB6kwJvX8mKNKXqKxU6CrtFy2ypOVUrjanowIx2dKUZlSTtvffeTT/4s0xTAAAAnXnvvff0\njW98Q4ceeqhOP/10mdUurI8++qjefvttHXvssUM8QqAmazU3vj9pba73nGiX5STxKcuS6kKuf56s\nIXdbqCkCxCfEAAAgAElEQVTVjrLdMOA6FSfYLtVCbrwhVRLHqf0+bZqGzOpzTNOQWZ1CHA68/lTm\nfsWn9VbUVyqof8COrNvtK1nqL9vBNGbLrjWoMo3a+Pz7/npdq5BlOnLyFOesa3XjWKuLTrR1eaHh\nhr+8AwDytLN8rjz55JO69dZbdfLJJwfh9q/+6q/093//90M8Miq6I023pi13Us2NT1neXn3s+PtC\nlxDyA65fqU0Luf1lO6ji2hWnYcB1HDcItklNqRrx1+P61VpJkUquWa3C+oG3UDSD6u6oarV2TLXC\n66/btQxvm1/59au6owtWcOmhUdXzhi871OoU5nhVt1vX1aWiO/J0raILAACGj9///vdatmyZ3nvv\nPX3+85/XEUccoXK5rLfffnuohwa0LG1trtT4ckJx4SnL/vn8qm64+dSA7XUf9i8h1ErIrQzYQZit\nlO3UgBtuSuV3VA6/Fzu2TtcKrc/1Z0m6Be94P8Q6jhFUef0Kb6FoqTLgBFOed5SlUaGGVGNKku14\n84f9ade+vpKl7RVbowuWZDvVQFv7ORRNrxIe7sJcbFJjjVd14x2YfZ1Wa2lKhWZaDrqbNm3Sj3/8\nY61fv16SNHXqVP3Zn/2ZJk2alPvgAABAvRUrVuizn/2sDjvsMO255576xCc+Icuy9PLLL+vuu+8e\n6uEBgVanLaeJh9u0am7t3PVTliXVTVkOB1x//W2WkFsZcIIqbqVsJwZcu+LUGmhVHLmOHXkPTqUc\nfU9OKbhvmFb1fVaDrmHILbh1gbcgqSKvilqoTkX2w7VfCfY6L9emMfcVrWB6tt/EasBxJNOs/iEg\nPG3ZCL53o6pBesB2U6+tG77ckD/++NJGAioGS0tB9+qrr9Y111yjSqUS2X7BBRfo0ksv1aJFi/Ic\nGwAASPAv//IvWr9+vcaNGxfZ/sMf/lB/+MMftPvuuw/RyIDOhTstR7Y3mbKYVs2VFFRzvSDnBCE3\nfCmhiuOqf8CuVnij63aTQm64smtXnLqAGw63fqh17VrYrQu6oX2GVQ26TikSesOBN6jkOq4KJUuV\nsi2zYKpQNFUZsFWoBtpt1QquZToqFczgOr9jStHA61VtHY0qWNXvmxFUcy0ZQQjOslZXSr6ubprw\npYa4pi7y0uA/uajFixdr0aJF+shHPqKlS5fqiSee0BNPPKE777xThxxyiK6++mrddNNN3RwrAACQ\nNH369LqQK0mf+cxndN999w3BiDCSNVqfm0V82nJkXyzcNlqb60uq5jaashwPvP79bdV1u41CbmXA\nCUJupWyrMlC9lQdkl/vlVMqyd/TXbuXazamUg5vr2JF98ee4ji27+rp2tduzf9+fQl0ZsKtj86ZR\n27bjNc3yQ3y54r1Ht/Ye/ffsXVfYCS7dNGC7kUq4f91h72fghirj9T8z/xxJ4hdVGv6dELAzy1zR\nvemmm3T44YfrwQcfVLFYDLYffPDB+vSnP62Pf/zjWrx4sS644IKuDBQAAHhefvllOY4TdFv2GYZR\ntw0YKo2mLbeiydV4QsfVqrmSItXc6ONooA1PWQ5fJzfcXTkt5IYDZ7iK61TKcm07CLGSgq92rJIb\nZxVKch1bhmnJLvfLMC25ti3DsmQWSqoMhKYEB7Odzdp7rDhyTEN+rCxXvHpoX8mS7TiR9br+z8Sv\n6vpdmONVXX/asr8tzHUVmb4cb7rczenLTINGI5k/DV9++WWdfvrpkZDrK5VKOv3007Vhw4ZcBwcA\nAOodccQROv300/Xuu+/W7SuXG/8SDQwHzTJv0rTltMDrxAJuvBIpqTad2VVkn1/trFU2neBxuVqp\nDborNwm5fhU3XIn1g26l3B/cItXa2C1+rOvYtWpv6Jjaa9qRMfrNsfx1w261Ih0O9fHKdbiq63+P\nkv5IEP5eJlVyE3+OlGwxhDJXdKdMmaJ33nkndf+7776rD37wg7kMCgAApDvrrLO0atUq7bPPPjrr\nrLM0b948TZkyRU8//bSeeuqpoR4ekFk8B6V1W65tq5+2HHm+Gw28/rbw2lxJkZAnKXE6rx8Sg0sI\nubVr5iaF3HgV1wuk3n1noLpG10leo2sWvNKsvcO7JJdhWjKLJVWqFV2rut9/jreGt09WwVSlbEcq\nu07FkQqmN9bqFGZLZhDqbcfrf2y7bmJV11+rG+/APMqKVnfDTakK8Yqt6/10k7ovp2GdLvKWOehe\ncMEFuu666/SFL3xBEydOjOzbtGmTvve97+niiy/OfYAAAKDeHXfcoRtuuEHXXXedrr/+ekne2t2f\n/OQnQzwyoHWdrvNt1ISqdkzttexYwAtXc4Nt1SnLwXVyq1VTO1TpjYfc2nra+oAbDrauEy1Z2+Xt\nkiSjuvTALJRk7+gPAq9dKUfCrqmS7HK//LDrOq5sOTJMQ45Tnb5sGHJMQ6bp7StXDFmmoYJpyDId\n9ZUslStO9bFRndrsrdW1LLNumrLjukFTqk6mL8cvMwR0S+ag+773vU8f+MAHNGvWLJ1xxhmaNWuW\nJOl3v/ud7rzzTu23334aP3687rjjjsjzFixYkO+IAQCADMPQ1772NV1wwQV65plnZNu2Dj74YNbo\nYlB1GlCbnj/D6QdSDgpPtR2ozoX2p+z6wmtzg+puvJpbvYxQuELqOm6wJjdeyQ2H3HDA9cNtvNty\nnFkoyS5vl2GakcDrr9stlPqCsOu9nvfvgR94HTtUya6O2TINLwyHqrq2Y8qyjKCqa8f+KFCsfu9M\no1ZdtR1XRdPwvucZrqnbiF+1pVqLbjHcpHkhCdr54DQMQ7ZtNz+wQ4ZhJE5vAQCgHXyudM4wDG3r\n7x/qYaDLGgXdtGZU4afEOy47qq3Pdavrcv3qbLzjciXUTdmv6O6wveps+OuA7WpHxdZ2u3bdXP+2\nrWwH183tL1e0rbrdn5YcbkCV1GHZdWzZO6JrceMhNx5wHafx78Zm9XJCZqEUqfD61d1CqU+GaXlT\nmkf1ySyUVCgVZVSvpVsoWt41doumCkWrus27P6pkyTINjSlZ6isV1Fey1Fe0qo+toLI7umDJMrym\nVKMKpoqmodEFU6ZR+1q0DFmGoVEFU5bhVXFNQ8F9y1AwddkyqmG8Gif8VOEHaD/ohvtKxZtMpYVh\nmlGNHGP6+lr6bM5c0V21alVbAwIAAMDIklfH5eD51ZArKVifG+cH4rRuy/444mMJT1v2q7nx8yZV\nc/0gG16TmxRy4wHXbVIECurNlXKwdtep3ncGyrJDa3Zd25Yjb1uhaAWVaD8xxsdernhBNiw+fdn7\n3nnTl2vfv9r63PA6XX+/FZ+rnKLZOt120HkZaTIH3blz53ZxGAAAABjJ4tdYTZLW7Tdt+nLtebHH\n/hTelPNFpi1X1+YGz614lV2pFlr9Kcv+/aSQ6x/bdOpytbOUI0XCbm1s3mv5U5gtq88L2a6XIG27\ntlY3ninTpi/HvzdWKCgn1VLj223XrWtI5R9nZgzBQN5YyAMAAFq2fPlyzZw5U9OnT9d111031MNB\nj2l36UDaZYX8beH1ub66S+/Er23kjylW7XUq0U7K4eZTYUkhN1wB9m9157VtObHQnNTB2T93OIBL\nqgvq8Up1XNI6XV9Sdbzu+xP/Y0IbP8IuL/nGCEPQBQAALbFtW1/+8pe1fPly/e53v9Ndd92lp59+\neqiHhZ1MXpmm2TVdB2LBNSnsxgXdlqtTf8P8actSLZSmVXPTQm6ScOANV339sBs/Nvw12tG5eaj1\nlStOcJmhViVV0Z3qGuo8WhzEp5iTgdEqgi4AAGjJunXrNG3aNO2zzz4qFos67bTTtGzZsqEeFnZS\n3e7cnCRL2A3z17iGhactN31+QshNq+hG7tvh7U4k0PrhOhJyMyTM+DWEkwzFzwTIG0EXAICd0I4d\nO7Rp0ybt2LFj0F9706ZNmjJlSvB48uTJ2rRp06CPA+hEq2FXUmRqcFzStOU0rYTjdp5bd65QQ6pW\nNVv/DAxXmZtRAQCAoffYY4/p61//uh588EE5jqMVK1bo2GOP1ebNm/XZz35Wl156qT75yU92dQxG\nxuYy11xzTXB/zpw5mjNnTreGBADoMWvXrtXatWvbfj5BFwCAncSTTz6pOXPmaPfdd9eCBQt02223\nBfv22msv9ff36/bbb+960J00aZI2btwYPN64caMmT55cd9zll1/e1XEAAHpX/A+kf/utb7X0fKYu\nAwCwk7jiiis0YcIE/fa3v03sdPyJT3xC69at6/o4/uRP/kTPP/+8XnrpJZXLZf3rv/6r5s+f3/XX\nBfJUKrT+a7AVeo5hRa9HaxZL8cNTGabV8LGkussKNTq2GdM0ZJqGLMts+X0XLS4PhJ1TSxXdhx56\nSIsXL9YLL7ygN954I7Lg3XVdGYahF198MfdBAgAA6f/9v/+nv/mbv9G4ceMS1+Z+8IMfHJS1soVC\nQYsXL9bxxx8v27Z19tlna9asWV1/XfQmyzQGvflRqWCqUs6+1tUPiZWE9bHh4JkWQs1CSU6lLMO0\ngjW2acdGzmdZMk1LZqEkwzQj4deq3g9vMwxDhtk8mJYKZnBLYmU4R1oAtrp03VziNlqVOejecccd\nOvPMM1UqlbTffvtFmlD4sq7ZAQAArdu+fbt23XXX1P1vv/32oI3lxBNP1Iknnjhor4feYyifS8ZY\nhqGBBmcqWmakiVSpYKq/Scj1K6Cm4X11Qg2ZvDDphVGzUJJd7pdVKKlS7g+2OZWyF0ArZTnyuieH\nw65U31QqHHDNQqmuYhzsK5aCY8PjiFSbTUNmxkqsZRgqJATbdgq5/mnyiARZwjbQSOag+61vfUsz\nZszQAw88oIkTJ3ZzTAAAIMHUqVP12GOPpe7/xS9+oQ9/+MODOCKgOwzDyHSpnDirGkot09CA46po\nGdpRcYN9SSG3VDBlO6Yqjiu7eg3a5MpttFpqFkqy7f6gSmuYlsxiKdJ9OS3seudLn67sh9x4NTep\nehwOxFbBlGWZofOZ3s0ygvGnBUgrYZ9ZTazF6nb/sRlLspZh1IXbToIykIfMk/Q3bNig888/n5AL\nAMAQOeOMM3THHXdoxYoVkVlUruvq+uuv189+9jN97nOfG8IRAu3L8ktp2rTYZutI47st06tipp3P\nr4iGg6IkWZbphcmCKcO0vKnF1QBqhaYQ++E0eFw91j8+7SY1Drl+NdfyH1efZ5hW5N+EcEU6ScE0\nZJlmEP7j35skxZTtaa+RtM/qQncgKr9Ik7miO2nSJJXL2a8PBgAA8vW1r31NK1as0PHHHx+sib3o\noov02muv6dVXX9Vxxx2nL37xi0M8SqB+WnKn63AtQ7Ilua5X9XOkunnPXqhyg69F09AO242EraSq\npVUNfQXTkeVXbasF3fD0ZbP6HgzTCEJluKorKVLVjUxhlqRqJbfZlWzN0HTkZiHXD8W18G1EQnrw\nHkKNqJLW5sa3FU1TxWoqjYfVcODN0qiKXlYYKpn/rnL++efrzjvvVKVS6eZ4AABAilGjRunnP/+5\nrr/+eo0ePVqjR4/Ws88+qz322EN///d/r5/85CeyUtb1AcNFswJcvOqXVjG0jPqKpR/C4lNtvW21\nEycFvvA2yzJlRqYp16b/NqvqhkOpWSjJKo0OAqtZKHmV2pRbodQXqtKmh9z46/pNqPxx+2OPT1sO\nKxXMuvW5pYIZ+UOAH2T9beF9nTadohKLbjPcjAsgfvGLX+jSSy9VuVzWF7/4RU2dOjXxw3QoLgbf\n7joOAACS8LnSOcMwtK2/f6iHgUGQVqmNbw0f5991Y/uc4LGC/wdtV3JcV7brVXRt15UTue9qe8XR\ngF2777iuBpza/R0VxzvGcVSuOOov2+ov2ypXHG0r2yrbjvrLFe9+dX9lwJZdcVQZcORUHFUGbO++\n43r3y7Zc15VdcWSX++XatpxKWa5jy3Vs2dX7zkA5aDzlr8+VJNeJ1nYjU539acwpIdcslGSN6pNh\nWioULVkFU4WiJcM0VCiaKpQsmYahQsnyHhctjSpZskxDY0qW+koF9ZUs9RUtFUzDu1+9Waah0Zap\nUQVLRcvQKMsLv/7XomloVDUkFy3vjw3+Gl3TqK3XtQxV99Ua1lpmrcrmB91w3A1n33gQTovFBOaR\nY0xfX0ufzZmnLn/iE58I7p977rmJxxiGIdvO3qodAADk5xe/+IW++c1vatWqVUM9FKAlnU9tNiRL\n2lHxGlH5c5vD05ctQxpQbfqyH5BKBVO26wbTl1Uwg6ZUruN61dGCKdN1ZVbHaFmmVJIqZVtWwZTr\nlOSoLFO1ZlNWoSS7Ug6ur+sMlGWV+uq6LccFnZRD3ZXTQm7dlOVwt+iEam6kam3Ub5OSpy2Hpyun\nNaKKh1xgqGUOurfeems3xwEAABp49dVXtWHDBk2cOLHuEn8PPPCArrrqKj344IMyzS50ewG6JL6W\n11Stqps0s8LLs96zHHn3ndAx/vpcyQtnthNas2uZsl3Jduxqp2Wvy7IqjizDCLovq1Jbq+tXSCsD\nTlAhrZRtOY4hS7WwWygVZZuW7HJ/JOwWqsHWrpRljYqG3HB3ZklBIJaUGnCj06TDVVxLZnWsfgOt\nQtGMrM0NGnCZtenJhVjot0wjCKlJ05bj63PzbETVTjUXaCRz0D3zzDO7OAwAAJCkUqno7LPP1j//\n8z9L8n75P+mkk/TDH/5Qr732ms455xz9/Oc/l2VZOuOMM3TZZZcN8YiB5kyjNn05iWV605drx3th\n1U54jmkYKlqSXakFXEmJlxmyjFr1OK2qWyoocqkhW45MqxZyzVD4DYdd7zq2Xpg1LCuYyizVAq8k\n2X7Fd1Rf/fsuRMOuH3AlRUKuP105HHL9BlTBYzN6SaExJStSzY1Xcr0gm1zJjax1ttK7Vde9HxIq\nhlDmoAsAAAbfd77zHf3zP/+zJk+erNmzZ+v3v/+9/v3f/12XXnqp7r77bm3atEkLFizQN77xDX3o\nQx8a6uECgbw6L1uGEgNu/XG16cuSUrsvF01TtummVnXLFQUdmEeVLO0oS2513GbBVEFSZcCuC7uu\n41ar0KZs/9q61cArqeH1c8OCqcsJAdcqmDIMIzHk+uty/cf+/sh05dAlhcLVXL/iaxlS0TJra29D\nVdxi7HJFjdbmRt5P+Dn+zyphfW47WJ+LRloKuu+++67+7u/+Tvfee6/Wr18vybt4/SmnnKK//uu/\n1tixY7sySAAARqqlS5fqgAMO0K9+9SuNGTNGkvSlL31JN9xwg3bbbTc9+OCDOuKII4Z4lBjJOl1f\n6wfipPPEpy/7lxmKT1/21AJu0fQaXAUVScer+jquVyqOTNWtBr1K6LVtx4tk28p2EBiDcCtFwq5j\ne5ccqgx4VV274lSru7XA61TKsiyvgus26WcTXEc31JAqHnAtywzW5AbTlatTq03LO86fstxXsoIp\ny30lK+i0HA3Ajau5/vfLr+Y2u6zQYFw/F2gmc9flN998Ux//+Mf1zDPPaI899tD06dMlSc8995xe\nf/11zZw5Uw8++KB22223rg44Cd0xAQB5Gk6fK+PGjdOVV16pr3/968G23/zmNzr44IN13XXX6a/+\n6q+GcHTp6Lo8snTSeTl8XFr3Zb+i26z78oDtyq52WR6oVmt32I5sx+vCvKPahTncgTnchbniuOof\nsGU7bl0XZrfabdnruux1YnZct9qR2evG7DqubNvxvla8d+F3ZpbUtBGVFF6f66XDtIBrWtWv4enK\noZAb77JcKpgqVcPvmFCH5XCn5aJlalQ1NI8umEEVd3R1WzjoFk0zUs31xhrtthyMvxp00yq67a7P\npaI7snSt6/IVV1yhZ599VosXL9bChQuDSwtVKhX90z/9ky644AJdeeWVuummm1ofNQAASPTee+9p\nwoQJkW0f+MAHJEkHHXTQUAwJyKzR9OVm63TD4tOXk5pSeaJVXUkqut4+f63ugF2dXhubwixJ/WXb\nC22mZJmmxtSWzKq/bKtQtGRXFw87puGFXnm/UDuOG1R3XccNOh37U5qr76TpL+rBpXj8oBsKuJLq\nqrhmwQy2hacrx9flhkNufMqy32nZrF6buFk1N6kJVTjkxt+LxLRlDL7MQfe+++7T2WefrS9+8YvR\nExQKOv/88/XEE09o2bJlBF0AAHJmxH6p9B8Xi8WhGA6Qu/j05bTuy42aUknVTsHe3GYN2JLk1qYy\nm4YGHKVOYQ4H3m1lW30lS/1lRcKu7bjaUW2WbJpeZbdQtOQYRlDdDQdeyQu64YDsNkn3/vMsqxZ0\n/Wqt97r1VVy/8ZQfcv3pyt79Qt263PiUZT+gepXa2tpc/2uzSwrFhWc2t9JtGchT5qC7efNmHXro\noan7P/KRj2jJkiV5jAkAAIT89Kc/1auvvho8fu+99yRJ//Zv/6Ynn3yy7viLLrpo0MYGSJ2v000/\nb637clJTKsuor+omdWCWU6sADjh+qDOr53OqodYLt7542C2YhraVbY0qWSpXjNoaXccNqrvhwCvV\nqrxSLcBK6WE3fIzpV1VDU5QlJVZx/YpvOOT605Ut01Bf0d9WC8KWaWh0waprQOV/3/z78SnLjaq5\n0W0JAbhJquWyQshT5jW6U6ZM0Yknnqjvf//7ifsXLlyon/70p9q4cWOuA8xiOK2lAgDs/IbT50o7\n18V1HKf5QV3GGt2Rp1HQzbJW103Y76gWdNtZqztgu8GaXMd1I+t2w/vC63W99bne2txtZVu26wZr\ndssVRxXHjazb9dfk+qHWcUJBNxZ6w5xQajdjKTEIuQnh1j/WX4vrB1y/UutNTY5OV04KuUnrcv0q\n7ijLjFRzi1ZtnW5SNbfdtbnee6vdzxp0mbY8MnVtje78+fP1ve99T4ceeqjOO++84IPXtm394Ac/\n0C233KKFCxe2PmIAAJBq1apVQz0EYFDE1/P6GlV109bqFi1FpjBbpiE5Ctbt+l2Yw+t1/d+KyxUn\nUtn1G1R5U4Ad2aE/JNmOq3LFCAKvaXpBV9VuzN59KxJ8m4lcwqcabiVFpihLiqzF9cOsfwkhv7ty\neE1uWsgNr8tNmrLc7Lq5zdbm+pLCaaOQC3Qqc0X39ddf15FHHqkXXnhBe+65p2bMmCFJeuaZZ/TH\nP/5R06dP1y9/+UvtvvvuXR1wkuH0l3cAwM6Pz5XOUdEdmbJ2X44fm0dV1z9PuLK7vVKr3PrV3FoV\nt1b93VGxZbuqq+z6lVu/imu7XrXXrh4XbK9+9ackh6u8UrR6G6/shpmhsBdekyupbopyUsCtXQ+3\n1oiqWcgdVe2uHA63SV2W066bKw1uNTfpWIwMrVZ0MwddSdq6dWvD6+i+733va33EOTAMQ8cff17d\n9gkTxuq2224YghEBAHZmBN3OEXRHpk6nL4ePS7vUkORVdZ3Q/axTmLOGXX/6sh0LsuGpzN72aOD1\nxx0PvVL9utxw4DXjIS/0ONxxOUvADe/rC1Vz42ty/SAbn6bsT11uFnKl+mquZYS6Rpv1IVfKdkmh\n8HFxhNyRq6tBd7gyDEPnnVf/NjZsWKjly28eghEBAHZmBN3OEXRHrsGo6kq1sOsXS/MIu+E1u7bj\nRoKuv243XN2NB15JiaE3+B5kaNgVDrml6hpdP6xKyhRwrdjXUsEMuis3quTGq7rhkCuprprrV3D9\nam445EpUc5Gvrq3RBQAAANqVtgY363H+Wt1GlxtK68IcXq/rr9OVI40umFLFCS47NGB72yxbsk2v\nuivV1u363aULphEEWm+bqb6SgtBbqIaxiuOqr2RFwm6jqreVEHL9c9VCb/aAawVBthZy442nkkJu\nMd5CWc1DbvjnJLUfchsh5KIVqUF3zZo1MgxDRx11lAzD0Nq1azOdcM6cObkNDgAAADuXVi41FD7W\nNGpVXT/sxq+rm9aYyr98rl/sqfaeyhx2rWr1VnK8/f4LVZtU+eOIfw0H3tr7qYVeSbIdR2NiYTeL\ncLD1HwfX/Y0FXP+14yE3aapylpCbZV2u931u3ICqHURZ5CU16B5zzDEyDEP9/f0qlUqaO3du05MZ\nhiHbtvMcHwAAAHpEs6puOOz6ksOuV9X1KonetWv9sGvJCJpT1boyNw67/v1RMmUa3hRms3pN3HB1\nNy3w+kE2HnolyXa8k4fDbyN+cA2fw586XD99OTnoxqu4jULu6NAljLKsy/XGk74uV6Kai+EhNeje\neuutMgxDhUIheAwAAAA0025VN6xZKPanMKeFXclbr9tq2JUUmcocru4WUwJv+H2Eq7eV6j7/ccky\ngxCe+L2IVUWTpi9bsfvhoNtKwE27hFCrzaeCsaeE3LBmWZUoizylBt0zzzyz4WMAAACgVUkBtt0p\nzPH1uk5dJTdb2C2ahgYc16vmmm4wlTle3R1ICbzx91Cr5nqPO5m6HD5fUtD19ycFXP/7knWqsn98\no5AbjKl6v9GlhPyfYRIaUKHbzOaHeK6++mr99re/Td3/1FNP6eqrr27pxZcvX66ZM2dq+vTpuu66\n61KPe+SRR1QoFHTPPfe0dH4AAAAMjUbhpFlsSXqqf75amKqeK9QMKXotVy+kmXWPa+FudKG+OVM8\nGI6qNnDybpZGF0zvZpkaXbCCrsZ9JSu32/gxxeD+LqMLddv6qtfIHV2wvJtlVt+LFanijqpuH10w\nq5cMMlNDrmk0r+TWf48b/yTzmLIMtCtz1+VFixZp2rRpOuCAAxL3/+Y3v9FVV12lK664ItP5bNvW\nl7/8Za1cuVKTJk3S4Ycfrvnz52vWrFl1x1188cU64YQTuNQDAABAj8oyhblRZdeqdl8Od2IOV3al\nhAZVUuJUZktGUN0dCMZkBBXeAdvVqIIVrOGVol2aw0HOf0/x7stpwpXc8Ln8r8Vqcyq/eiupYQXX\n35bUVTm+HldSyyG31XW5Sajmohtyu7zQ9u3bZVlW8wOr1q1bp2nTpmmfffaRJJ122mlatmxZXdC9\n6aab9Bd/8Rd65JFH8hoqAAAABkGjtbrtTGEOH5Ml7ErRBlXhbsyW4W0LT2WWDJnV6+lK3guMsozU\nwP0lbvsAACAASURBVOvd94JYPPT6/PAreSG22drleLALB1spGm69x7UxNAq4/uNGU5X973v4cd4h\nt5Upy0AnGgbdrVu3auvWrUEl9fXXX9fLL79cd9wbb7yhpUuXasqUKZlfeNOmTZHjJ0+erIcffrju\nmGXLlmnVqlV65JFHcmtbDgAAgMHRatgNSwu7wX41Drv1Daok/zq7UrS6W5ShAdsNqruRgBsLvNFA\nnhx6g/cfuyCJ3WDhYMLlaxODbeRxZJ1u84Drn6PWUKo2VTn82B9PvPFUs5DbSKvVWaq56ETDoPud\n73xHV111VfD4wgsv1IUXXph6fKN1tnFZQuuFF16oa6+9Nmg0wNRlAACA3hYPxo2aU0npYdd/Rjjs\nSslTmePVXavgPY4HXitUzfUbWMVDrxQNumbC77xOyu+0ScfGg62UHm6TtsWnKfvbk6q4kjoOua2s\ny2XKMrqpYdA9+uijgzW3V199tU455RQdeOCBkWMMw9Auu+yiI444QkceeWTmF540aZI2btwYPN64\ncaMmT54cOeaxxx7TaaedJsmrJv/sZz9TsVjU/Pnz68736KOLgvsTJ87VxIlzM48FADCyrV69WqtX\nrx7qYQA9q5MpzFJ7YTd86SFPfN2uty1e3R1VqHZvTgq8oYBrO27dtni3ZW/s0XfnV3+TJAbdUOCr\nrdOtD7fx7Y0CrqS6Kq6/LTxV2dun6r7BC7lAHgw3Y5n0zDPP1P/6X/9LH/vYx3J54UqlohkzZuiB\nBx7QxIkT9dGPflR33XVX3Rpd31lnnaVPfepT+vM///O6fYZh6Lzz6t/Ghg0LtXz5zbmMFwAwcoQv\nWYL2GIahbf39Qz0MDDON1qcm7YkfH37oJhzjBNuqx1T/P7b9Jbehx/7/4v51bZ3EbV7jqfA2/7F/\nLn/trj+OcLV2IOH9tr5Gt/Y4HITTQm98irK/L16xTavi1o5XdV804Eqthdyk99Qs5FLNRZIxfX0t\nfTZnbka1ZMmSdsaT/sKFghYvXqzjjz9etm3r7LPP1qxZs3TzzV4wXbhwYa6vBwAAgOGrk8qupIbX\n2bUMJa7blaLVXVXPb4WimF/h9dfw+lVeVR/XVXVVG8+o0KJbPwAXM4S4eGU3HPySgm+4eht+nBZw\n/WOTAm74cVoVNz6mVkJuM4Rc5CVzRddXqVT07LPPasuWLXKc+hbpc+bMyW1wWVHRBQDkiYpu56jo\nIk2zima7ld3wcU5kW/W4BtVdb3/1+CYVXqlW1Q3vC2+Lr8FNquxmkVbNLYYCdFK4DW9PCrjh7YMd\nclmXi3Z1raIrSddee62uvfZavf3225Ht/i8EhmHItu2UZwMAAGCka7ReV2q/shs+zg9lzaq7ntpl\niKTkCm/BMOS6CppWBet4pUilV1JQ7ZVq4Tdc2W1VMfZcKyHwxsOtlF/AlZJDbvwdEXIx3GQOurfc\ncosuvfRSHX300Zo3b54uv/xy/e///b9VLBb1gx/8QFOnTtWXvvSlbo4VAAAAPWAwwq4UbVIlSbZT\nDXF+uI1NZ5ZSAq9qVeJ46JWUGHwlBeHXe63slahwYPXFA2+WcBve3yzgese0XsWNv1782LTnAN2W\nOej+4z/+o2bPnq1Vq1bpjTfe0OWXX67/8T/+h4499lh99atf1SGHHKJKpdLNsQIAAKBHdCPsSunr\ndr3n16q7kiKXIZLUMPB6leDk0OvtjwZf/3y+YptRr269buxxlnDrjz98vkYBV2pvqnL82KTnJKGa\ni25ocMnqqKefflqnnnqqDMMI/mfwpylPmDBB5513nv7hH/6hO6MEAABAz2kWcJL2xp8TP4WRcKyp\ncKfgWqAzQqHPv26sf/O3GaGbVW3uVDQNmUa1c7FZ218wjeAY7zgzuIXPneXmPy98voJpRMdjqjaO\n0HG18da/N/+x//6TqrjhrsqtrMcl5GI4yVzRtSxLY8eOlaTg6xtvvBHs33vvvfXcc8/lPDwAAAD0\nsrwqu1L6VGZJiWt3ve3efjdczU1YwyvVqrxStDNzZISxsfgKCdORXTdadW2kLlgmTFmu7fOfY9Rt\n844PbW+xips4lpSwSsjFUMpc0Z0yZYrWr18vSRo9erQmT56stWvXBvsfffRR7bbbbvmPEAAAAD2t\n3cpuo+quoeTqrpRc4fWrm0ao6plW5Y1XeuOV3HjVN+0Wrsim3Yqmd66Gld2U6q2khhXcdqq4Wdfj\nEnIx1DJXdI8++mj95Cc/0be//W1J0qmnnqobb7xR/f39chxH//Iv/6IvfOELXRsoAAAAelc7ld2k\n5yVVd6X6tbuSUiq8tYpnuMobPZt/xpqk646E1/C2I63aG2/iXL+ON3yO2L4MFVype1XcRs8F8pQ5\n6H7lK1/RwQcfrG3btmnMmDFatGiRnnvuOd1+++0yDEPHHXecrr322m6OFQAAAD0sr7ArRRtVxZ/b\nauCVmoVe//USRmfUrtXbikZXJGoUbKXG4VbqLOAmPSftuUkIuRgsmYPuzJkzNXPmzODxLrvsovvu\nu09vvfWWLMvSuHHjujJAAAAAjBxZwq6UvG5XUubqbtJzkgKvt79Z6I2v641KDcENpJ1LSg7BrYRb\nb3/jgOuNIeG1CbnYSWQOuml23XXXPMYBAAAASGoedqXWq7tS88ArRZtWSc1Db/C6iaOJjzi7RhVd\nKWUMTcKtdwwBFyNDy0H34Ycf1r333hs0ppo6dapOPvlkzZ49O/fBAQAAYGTKGnalbNVdqXngTXpu\no9DrSwu/klf9lZoH1yRp5/QljSVLuJU6D7hp52jl+UA3ZQ66tm3r3HPP1ZIlS+r2XXfddVqwYIFu\nueUWWZaV5/gAAAAwQmUJu1Lj6q6UPfBK6VVeqT5EOsGxyeNqFIBbkXb+pDHVnpMt3ErdCbjNzgF0\nW+bLC11zzTVasmSJTj75ZD300EPasmWLtmzZol/+8pc66aSTdMcdd+ib3/xmN8cKAACAESbpMkJJ\nGl3SJu0cSZfLMVR/Lv/58fOYCbfo6+Zzy/569WNM+96EL2GU9P1KQ8jFzsJw3Wwr4/fee2/NmDFD\nP//5z+v2ua6r4447Ts8995w2bNiQ+yCbMQxD551X/zY2bFio5ctvHvTxAAB2boZhKOPHI1IYhqFt\n/f1DPQz0mCzVXSm5upvlPI1O3+icWceVp3auPSwlB9tOztfqeYB2jenra+mzOXNF97XXXtNJJ52U\nuM8wDJ100knavHlz5hcGAAAAWpFHdbfReRpVOQ0lV3vD50u6daKV8zYaX7PqbbMKLiEXO6PMa3Sn\nT5+uV199NXX/q6++qhkzZuQyKAAAACBNK2t3pfRqbNI6XF88s8VfLinSNVonnKcsZ2z2snlVcLOc\nCxgKmSu6l1xyiRYvXqwnn3yybt8TTzyh7373u7rkkktyHRwAAACQpJWKaZaqZLPzhauiaYfFq6qN\nbu0+r9GU5Gbjy1JpbqWC658TGI4yV3Sfe+45TZ06VYcffrjmzZunWbNmSZJ+97vfaeXKlTrooIP0\n3HPP6eqrr44874orrsh3xAAAAEBVWmflJEndldPO50s7b1K+a2WpbrvxsNVc2cofA7pxXmCoZG5G\nZZqZi78RjuM0P6hDNKMCAOSJZlSdoxkVhkI7TaFaecZQNJ1qVSsBtJ2oSsDFUGm1GVXmiu6LL77Y\n1oAAAACAwdBKddeXpcobP3/YUIbfdkJnuzGVgIudTeagu88++3RxGAAAAEA+2gm8UmuhN/5aSfII\nwXkEzE7OQMDFzipz0AUAAAB2Ju0GXqk+HLYTWYcyJHb6ygRc7OwyB92zzjpLhtH8P/hbb721owEB\nAAAAeWp0GaGs8gi+3ZJnJCXgoldkDrq33357puMIugAAABiuOqnyhqXFwW4G4G5FUMItelHmVsqO\n49TdyuWynnnmGZ177rmaPXu2tmzZ0s2xAgAAALnIck3ZdrR6TdxOr5/brm69f2C4aO+aQVWFQkH7\n7befbr75Zr3//e/XxRdfnNe4AAAAgEExUkLfSHmfgNRh0A074YQT9KMf/Siv0wEAAACDLhwGd/ZA\n2EvvBWhVbl2Xt2zZonfffTev0wEAAABDbrhdO7cRwixQ03HQfeutt7RixQrdcMMNOuyww/IYEwAA\nADBspQXKwQrABFqgucxB1zRNGYYh103+H3i33XbTDTfckNvAAAAAgJ0JARQYPjIH3QULFtRtMwxD\nu+22m2bMmKHPfvazGjduXK6DAwAAAACgVZmD7pIlS7o4DAAAAAAA8pFb12UAAAAAAIaDzEH3u9/9\nrj75yU8mrtF1XVfz5s3T9773vVwHBwAAAABAqzIH3SVLlmjatGkyjPpF9oZhaL/99tNtt92W6+AA\nAAAAAGhV5qD7/PPP66CDDkrdv//+++u5557LZVAAAAAAALQrc9AdGBjQ9u3bU/dv37694X4AAAAA\nAAZD5qA7ffp0rVixInX/ihUr9KEPfSiXQQEAAAAA0K7MQff000/X/fffr8svv1zlcjnYXi6XdcUV\nV+j+++/X6aef3pVBAgAAAACQleEmtVFOUC6Xdfzxx2vNmjXabbfdNHPmTEnS008/rS1btuioo47S\nz3/+c40aNaqrA05iGIbOO6/+bWzYsFDLl9886OMBAOzcDMNIvMoAsjMMQ9v6+4d6GACAHjGmr6+l\nz+bMFd1SqaT7779f1157rSZNmqTHH39cjz/+uD74wQ/q7/7u77Ry5cohCbkAAAAAAIRlrugOZ1R0\nAQB5oqKbbtGiRfrBD36gPfbYQ5L07W9/WyeccELdcVR0AQB5arWiW+jiWAAAQI8xDEMXXXSRLrro\noqEeCgAAqTJPXb7yyit1wAEHJO5zXVcHHnigvvnNb+Y2MAAAMDxR7QYADHeZg+69996rT37yk4n7\nDMPQcccdpx/96Ee5DQwAAAxPN910kw4++GCdffbZeuutt4Z6OAAA1MkcdNevX69Zs2al7t9vv/30\n4osv5jIoAAAwdObNm6cDDzyw7nbffffp/PPP1/r16/Xkk09qwoQJ+trXvjbUwwUAoE5La3Qb/dV2\ny5Ytsm274wEBAIChtWLFikzHnXPOOfrUpz6Vuv+aa64J7s+ZM0dz5szpeGwAgJFh7dq1Wrt2bdvP\nz9x1efbs2bIsSw899FDdPtd19fGPf1zbt2/XY4891vZg2tWs6/JZZ12kV155L/G5EyaM1W233dDt\nIQIAdiJ0XU73yiuvaMKECZKkG2+8UY888oiWLl1adxxdlwEAeepa1+VzzjlHCxcu1Oc//3n9n//z\nf4LLCrz22mv667/+a/3Hf/yHFi9e3PqIB8Err7ynvfdOvszQhg0LB3k0AADsvC6++GI9+eSTMgxD\n++67r26+mcv4AQCGn5aC7v9v7/6DqqrzP46/LnCzRZGlmZWAa1L86AqLQFHobLZUy6I1XDIaI9N1\nUDeWRqt1x6aasa2dBM10p1abcdcf26qLbNsKjOHV2qC2DJmKhilollZRRNB0U0pzceF8/2j2fiMQ\nuHjhcA/Px8yZ4ZzPuee8/Vz1c17czzn3rbfe0vbt27Vjxw7Pb3OPHz8uSbrvvvtUWFg4PFUCAIBR\n4U9/+pPZJQAAMKBBB12bzaYdO3bI5XJp586dampqkiSlpaVp/vz5uvfee4etSAAAAAAABsurh1FJ\n0ty5czV37tzhqAUAAAAAgMs26K8X+p/z58+rra1N58+fH456AAAAAAC4LIMKuidPntSKFSsUExOj\nkJAQRUVFKSQkRDExMVqxYoVOnjw53HUCAAAAADAoA05drqmpUU5Ojj7//HMFBQUpMTFREydOVEdH\nhz799FOtW7dO27dvV1lZmaZPnz4SNQMAAAAAcEn9fqJ78uRJZWdnq7OzUxs3btTZs2dVX1+vd955\nR/X19Tpz5oxeeukl/ec//1F2djaf7AIAAAAATNdv0H3++efV0dGhN954Q4WFhfre977Xoz04OFi/\n+MUv9Pe//10dHR16/vnnh7VYAAAAAAAG0m/Qfe211zR//nzdeOON/R7khhtu0IIFC7Rnzx6fFgcA\nAAAAgLf6DbrNzc2aMWPGoA508803q7m52esC3G63nE6n4uLitGbNml7tO3fuVHJysqZNm6Yf/ehH\nqq+v9/ocAAAAAICxo9+HUQUGBurixYuDOtB///tfBQYGenXyrq4uLV26VG+88YaioqJ00003yeVy\naerUqZ59rrvuOr399tsKDQ2V2+3Wgw8+qJqaGq/OAwAAAAAYO/r9RDc2NlZVVVWDOtBbb72l2NhY\nr05eW1ur2NhYRUdHy263Ky8vT+Xl5T32mTFjhkJDQyVJ6enpOnbsmFfnAAAAAACMLf0G3Tlz5ujV\nV1/V3r17+z3Ivn379Oqrr+qee+7x6uStra2aPHmyZ93hcKi1tfWS+2/ZskV33nmnV+cAAAAAAIwt\n/QbdRx55RNdcc43mzJmjxx9/XIcOHerR/q9//UtPPPGEXC6XHA6HHnnkEa9ObrPZBr1vVVWVtm7d\n2ud9vAAAAAAA/E+/9+hOnDhR+/btU3Z2tp577jmtXbtWISEhCg0NVUdHh86ePSvpmynOFRUVmjhx\nolcnj4qKUktLi2e9paVFDoej13719fX6+c9/LrfbrbCwsD6P9f77T3t+jozMUGRkhle1AADGrurq\nalVXV5tdBgAA8JF+g64kxcfHq66uTlu2bNFf//pXffzxxzp+/LgmTpyomTNnKjc3V0uWLFFwcLDX\nJ09LS1NTU5Oam5sVGRmp0tJSlZSU9Njn6NGjuueee7Rjx45+7wFOS3va6/MDACBJGRkZysjI8Kw/\n88wz5hUDAAAu24BBV5KCg4O1bNkyLVu2zLcnDwrShg0blJWVpa6uLi1evFhTp07Vpk2bJEkFBQX6\nzW9+oy+++EKFhYWSJLvdrtraWp/WAQAAAACwjkEF3eE0e/ZszZ49u8e2goICz8+bN2/W5s2bR7os\nAAAAAICf6vdhVAAAAAAA+BuCLgAAAADAUgi6AAAAAABLIegCAAAAACyFoAsAAAAAsBSCLgAAAADA\nUgi6AAAAAABLIegCAAAAACyFoAsAAAAAsBSCLgAAAADAUgi6AAAAAABLIegCAAAAACyFoAsAAAAA\nsBSCLgAAAADAUgi6AAAAAABLIegCAAAAACwlyOwCRoP8/OVqazvXZ1tExHht27Z+hCsCAAAAAAwV\nQVdSW9s5TZmyqc+2I0cKRrgaAAAAAMDlYOoyAAAAAMBSCLoAAAAAAEsh6AIAAAAALIWgCwAAAACw\nFIIuAAAAAMBSCLoAAAAAAEsh6AIAAAAALIWgCwAAAACwFIIuAAAAAMBSCLoAAAAAAEsh6AIAAAAA\nLIWgCwAAAACwFIIuAAAAAMBSCLoAAAAAAEsh6AIAAAAALIWgCwAAAACwFIIuAAAAAMBSCLoAAAAA\nAEsJMrsAf5Cfv1xtbef6bIuIGK9t29aPcEUAAAAAgEsh6A5CW9s5TZmyqc+2I0cKRrgaAAAAAEB/\nmLoMAAAAALAUgi4AAAAAwFIIugAAAAAASyHoAgAAAAAshaALAAAAALAUgi4AAAAAwFIIugAAAAAA\nSyHoAgAAAAAshaALAAAAALAUgi4AAAAAwFKCzC7ACvLzl6ut7VyfbRER47Vt2/oRrggAAAAAxi6C\nrg+0tZ3TlCmb+mw7cqRghKsBAAAAgLGNqcsAAAAAAEsh6AIAAAAALIWgCwAAAACwFIIuAAAAAMBS\nCLoAAAAAAEvhqcsj5FJfQcTXDwEAAACAbxF0R8ilvoKIrx8CAAAAAN9i6jIAAAAAwFJMDbput1tO\np1NxcXFas2ZNn/s8/PDDiouLU3Jysurq6ka4wpGTn79cs2YV9Fry85ebXRoAYAx65ZVXlJiYqMDA\nQH344Yc92oqLixUXFyen06n9+/ebVCEAAJdmWtDt6urS0qVL5Xa71dDQoJKSEjU2NvbYp7KyUp99\n9pmampr0+9//XoWFhSZVO/z+N7X5u0tf9/UOh+rq6hE5j5XRh5ePPvQN+hG+kJSUpN27d+vWW2/t\nsb2hoUGlpaVqaGiQ2+3WQw89pO7ubpOqhDfefvtts0tAH3hfRh/eE2swLejW1tYqNjZW0dHRstvt\nysvLU3l5eY99KioqtHDhQklSenq6zpw5oxMnTphRrumG+xNfLowvH314+ehD36Af4QtOp1Px8fG9\ntpeXl+v++++X3W5XdHS0YmNjVVtba0KF8BYX76MT78vow3tiDaY9jKq1tVWTJ0/2rDscDh08eHDA\nfY4dO6bw8PARq3O04GFWAIDR4Pjx45o+fbpn3eFwqLW11cSKAADozbSga7PZBrWfYRhDet1YM9DX\nFw3UXla2TzU1bX0em69AAgBryszMVHt7e6/tRUVFys7OHvRxGJsBAKOOYZL33nvPyMrK8qwXFRUZ\nq1ev7rFPQUGBUVJS4lm//vrrjfb29l7HiomJMSSxsLCwsLD4ZImJiRm+AdDPZGRkGB988IFnvbi4\n2CguLvasZ2VlGTU1Nb1ex9jMwsLCwuLLxdux2bRPdNPS0tTU1KTm5mZFRkaqtLRUJSUlPfZxuVza\nsGGD8vLyVFNTo+9///t9Tlv+7LPPRqpsAADGHONbs6tcLpfmzZun5cuXq7W1VU1NTbr55pt7vYax\nGQBgJtOCblBQkDZs2KCsrCx1dXVp8eLFmjp1qjZt+uY+1IKCAt15552qrKxUbGysxo8fr23btplV\nLgAAY8ru3bv18MMP69SpU7rrrruUmpqqvXv3KiEhQXPnzlVCQoKCgoL00ksvMXUZADDq2AzjOzfB\nAgAAAADgx0z7eiFfcLvdcjqdiouL05o1a8wux28sWrRI4eHhSkpK8mz797//rczMTMXHx+unP/2p\nzpw5Y2KFo19LS4tuu+02JSYm6oc//KFefPFFSfSjNy5cuKD09HSlpKQoISFBTzzxhCT6cCi6urqU\nmprqeXgQfeid6OhoTZs2TampqZ4puPTh0LzyyitKTExUYGCgPvzwwx5txcXFiouLk9Pp1P79+02q\nEE8//bQcDodSU1OVmpoqt9ttdkljFtexo1NfYwJGlq+yit8G3a6uLi1dulRut1sNDQ0qKSlRY2Oj\n2WX5hfz8/F4D2+rVq5WZmal//vOfuuOOO7R69WqTqvMPdrtdv/3tb/XJJ5+opqZGGzduVGNjI/3o\nhSuvvFJVVVX66KOPVF9fr6qqKr3zzjv04RC88MILSkhI8EwfpQ+9Y7PZVF1drbq6Os/3wdKHQ5OU\nlKTdu3fr1ltv7bG9oaFBpaWlamhokNvt1kMPPaTu7m6TqhzbbDabli9frrq6OtXV1WnWrFlmlzQm\ncR07evU1JmBk+Sqr+G3Qra2tVWxsrKKjo2W325WXl6fy8nKzy/ILM2fOVFhYWI9tFRUVWrhwoSRp\n4cKFKisrM6M0v3H11VcrJSVFkjRhwgRNnTpVra2t9KOXgoODJUmdnZ3q6upSWFgYfeilY8eOqbKy\nUkuWLPE8MIg+9N537+KhD4fG6XQqPj6+1/by8nLdf//9stvtio6OVmxsLBeQJuKuNfNxHTu68W/E\nXL7KKn4bdFtbWzV58mTPOl9Yf3lOnDjheaJ1eHi4Tpw4YXJF/qO5uVl1dXVKT0+nH73U3d2tlJQU\nhYeHe6aC04fe+eUvf6m1a9cqIOD//zunD71js9n0k5/8RGlpafrDH/4giT70tePHj8vhcHjWGbPN\n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\nAAAAlvJ/9XlXVQVMy7sAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(1, 2, figsize=(16,6))\n", + "\n", + "xvec = np.linspace(-10,10,200)\n", + "\n", + "rho_cavity = ptrace(rho_ss, 0)\n", + "W = wigner(rho_cavity, xvec, xvec)\n", + "wlim = abs(W).max()\n", + "axes[1].contourf(xvec, xvec, W, 100, norm=mpl.colors.Normalize(-wlim,wlim), cmap=plt.get_cmap('RdBu'))\n", + "axes[1].set_xlabel(r'Im $\\alpha$', fontsize=18)\n", + "axes[1].set_ylabel(r'Re $\\alpha$', fontsize=18)\n", + "\n", + "axes[0].bar(arange(0, N), real(rho_cavity.diag()), color=\"blue\", alpha=0.6)\n", + "axes[0].set_xlabel(r'$n$', fontsize=18)\n", + "axes[0].set_ylabel(r'Occupation probability', fontsize=18)\n", + "axes[0].set_ylim(0, 1)\n", + "axes[0].set_xlim(0, N);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Too large pumping rate $\\Gamma$ kills the lasing process: reversed threshold." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Software version" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
        SoftwareVersion
        IPython2.0.0
        OSposix [linux]
        Python3.4.1 (default, Jun 9 2014, 17:34:49) \n", + "[GCC 4.8.3]
        QuTiP3.0.0.dev-5a88aa8
        Numpy1.8.1
        matplotlib1.3.1
        Cython0.20.1post0
        SciPy0.13.3
        Thu Jun 26 14:28:35 2014 JST
        " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qutip.ipynbtools import version_table\n", + "\n", + "version_table()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.15rc1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/src/test/data/Population_Genetics.ipynb b/src/test/data/Population_Genetics.ipynb new file mode 100644 index 0000000..d9761d0 --- /dev/null +++ b/src/test/data/Population_Genetics.ipynb @@ -0,0 +1,2187 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "## Population Genetics in *an* RNA World\n", + "\n", + "In order to study population genetics, we first need a model of a population. And even before that, we need to define what we mean by *population*. Populations can be defined on many levels and with many diffferent criteria. For our purposes, we will simply say that a population is a set of individuals sharing a common environment. And because this is population *genetics* we can think of individuals as entities comprising of specific genes or chromosomes. \n", + "\n", + "So where do we get a population from? As you may have discussed in previous workshops, there are very large datasets containing sequencing information from different populations. So we could download one of these datasets and perform some analysis on it. But I find this can be dry and tedious. So why download data when we can simply create our own?\n", + "\n", + "In this workshop we're going to be creating and studying our own \"artificial\" populations to illustrate some important population genetics concepts and methodologies. Not only will this help you learn population genetics, but you will get a lot more programming practice than if we were to simply parse data files and go from there. \n", + "\n", + "More specifically, we're going to build our own RNA world.\n", + "\n", + "As you may know, RNA is widely thought to be the first self replicating life-form to arise x billion years ago. One of the strongest arguments for this theory is that RNA is able to carry information in its nucleotides like DNA, and like protein, it is able to adopt higher order structures to catalyze reactions, such as self replication. So it is likely, and there is growing evidence that this is the case, that the first form of replicating life was RNA. And because of this dual property of RNA as an information vessel as well as a structural/functional element we can use RNA molecules to build very nice population models. \n", + "\n", + "So in this notebook, I'll be walking you through building genetic populations, simulating their evolution, and using statistics and other mathematical tools for understanding key properties of populations.\n", + "\n", + "### Building an RNA population\n", + "\n", + "As we saw earlier, RNA has the nice property of posessing a strong mapping between information carrying (sequence) and function (structure). This is analogous to what is known in evolutionary terms as a genotype and a phenotype. With these properties, we have everything we need to model a population, and simulate its evolution.\n", + "\n", + "#### RNA sequence-structure\n", + "\n", + "We can think of the genotype as a sequence $s$ consisting of letters/nucleotides from the alphabet $\\{U,A,C,G\\}$. The corresponding phenotype $\\omega$ is the secondary structure of $s$ which can be thought of as a pairing between nucleotides in the primary sequence that give rise to a 2D architecture. Because it has been shown that the function of many biomolecules, including RNA, is driven by structure this gives us a good proxy for phenotype. \n", + "\n", + "Below is an example of what an RNA secondary structure, or pairing, looks like." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "### 1\n", + "\n", + "from IPython.display import Image\n", + "#This will load an image of an RNA secondary structure\n", + "Image(url='http://www.tbi.univie.ac.at/~pkerp/forgi/_images/1y26_ss.png')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see, unparied positions are forming loop-like structures, and paired positions are forming stem-like structures. It is this spatial arrangement of nucleotides that drives RNA's function. Therefore, another sequence that adopts a similar shape, is likely to behave in a similar manner. Another thing to notice is that, although in reality this is often not the case, in general we only allow pairs between $\\{C,G\\}$ and $\\{A, U\\}$ nucleotides, most modern approaches allow for non-canonical pairings and you will find some examples of this in the above structure.\n", + "\n", + "*How do we go from a sequence to a structure?*\n", + "\n", + "So a secondary structure is just a list of pairings between positions. How do we get the optimal pairing?\n", + "\n", + "The algorithm we're going to be using in our simulations is known as the Nussinov Algorithm. The Nussinov algorithm is one of the first and simplest attempts at predicting RNA structure. Because bonds tend to stabilize RNA, the algorithm tries to maximize the number of pairs in the structure and return that as its solution. Current approaches achieve more accurate solutions by using energy models based one experimental values to then obtain a structure that minimizes free energy. But since we're not really concerned with the accuracy of our predictions, Nussinov is a good entry point. Furthermore, the main algorithmic concepts are the same between Nussinov and state of the art RNA structure prediction algorithms. I implemented the algorithm in a separate file called `fold.py` that we can import and use its functions. I'm not going to go into detail here on how the algorithm works because it is beyond the scope of this workshop but there is a bonus exercise at the end if you're curious.\n", + "\n", + "You can predict a secondary structure by calling `nussinov()` with a sequence string and it will return a tuple in the form `(structure, pairs)`." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ACCCGAUGUUAUAUAUACCU\n", + "(...(..(((....).))))\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from fold import nussinov\n", + "\n", + "sequence_to_fold = \"ACCCGAUGUUAUAUAUACCU\"\n", + "struc = nussinov(sequence_to_fold)\n", + "print(sequence_to_fold)\n", + "print(struc[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "You will see a funny dot-bracket string in the output. This is a representation of the structure of an RNA. Quite simply, a matching parir of parentheses (open and close) correspond to the nucleotides at those positions being paried. Whereas, a dot means that that position is unpaired in the structure. Feel free to play around with the input sequence to get a better understanding of the notation.\n", + "\n", + "So that's enough about RNA structure prediction. Let's move on to building our populations.\n", + "\n", + "### Fitness of a sequence: Target Structure\n", + "\n", + "Now that we have a good way of getting a phenotype (secondary structure), we need a way to evaluate the fitness of that phenotype. If we think in real life terms, fitness is the ability of a genotype to replicate into the next generation. If you have a gene carrying a mutation that causes some kind of disease, your fitness is decreased and you have a lower chance of contributing offspring to the next generation. On a molecular level the same concept applies. A molecule needs to accomplish a certain function, i.e. bind to some other molecule or send some kind of signal. And as we've seen before, the most important factor that determines how well it can carry out this function is its structure. So we can imagine that a certain structure, we can call this a 'target' structure, is required in order to accomplish a certain function. So a sequence that folds correctly to a target structure is seen as having a greater fitness than one that does not. Since we've encoded structures as simple dot-bracket strings, we can easily compare structures and thus evaluate the fitness between a given structure and the target, or 'correct' structure. \n", + "\n", + "There are many ways to compare structures $w_{1}$ and $w_{2}$, but we're going to use one of the simplest ways, which is base-pair distance. This is just the number of pairs in $w_{1}$ that are not in $w_{2}$. Again, this is beyond the scope of this workshop so I'll just give you the code for it and if you would like to know more you can ask me." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('((....))', [(0, 7), (1, 6)])\n", + "('.(....).', [(1, 6)])\n", + "1\n" + ] + } + ], + "source": [ + "### 3\n", + "\n", + "#ss_to_bp() and bp_distance() by Vladimir Reinharz.\n", + "def ss_to_bp(ss):\n", + " bps = set()\n", + " l = []\n", + " for i, x in enumerate(ss):\n", + " if x == '(':\n", + " l.append(i)\n", + " elif x == ')':\n", + " bps.add((l.pop(), i))\n", + " return bps\n", + "\n", + "def bp_distance(w1, w2):\n", + " \"\"\"\n", + " return base pair distance between structures w1 and w1. \n", + " w1 and w1 are lists of tuples representing pairing indices.\n", + " \"\"\"\n", + " return len(set(w1).symmetric_difference(set(w2)))\n", + "\n", + "#let's fold two sequences\n", + "w1 = nussinov(\"CCAAAAGG\")\n", + "w2 = nussinov(\"ACAAAAGA\")\n", + "\n", + "print(w1)\n", + "print(w2)\n", + "\n", + "#give the list of pairs to bp_distance and see what the distance is.\n", + "print(bp_distance(w1[-1], w2[-1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Defining a cell: a little bit of Object Oriented Programming (OOP)\n", + "\n", + "Since we're going to be playing aroudn with sequences and structures and fitness values a lot, it's best to package it all nicely into an object. As you'll have seen with Vlad, objects are just a nice way of grouping data into an easily accessible form. \n", + "\n", + "We're trying to simulate evolution on a very simple kind of organism, or cell. It contains two copies of a RNA gene, each with a corresponding structure. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AACCCCUU (....). AACCCCUU (....).\n" + ] + } + ], + "source": [ + "### 4\n", + "class Cell:\n", + " def __init__(self, seq_1, struc_1, seq_2, struc_2):\n", + " self.sequence_1 = seq_1\n", + " self.sequence_2 = seq_2\n", + " self.structure_1 = struc_1\n", + " self.structure_2 = struc_2\n", + " \n", + "#for now just try initializing a Cell with made up sequences and structures\n", + "cell = Cell(\"AACCCCUU\", \"((.....))\", \"GGAAAACA\", \"(....).\")\n", + "print(cell.sequence_1, cell.structure_2, cell.sequence_1, cell.structure_2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Populations of Cells\n", + "\n", + "Now we've defined a 'Cell'. Since a population is a collection of individuals our populations will naturally consist of **lists** of 'Cell' objects, each with their own sequences. Here we initialize all the Cells with random sequences and add them to the 'population' list." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "### 5\n", + "import random\n", + "\n", + "def populate(target, pop_size=100):\n", + " \n", + " population = []\n", + "\n", + " for i in range(pop_size):\n", + " #get a random sequence to start with\n", + " sequence = \"\".join([random.choice(\"AUCG\") for _ in range(len(target))])\n", + " #use nussinov to get the secondary structure for the sequence\n", + " structure = nussinov(sequence)\n", + " #add a new Cell object to the population list\n", + " new_cell = Cell(sequence, structure, sequence, structure)\n", + " new_cell.id = i\n", + " new_cell.parent = i\n", + " population.append(new_cell)\n", + " \n", + " return population" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Try creating a new population and printing the first 10 sequences and structures (in dot-bracket) on the first chromosome!" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 GGACGGAGCAUUAUCUGCUA (((...(....).))..).. GGACGGAGCAUUAUCUGCUA (((...(....).))..)..\n", + "1 ACAAUCGCCUCACUCACGUU (.(..((..(.....))))) ACAAUCGCCUCACUCACGUU (.(..((..(.....)))))\n", + "2 UCCGUUCUAUUAGUUCAUAG .(..(((.....)...).)) UCCGUUCUAUUAGUUCAUAG .(..(((.....)...).))\n", + "3 CAAACCUUGUUCGUAAUACA .(....)((((....).))) CAAACCUUGUUCGUAAUACA .(....)((((....).)))\n", + "4 GCAUCGAGUGCGCGGCAUAA ((..((....)).).).... GCAUCGAGUGCGCGGCAUAA ((..((....)).).)....\n", + "5 GAAUUCUGAGAUCAUACUCG (((((.....)..))..)). GAAUUCUGAGAUCAUACUCG (((((.....)..))..)).\n", + "6 GGAACCGUAGGCUUUGCAAG (.(((....)..))..)... GGAACCGUAGGCUUUGCAAG (.(((....)..))..)...\n", + "7 GCAAAAGACAGCCCGCAUCA ((....).)((....).).. GCAAAAGACAGCCCGCAUCA ((....).)((....).)..\n", + "8 GGGUACCGACAACGGAGCUC ((.(.(((....)))).).) GGGUACCGACAACGGAGCUC ((.(.(((....)))).).)\n", + "9 CUCUUAUUUCACUUAGCUGU (.(((.....)...))..). CUCUUAUUUCACUUAGCUGU (.(((.....)...))..).\n" + ] + } + ], + "source": [ + "### 6\n", + "target = \"(.(((....).).).)....\"\n", + "pop = populate(target, pop_size=100)\n", + "for p in pop[:10]:\n", + " print(p.id, p.sequence_1, p.structure_1[0], p.sequence_2, p.structure_2[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The Fitness of a Cell\n", + "\n", + "Now that we can store populatoins of cells, we need a way to evaluate the fitness of a given Cell. Recall that a Cell is simply an object that contains two RNA sequences (think of it as two copies of a gene on each chromosome). \n", + "\n", + "So we simply need to loop through each Cell in a population and compute base pair distance to the target structure. However, simply using base-pair distance is not a very good measure of fitness. There are two reasons for this: \n", + "\n", + "1. We want fitness to represent a *probability* that a cell will reproduce, and base pair distance is an integer.\n", + "2. We want this probability to be a *relative* measure. That is, we want to be the fitness to be proportional to how good a cell is with respect to all others in the population. This touches on an important principle in evolution where we only need to be 'better' than the competition and not good in some absolute measure. For example, if you and I are being chased by a bear. In order to survive, I only need to be faster than you, and not necessarily some absolute level of fitness.\n", + "\n", + "In order to get a probability (number between 0 and 1) we use the following equation to define the fitness of a structure $\\omega$ on a target structure $T$:\n", + "\n", + "$$P(\\omega, T) = N^{-1} exp(\\frac{-\\beta \\texttt{dist}(\\omega, T)}{\\texttt{len}(\\omega)})$$\n", + "\n", + "$$N = \\sum_{i \\in Pop}{P(\\omega_i, T})$$\n", + "\n", + "Here, the $N$ is what gives us the 'relative' measure because we divide the fitness of the Cell by the sum of the fitness of every other Cell. \n", + "\n", + "Let's take a quick look at how this function behaves if we plot different base pair distance values.\n", + "\n", + "What is the effect of the parameter $\\beta$? Try plotting the same function but with different values of $\\beta$." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0,0.5,'P(w, T)')" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import math\n", + "import seaborn as sns\n", + "\n", + "target_length = 50\n", + "beta = -2\n", + "\n", + "plt.plot([math.exp(beta * (bp_dist / float(target_length))) for bp_dist in range(target_length)])\n", + "plt.xlabel(\"Base pair distance to target structure\")\n", + "plt.ylabel(\"P(w, T)\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see, it's a very simple function that evaluates to 1 (highest fitness) if the base pair distance is 0, and decreases as the structures get further and further away from the target. I didn't include the $N$ in the plotting as it will be a bit more annoying to compute, but it is simply a scaling factor so the shape and main idea won't be different.\n", + "\n", + "Now we can use this function to get a fitness value for each Cell in our population." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.013612068231863143 6 6\n", + "0.007470461436952334 9 9\n", + "0.009124442203822766 8 8\n", + "0.007470461436952334 9 9\n", + "0.013612068231863143 6 6\n", + "0.007470461436952334 9 9\n", + "0.02030681957427158 4 4\n", + "0.009124442203822766 8 8\n", + "0.006116296518116008 10 10\n", + "0.009124442203822766 8 8\n" + ] + } + ], + "source": [ + "### 7\n", + "\n", + "def compute_fitness(population, target, beta=-2):\n", + " \"\"\"\n", + " Assigns a fitness and bp_distance value to each cell in the population.\n", + " \"\"\"\n", + " #store the fitness values of each cell\n", + " tot = []\n", + " #iterate through each cell\n", + " for cell in population:\n", + " \n", + " #calculate the bp_distance of each chromosome using the cell's structure\n", + " bp_distance_1 = bp_distance(cell.structure_1[-1], ss_to_bp(target))\n", + " bp_distance_2 = bp_distance(cell.structure_2[-1], ss_to_bp(target))\n", + " \n", + " #use the bp_distances and the above fitness equation to calculate the fitness of each chromosome\n", + " fitness_1 = math.exp((beta * bp_distance_1 / float(len(cell.sequence_1))))\n", + " fitness_2 = math.exp((beta * bp_distance_2 / float(len(cell.sequence_2))))\n", + "\n", + " #get the fitness of the whole cell by multiplying the fitnesses of each chromosome\n", + " cell.fitness = fitness_1 * fitness_2\n", + " \n", + " #store the bp_distance of each chromosome.\n", + " cell.bp_distance_1 = bp_distance_1\n", + " cell.bp_distance_2 = bp_distance_2\n", + " \n", + " \n", + " #add the cell's fitness value to the list of all fitness values (used for normalization later)\n", + " tot.append(cell.fitness)\n", + "\n", + " #normalization factor is sum of all fitness values in population\n", + " norm = np.sum(tot)\n", + " #divide all fitness values by the normalization factor.\n", + " for cell in population:\n", + " cell.fitness = cell.fitness / norm\n", + "\n", + " return None\n", + "\n", + "compute_fitness(pop, target)\n", + "for cell in pop[:10]:\n", + " print(cell.fitness, cell.bp_distance_1, cell.bp_distance_2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introducing diversity: Mutations\n", + "\n", + "Evolution would go nowhere without random mutations. While mutations are technically just random errors in the copying of genetic material, they are essential in the process of evolution. This is because they introduce novel diversity to populatons, which with a low frequency can be beneficial. And when a beneficial mutation arises (i.e. a mutation that increases fitness, or replication probability) it quickly takes over the population and the populatioin as a whole has a higher fitness.\n", + "\n", + "Implementing mutations in our model will be quite straightforward. Since mutations happen at the genotype/sequence level, we simply have to iterate through our strings of nucleotides (sequences) and randomly introduce changes." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AAAAGGAGUGUGUAUGU\n", + "('AcAAGgAuUGUuaAaGa', True)\n" + ] + } + ], + "source": [ + "def mutate(sequence, mutation_rate=0.001):\n", + " \"\"\"Takes a sequence and mutates bases with probability mutation_rate\"\"\"\n", + " \n", + " #start an empty string to store the mutated sequence\n", + " new_sequence = \"\"\n", + " #boolean storing whether or not the sequence got mutated\n", + " mutated = False\n", + " #go through every bp in the sequence\n", + " for bp in sequence:\n", + " #generate a random number between 0 and 1\n", + " r = random.random()\n", + " #if r is below mutation rate, introduce a mutation\n", + " if r < mutation_rate:\n", + " #add a randomly sampled nucleotide to the new sequence\n", + " new_sequence = new_sequence + random.choice(\"aucg\")\n", + " mutated = True\n", + " else:\n", + " #if the mutation condition did not get met, copy the current bp to the new sequence\n", + " new_sequence = new_sequence + bp\n", + " \n", + " return (new_sequence, mutated)\n", + "\n", + "sequence_to_mutate = 'AAAAGGAGUGUGUAUGU'\n", + "print(sequence_to_mutate)\n", + "print(mutate(sequence_to_mutate, mutation_rate=0.5))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selection\n", + "\n", + "The final process in this evolution model is selection. Once you have populations with a diverse range of fitnesses, we need to select the fittest individuals and let them replicate and contribute offspring to the next generation. In real populations this is just the process of reproduction. If you're fit enough you will be likely to reproduce more than another individual who is not as well suited to the environment.\n", + "\n", + "In order to represent this process in our model, we will use the fitness values that we assigned to each Cell earlier and use that to select replicating Cells. This is equivalent to sampling from a population with the sampling being weighted by the fitness of each Cell. Thankfully, `numpy.random.choice` comes to the rescue here. Once we have sampled enough Cells to build our next generation, we introduce mutations and compute the fitness values of the new generation." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GAGCUUUAAACUAAUCUAAU\n", + "GCAAAAGACAGCCaGCAUCA\n", + "UUUCUUUUUCCCCCCCGAUG\n", + "AAGCCCUAGGUAUGUUGUAG\n", + "AAGAAGUACCCAUACAGAUG\n", + "CUAAGACGACUUUUAGUUCA\n", + "ACCUGCCAUCAUCACCAGAC\n", + "AGAAUUGCUGUUCUCUAUCU\n", + "GCGGAUCAUACUCCAAGUCG\n", + "GAGCUUUAAACUAAUCUAAU\n" + ] + } + ], + "source": [ + "def selection(population, target, mutation_rate=0.001, beta=-2):\n", + " \"\"\"\n", + " Returns a new population with offspring of the input population\n", + " \"\"\"\n", + "\n", + " #select the sequences that will be 'parents' and contribute to the next generation\n", + " parents = np.random.choice(population, len(population), p=[rna.fitness for rna in population], replace=True)\n", + "\n", + " #build the next generation using the parents list\n", + " next_generation = [] \n", + " for i, p in enumerate(parents):\n", + " new_cell = Cell(p.sequence_1, p.structure_1, p.sequence_2, p.structure_2)\n", + " new_cell.id = i\n", + " new_cell.parent = p.id\n", + " \n", + " next_generation.append(new_cell)\n", + "\n", + " #introduce mutations in next_generation sequeneces and re-fold when a mutation occurs\n", + " for rna in next_generation: \n", + " mutated_sequence_1, mutated_1 = mutate(rna.sequence_1, mutation_rate=mutation_rate)\n", + " mutated_sequence_2, mutated_2 = mutate(rna.sequence_2, mutation_rate=mutation_rate)\n", + " \n", + " if mutated_1:\n", + " rna.sequence_1 = mutated_sequence_1\n", + " rna.structure_1 = nussinov(mutated_sequence_1)\n", + " if mutated_2:\n", + " rna.sequence_2 = mutated_sequence_2\n", + " rna.structure_2 = nussinov(mutated_sequence_2)\n", + " else:\n", + " continue\n", + "\n", + " #update fitness values for the new generation\n", + " compute_fitness(next_generation, target, beta=beta)\n", + "\n", + " return next_generation\n", + "\n", + "next_gen = selection(pop, target)\n", + "for cell in next_gen[:10]:\n", + " print(cell.sequence_1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Gathering information on our populations\n", + "\n", + "Here we simply store some statistics (in a dictionary) on the population at each generation such as the average base pair distance and the average fitness of the populations. No coding to do here, it's not a very interesting function but feel free to give it a look." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def record_stats(pop, population_stats):\n", + " \"\"\"\n", + " Takes a population list and a dictionary and updates it with stats on the population.\n", + " \"\"\"\n", + " generation_bp_distance_1 = [rna.bp_distance_1 for rna in pop]\n", + " generation_bp_distance_2 = [rna.bp_distance_2 for rna in pop]\n", + "\n", + " mean_bp_distance_1 = np.mean(generation_bp_distance_1)\n", + " mean_bp_distance_2 = np.mean(generation_bp_distance_2)\n", + " \n", + " mean_fitness = np.mean([rna.fitness for rna in pop])\n", + "\n", + "\n", + " population_stats.setdefault('mean_bp_distance_1', []).append(mean_bp_distance_1)\n", + " population_stats.setdefault('mean_bp_distance_2', []).append(mean_bp_distance_2)\n", + " \n", + " population_stats.setdefault('mean_fitness', []).append(mean_fitness)\n", + " \n", + " return None" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## And finally.... evolution\n", + "\n", + "We can put all the above parts together in a simple function that does the following:\n", + "\n", + "1. start a new population and compute its fitness\n", + "2. repeat the following for the desired number of generations:\n", + " 1. record statistics on population\n", + " 2. perform selection+mutation\n", + " 3. store new population\n", + "\n", + "And that's it! We have an evolutionary reactor!" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def evolve(target, generations=10, pop_size=100, mutation_rate=0.001, beta=-2):\n", + " \"\"\"\n", + " Takes target structure and sets up initial population, performs selection and iterates for desired generations.\n", + " \"\"\"\n", + " #store list of all populations throughotu generations [[cells from generation 1], [cells from gen. 2]...]\n", + " populations = []\n", + " #start a dictionary that will hold some stats on the populations.\n", + " population_stats = {}\n", + " \n", + " #get a starting population\n", + " initial_population = populate(target, pop_size=pop_size)\n", + " #compute fitness of initial population\n", + " compute_fitness(initial_population, target)\n", + "\n", + " #set current_generation to initial population.\n", + " current_generation = initial_population\n", + "\n", + " #iterate the selection process over the desired number of generations\n", + " for i in range(generations):\n", + "\n", + " #let's get some stats on the structures in the populations \n", + " record_stats(current_generation, population_stats)\n", + " \n", + " #add the current generation to our list of populations.\n", + " populations.append(current_generation)\n", + "\n", + " #select the next generation\n", + " new_gen = selection(current_generation, target, mutation_rate=mutation_rate, beta=beta)\n", + " #set current generation to be the generation we just obtained.\n", + " current_generation = new_gen \n", + " \n", + " return (populations, population_stats)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Try a run of the `evolve()` function." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "pops, pops_stats = evolve(\"(((....)))\", generations=20, pop_size=1000, mutation_rate=0.005, beta=-2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's see if it actually worked by plotting the average base pair distance as a function of generations for both genes in each cell. We should expect a gradual decrease as the populations get closer to the target structure." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEKCAYAAAD9xUlFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xd4HNXV+PHv2VVZNUu2JctFtiXbuFcsjBsEQwBjiimGN7RgEkLoL6SR9xc6b5KXhEAwJBAChN5LYohNCzaYZlxw791ylWVbsno7vz9mJGRZZW1pNSvpfJ5nnp2duTNzdrXas3PvzL2iqhhjjDEAPq8DMMYYEz4sKRhjjKlmScEYY0w1SwrGGGOqWVIwxhhTzZKCMcaYapYUjDHGVLOkYIwxppolBWOMMdUivA7gaCUnJ2t6errXYRhjTKuyaNGifaqa0li5VpcU0tPTWbhwoddhGGNMqyIiW4MpZ9VHxhhjqllSMMYYU82SgjHGmGqtrk3BmPamrKyMrKwsiouLvQ7FtAKBQIC0tDQiIyOPaXtLCsaEuaysLBISEkhPT0dEvA7HhDFVJScnh6ysLDIyMo5pH1Z9ZEyYKy4upnPnzpYQTKNEhM6dOzfprNKSgjGtgCUEE6ymflbaTVLYunoRX//1WkqKC70OxRhjwla7SQoHd21g7N7XWPPle16HYowxYavdJIWB488lT2MpXfaO16EYY45Beno6+/bta9Z9nnLKKdU9JEyZMoWDBw/WW/bPf/4zhYXe1jQ89thj9OvXDxFp9veiSrtJCtGBWNYmTuC4g59RXlridTjGmDAza9YskpKS6l0fDklhwoQJfPzxx/Tu3Ttkx2hXl6T6h55P0pcfsWL+bIaedL7X4Rhz1O59dyWrduY16z4Hd+/A3ecOabDMli1bmDx5MmPHjuXLL7/khBNO4Oqrr+buu+9m7969vPTSSwwZMoSbb76ZFStWUFZWxj333MPUqVPZsmULV155JQUFBYDza3f8+PHMnTuXe+65h+TkZFasWMHo0aN58cUXG2wo/cMf/sDs2bOJiYnh5Zdfpl+/fkyfPp1AIMDChQvJy8vjoYce4pxzzqlz+6KiIq6++mqWLl3KwIEDKSoqql5X1a9aTEwMl1xyCVlZWVRUVHDnnXeyZ88edu7cyaRJk0hOTmbOnDlcf/31LFiwgKKiIqZNm8a9995bvZ+rrrqKd999l7KyMt544w0GDhxIfn4+N998MwsXLkREuPvuu7nooov48MMPufvuuykpKaFv37784x//ID4+vs74R40a1eDfqTmELCmISAD4DIh2j/Omqt5dq8x04I/ADnfRY6r6VKhiGjThfAq++BlFS94GSwrGHJUNGzbwxhtv8Mwzz3DCCSfw8ssv8/nnnzNz5kx+97vfMXjwYE499VSeeeYZDh48yJgxY/j+979Ply5d+OijjwgEAqxfv55LL720usrm22+/ZeXKlXTv3p0JEybwxRdfMHHixHpjSExMZPny5Tz//PPceuutvPee00a4ZcsWvvnmGzZu3MikSZPYsGEDgUDgiO0ff/xxYmNjWb16NcuWLeP4448/osz7779P9+7d+fe//w1Abm4uiYmJPPTQQ8yZM4fk5GQAfvvb39KpUycqKio47bTTWLZsGcOHDwcgOTmZxYsX89e//pUHH3yQp556ivvvv786foADBw6wb98+/vd//5ePP/6YuLg4HnjgAR566CHuuuuuJvylmiaUZwolwKmqmi8ikcDnIjJbVb+uVe41Vb0phHFUi4mLZ0HCePrmzKGyvBxfRLs6UTJtQGO/6EMpIyODYcOGATBkyBBOO+00RIRhw4axZcsWsrKymDlzJg8++CDg3F+xbds2unfvzk033cSSJUvw+/2sW7euep9jxowhLS0NgJEjR7Jly5YGk8Kll15a/XjbbbdVL7/kkkvw+Xwcd9xx9OnThzVr1jBy5Mgjtv/ss8+45ZZbABg+fHj1l3hNw4YN4+c//zm3334755xzDieddFKdsbz++us8+eSTlJeXs2vXLlatWlW9vwsvvBCA0aNH8/bbbwPw8ccf8+qrr1Zv37FjR9577z1WrVrFhAkTACgtLWXcuHH1vv6WELJvRVVVIN99GulOGqrjBUsHnUenBXNYu+BDBoyb4nU4xrQa0dHR1fM+n6/6uc/no7y8HL/fz1tvvcWAAQMO2+6ee+4hNTWVpUuXUllZedgv+Jr79Pv9lJeXNxhDzaql+ubren40+vfvz+LFi5k1axZ33HEHp5122hG/3Ddv3syDDz7IggUL6NixI9OnTz/shrGq19XYa1JVTj/9dF555ZVjjre5hbShWUT8IrIE2At8pKrz6yh2kYgsE5E3RaRnPfu5VkQWisjC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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def evo_plot(pops_stats):\n", + " \"\"\"\n", + " Plot base pair distance for each chromosome over generations.\n", + " \"\"\"\n", + " for m in ['mean_bp_distance_1', 'mean_bp_distance_2']:\n", + " plt.plot(pops_stats[m], label=m)\n", + " plt.legend()\n", + " plt.xlabel(\"Generations\")\n", + " plt.ylabel(\"Mean Base Pair Distance\")\n", + " \n", + "evo_plot(pops_stats)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You should see a nice drop in base pair distance! Another way of visualizing this is by plotting a histogram of the base pair distance of all Cells in the initial population versus the final population." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAEKCAYAAAAyx7/DAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xt8nGWd9/HPbyaHyTnNoce0pC20pdAjoUA5FVAsZ1xwBZEV2bUiIuq6uuizrvr4LPo87ksUV3BZkZOcBAEBcRG1XShFSlpKz0Cbpm3SQ9K0TZPmPHM9f9yTNJQcJulMJnfzfb9eYSYz9+E30+E7V677uq/bnHOIiIh/BJJdgIiIDIyCW0TEZxTcIiI+o+AWEfEZBbeIiM8ouEVEfEbBLSLiMwpuERGfUXCLiPhMSiI2WlRU5EpLSxOxaRGR49KqVav2OeeKY1k2IcFdWlpKeXl5IjYtInJcMrPtsS6rrhIREZ9RcIuI+IyCW0TEZxLSxy0ix6a9vZ2qqipaWlqSXYrEWSgUoqSkhNTU1EFvQ8EtMgxVVVWRk5NDaWkpZpbsciROnHPU1dVRVVXF5MmTB70ddZWIDEMtLS0UFhYqtI8zZkZhYeEx/yWl4BYZphTax6d4/LsquEVEfEZ93CI+8NibO+K6vU+dManfZRYuXMiKFSv6XOYf/uEf+Md//EdmzpzJnXfeybe+9a0BrZ+dnU1jY2NsRcdRZWUll19+OevXr+9zmRUrVvCpT30KgPLych5++GHuvvvuoSqzVwruwSh/oPfnyj47dHWIJFB/oQvwy1/+suv+0cEdy/rDWWVlJY899lhXcJeVlVFWVpbkqjzqKhGRHmVnZwOwbNkyFi1axLXXXsuMGTO44YYbcM4BsGjRIsrLy7njjjtobm5m7ty53HDDDR9Yv7GxkYsuuoj58+cza9Ysfve73/W538rKyq79nHzyyVx77bU0NTUB8Oc//5l58+Yxa9Ysbr75ZlpbWwFvmo1vfOMbzJo1iwULFrBlyxYAbrrpJp5++ukPvaaj93fuuecyf/585s+f3/WFc8cdd/Daa68xd+5c7rrrLpYtW8bll18OwP79+7n66quZPXs2Z555JmvXrgXgu9/9LjfffDOLFi1iypQpCWudK7hFpF9vv/02P/nJT9i4cSMVFRW8/vrrH3j+hz/8IRkZGaxZs4ZHH330A8+FQiGeffZZVq9ezdKlS/na177WFfy9effdd7n11lvZtGkTubm53HPPPbS0tHDTTTfx5JNPsm7dOjo6Orj33nu71snLy2PdunXcdtttfOUrX4n5tY0ePZpXXnmF1atX8+STT3L77bd3vaZzzz2XNWvW8NWvfvUD63znO99h3rx5rF27ljvvvJO/+7u/63pu8+bNvPzyy6xcuZLvfe97tLe3x1xLrBTcItKvBQsWUFJSQiAQYO7cuVRWVsa8rnOOb33rW8yePZuPfOQjVFdXs3fv3j7XmThxImeffTYAn/70p1m+fDnvvvsukydPZtq0aQB85jOf4dVXX+1a5/rrr++6feONN2Kur729nc997nPMmjWLT3ziE2zcuLHfdZYvX86NN94IwIUXXkhdXR2HDh0C4LLLLiM9PZ2ioiJGjx7d72sdDPVxi0i/0tPTu+4Hg0E6OjpiXvfRRx+ltraWVatWkZqaSmlpab/jmI8eMhfLELruy3TeT0lJIRKJABCJRGhra/vQenfddRdjxozhnXfeIRKJEAqF+t1XX47lvYqVWtwiEhepqak9dgvU19czevRoUlNTWbp0Kdu39z976Y4dO7pazY899hjnnHMO06dPp7Kysqv/+pFHHuH888/vWufJJ5/suj3rrLMAr+971apVADz//PO91jdu3DgCgQCPPPII4XAYgJycHBoaGnqs79xzz+3qElq2bBlFRUXk5ub2+7riRS1uER+IZfhesi1ZsoTZs2czf/78D/Rz33DDDVxxxRXMmjWLsrIyZsyY0e+2pk+fzs9//nNuvvlmZs6cyRe+8AVCoRAPPPAAn/jEJ+jo6OD000/nlltu6VrnwIEDzJ49m/T0dB5//HEAPve5z3HVVVcxZ84cFi9eTFZW1of2deutt3LNNdfw8MMPf2CZ2bNnEwwGmTNnDjfddBPz5s3rWqfzIOTs2bPJzMzkoYceGvT7NhjW30GCwSgrK3PH9YUUNBxQEmzTpk2cfPLJyS4jKWIZY320zou3FBUVJbCy+Onp39fMVjnnYhpvqK4SERGfUVeJiAwrpaWlA2ptAwMa5XI8UItbRMRnYmpxm1kl0ACEgY5Y+2FERCT+BtJVcoFzbl/CKhERkZioq0RExGdibXE74I9m5oD/dM7dl8CaRORofQ1BHYwYhq3efffd3HvvvcyfP59PfvKTbNy4kTvuuGNQu9P0rfEVa3Cf45yrNrPRwCtmttk592r3BcxsCbAEYNKk4X+ygIj07Z577uFPf/oTJSUlAFx55ZVJrigxhvP0rb2JqavEOVcdva0BngUW9LDMfc65MudcWXFxcXyrFJEhdcstt1BRUcEll1zCXXfdxYMPPshtt90GeFOl3n777SxcuJApU6Z0TZuq6VuHTr/BbWZZZpbTeR+4GBjYIEsR8ZVf/OIXjB8/nqVLl35oSlOA3bt3s3z5cl588cWu7hNN3xr/6Vt7E0uLewyw3MzeAVYCv3fO/XdiyxKR4ezqq68mEAgwc+bMrmlLNX1r/Kdv7U2/fdzOuQpgzhDUIiI+0X3q0s5WtaZvjf/0rb3RcEARiQtN3zp0NFeJiB/4YNZJTd86dDSt62BoWldJsJEwretImL61N5rWVURkhFFXiYgkhaZvHTy1uEWGqUR0Y0ryxePfVcEtMgyFQiHq6uoU3scZ5xx1dXXHPBRRXSUiw1BJSQlVVVXU1tYmuxSJs1Ao1DX/y2ApuEWGodTUVCZPnpzsMmSYUleJiIjPKLhFRHxGwS0i4jMKbhERn1Fwi4j4jIJbRMRnFNwiIj6j4BYR8RkFt4iIzyi4RUR8RsEtIuIzCm4REZ9RcIuI+IyCW0TEZxTcIiI+o+AWEfEZBbeIiM8ouEVEfEbBLSLiMwpuERGfiTm4zSxoZm+b2YuJLEhERPo2kBb3l4FNiSpERERiE1Nwm1kJcBnwy8SWIyIi/Ym1xf0T4BtAJIG1iIhIDPoNbjO7HKhxzq3qZ7klZlZuZuW1tbVxK1BERD4olhb32cCVZlYJPAFcaGa/Pnoh59x9zrky51xZcXFxnMsUEZFO/Qa3c+6bzrkS51wpcB3wF+fcpxNemYiI9EjjuEVEfCZlIAs755YByxJSiYiIxEQtbhERn1Fwi4j4jIJbRMRnFNwiIj6j4BYR8RkFt4iIzyi4RUR8RsEtIuIzCm4REZ9RcIuI+IyCW0TEZxTcIiI+o+AWEfEZBbeIiM8ouEVEfEbBLSLiMwpuERGfUXCLiPiMgltExGcU3CIiPqPgFhHxGQW3iIjPKLhFRHxGwS0i4jMKbhERn1Fwi4j4jIJbRMRnFNwiIj6j4BYR8RkFt4iIz/Qb3GYWMrOVZvaOmW0ws+8NRWEiItKzlBiWaQUudM41mlkqsNzM/uCc+2uCaxMRkR70G9zOOQc0Rn9Njf64RBYlIiK9i6mP28yCZrYGqAFecc692cMyS8ys3MzKa2tr412niIhExRTczrmwc24uUAIsMLNTe1jmPudcmXOurLi4ON51iohI1IBGlTjnDgJLgcWJKUdERPoTy6iSYjPLj97PAD4KbE50YSIi0rNYRpWMAx4ysyBe0P/GOfdiYssSEZHexDKqZC0wbwhqERGRGOjMSRERn1Fwi4j4jIJbRMRnFNwiIj6j4BYR8RkFt4iIzyi4RUR8RsEtIuIzCm4REZ9RcIuI+IyCW0TEZxTcIiI+o+AWEfEZBbeIiM8ouEVEfEbBLSLiMwpuERGfUXCLiPiMgltExGcU3CIiPqPgFhHxGQW3iIjPKLhFRHxGwS0i4jMKbhERn1Fwi4j4jIJ7oF74Crz+U3Au2ZWIyAiVkuwCfKVuK6x+CFwEajfD6JOTXZHIoD325o4+n//UGZOGqBIZKLW4B2L5jyGYBum5sPUvya5GREaofoPbzCaa2VIz22hmG8zsy0NR2LBzYDu88wTM/wxMWQR178PBncmuSkRGoFha3B3A15xzM4EzgS+a2czEljUMvf5TwODsL8OkhZASggq1ukVk6PUb3M653c651dH7DcAmYEKiCxtWDu2Gtx+BeTdA3gRIDcEJC2HXGji8L9nVicgIM6A+bjMrBeYBbyaimGHrvf+GcBuceeuRxyafD2ZQtTJ5dYnIiBRzcJtZNvBb4CvOuUM9PL/EzMrNrLy2tjaeNSbf3vWQlgNF0448FsqD7DFQX528ukRkRIopuM0sFS+0H3XOPdPTMs65+5xzZc65suLi4njWmHx7N8CYU7wWdnc546FhV3JqEpERK5ZRJQbcD2xyzv048SUNM855wT321A8/lzsOmg9Ae9PQ1yUiI1YsLe6zgRuBC81sTfTn0gTXNXwc3A6th2BMT8E93rs9tHtoaxKREa3fMyedc8sB62+549beDd5tT8GdEw3uhl1QOHXoahKREU1nTvZnz3rAYEwPQ9dDeZCaCYfUzy0iQ0fB3Z+966BgCqRlffg5M6+7RMEtIkNIwd2fzhElvckZDw27vYmnRESGgIK7L62NsH8bjJ3V+zK5472Tc5r2D11dIjKiKbj7UrMRcD0fmOzUNbJE3SUiMjQU3H3Zu9677bOrZCxgOhFHRIaMgrsve9ZDeh7k9zGhfDANsorU4haRIaPg7sve9T2f6n40jSwRkSGk4O6Nc7B3Y9/dJJ1yxkNTHXS0Jr4uERnxFNy9adgNbQ1QPL3/ZXPHAQ4a9ya8LBERBXdv9ld4t7Gcyp412rs9fJxNZysiw5KCuzd1W73bgin9L5tZCJiCW0SGhIK7N/u3eiNG8ib2v2wwFTLyFdwiMiQU3L2p2wqjSiEQjG35rGJdf1JEhoSCuzf7t0HBAKZqzSxSi1tEhoSCuyeRiHdwMpb+7U5Zxd6VcDRniYgkmIK7Jw27oaMZCgcY3HBkNIqISIIouHuyv3NEyQC6SrKKousquEUksRTcPRnIGO5OnUMCO4cRiogkiIK7J3XRoYC5E2Jfp3NI4H4Ft4gkloK7J/srYNTk2IcCdsoqVotbRBJOwd2Tuq2Du2p7VrH6uEUk4RTcR4tE4MC2gQ0F7JRVBC0HNSRQRBJKwX20hl3Q0TLI4I4OCVR3iYgkkIL7aJ2hO9iuEtABShFJKAX30QYzhrtTRiFYQP3cIpJQCu6j7a+AYPrAhgJ2CqZAXom6SkQkoVKSXcCwU1cBBZMhMMjvtIKp6ioRGaDH3tzR7zKfOqOPi3aPMGpxH23fe1B00uDXLzzRa3E7F7+aRES6UXB3F273hgIWTRv8NoqmQeshXX9SRBKm3+A2s1+ZWY2ZrR+KgpLqQCVEOqDwGFrcna31fe/FpSQRkaPF0uJ+EFic4DqGh86wPdYWd/dtiYjEWb/B7Zx7FRgZpwJ2BfeJg99G7nhIzYJ978enJhGRo8Stj9vMlphZuZmV19b69BJe+96H7LEQyhv8Nsy87hK1uEUkQeIW3M65+5xzZc65suLi4nhtdmjte//YRpR0KpqmFreIJIxGlXRy7tiHAnYqmgb1O6Ht8LFvS0TkKDoBp9Phfd7MfsdyYLJTZ/jXbYFxc459ezLs6QQSGUqxDAd8HHgDmG5mVWb294kvKwm6DkzGqcUN6i4RkYTot8XtnLt+KApJurpoyB7LGO5OBVO8yaZ0gFJEEkB93J32vQ8pIcibeOzbSg1B/gkKbhFJCAV3p33vea3twU4udTSNLBGRBFFwd4rXiJJORSd5Bycj4fhtU0QEBbenvQUO7ohzcE/zLoFWvzN+2xQRQcHt2V8BLhKfoYCdNLJERBJEwQ2w713vtvAY5ig5Wmdw174bv22KiKDg9ux6GwKpMPrk+G0zq9C7ePDeDfHbpogICm5P9WoYOwtS0uO73QmnQXV5fLcpIiOegjsS9lrcE06L/7YnlHmjVVrq479tERmxFNz73oe2xgQF93zvtnp1/LctIiOWJpmqXuXddoZsPHUF9yqYekH8tx+L8gd6f67ss0NXhwwLrR1hNu1uoKGlnZpDLeRlpJKeGkx2WTJACu7qVZCWE585So6WMcobqaIWtyRRfVM7D6zYxtLNNWzcfYj2sPvA86MyUzm9tIDTThhFTig1SVXKQCi4q1fBhHnxO9X9aBPKoGKpN9+3WWL2IdKD+qZ27n99Gw8s30ZDawcLSgu4+ZzJzC3JpyArjWdWV1Pf3M77NQ38ceNe/ryphtkleSw+dawCfJgb2cHd3gJ718PCLyVuHxNOg7VPwKFqyCtJ3H5Eulm6uYavP/0O+xrbWHzKWG6/6CRmjs/9wDJba70LfZw3rZiahhbe3Laft7btZ/OeBi6dNY7rF0zE1NgYlkZ2cO9ZB5GOxByY7FQS3XZVedKC+81tPV/reWv4yOT/muT/+NDSHubOlzbx8BvbmTE2hwc/u4BTJ/R/DdXROSGumD2eMyYX8Ozqan67uoqahhZ+/LdzKc6J8zBZOWYje1RJ54HJ8Qk4MNlpzKkQTDuyL5EEqdx3mKv+43UefmM7f3/OZJ774tkxhXZ3o3NCfO68KVwxZzwrt+3nsrtfo7yy5y9+SZ6RHdy7VntXdc8dn7h9pKTD2NkKbkmoV9+r5cr/WM7ehhYeunkB3758JqFBjhYJmHHWlEKevfVsMtKCXHffX7l/+Tacc/2vLENiZAd39SqvmyTR/XgTTvNO8gl3JHY/MuI45/ivVyu46YGVjM/P4PkvnsP504rjsu2Z43N5/rZzuGDGaL7/4ka+9PjbHG7VZ3g4GLnBXV/tzZddUpb4fZWUQXsT7F2X+H3JiNHcFubLT6zh317axMdOGctvv7CQSYWZcd1HXkYq9914Gv+8eAYvrdvNx+95nYraxrjuQwZu5Ab3hme925lXJX5fUy+CQApseC7x+5IRYef+Jv7m3hW8sHYXX//YdO65YT5Z6YkZa2BmfGHRVB6++Qz2NbZx5X+8ztOrqtR1kkQjd1TJ+t/CuLlQODXx+8oqhKkXwvpn4KLvJG7MuIwIz7+zi28/tx7nHA/cdDqLpo8ekv2ec1IRL3zpHL76xBr+6al3eHnDHn7wN7Moyo7vqJP2cISahlbqGlvZf7iNprYwATN2HWwmJ5TC9LE5zByXS3FO+ogdrjgyg3t/hXdg8qPfH7p9nnotPLsEqlbCpDOHbr9y3Nh/uI1v/249v1+7m3mT8vnJJ+dyQmHWkNYwIT+Dx5ecyf3LK/j3l9/j4rte5UsXnsj1CyYN+mBoezjCtn2H2VLTyLZ9jew80Ew4cqQ1nxo0nIMVW/fR0e3xMbnpLD5lLJfOGkdZaQHBwMgJ8ZEZ3Ouf8W5P+fjQ7XPGpZCSAeueSk5w68zNuApHHDv2N7H3UAuNLR2s2XkAMDLTgmSmBckJpZIbSolLi7ClPczjK3fw86VbqG9u5+sfm87nz5tCSjA5f7kFA8aS86ayaPpo/uW59XzvhY384n+2cuuiE7lyznhGZaX1u41dB5tZsbWOZe/W8Op7tRxq6cCACaMyWDi1kImjMinMTqMgK430FO8L4VNnTKK+qZ1New6xafch3qzYzxNv7eShN7YzNjfEjWedwKcWTIpp/343coN74pmQP3Ho9pmeA9Mv8fq5F/8Qggk8pTjcARufgxU/g9rNnN7RhuE4kDOdmoLTqM+aohAfoJb2MH+tqGPZu7Ws2XmQd/c00Nze94WgQ6kBRueEGJMbomRUBnMm5jF9TE7MgVtzqIUX1+7mF/+zlZqGVs6YXMB3rjjlQ2dAJsu0MTk8ueRM3qio4yevvM93nt/Ad1/YwJySfM47qYiSUZlkh1LITAuy/3AbO/Y3sb2uiVXbD7BjfxMARdnpfOyUsaQGA5w4OrvfVnteZipnTinkzCmFfPbsyRxu7eDPm2t4qnwnP3r5XX72l/e5Zn4Jt5w/lYkF8T1QO5yMvOCu2QQ1G+CSHw39vmddCxuegYr/gZM+kph9bHoB/vhtOLANimdAyQJ2N4YJRtoprF9PQcNmmtKL2Trh6sTs/zjS0h7mT5v28tzbu1i+pZaW9gih1ABzJ+Zz3YKJnDwul5L8DLJDKSzbXEsER3NbmOa2MAeavdn3ahpaWVd9kLcq9/Ps29WkpQSYNiabk8fmcuLobIqy0ynISiMrPYUDTW3sP9zGzv1NvPp+LeurDwGwYHIBP71uHmdNLUzyO/JhZsbCqUWcNaWQd6rqWbq5hlffr+VnS7dw9LFLMxibG+KU8XnctLCUs6YWMn1MDoGA8dibO3reQT+y0lO4cs54rpwznvf2NvCr5dt4alUVT761k2tPK+GLF5x4XAb4yAvudU+DBeCUJATXiR+BUJ7XXRLv4G5vhpf/F5Tf752t+clfw/TLYPVDVEVPed8x5iMUHNrEpL1/4pSK+wmnZLJpymdxNvym9Yzlf+REnKbvnKN8+wF+89ZO/rB+D42tHYzNDXHd6ZO4YMZozphc0GOrsDNke9vm/sNtTCrMZH11PZv3NLDsvVqeWlXV4/LBgDF/Uj5f/9h0Lpg+eti0sPtiZsydmM/cifl89aPTONzawYGmNhpbO2hs6aAgK40JozK6uj0SYdqYHH54zWy+8pFp/OJ/tvLYyh08vaqKa+aXcNuFx1eAj6zgPlAJf70Xpi2G7KE5Ev8BKeneQcrVD8NZX4Rxs+Oz3dr34KmbvL8kFn4JLvxXSPlwP58LpFCXP4uD2ScyeffvmfveTxlb91dWzPkhMLLnKtld38xzb+/iqfKdVOw7TFZakEtnjePj8yZwxpTCYzrwZWYUZqdz1dwJXDV3Qtfjh1raOXDYa2U3tnYwKjPtQ/26fpWVnpKw4Yn9GZsX4rtXnsIXFk3l3mVegP92dRXXnuZ1oZQWDe0B3UQYOcEdicDvbvNa25f8v+TVceG/wObfw7OfhyXLjv06l2ufwr3wZSLBdNae90s2ZC6gZmkltQ2tNLV10FqbS01jJkFzhAIR0gMRclLCFKb/PadM2scVVT9m8et/Cyc8AiecFY9X6BsHm9p4ZeNenltTzYqtdTgHC0oL+MKiqVw2exyZaYn93yM3lEpuKHXIR4aMFGNyvQC/5fypXS3wJ8t3csmpY1ly3lTmTsxPdomDNnKCu/x+qHwNrvzZ0B6UPFpmAVz1H/DotbD03+Cj/3tAqx843Ma66nq27KhixrofsbD+95RHZnBb223s/WMmsB4zKMxKIzs9hbT2FNraIQK0hAO0RAI0dARxGDCO++y73NvxEyY+cCkv51/P1plf4KTxxcwcl0vJqAwCx9EQq3DE8e6eBt6oqOOVjXt4q/IA4YjjhMJMvnzRSXx83gSF6HGoswV+6wVTefD1Sn791+28tG4Pcybmc93pE7lizniyk/TXwWDFVK2ZLQZ+CgSBXzrnfpjQquKtahW88q9eH/O8G5NdDZz0UTjts/D63TBpIUxf/KFFnHPsOdTCxl2H2LjrEBt2HWJddT3VB5u4JvAa30x9jFHWyEt517F+xpf4p+I8phRnMyE/g6LstCMjF8of+NC0rmEHB9tTWDvqYuoOl/B/60/mxvp7uPTgo2xd/hf+peNm3oicQlZakOljc5g+NpepxVlMHZ3NlKIsxuVlkJYyPE8ics7R1BamrrGNvQ0tVNQ2srX2MJv3NPD29gM0ROfamDYmm1vOn8JHZ45lTknewIftHXVJuKk7jrzHWyd94phfh8Tf6JwQ31g8g1svOJGnynfyxMqdfPOZdXz/xY1cMGM0F88cw6Lpo8nLGP4Xkeg3uM0sCPwc+ChQBbxlZs875zYmurhj1t4My37gDYvLHgtX/DQuw+B6m98ajsxx3d+BM3fx94lsf4Pg459k39S/4a8nfpWKpgx27G9iS00jW2sau0IGYE5BB1/NeZMLA3+goKmCjvFlBK/4MZeOm8OlA6w/aFCY1sGkwiwmFWYBo1h4xlOw5c9MfuErPF7/b+zLm8XS/Gt4tnU+f1i/m4NN7V3rm0Fxdjrj8kLkZ6aRl5HqXbswJUBqSoDUgBFxEHaOSMTR2hGhpT1MS3uY5vYwTW1H7re0R2huC9MejtDe2kxHxPti6by6luEIGLhAGoGAETQIBIyAGf/56lYMcEBre4S2cITDrR20dkQ+8HrTUgJMKcriyrnjOb20gNMnFzAhP2OA7xreWPjmA1Bf5Y1Oam2AjhaIhBlX14ALpBAOpNOaNorm0GiaQmNoSS8algd/R7Ls9BQ+e/ZkblpYypqdB/lNeRWvbNzD79fuJiVgzJmYz2knjOK0E0ZxyvhcxucNv788rb/5BszsLOC7zrmPRX//JoBz7ge9rVNWVubKy8vjWecHOOcIRxwRB5Ho/Y5I9DYcoSPicPXVFD9zLWn126ibfh3b53+T5mA2bR0RWjsitHaEo7cRWtvDtIUjtLZHaA9HaOvwbtsjjvaOCOGII+y8fTjnqNv5XrSrIVpPt9oOZ0zA4Z1h5pzr2kZb2Auvw60dNLaGOdTSjnW0cFvKc3w++AItpLEqMo3K1Kl05E5kXHaQsZlwgqum4NAmgrUboxd9KIMFn4NZfxvbqfM9tLg7dW8Zdn3RtDXBmkfhzV94k3ClhKDkdJrHncGulAlsDxeyvTWHqsMBdjQadc2OA80dHGgO0xEOEwmHCYc7yLA2MgMdZFsro1JaKQi2UBRspDjQSFGgkULqKaCePHeInEg9meEG0sKHSXXtpNBBmABhgrRZGk1k0JAyikOWR30gjwOWT30gj9ScYg4H82gOZtORlotLzSKYnkVOTi6jsjMpyMtianEuE0Zl9Hxw0TkIt3nh297iBXFrvRfOjbXQuBcO7YKDO6B+JxzYDm0NMXxCjwhbCk0Z42jMmMC4SSd5F9PIHQ+ZRZBZCBn5kJbl/aSEIJAKgWDsDYxI2PtchNu91xJug47W6E+LdxuO3g93QKTdWwd47f19OAvgLIVIIJVwIM37CaYTCaRx+fxSCKZ7x2GCad65B4EUr77BikTAhbvV2w4dLbywupKtZww1AAAKVUlEQVRApJVguI1gpIVApJ1gpJ2AawfnMBfm3JOKvWNUgeCRelJCXn2dt8Ho/WBqtN7Y3s9wxLFm5wFe2VjDW5X7WVdVT1vYawBkpgWZUpzFCQVZjMkNMTYvncKsdPIyUsnNSCU7PYWMtCCh1ACZqSnkZQ6uxW5mq5xzMc16F0twXwssds79Q/T3G4EznHO39bbOYIN7/vdf6Zo20kX/43A45/3unBfWsTAi/Dj1Xp4Kn8+KyKkx15ASMNJSAqQGO3+MYMBICVhXS6/lUF10H0eK6fxctKV6BzwKstIIBCAYCJAeDJCaYqSnBMmOHm3PDaVQlJ1OYXYak8I7mFbxENl16wjUbvY+2J1C+TB+rnexh1OvgbGxvxZg4MHdKRKBir/Alj9D5XLvakHEcVKhUD5kFUNWtwA7sCP6P1uQ6gNNmAsTcB2khJtpS8snve0Aodb9hNrqCEbaYtyRef+zW7cvORf54Hvcl/RcyJ8EeRO921EneOFbtco7qSo1BIEUVm4/RMC1Ewy3snv0uWS27CWzeQ9ZLbvJbq4mq6maonANNNYQ0/towWhA2pEPl3Peus559btIX1tILAtG39fo+/uhOju56PsdiX5hJGliKgtEa+5WL3ift2/u/NDiLe1hNuzyhm5uqWlkS00j1Qea2XOohaa23j87hVlprPr2RwdXYjKC28yWAEuiv04H3h1AzUXAvgEsn2yqN/H8VrPf6gX/1Xy813uCcy6mydRjOThZDXQfhlESfewDnHP3AffFVN5RzKw81m+a4UD1Jp7favZbveC/mlXvEbEMDXgLOMnMJptZGnAd8HwiihERkf712+J2znWY2W3Ay3jDAX/lnNuQ8MpERKRHMY3jds69BLyUwDoG1cWSRKo38fxWs9/qBf/VrHqj+j04KSIiw8vwPP1NRER6NSyC28w+YWYbzCxiZsP6qLGZLTazd81si5ndkex6+mJmvzKzGjNbn+xaYmFmE81sqZltjH4evpzsmvpjZiEzW2lm70Rr/l6ya4qFmQXN7G0zezHZtcTCzCrNbJ2ZrTGzxJ3dFydmlm9mT5vZZjPbFD2RMW6GRXAD64G/AV5NdiF96Xb6/yXATOB6M5uZ3Kr69CDw4YlQhq8O4GvOuZnAmcAXh/n7C9AKXOicmwPMBRabmR8uKvplYFOyixigC5xzc30yJPCnwH8752YAc4jzez0sgts5t8k5N5ATdpJlAbDFOVfhnGsDngCuSnJNvXLOvQr0PrHKMOOc2+2cWx2934D3YZ/Q91rJ5TyN0V9Toz/D+sCRmZUAlwG/THYtxyMzywPOA+4HcM61OecOxnMfwyK4fWQC0P382CqGebD4lZmVAvOAN5NbSf+i3Q5rgBrgFefccK/5J8A38Gb79QsH/NHMVkXP0h7OJgO1wAPR7qhfmllc5wsesuA2sz+Z2foefoZti1WSw8yygd8CX3HO9X5NsGHCORd2zs3FO6t4gZkNcEKZoWNmlwM1zrlVya5lgM5xzs3H66b8opmdl+yC+pACzAfudc7NAw4DcT0eNmSzhzvnEnR13CEV0+n/MnhmlooX2o86555Jdj0D4Zw7aGZL8Y4rDNcDwmcDV5rZpUAIyDWzXzvnPp3kuvrknKuO3taY2bN43ZbD9ZhYFVDV7S+vp4lzcKurZGB0+n8CmXc1g/uBTc65Hye7nliYWbGZ5UfvZ+DNW785uVX1zjn3TedciXOuFO/z+5fhHtpmlmVmOZ33gYsZvl+MOOf2ADvNbHr0oYuAuF6/YFgEt5l93MyqgLOA35vZy8muqSfOuQ6g8/T/TcBvhvPp/2b2OPAGMN3Mqszs75NdUz/OBm4ELowO+1oTbRkOZ+OApWa2Fu+L/RXnnC+G2PnIGGC5mb0DrAR+75z77yTX1J8vAY9GPxdzgTvjuXGdOSki4jPDosUtIiKxU3CLiPiMgltExGcU3CIiPqPgFhHxGQX3CGZmzsx+3e33FDOrTfSMcWb2oJltiw7322xm30ngvkrNrDm6r41m9gsz6/Nzb2YrYtx254x166Lb/j9mFoo+N97Mnu5j3Xwzu3Vgr0bEo+Ae2Q4Dp0ZPHAHv5JGhOhP069HTxOcCnzGzyQnc19bovmbjzep4dV8LO+cWHv2YmfV2lvEFzrlZeGfyTQH+M7qNXc65a/vYTT6g4JZBUXDLS3gzxQFcDzze+UT0jLVfReebfrtzXploK/Y1M1sd/VkYfXyRmS3rNg/xo9GzIfsSit4ejm7jX83sreg8Nvd1rm9mt0dbtWvN7Im+6utN9ASqFcCJZpZtZn+O1r+u+7pm1tjt9bxmZs/Tz5lv0RkCbwGuNrOC6Hu0PrqdU6I1ronWfxLwQ2Bq9LEf9VZPdDubzOy/zJvv+4+dX7RmdqJ5cwC9E11vavTxr0ffw7Xmk/nBZYCcc/oZoT9AI14r9Gm8AF0DLAJejD5/J/Dp6P184D0gC8gEQtHHTwLKo/cXAfV4c7gE8M7aPKeH/T4IbIvurxG4s9tzBd3uPwJcEb2/C0jvrKWv+o7aVymwPno/E+/sxkvw5unJjT5eBGzhyAlpjd1ez2Fgci/vXyVQdNRja4Azjtrvz4AbovfTgIzuz0cf77Ge6HIdwNzoc7/p9prfBD4evR+Kvr6L8a51aNF/gxeB85L9WdNPfH/U4h7hnHNr8cLhej58QeiLgTvMm7J0GV44TMKbc/q/zGwd8BRe90Onlc65KudcBC/ESnvZdWdXyVjgos5WO3CBmb0Z3faFwCnRx9finUL8abwg66u+o02NLvM63unSf8ALtjujpyT/CW963jE9rLvSObetl9fQk57+wngD+JaZ/TNwgnOuuZf1eqtnm3NuTfT+KqA0OnfHBOfcswDOuRbnXBPee3Ix8DawGpiB9+Uqx5Ehmx1QhrXngX/Ha2EWdnvcgGvcURe5MLPvAnvxruwRAFq6Pd3a7X6Yfj5jzrlGM1sGnGNmq4F7gDLn3M7ofjq7Ui7Dm5z+CuB/mdms3urrQWcfd3c3AMXAac65djOr7Lav7g73s+0u0TAtxWv553V7jY+Z2ZvR1/CSmX0eqBhAPUe/pxn0zoAfOOf+M9a6xX/U4haAXwHfc86tO+rxl4Evdetnnhd9PA/YHW1V3wgEB7vj6EG/M4CtHAmqfebNyX1tdJkAMNE5txT45+j+s/uoLxZ5ePNSt5vZBcAJg30N0X1n433pPOecO3DUc1OACufc3cDv8LqnGoCcwdbjvCsEVZnZ1dF9pJtZJt57cnO0HsxsgpmNPpbXJsOPgluIdm3c3cNT38frFllrZhuiv4MXUJ8xb7a2GQygVdrNj6LdF2uBdcAzzru803/hTdn5Ml5/NHhfDL+Odp+8DdwdXba3+mLxKFAW3ebfMfipWJdGD0KuBHYAn+9hmb8F1kdf76nAw865OuD16EHYHw2ynhuB26PdKyuAsc65PwKPAW9Et/U0H/yCkOOAZgcUEfEZtbhFRHxGwS0i4jMKbhERn1Fwi4j4jIJbRMRnFNwiIj6j4BYR8RkFt4iIz/x/0JKX5GmUJtEAAAAASUVORK5CYII=\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def bp_distance_distributions(pops):\n", + " \"\"\"\n", + " Plots histograms of base pair distance in initial and final populations.\n", + " \"\"\"\n", + " #plot bp_distance_1 for rnas in first population\n", + " g = sns.distplot([rna.bp_distance_1 for rna in pops[0]], label='initial population')\n", + " #plot bp_distance_1 for rnas in first population\n", + " g = sns.distplot([rna.bp_distance_1 for rna in pops[-1]], label='final population')\n", + " g.set(xlabel='Mean Base Pair Distance')\n", + " g.legend()\n", + "bp_distance_distributions(pops)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Studying our evolved sequences with some Population Genetics tools\n", + "\n", + "Now that we've generated some sequences, we can analyze them!\n", + "\n", + "So after several rounds of selection, what do we get? We have a bunch of different sequences. We would like a way to characterize this diversity. One important tool for doing this is by making what is known as phylogenetic trees. \n", + "\n", + "Phylogenetic trees tell us about which groups of similar sequences are present and how they are likely related in evolutionary time. \n", + "\n", + "There are several ways of building phylogenetic trees using BioPython. Here we will go over one type and I'll leave another one as an exercise.\n", + "\n", + "### UPGMA (Unweighted Pair Group Method with Arithmetic Means)\n", + "\n", + "This is basically a clustering method based on the distance (or number of differences) between every pair of sequences. It assumes that sequences that are more similar are more likely to be related than the other way around. \n", + "\n", + "For $N$ sequences, the algorithm builds an $NxN$ matrix that stores the distance between each sequence to every other sequence. The algorithm goes through this matrix and finds the pair of sequences that is most similar and merges it into a 'cluster' or in tree terms, connects them to a common node. This process is repeated until all the sequences have been assigned to a group. Refer to the wikipedia article on [UPGMA](https://en.wikipedia.org/wiki/UPGMA) for a more detailed explanation. \n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "from Bio import SeqIO\n", + "from Bio.Seq import Seq\n", + "from Bio.SeqRecord import SeqRecord\n", + "from Bio import AlignIO" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "sequences = []\n", + "#let's take the first 10 sequences of our population to keep things simple\n", + "for seq in pops[-1][:10]:\n", + " #store each sequence in the sequences list as a SeqRecord object\n", + " sequences.append(SeqRecord(Seq(seq.sequence_1), id=str(seq.id)))\n", + " \n", + "\n", + "#write our sequences to fasta format\n", + "with open(\"seq.fasta\", \"w+\") as f:\n", + " SeqIO.write(sequences, f, \"fasta\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The UPGMA algorithm requires a `MultipleSeqAlignment` object to build the distance matrix. So now that we have the `seq.fasta` file, we can give it to an online multiple sequence alignment tool. We can do this through BioPython but it requires some installation and setup so we will skip that for now. Go to the [MUSCLE Web Server](http://www.ebi.ac.uk/Tools/msa/muscle/) and give it the `seq.fasta` file. It will take a few seconds and it will give you an alignment and click *Download Alignment File*, copy paste the whole thing to a new file called `aln.clustal`. This is the alignment we will use to build our tree." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "#open the alignmnent file\n", + "with open(\"aln.clustal\", \"r\") as aln:\n", + " #use AlignIO to read the alignment file in 'clustal' format\n", + " alignment = AlignIO.read(aln, \"clustal\")" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "8\t0\n", + "7\t0.6\t0\n", + "0\t0.8\t0.6\t0\n", + "3\t1.0\t0.7\t0.4\t0\n", + "6\t1.0\t0.7\t0.4\t0.09999999999999998\t0\n", + "9\t0.8\t1.0\t0.5\t0.7\t0.6\t0\n", + "1\t0.9\t0.9\t0.8\t0.9\t0.8\t0.4\t0\n", + "2\t0.9\t0.9\t0.8\t0.9\t0.8\t0.4\t0.0\t0\n", + "4\t0.9\t0.9\t0.9\t1.0\t0.9\t0.5\t0.09999999999999998\t0.09999999999999998\t0\n", + "5\t0.9\t0.9\t0.9\t1.0\t0.9\t0.5\t0.09999999999999998\t0.09999999999999998\t0.0\t0\n", + "\t8\t7\t0\t3\t6\t9\t1\t2\t4\t5\n" + ] + } + ], + "source": [ + "from Bio.Phylo.TreeConstruction import DistanceCalculator\n", + "\n", + "#calculate the distance matrix\n", + "calculator = DistanceCalculator('identity')\n", + "#adds distance matrix to the calculator object and returns it\n", + "dm = calculator.get_distance(alignment)\n", + "print(dm)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "from Bio.Phylo.TreeConstruction import DistanceTreeConstructor\n", + "\n", + "#initialize a DistanceTreeConstructor object based on our distance calculator object\n", + "constructor = DistanceTreeConstructor(calculator)\n", + "\n", + "#build the tree\n", + "upgma_tree = constructor.build_tree(alignment)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from Bio import Phylo\n", + "import pylab\n", + "#draw the tree\n", + "Phylo.draw(upgma_tree)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introducing mating to the model\n", + "\n", + "The populations we generated evolved asexually. This means that individuals do not mate or exchange genetic information. So to make our simulation a bit more interesting let's let the Cells mate. This is going to require a few small changes in the `selection()` function. Previously, when we selected sequences to go into the next generation we just let them provide one offspring which was a copy of itself and introduced mutations. Now instead of choosing one Cell at a time, we will randomly choose two 'parents' that will mate. When they mate, each parent will contribute one of its chromosomes to the child. We'll repeat this process until we have filled the next generation." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CGUACCUGAAAAGCUAACUA\n", + "GGAACCGUAGGCUUUGCAAG\n", + "ACCUGCCAUCAUCACCAGAC\n", + "UAGAGGUAGAAUUGUAGGCU\n", + "GAUUCCGCGCGAAUACCGCG\n", + "GCAUCGAGUGCGCGGCAUAA\n", + "UAAUAAAAAGGUGCUGAUAU\n", + "GAUUCCGCGCGAAUACCGCG\n", + "UCACUAAACUCCUCGACUAC\n", + "AUGAUCAUGGUGAGCAGUUU\n" + ] + } + ], + "source": [ + "def selection_with_mating(population, target, mutation_rate=0.001, beta=-2):\n", + " next_generation = []\n", + " \n", + " counter = 0\n", + " while len(next_generation) < len(population):\n", + " #select two parents based on their fitness\n", + " parents_pair = np.random.choice(population, 2, p=[rna.fitness for rna in population], replace=False)\n", + " \n", + " #take the sequence and structure from the first parent's first chromosome and give it to the child\n", + " child_chrom_1 = (parents_pair[0].sequence_1, parents_pair[0].structure_1)\n", + "\n", + " #do the same for the child's second chromosome and the second parent.\n", + " child_chrom_2 = (parents_pair[1].sequence_2, parents_pair[1].structure_2)\n", + "\n", + "\n", + " #initialize the new child Cell witht he new chromosomes.\n", + " child_cell = Cell(child_chrom_1[0], child_chrom_1[1], child_chrom_2[0], child_chrom_2[1])\n", + "\n", + " #give the child and id and store who its parents are\n", + " child_cell.id = counter\n", + " child_cell.parent_1 = parents_pair[0].id\n", + " child_cell.parent_2 = parents_pair[1].id\n", + "\n", + " #add the child to the new generation\n", + " next_generation.append(child_cell)\n", + " \n", + " counter = counter + 1\n", + " \n", + " \n", + " #introduce mutations in next_generation sequeneces and re-fold when a mutation occurs (same as before)\n", + " for rna in next_generation: \n", + " mutated_sequence_1, mutated_1 = mutate(rna.sequence_1, mutation_rate=mutation_rate)\n", + " mutated_sequence_2, mutated_2 = mutate(rna.sequence_2, mutation_rate=mutation_rate)\n", + "\n", + " if mutated_1:\n", + " rna.sequence_1 = mutated_sequence_1\n", + " rna.structure_1 = nussinov(mutated_sequence_1)\n", + " if mutated_2:\n", + " rna.sequence_2 = mutated_sequence_2\n", + " rna.structure_2 = nussinov(mutated_sequence_2)\n", + " else:\n", + " continue\n", + "\n", + " #update fitness values for the new generation\n", + " compute_fitness(next_generation, target, beta=beta)\n", + "\n", + " return next_generation \n", + "\n", + "#run a small test to make sure it works\n", + "next_gen = selection_with_mating(pop, target)\n", + "for cell in next_gen[:10]:\n", + " print(cell.sequence_1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we just have to update our `evolution()` function to call the new `selection_with_mating()` function." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "def evolve_with_mating(target, generations=10, pop_size=100, mutation_rate=0.001, beta=-2):\n", + " populations = []\n", + " population_stats = {}\n", + " \n", + " initial_population = populate(target, pop_size=pop_size)\n", + " compute_fitness(initial_population, target)\n", + " \n", + " current_generation = initial_population\n", + "\n", + " #iterate the selection process over the desired number of generations\n", + " for i in range(generations):\n", + " #let's get some stats on the structures in the populations \n", + " record_stats(current_generation, population_stats)\n", + " \n", + " #add the current generation to our list of populations.\n", + " populations.append(current_generation)\n", + "\n", + " #select the next generation, but this time with mutations\n", + " new_gen = selection_with_mating(current_generation, target, mutation_rate=mutation_rate, beta=beta)\n", + " current_generation = new_gen \n", + " \n", + " return (populations, population_stats)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Try out the new evolution model!" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pops_mating, pops_stats_mating = evolve_with_mating(\"(((....)))\", generations=20, pop_size=1000, beta=0)\n", + "\n", + "evo_plot(pops_stats_mating)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Hardy Weinberg Equilibrium\n", + "\n", + "When we are presented with data from a population we don't know much about. It is often useful to try to learn whether there are any evolutionary or behavioural influences that are shaping population dynamics. This could be in the form of selective pressure, mating preference, genetic drift, mutations, gene flow, etc. So in order to detect if something like this is happening we need to develop a test. This is where Hardy Weinberg comes in. \n", + "\n", + "The Hardy Weinberg equilibrium states that \"allele and genotype frequencies remain constant in the absence of other evolutionary influences. (such as the ones we mentioned above)\" - Wikipedia.\n", + "\n", + "So if we can measure allele/genotype frequencies (which we can do because we have sequences), we can see whether the HW principle holds true. If it does not, then we can do more digging to see what could be happening to shift populations away from equilibrium.\n", + "\n", + "In order to do this we need to define an 'allele'. An allele (for our purproses) will be a locus (position in a sequence) that can take one of two states, a *reference* state or an *alternate* state. For example, we can look at locus number **5** (position 5 in our RNA sequences) and call reference **C**, and alternate **G**. If we are in HW we can predict the frequency of each allele in our population.\n", + "\n", + "To simplify our notation we will call the alternate allele *A* and the reference allele *a*. We can write the probability of each allele as $p_{A} + p_{a} = 1$. Since we are dealing with diploid populations, each individual will have two copies of each locus so it can be $p_{AA}, p{Aa}, p{aA}, p{aa}$. By simple probability laws we can get an expression for the probability of each genotype based on the probabilities of the single loci $p_{a}$ and $p_{A}$.\n", + "\n", + "$$p_{aa}\\simeq p_{a}^2$$\n", + "\n", + "$$p_{AA}\\simeq p_{A}^2$$\n", + "\n", + "$$p_{Aa,~aA} \\simeq 2 p_{a} p_{A}.$$\n", + "\n", + "Since it is hard to know what the true probability of observing either $p_{a}$ and $p_{A}$ we can estimate this probability from our data as follows:\n", + "\n", + "$$\\hat p_a=\\frac{2N_{aa}+N_{aA}}{2N}=1-\\hat p_A.$$\n", + "\n", + "Where $N$ denotes the number of each genotype that we observe in our sequences. \n", + "\n", + "Based on these estimates we can expect the following frequencies for each genotype: \n", + "\n", + "$N_{aa}\\simeq e_{aa}=N \\hat p_a^2$\n", + "\n", + "$N_{AA}\\simeq e_{AA}= N \\hat p_{A}^2$\n", + "\n", + "$N_{Aa,~aA} \\simeq e_{Aa} = 2 N \\hat p_{a} \\hat p_{A}.$\n", + "\n", + "Now we have expected values, and observed values. We need a test to determine whether we have a significant departure from the hypothesis of Hardy Weinberg equilibrium. The statistical test that is commonly used is known as the $\\chi^{2}$ test. If you take a look at the equation you'll see that the statistic simply takes the squared difference between our observed value and the expected value (divided by expected) and sums this for each possible genotype. The reason we take the squared difference is because we want to deal only with positive values, hence the name $\\chi^{2}$.\n", + "\n", + "$$X^2= \\frac{(N_{aa}-e_{aa})^2}{e_{aa}}+ \\frac{(N_{Aa}-e_{Aa})^2}{e_{Aa}}+ \\frac{(N_{AA}-e_{AA})^2}{e_{AA}}.$$\n", + "\n", + "The first thing we need to do is get alleles from our sequence data. This boils down to going through each sequence at the position of interest and counting the number of $AA$, $Aa$, $aa$ we get.\n", + "\n", + "\n", + "\\** the sections on Hardy Weinberg and F-statistics are adapted from Simon Gravel's HGEN 661 Notes" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "def allele_finder(pop, locus, ref, alt):\n", + " genotypes = []\n", + " for p in pop:\n", + " #get the nucleotide at the locus from the first chromosome \n", + " locus_1 = p.sequence_1[locus].upper()\n", + " #same for the second\n", + " locus_2 = p.sequence_2[locus].upper()\n", + " \n", + " #check that it is either ref or alt, we don't care about other alleles for now.\n", + " if locus_1 in (ref, alt) and locus_2 in (ref, alt):\n", + " #if the alelle is ref, store a value of 1 in allele_1, and 0 otherwise\n", + " allele_1 = int(locus_1 == ref)\n", + " #same for the second allele\n", + " allele_2 = int(locus_2 == ref)\n", + " \n", + " #add allele to our list of alleles as a tuple. \n", + " genotypes.append((allele_1, allele_2))\n", + " return genotypes" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(0, 0), (0, 0), (0, 1), (1, 0), (0, 1), (1, 0), (1, 0), (1, 0), (1, 0), (0, 1)]\n" + ] + } + ], + "source": [ + "pop_hw, stats_hw = evolve_with_mating(\"(((....)))\", pop_size=1000, generations=10, beta=0, mutation_rate=0.005)\n", + "alleles = allele_finder(pop_hw[-1], 5, 'C', 'G')\n", + "print(alleles[:10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we have alleles represented in the right form, we can see if our population is at Hardy Weinberg equilibrium using the $\\chi_{2}$ test and the equations above." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(Power_divergenceResult(statistic=0.001476611280908458, pvalue=0.9693474730942313),\n", + " {'hom_ref': (81, 81.14693877551021),\n", + " 'het': (120, 119.70612244897958),\n", + " 'hom_alt': (44, 44.14693877551021),\n", + " 'ref_counts': 282,\n", + " 'alt_counts': 208,\n", + " 'genotype_count': 245})" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from scipy import stats\n", + "from scipy.stats import chi2\n", + "\n", + "def hardy_weinberg_chi2_test(alleles):\n", + " \n", + " #store counts for N_AA, N_Aa/aA, N_aa\n", + " hom_ref_count = 0\n", + " het_count = 0\n", + " hom_alt_count = 0\n", + " \n", + " #each allele in the list alleles is in the form (0,0) or (0,1) or (1,0) or (1,1)\n", + " #count how many of each type we have\n", + " for a in alleles:\n", + " if (a[0]==0 and a[1]==0):\n", + " hom_ref_count += 1\n", + " elif ((a[0]==0 and a[1]==1) or (a[0]==1 and a[1]==0)):\n", + " het_count += 1\n", + " elif (a[0]==1 and a[1]==1):\n", + " hom_alt_count += 1\n", + " else:\n", + " continue\n", + " \n", + " #total number of genotypes: N\n", + " genotype_count = hom_ref_count + het_count + hom_alt_count\n", + "\n", + " #estimate p_a, p_A\n", + " alt_counts = (2 * hom_alt_count) + het_count\n", + " ref_counts = (2 * hom_ref_count) + het_count\n", + " \n", + " \n", + " #get expectations e_AA, e_aA,Aa, e_aa\n", + " hom_ref_expectation = ref_counts**2 / (4.*genotype_count) # the expected number of homozygote references \n", + " het_expectation = ref_counts * alt_counts / (2.*genotype_count) # the expected number of hets \n", + " hom_alt_expectation = alt_counts**2 / (4.*genotype_count) # the expected number of homozygote nonreferences \n", + "\n", + " #store observed values in list in the form [N_AA, N_aA,Aa, N_aa]\n", + " observations = [hom_ref_count, het_count, hom_alt_count]\n", + " #store expected values in the same form\n", + " expectations = [hom_ref_expectation, het_expectation, hom_alt_expectation]\n", + " \n", + " #start a dictionary that will store our results.\n", + " statistics = {\n", + " 'hom_ref': (hom_ref_count, hom_ref_expectation),\n", + " 'het': (het_count, het_expectation),\n", + " 'hom_alt': (hom_alt_count, hom_alt_expectation), \n", + " 'ref_counts': ref_counts, \n", + " 'alt_counts': alt_counts,\n", + " 'genotype_count': genotype_count\n", + " }\n", + "\n", + " #call scipy function for chi2 test.\n", + " chi_2_statistic = stats.chisquare(observations, f_exp=expectations, ddof=1, axis=0)\n", + " \n", + " #return chi2 and statistics dictionary\n", + " return (chi_2_statistic, statistics)\n", + "\n", + "hardy_weinberg_chi2_test(alleles)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Can we say that our population is at equilibrium? Can you find parameters for `evolution_with_mating()` that will give us populations outside of the HW equilibrium?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A brief interlude on the p-value\n", + "\n", + "Let's take a minute to understand what the p-value means. The p-value is a probability. Specifically, it is the probability of observing a value equal to or more extreme than that our statistic given the test distribution. So in our case, it is the probability of observing a $X^2$ greater than or equal to the one the test gives us under a $\\chi^2$ distribution. When this value is very small, it suggests that it is unlikely that we are sampling from our assumed 'null' distribution and that some other alternate distribution is the true distribution. So a low p-value here would be evidence against the neutral Hardy Weinberg model and would suggest that our population is experiencing some influences such as mating preference, selection, mutation etc.\n", + "\n", + "A lot of research bases its conclusions solely on p-value and it is important to be very wary of this bad practice. It has become a bad convention that people say a p-value lower than some arbitrary threshold means one's findings are significant. However, very often the p-value does not give us the whole story and we need to know about things like sample size, size of impact, reproducibility, power of the test, etc. (check this out [American Statistical Association statement on p-values](http://www.nature.com/news/statisticians-issue-warning-over-misuse-of-p-values-1.19503), [p-hacking](http://fivethirtyeight.com/features/science-isnt-broken/#part1), and [this](http://allendowney.blogspot.ca/2016/06/there-is-still-only-one-test.html))\n", + "\n", + "Let's just visualize this very quickly using the $\\chi^{2}_{1}$ distribution. You will see that the p-value corresponds to the shaded red area under the curve. That area is the probability of observing a value as extreme or more than the one we found. When that is a very small area, we can be more confident that our assumption of HW is false." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0,0.5,'$\\\\chi^2_1$')" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#number of samples to take from the x2 distribution.\n", + "number_of_samples = 1000\n", + "\n", + "range_points = 2000\n", + "range_start = 0\n", + "\n", + "degrees_of_freedom = 1\n", + "\n", + "range_end = chi2.ppf(1-1./number_of_samples, degrees_of_freedom)\n", + " \n", + "x_range = np.linspace(range_start, range_end, range_points) \n", + "plt.plot(x_range, chi2.pdf(x_range, degrees_of_freedom))\n", + "\n", + "#find the index value of our statistic value. you can put in different values here.\n", + "statistic = 0.5\n", + "\n", + "#find the index in x_range corresponding to the statistic value (within 0.01)\n", + "point = 0\n", + "for i, nb in enumerate(x_range):\n", + " if nb < statistic + .01 and nb > statistic - .01:\n", + " point = i\n", + "\n", + "#fill area under the curve representing p-value\n", + "plt.fill_between(x_range[point:], chi2.pdf(x_range, degrees_of_freedom)[point:], alpha=0.3, color=\"red\")\n", + "\n", + "plt.xlabel(\"X-statistic\")\n", + "plt.ylabel(r\"$\\chi^2_%d$\" % degrees_of_freedom)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Population structure: F-statistics\n", + "\n", + "The last topic we'll cover is F-statistics. \n", + "\n", + "Once we find that our population strays from the HW condition we can begin to ask why that is the case. Often this deviation from the expected allele frequencies under HW is due to mating preference. Hardy Weinberg assumes that all individuals in a population have an equal probability of mating with any other individual (random mating). However, when certain individuals prefer to mate with specific others (in real populations this can be due to culture, race, geographic barriers, etc.), you get what is known as population structure. Population structure means that we begin to see *sub-populations* within our total population where individuals prefer to mate within their sub-population. This biased mating will result in a higher number of homozygotes than we would expect under Hardy-Weinberg equilibrium. Simply because mating preferences will tend to drive populations toward similar genotypes. So if this is the case, and no other factors are biasing allele dynamics, within sub-populations we should have Hardy-Weinberg like conditions. \n", + "\n", + "For example, if Raptors fans prefer to mate with other Raptors fans, then when we consider only Raptors fans, we should observe random mating. Simply because if the mating preference criterion is 'being a Raptor's fan' then any Raptor's fan will be equally likely to mate with any other Raptor's fan so we have Hardy Weinberg again.\n", + "\n", + "Let's express this in quantities we can measure.\n", + "\n", + "From before we calculated the observed and expected number of heterozygotes in a population. Let's call these $\\hat H$ and $H_{IT}$ respectively. $\\hat H$ is just the count of heterozygotes, and $H_{IT}$ is the same as the expected number of heterozygotes we calculated earlier.\n", + "\n", + "We define a quantity $e_{IT}$ as a measure of the 'excess heterozygosity' in the population when we consider all individuals $I$ in the total population $T$. $e_{IT} > 1$ when we have more heterozygotes than we expect under HW. And $0 < e_{IT} < 1$ if we have less heterozygotes than we would expect under HW.\n", + "\n", + "\n", + "$$e_{IT}=\\frac{\\mbox{observed proportion of hets}}{\\mbox{expected proportion of hets}}=\\frac{ H_{obs}}{H_{IT}}$$\n", + "\n", + "We use $e_{IT}$ to define the statistic $F_{IT}$\n", + "\n", + "$$F_{IT}=1-e_{IT}$$\n", + "\n", + "So $F_{IT} > 0$ when we have a lack of heterozygotes and $F_{IT} < 0$ when we have an excess of heterozygotes. $F_{IT} = 0$ under random mating.\n", + "\n", + "When we have a subpropulation $S$ we can calculate the equivalent quantity but instead of considering heterozygosity in the whole population we only take a sub-population into account.\n", + "\n", + "$$e_{IS} = \\frac{H_{obs}}{H_{IS}}$$\n", + "\n", + "And lastly, we have $F_{ST}$. This one is not as intuitive to derive so I'm not including the derivation here. But basically it measure the excess heterozygosity in the total population due to the presence of two subpopulations with allele frequencies $p_{1}$ and $p_{2}$.\n", + "\n", + "$$F_{ST}= \\frac{(p_1-p_2)^2}{4 p (1-p)}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "def F_statistics(total_pop, sub_pop_1, sub_pop_2): \n", + " \"\"\"\n", + " Uses definitions above and allele counts from two sub-populations and a total population to compute F-statistics.\n", + " \"\"\"\n", + " #recall that the input dictionaries each contain a tuple in the form(observed, expected) for each genotype\n", + " f_IT = 1 - total_pop['het'][0] / (1. * total_pop['het'][1])\n", + " \n", + " \n", + " f_IS_1 = 1 - sub_pop_1['het'][0] / (1. * sub_pop_1['het'][1])\n", + " f_IS_2 = 1 - sub_pop_2['het'][0] / (1. * sub_pop_2['het'][1]) \n", + " \n", + " p1 = sub_pop_1['ref_counts'] / (1. * sub_pop_1['genotype_count'])\n", + " p2 = sub_pop_2['ref_counts'] / (1. * sub_pop_2['genotype_count'])\n", + " \n", + " p = total_pop['ref_counts'] / (1. * total_pop['genotype_count'])\n", + " \n", + " f_ST = ((p1 - p2) ** 2) / (4.0 * p * (1 - p)) \n", + " \n", + " F_dict = {\n", + " 'f_IT': f_IT,\n", + " 'f_IS_1': f_IS_1,\n", + " 'f_IS_2': f_IS_2,\n", + " 'f_ST': f_ST\n", + " }\n", + " \n", + " return F_dict" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's get some data for our F-tests. First we need to evolve two populations indepenently of each other, to simulate isolated mating. Then to simulate the total population we combine the two sub-populations. We then use our `allele_finder()` function to get all the alleles, and the `hardy_weinberg_chi_2_test()` function to get our expected and observed counts. Finally we plug those into the `f_statistics()` function." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "generation = -1\n", + "\n", + "#run two independent simulations\n", + "sub_pop_1, sub_pop_1_stats= evolve_with_mating(\"(((....)))\", pop_size=1000, generations=15, beta=-1, mutation_rate=0.005)\n", + "sub_pop_2, sub_pop_2_stats= evolve_with_mating(\"(((....)))\", pop_size=1000, generations=15, beta=-1, mutation_rate=0.005)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'f_IT': 0.054216581725422874, 'f_IS_1': 0.037559168553200184, 'f_IS_2': -0.08899167437557809, 'f_ST': -0.3885918781521351}\n" + ] + } + ], + "source": [ + "#merge the two populations into a total population.\n", + "total_pop = sub_pop_1[generation] + sub_pop_2[generation]\n", + "\n", + "\n", + "#choose a reference and alternate allele\n", + "ref_allele = \"A\"\n", + "alt_allele = \"G\"\n", + "\n", + "#choose the position of the locus of interest.\n", + "locus = 1\n", + "\n", + "#get list of alleles for each population\n", + "total_pop_alleles = allele_finder(total_pop, locus, ref_allele, alt_allele)\n", + "sub_pop_1_alleles = allele_finder(sub_pop_1[generation],locus, ref_allele, alt_allele)\n", + "sub_pop_2_alleles = allele_finder(sub_pop_2[generation],locus, ref_allele, alt_allele)\n", + "\n", + "#get homo/het expectations using hardy weinberg function\n", + "total_pop_counts = hardy_weinberg_chi2_test(total_pop_alleles)[1]\n", + "sub_pop_1_counts = hardy_weinberg_chi2_test(sub_pop_1_alleles)[1]\n", + "sub_pop_2_counts = hardy_weinberg_chi2_test(sub_pop_2_alleles)[1]\n", + "\n", + "#call f-statistics function\n", + "f_statistics = F_statistics(total_pop_counts, sub_pop_1_counts, sub_pop_2_counts)\n", + "print(f_statistics)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Try playing with different evolution parameters and see the effect on the different F-statistics. This workshop is a work in progress so there may be some biases in our simulation scheme that can make for come confusing F-statistics. If you come up with anything interesting I would love to know about it." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises / Extra Material\n", + "\n", + "### Programming Exercises\n", + "\n", + "i. *Heatmap of mutation rates vs. population sizes.* (short) \n", + "\n", + "Make a heatmap that plots the base pair distance of the average base pair distance of the population at generation `-1` for mutation rates $\\mu = \\{0, 0.001, 0.01, 0.1, 0.5\\}$ and population sizes $N=\\{10, 100, 1000, 10000\\}$. The resulting heatmap will be `5x4` dimensions. You may choose how many generations to evolve your populations, just plot the last one in the heatmap." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "([,\n", + " ,\n", + " ,\n", + " ,\n", + " ],\n", + " )" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#lists of mutation rates and population sizes to test\n", + "mutation_rates = [0, 0.001, 0.01, 0.1, 0.5]\n", + "population_sizes = [10, 100, 1000, 10000]\n", + "\n", + "#number of generations to run each simulation\n", + "generations = 1\n", + "#target structure\n", + "target = \"(.((....)))\"\n", + "\n", + "#list to store our results\n", + "bp_distances = []\n", + "\n", + "#nested for loop to go through each combination of mutation rates and population sizes.\n", + "for m in mutation_rates:\n", + " #list to store the population size results for current mutation rate.\n", + " bp_distances_by_pop_size = []\n", + " #try each population size\n", + " for p in population_sizes:\n", + " #call evolve() with m and p \n", + " pop, pop_stats = evolve(target, mutation_rate=m, pop_size=p, generations=generations)\n", + " #add bp_distance of chromosome 1 at generation -1 (last generation) to bp_distances_by_pop_size\n", + " bp_distances_by_pop_size.append(pop_stats['mean_bp_distance_1'][-1])\n", + " #add to global list once all combinations of current mutation rate and population sizes.\n", + " bp_distances.append(bp_distances_by_pop_size)\n", + " \n", + "#use bp_distances matrxi to make a heatmap\n", + "sns.heatmap(bp_distances)\n", + "\n", + "#labels\n", + "plt.xlabel(\"Population Size\")\n", + "#xticks/yticks takes a list of numbers that specify the position of the ticks and a list with the tick labels\n", + "plt.xticks([i + .5 for i in range(len(population_sizes))], population_sizes)\n", + "plt.ylabel(\"Mutation Rate\")\n", + "plt.yticks([i + .5 for i in range(len(mutation_rates))], mutation_rates)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ii. *Introduce mating preferences within a population.* (medium length) \n", + "\n", + "Modify the `selection_with_mating()` function to allow for mating preferences within a population. In our example above we were just running two independent simulations to study barriers to gene flow. But now you will implement mating preferences within a single simulation. Your function will assign each Cell a new attribute called `self.preference` which will take a string value denoting the mating type the current cell prefers to mate with. For example we can have a population with three mating types: $\\{A, B, C\\}$. Your function will randomly assign preferences to each cell in the initial population. We will define a preference between types $A$ and $B$ as the probability that two cells of those given types will mate if selected. \n", + "\n", + "$$\n", + "preferences(A,B,C) = \n", + "\\begin{bmatrix}\n", + " 0.7 & 0.1 & 0.2 \\\\\n", + " 0.1 & 0.9 & 0 \\\\\n", + " 0.2 & 0 & 0.8 \\\\\n", + "\\end{bmatrix}\n", + "$$\n", + "\n", + "Once you selected two potential parents for mating (as we did earlier) you will use the matrix to evaluate whether or not the two parents will mate and contribute an offspring to the next generation. " + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "UAUCUCUAGAA\n", + "UCAAACGGUUU\n", + "CCUAGACUUUC\n", + "UAUCUCUAGAA\n", + "CCUAGACUUUC\n", + "GGCAaUGGUGC\n", + "GGCAaUGGUGC\n", + "CGGUGCCAUGG\n", + "CCCGGUUACGU\n", + "CGGGGAGUUUU\n" + ] + } + ], + "source": [ + "def populate_with_preferences(target, preference_types, pop_size=100):\n", + " \n", + " population = []\n", + "\n", + " for i in range(pop_size):\n", + " #get a random sequence to start with\n", + " sequence = \"\".join([random.choice(\"AUCG\") for _ in range(len(target))])\n", + " #use nussinov to get the secondary structure for the sequence\n", + " structure = nussinov(sequence)\n", + " #add a new Cell object to the population list\n", + " new_cell = Cell(sequence, structure, sequence, structure)\n", + " new_cell.id = i\n", + " new_cell.parent = i\n", + " \n", + " #assign preference\n", + " new_cell.preference = random.choice(preference_types)\n", + " population.append(new_cell)\n", + " \n", + " return population\n", + "\n", + "def selection_with_mating_preference(population, target, preference_matrix, preference_types, mutation_rate=0.001, beta=-2):\n", + " next_generation = []\n", + " \n", + " counter = 0\n", + " while len(next_generation) < len(population):\n", + " #select two parents based on their fitness\n", + " parents_pair = np.random.choice(population, 2, p=[rna.fitness for rna in population], replace=False)\n", + " \n", + " #look up probabilty of mating in the preference_matrix\n", + " mating_probability = preference_matrix[parents_pair[0].preference][parents_pair[1].preference]\n", + " \n", + " r = random.random()\n", + " #if random number below mating_probability, mate the Cells as before\n", + " if r < mating_probability:\n", + " #take the sequence and structure from the first parent's first chromosome and give it to the child\n", + " child_chrom_1 = (parents_pair[0].sequence_1, parents_pair[0].structure_1)\n", + "\n", + " #do the same for the child's second chromosome and the second parent.\n", + " child_chrom_2 = (parents_pair[1].sequence_2, parents_pair[1].structure_2)\n", + "\n", + "\n", + " #initialize the new child Cell witht he new chromosomes.\n", + " child_cell = Cell(child_chrom_1[0], child_chrom_1[1], child_chrom_2[0], child_chrom_2[1])\n", + "\n", + " #give the child and id and store who its parents are\n", + " child_cell.id = counter\n", + " child_cell.parent_1 = parents_pair[0].id\n", + " child_cell.parent_2 = parents_pair[1].id\n", + " \n", + " #give the child a random preference\n", + " child_cell.preference = random.choice(preference_types)\n", + "\n", + " #add the child to the new generation\n", + " next_generation.append(child_cell)\n", + "\n", + " counter = counter + 1\n", + " \n", + " \n", + " #introduce mutations in next_generation sequeneces and re-fold when a mutation occurs (same as before)\n", + " for rna in next_generation: \n", + " mutated_sequence_1, mutated_1 = mutate(rna.sequence_1, mutation_rate=mutation_rate)\n", + " mutated_sequence_2, mutated_2 = mutate(rna.sequence_2, mutation_rate=mutation_rate)\n", + "\n", + " if mutated_1:\n", + " rna.sequence_1 = mutated_sequence_1\n", + " rna.structure_1 = nussinov(mutated_sequence_1)\n", + " if mutated_2:\n", + " rna.sequence_2 = mutated_sequence_2\n", + " rna.structure_2 = nussinov(mutated_sequence_2)\n", + " else:\n", + " continue\n", + "\n", + " #update fitness values for the new generation\n", + " compute_fitness(next_generation, target, beta=beta)\n", + "\n", + " return next_generation \n", + "\n", + "\n", + "def evolve_with_mating_preferences(target, preference_types, preference_matrix,\\\n", + " generations=10, pop_size=100, mutation_rate=0.001, beta=-2):\n", + " populations = []\n", + " population_stats = {}\n", + " \n", + " initial_population = populate_with_preferences(target, preference_types, pop_size=pop_size)\n", + " compute_fitness(initial_population, target)\n", + " \n", + " current_generation = initial_population\n", + "\n", + " #iterate the selection process over the desired number of generations\n", + " for i in range(generations):\n", + " #let's get some stats on the structures in the populations \n", + " record_stats(current_generation, population_stats)\n", + " \n", + " #add the current generation to our list of populations.\n", + " populations.append(current_generation)\n", + "\n", + " #select the next generation, but this time with mutations\n", + " new_gen = selection_with_mating_preference(current_generation, target, preference_matrix, \\\n", + " preference_types, mutation_rate=mutation_rate, beta=beta)\n", + " current_generation = new_gen \n", + " \n", + " return (populations, population_stats)\n", + "\n", + "\n", + "\n", + "#run a small test to make sure it works\n", + "target = \".(((....)))\"\n", + "#for convenience, let's give the preference types integer values in sequential order\n", + "preference_types = [0,1,2]\n", + "\n", + "preference_matrix = np.array([[0.7, 0.1, 0.2],[0.1, 0.9, 0],[0.2, 0, 0.8]])\n", + " \n", + "pops, pop_stats = evolve_with_mating_preferences(target, preference_types, preference_matrix)\n", + "\n", + "for cell in pops[-1][:10]:\n", + " print(cell.sequence_1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Population Genetics / Bioinformatics Exercises\n", + "\n", + "*Exercise 1. Make a tree using maximum parsimony.*\n", + "\n", + "We saw how to make trees using a distance score. Another popular method is known as the maximum parsimony approach. I won't go into too much detail on this since we are short on time, but I will give a quick intro and we'll look at how ot make a tree using maximum parsimony.\n", + "\n", + "This approach is based on the principle of parsimony, which states that the simplest explanation for our data is the most likely to be true. So given an alignment, we assume that the best tree is the one that minimizes the number of changes, or mutations. This is often a reasonable assumption to make since mutation rates in real populations are generally low, and things like back-mutations (e.g. A --> C --> A) are unlikely. Computing the tree that that maximizes parsimony directly is a difficult task, but evaluating the parsimony score of a tree given the tree is easy. So this approach basically generates many random trees for the data and scores them based on parsimony keeping the most parsimonious tree. Take a look at [the biopython manual to work through this example](http://biopython.org/wiki/Phylo), and [this one](http://biopython.org/DIST/docs/api/Bio.Phylo.TreeConstruction.ParsimonyTreeConstructor-class.html).\n", + "\n", + "Since we already have an alignment (`aln.clustal`) we will just re-use it and make a maximum parsimony tree instead. " + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from Bio.Phylo.TreeConstruction import *\n", + "\n", + "#open our alignment file (or make a new one if you want)\n", + "with open('aln.clustal', 'r') as align:\n", + " aln = AlignIO.read(align, 'clustal')\n", + "\n", + "#create a parsimony scorer object\n", + "scorer = ParsimonyScorer()\n", + "#the searcher object will search through possible trees and score them.\n", + "searcher = NNITreeSearcher(scorer)\n", + "\n", + "#takes our searcher object and a seed tree (upgma_tree) to find the best tree\n", + "constructor = ParsimonyTreeConstructor(searcher, upgma_tree)\n", + "\n", + "#build the tree \n", + "parsimony_tree = constructor.build_tree(aln)\n", + "\n", + "#draw the tree\n", + "Phylo.draw(parsimony_tree)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Exercise 2. Bootstrapping*\n", + "\n", + "We just saw two methods of growing phylogenetic trees given an alignment. However, as we saw with the maximum parsimony approach, there can be many different trees for a single data set. How do we know our tree is a good representation of the data? By 'good' here we will instead use the word 'robust'. Is the tree we use too sensitive to the particularities of the data we gave it? If we make a small change in the sequence will we get a very different tree? Normally these problems would be addressed by re-sampling and seeing if we obtain similar results. But we can't really re-sample evolution. It happened once and we can't make it happen again. So we use something called *bootstrapping* which is a technique often used in statistics where instead of generating new data, you re-sample from your present data.\n", + "\n", + "So we have a multiple sequence alignment with $M$ sequences (rows) each with sequences of length $N$ nucleotides (columns). For each row, we can randomly sample $N$ nucleotides with replacement to make a new 'bootstrapped' sequence also of length $N$. Think of it as a kind of shuffling of the data. This gives us a whole new alignment that we can again use to make a new tree.\n", + "\n", + "This process is repeated many times to obtain many trees. The differences in topology (shape/structure) of the trees we obtained are assessed. If after this shuffling/perturbations we still get similar enough looking trees we can say that our final tree is robust to small changes in the data. ([some more reading on this](http://projecteuclid.org/download/pdf_1/euclid.ss/1063994979))\n", + "\n", + "Let's run a small example of this using the bootstrapping functions in `BioPython`." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CLUSTAL X (1.81) multiple sequence alignment\n", + "\n", + "\n", + "8 GAAGAGACAC\n", + "7 GGGGGAGCGC\n", + "0 GCCACAGCGC\n", + "3 ACCACAGUGU\n", + "6 CCCACAGUGU\n", + "9 CCCACUAGAG\n", + "1 CCCUCUCGCG\n", + "2 CCCUCUCGCG\n", + "4 CUUUUUCGCG\n", + "5 CUUUUUCGCG\n", + " \n", + "\n", + "\n", + "\n", + "CLUSTAL X (1.81) multiple sequence alignment\n", + "\n", + "\n", + "8 GGAUUUCUUA\n", + "7 GAGCCCCCCG\n", + "0 AAGGGGCGGG\n", + "3 AAGGGGUGGG\n", + "6 AAGGGGUGGG\n", + "9 AUAUUUGUUA\n", + "1 UUCUUUGUUC\n", + "2 UUCUUUGUUC\n", + "4 UUCUUUGUUC\n", + "5 UUCUUUGUUC\n", + " \n", + "\n", + "\n", + "\n", + "CLUSTAL X (1.81) multiple sequence alignment\n", + "\n", + "\n", + "8 UCUUGAGAUC\n", + "7 CCCGGGGGGC\n", + "0 GCGAGGGCAC\n", + "3 GUGCAGACCU\n", + "6 GUGCCGCCCU\n", + "9 UGUACACCAG\n", + "1 UGUGCCCCGG\n", + "2 UGUGCCCCGG\n", + "4 UGUGCCCUGG\n", + "5 UGUGCCCUGG\n", + " \n", + "\n", + "\n", + "\n", + "CLUSTAL X (1.81) multiple sequence alignment\n", + "\n", + "\n", + "8 GGUGCGCAUG\n", + "7 GACGCAUGGG\n", + "0 AAGGUAAGAA\n", + "3 AAGAUAUGCA\n", + "6 AAGCUAUGCA\n", + "9 AUUCUUAAAA\n", + "1 UUUCAUACGU\n", + "2 UUUCAUACGU\n", + "4 UUUCAUACGU\n", + "5 UUUCAUACGU\n", + " \n", + "\n", + "\n", + "\n", + "CLUSTAL X (1.81) multiple sequence alignment\n", + "\n", + "\n", + "8 GCUAGGAACC\n", + "7 GCGGGGGGCU\n", + "0 AUACGGGGCA\n", + "3 AUCCAAGGUU\n", + "6 AUCCCCGGUU\n", + "9 AUACCCAAGA\n", + "1 UAGCCCCCGA\n", + "2 UAGCCCCCGA\n", + "4 UAGUCCCCGA\n", + "5 UAGUCCCCGA\n", + " \n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "from Bio.Phylo.Consensus import *\n", + "\n", + "#open our alignment file.\n", + "with open('aln.clustal', 'r') as align:\n", + " aln = AlignIO.read(align, 'clustal')\n", + "\n", + "#take 5 bootstrap samples from our alignment\n", + "bootstraps = bootstrap(aln,5)\n", + "\n", + "#let's print each new alignment in clustal format. you should see 5 different alignments.\n", + "for b in bootstraps:\n", + " print(b.format('clustal'))" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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Z+/evSftd+DAAT777DNef/11iouLWb58OdnZ2R5ULCLSdG1yhHAqqampnHPOOXTs2JELL7yw/vXCwsL6xfBycnLo378/AOeccw6pqalAMBA++ugjXnnlFZxzdO7cmS5dupCTk8OQIUPq32v79u2MGjWK1NRUhg0bxq233srw4cOj2EsRkebzZKZyU2mmsohI08XFTGUREYk9CRMIzz//PAMHDiQrK4upU6d6XY6ISMxJiEDYvXs3U6ZMYcWKFWzevJnPPvuMFStWeF2WiEhMSYhA+PDDD7nooouou9HOtddey+LFiz2uSkQktiREIFx44YVs3boVv99PIBBgyZIlfPzxx16XJSISUxListOvfvWrzJo1i1tuuYWzzjqLyy67jA8++MDrskREYkqbDISuXbue9NqIESMYMWIEEFybqLHZzCIiiSYhDhkB7NixA4AvvviCp556ivHjx3tckYhIbGmTI4RTmTRpEhs2bACCK51mZGR4XJGISGxJmECou+eBiIicWsIcMhIRkTNTIIiICKBAEBGREAWCiIgACgQREQlRIIiICKBAEBGREAWCiIgACgQREQlRIIiICKBAEBGREAWCiIgACRIIBw8e5Fvf+hYXX3wxWVlZ/PCHP/S6JBGRmONJIJjZf5jZZjPbZGYLzKxTpNt86KGH2LJlC+vXr2f16tX86U9/inSTIiJxJeqBYGYpwANAnnMuG0gC/i2SbXbu3JmrrroKgA4dOpCbm0t1dXUkmxQRiTteHTJqB3zFzNoBnYFPo9Xwnj17eOWVV7jmmmui1aSISFyI+g1ynHOfmNn/Az4CDgHLnXPLT9zPzCYCEwH69u3bpDZycnJO+XogEGDs2LE88MADnH/++U0tXUSkTfPikNFXgRuBdKAP0MXMxp24n3NujnMuzzmXl5yc3OJ209LSuOOOO7jooouYPHlyi9/vdJ544gmysrLIzs5m7NixHD58OGJtiYi0Ji8OGV0LVDnndjrnaoAXgcsi3egXX3zBvn37mD59ekTePxAI8Mknn/DrX/+a8vJyNm3aRG1tLQsXLoxIeyIirc2LQPgIuMTMOpuZAdcA70eywerqavbt20dFRQXZ2dl06tSJgoICsrKyKCoq4tChQwAUFhYydepU8vPzycjIYNWqVQDU1tYyZcoUhgwZwsCBA5k9ezYAJSUlFBQUMHLkSPr37w8E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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEKCAYAAAAfGVI8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3X18VNW97/HPz/BgQQRbgtVETHxIyQMxJiFovXCC1gRbDx4QUdRqrYB4eamcVor3Hm3L7VVb720LpZWDSLWoF7TiC6kPiKK54gMmIQQKKok1c9ogpzxUECJCJq77x0zmJkDIEDKzZ7K/79crLyezN7O+e0zym7X23muZcw4REfGvk7wOICIi3lIhEBHxORUCERGfUyEQEfE5FQIREZ9TIRAR8TkVAhERn1MhEBHxORUCERGf6+V1gGgMHjzYZWRkeB1DRCSprF+/fpdzLrWz/ZKiEGRkZFBdXe11DBGRpGJm/xHNfhoaEhHxORUCERGfUyEQEfE5FQIREZ9TIRAR8TkVAhERn1MhEBHxORUCERGfUyEQEfE5FQIREZ9TIRARX1i6dCnDhw8nPz+fsWPHsmvXLq8jJQwVAhHp8YLBIHfddRdvvPEGmzZtIj8/n9/+9rdex0oYKgQi0uM553DO0dTUhHOOzz77jDPPPNPrWAkjKWYfFRE5Eb1792bBggUMHz6c/v37c/755/O73/3O61gJQ4VAxAdKS0u9jhB3FRUVkcfNzc0sWLCADRs2cM4553DHHXfw4IMPcu+993oXMIFoaEikhystLaW2ttbrGJ5qPf5zzz0XM2PSpEm88847HqdKHOoRiPhAQUFBu0/IfpOWlsb777/Pzp07SU1N5dVXXyU7O9vrWAlDhUBEerwzzzyTn/zkJ4wePZrevXtz9tln8/jjj3sdK2GoEIiIL0yfPp3p06d7HSMh6RyBiIjPqRCI+FBGRkZc7qz9/ve/z5AhQ8jLy4t5W9J1KgQi0u2CwSAA3/ve91i1apXHaaQzKgQiPhYIBMjOzmbq1Knk5uZSVlbGgQMHgNBlp7Nnz6akpISsrCzWrl0LQEtLC7NmzWLEiBHk5+ezcOFCIHTd/qhRoxg3bhw5OTkAjB49mq9+9aveHJxETYVAxOfq6+uZMWMGW7ZsYdCgQSxfvjyyLRgMUllZydy5c5kzZw4AixcvZuDAgVRVVVFVVcWiRYtoaGgAoKamhnnz5lFXV+fJsUjX6Koh6fH8eFdtW7W1tRQUFHS4PTMzM7K9qKiIQCAQ2TZhwoQjnl+9ejWbNm3i2WefBWDv3r3U19fTp08fSkpKyMzMjM2BSMyoEEiP1npX7bH+EPpd3759I49TUlIiQ0Ntt6WkpETG/Z1zzJ8/n/Ly8navU1FRQf/+/eOQWLqbCoH0eH6/q7a7e0Tl5eUsWLCASy+9lN69e1NXV0daWlq3tiHxpXMEInJcpkyZQk5ODoWFheTl5XHbbbdFeguHmzx5MhdffDFbt24lPT2dxYsXxzmtRMOcc15n6FRxcbGrrq72OoYkodZPw+oR+Ps98CszW++cK+5sP/UIRER8ToVARMTnVAhEJK727dtHQUFB5Gvw4MHMnDnT61i+FverhszsLGAJcDrggEecc/PinUNEvDFgwIB2C+UUFRVF7lcQb3hx+WgQ+KFzrsbMBgDrzexV59z7HmQREQ/V1dWxY8cORo0a5XUUX4t7IXDObQe2hx/vM7MPgDRAhUAkRmpraz29w7qjK5aWLVvGtddei5nFN5C04+k5AjPLAC4E3jvKtmlmVm1m1Tt37ox3NJEeo6KiImHvrF62bBmTJ0/2OobveXZnsZmdAiwHZjrnPjt8u3PuEeARCN1HEOd4Ij1KIt5DsHHjRoLBIEVFRV5H8T1PegRm1ptQEXjKOfecFxlExFtLly5VbyBBeHHVkAGLgQ+cc7+Kd/sikhieeeYZXnrpJa9jCN4MDV0CfBf4s5m1XkP2351z+okQ8ZGPP/7Y6wgS5sVVQ28BukRARCRB6M5iERGfUyEQEfE5FQIREZ9TIRAR8TkVAhERn1MhEBHxORUCERGfUyEQEfE5FQLxnYyMDHbt2hWXtlpaWrjwwgu58sor49KeSFeoEIh0s2AwGHk8b948srOzPUwj0jkVAvGtQCBAdnY2U6dOJTc3l7KyMg4cOABAaWkps2fPpqSkhKysLNauXQuEPuHPmjWLESNGkJ+fz8KFC4HQNM+jRo1i3Lhx5OTkANDY2MiLL77IlClTvDnALjp06BDTpk0jKyuLYcOGsXz5cq8jSYx5th6BeMPLVaq8UFtbe8xFWerr61m6dCmLFi1i0qRJLF++nBtvvBEIfbKvrKzkpZdeYs6cObz22mssXryYgQMHUlVVxcGDB7nkkksoKysDoKamhs2bN5OZmQnAzJkzeeihh9i3b1/sD7Qb3X///QwZMoS6ujq+/PJL/vGPf3gdSWJMhcBHSktLO/3D6DeZmZmR96OoqIhAIBDZ1rqgetvnV69ezaZNm3j22WcB2Lt3L/X19fTp04eSkpJIEXjhhRcYMmQIRUVFCbkozLH8/ve/58MPPwTgpJNOYvDgwR4nklhTIfCZgoKCpPvDdCI66wH17ds38jglJSUyNNR2W0pKSmTc3znH/PnzKS8vb/c6FRUV9O/fP/L922+/zcqVK3nppZf44osv+Oyzz7jxxht58sknT/SQYmrPnj0A3HfffVRUVHDuuefy29/+ltNPP93jZBJLOkcgchzKy8tZsGABzc3NANTV1dHU1HTEfg8++CCNjY0EAgGWLVvGpZdemlBFoLS0NPLVVjAYpLGxkW9+85vU1NRw8cUXc/fdd3sTUuJGhUDkOEyZMoWcnBwKCwvJy8vjtttua3eVUDJoHSI8mq997Wv069cvMix2zTXXUFNTE8944gFzLvHXhS8uLnbV1dVex0h6rZ/+/Dg05Kdj7kxn78l1113HtGnTuPTSS3n88cd58cUX+eMf/xi/gNJtzGy9c664s/10jkBE2vnFL37Bd7/7XWbOnElqaiqPPfaY15EkxlQIRKSds88+mzfffNPrGBJHOkcgIuJzKgQiEpf5l/72t78xZswYcnJyyM3NZd68eTFtT6KnoSERiblgMEivXr345S9/SWFhIfv27aOoqIjLL788MiWHeEc9AhGJiOX8S2eccQaFhYUADBgwgOzsbLZt2+bNgUo7KgQi0k59fT0zZsxgy5YtDBo0qN2kc63zL82dO5c5c+YAtJt/qaqqikWLFtHQ0ACE5l+aN28edXV17doIBAJs2LCBkSNHxu/ApEMaGhKJQk+arK+z+aZiNf9Sq/3793P11Vczd+5cTj311G48MukqFQKRTvhtsr5Yzb8E0NzczNVXX80NN9wQKSriPRUCkSj0pMn6urt30zr/0qWXXkrv3r2pq6sjLS3tiP2cc9x6661kZ2fzgx/8oFszyIlRIRCREzJlyhQCgQCFhYU450hNTWXFihVH7Pf222/zxBNPMHz48Ejv6oEHHuDb3/52vCPLYTTXkI/4cd6d7jjmnva+9bTjkY5FO9eQrhoSEfE5FQIREZ9TIRCRbjd27FguuOACcnNzmT59Oi0tLV5HkmPwrBCYWYqZbTCzF7zKICKx8cwzz7Bx40Y2b97Mzp07tZ5BgvOyR3AX8IGH7YtIjLTeKBYMBjl06BBm5nEiORZPLh81s3TgO8D9gC4oFomz2trabr2f4GhXIJWXl1NZWckVV1zBxIkTu60t6X5e9QjmAj8CvuxoBzObZmbVZla9c+fO+CUT6eEqKiricpf0K6+8wvbt2zl48CCvv/56zNuTrot7j8DMrgR2OOfWm1lpR/s55x4BHoHQfQRxiicSlYyMDKqrqxk8eHDM2vjiiy8YPXo0Bw8eJBgMMnHixMhEbycqXvcQnHzyyVx11VU8//zzXH755XFpU46fFz2CS4BxZhYAlgGXmtmTHuQQSVjBYJC+ffvy+uuvs3HjRmpra1m1ahXr1q3zOlqn9u/fz/bt24HQcbz44osMGzbM41RyLHEvBM65/+acS3fOZQDXAa87526Mdw6R7hDL+fvNjFNOOQUITdbW3NycFCddm5qaGDduHPn5+RQUFDBkyBCmT5/udSw5Bs01JD3eiZ4Y7Wzm0fr6epYuXcqiRYuYNGkSy5cv58YbQ59tWufvf+mll5gzZw6vvfZau/n7Dx48yCWXXEJZWRkQmr9/8+bNkambW1paKCoq4qOPPmLGjBlJMX//6aefTlVVldcx5Dh4WgiccxVAhZcZ/C4eY92t7QwYMICUlBR69epFvOaOqqioiPlaArGcvz8lJYXa2lr27NnD+PHj2bx5M3l5eTE9HvEf9QgkplrXqgV44403Yl5wjuZET4x2VkhiOX9/q0GDBjFmzBhWrVqlQiDdTlNMCBDbsW5pr3X+/ubmZgDq6upoamo6Yr+dO3eyZ88eAA4cOMCrr76qk64SEz22R9CTlhbsLl6OdZsZZWVlmBm33XYb06ZNi/0BJ6ho5+/fvn07N998My0tLXz55ZdMmjSJK6+80oPE0tP1yELgt6UFu0ssx7rfeust0tLS2LFjB5dffjnDhg1j9OjR8TmwGGh9DwYPHszmzZsjz999992Rx22HpAYPHhz5NyeddBIPPPAADzzwQLvXLC0tbfcBJj8/nw0bNnR7dpHD9chCAD1racHu4uVYd+vShUOGDGH8+PFUVlYmdSEQ6Ul0jkC6LNqx7qamJvbt2xd5vHr1ap3wFEkgPbZHILEX7Vj33//+d8aPHw+EzjVcf/31jB07Nt5xRaQDPXLNYq3JenR6X7pG75skK61ZLCIiUVEhEBHxORUCkSSyfv16hg8fznnnncedd95JMgztSuJTIRBJIrfffjuLFi2ivr6e+vp6Vq1a5XUk6QFUCESSxPbt2/nss8+46KKLMDNuuummo16lJXK8VAhEksS2bdtIT0+PfJ+ens62bds8TCQ9he4jEIlCdy/2Hi1dsirxoB6BSCfitdh7Z9LS0mhsbIx839jYGJm6Q+RERN0jMLMhwMmt3zvn/hqTRCIJKBE+mZ9xxhmceuqprFu3jpEjR7JkyRLuuOMOr2NJD9Bpj8DMxplZPdAA/F8gALwc41wichQPP/wwU6ZM4bzzzuPcc8/liiuu8DqS9ADR9Ah+BlwEvOacu9DMxgBabF7EA8XFxe2mvRbpDtGcI2h2zu0GTjKzk5xzbwCdzl0hIiLJIZoewR4zOwV4E3jKzHYAR841LCIiSSmaHsFVwAHgX4FVwF+Af45lKBERiZ9oCsHZzrkW51zQOfcH59xvgOGxDiYiIvERTSF4xsxmW8hXzGw+8GCsg4mISHxEUwhGAmcB7wBVwCfAJbEMJSIi8RPVVUOEzhF8hdANZQ3OuS9jmioGMjIy2LVrV8zb2bNnDxMnTmTYsGFkZ2fz7rvvxrxNEZETEU0hqCJUCEYAo4DJZvbHmKZKQsFgEIC77rqLsWPH8uGHH7Jx40ays7M9TiYicmzRFIJbnXM/ds41O+e2O+euAlbGOlisBAIBsrOzmTp1Krm5uZSVlXHgwAEgtDbt7NmzKSkpISsri7Vr1wLQ0tLCrFmzGDFiBPn5+SxcuBAITTswatQoxo0bR05ODnv37uXNN9/k1ltvBaBPnz4MGjTImwMVEYlSp4XAOVcNobmGzGyomQ0lNNVE0qqvr2fGjBls2bKFQYMGsXz58si2YDBIZWUlc+fOZc6cOQAsXryYgQMHUlVVRVVVFYsWLaKhoQGAmpoa5s2bR11dHQ0NDaSmpnLLLbdw4YUXMmXKFJqadMuFiCS2aOYa+ueeNtdQZmZmZDbJoqIiAoFAZNuECROOeH716tUsWbKEgoICRo4cye7du6mvrwegpKSEzMxMIFREampquP3229mwYQP9+/fn5z//efwOTESkC6K5s/h/kmRzDdXW1h5ze9++fSOPU1JSIkNDbbelpKRExv2dc8yfP5/y8vJ2r1NRUUH//v0j36enp5Oens7IkSMBmDhxogqBiCQ8zTUUhfLychYsWEBzczMAdXV1Rx3y+frXv85ZZ53F1q1bAVizZg05OTlxzZpInn76afLz88nNzWX27NlexxGRDnR1rqH9J9KomQ0CHgXyAAd83zmXsNdZTpkyhUAgQGFhIc45UlNTO1wrdv78+dxwww0cOnSIc845h8ceeyzOaRPD7t27mTVrFuvXryc1NZWbb76ZNWvWcNlll3kdTUQOY865Y+9g9ktgFqHeww3AQOAC59ytXW7U7A/AWufco2bWB+jnnNvT0f7FxcWuuro66tdvvVJnz54OX9KXWpdajMciK1VVVdxzzz2sWbMGgCeeeIJ3332Xhx9+OOZti0iIma13znU6ghNNj2BM+AayL4E/hF980wkEGwiMBr4H4Jw7BBzq6uvJ8Ynl2rttC8x5553H1q1bCQQCpKens2LFCg4d0v9mkUTU4TkCM7vdzP4MDDOzTW2+GoAuFwIgE9gJPGZmG8zsUTPrf/hOZjbNzKrNrHrnzp0n0Jy0iufau6eddhoLFizg2muvZdSoUWRkZJCSkhKXtkXk+HQ4NBT+5H4aoQnm7mmzaZ9z7h9dbtCsGFgHXOKce8/M5gGfOefu6+jfaGgo+T3yyCN89NFHPPTQQ15HEfGNEx4acs7tBfYCk7szGNAINDrn3gt//yztC430EDt27GDIkCF8+umnPPzwwzzzzDNeRxKRo4jmHEG3cs79p5n9zcy+4ZzbClwGvB/vHBJ7d911Fxs3bgTgxz/+MVlZWR4nEpGjiXshCLuD0KWofYCPgVs8yiExtHTpUq8jiEgUPCkEzrlafHZTmohIoormzmIREenBVAhERHxOhUBExOdUCEREfE6FQETE51QIRER8ToVARMTnfFMIMjIy2LVrV0zb2Lp1KwUFBZGvU089lblz58a0TRGRE+XVncU9TjAY5Bvf+EZkmcyWlhbS0tIYP368x8lERI7NNz2CVoFAgOzsbKZOnUpubi5lZWWRNYtLS0uZPXs2JSUlZGVlsXbtWiD0R33WrFmMGDGC/Px8Fi5cCISmdR41ahTjxo07YknKNWvWcO6553L22WfH9wBFRI6TbwrBp59+ygUXXEBubi719fXMmDGDLVu2MGjQIJYvXx7ZLxgMUllZydy5c5kzZw4AixcvZuDAgVRVVVFVVcWiRYtoaGgAoKamhnnz5lFXV9euvWXLljF5cndP3Coi0v18Uwj69evHK6+8AkBmZmZkgZaioiICgUBkvwkTJhzx/OrVq1myZAkFBQWMHDmS3bt3U19fD0BJSQmZmZnt2jp06BArV67kmmuuifFRiYicuB55jmD//v1HPNe3b1++/vWvRx63SklJiQwNtd2WkpJCMBgEwDnH/PnzKS8vb/eaFRUV9O9/xOJqvPzyyxQWFnL66aef+MGIiMSYb3oEJ6K8vJwFCxbQ3NwMQF1dHU1NTR3uv3TpUg0LiUjS6JE9gu42ZcoUAoEAhYWFOOdITU1lxYoVR923qamJV199NXJCWUQk0XW4ZnEi6c41i0855ZSjDh2JiPQ00a5ZrKEhERGf800h+NGPfkR6ejqff/456enp/PSnP/U6kohIQvDd0JCIiF9oaEhERKKiQiAi4nMqBCIiPqdCICLicyoEIiI+p0IgIuJzKgQiIj6nQiAi4nMqBCIiPqdCICLicyoEIiI+p0IgIuJzvigEn3/+Od/5zncYNmwYubm53HPPPV5HEhFJGJ4UAjP7VzPbYmabzWypmZ0c6zbvvvtuPvzwQzZs2MDbb7/Nyy+/HOsmRUSSQtwLgZmlAXcCxc65PCAFuC6Wbfbr148xY8YA0KdPHwoLC2lsbIxlkyIiScOroaFewFfMrBfQD/gkXg3v2bOHP/3pT1x22WXxalJEJKHFffF659w2M/vfwF+BA8Bq59zqw/czs2nANIChQ4ceVxsFBQVHfT4YDDJ58mTuvPNOzjnnnOONLiLSI3kxNHQacBWQCZwJ9DezGw/fzzn3iHOu2DlXnJqa2i1tT5s2jfPPP5+ZM2d2y+uJiPQEXgwNfQtocM7tdM41A88B34x1o/feey979+5l7ty5sW5KRCSpeFEI/gpcZGb9zMyAy4APYtlgY2Mj999/P++//z6FhYUUFBTw6KOPxrJJEZGk4cU5gvfM7FmgBggCG4BHYtlmeno6zrlYNiEikrQ8uWrIOfcT59ww51yec+67zrmDsW4zIyODXbt2xboZfv3rX5Obm0teXh6TJ0/miy++iHmbIiInwhd3FsdDMBhk27Zt/OY3v6G6uprNmzfT0tLCsmXLvI4mInJMvisEgUCA7Oxspk6dSm5uLmVlZRw4cACA0tJSZs+eTUlJCVlZWaxduxaAlpYWZs2axYgRI8jPz2fhwoUAVFRUMGrUKMaNG0dOTg4QKggHDhwgGAzy+eefc+aZZ3pzoCIiUfJdIQCor69nxowZbNmyhUGDBrF8+fLItmAwSGVlJXPnzmXOnDkALF68mIEDB1JVVUVVVRWLFi2ioaEBgJqaGubNm0ddXR1paWncfffdDB06lDPOOIOBAwdSVlbmyTGKiETLl4UgMzMzctNZUVERgUAgsm3ChAlHPL969WqWLFlCQUEBI0eOZPfu3dTX1wNQUlJCZmYmAJ9++inPP/88DQ0NfPLJJzQ1NfHkk0/G78BERLrAl4Wgb9++kccpKSkEg8EjtrV93jnH/Pnzqa2tpba2loaGhsgn/f79+0f+7WuvvUZmZiapqan07t2bCRMm8M4778TjkEREusyXheB4lZeXs2DBApqbmwGoq6ujqanpiP2GDh3KunXr+Pzzz3HOsWbNGrKzs+MdV0TkuMT9PoJkNGXKFAKBAIWFhTjnSE1NZcWKFUfsN3LkSCZOnEhhYSG9evXiwgsvZNq0aR4kFhGJniXDjVbFxcWuuro66v1LS0uB0FU9IiJ+ZWbrnXPFne2noSEREZ9TIRAR8TnfFYJx48aRl5fndQwRkYThq0Lw3HPPccopp3gdQ0QkofimEOzfv59f/epX3HvvvV5HERFJKL4pBPfddx8//OEP6devn9dRREQSii8KQW1tLX/5y18YP36811FERBKOL24oe/fdd6muriYjI4NgMMiOHTsoLS3VfQYiIvikR3D77bfzySefEAgEeOutt8jKylIREBEJ80UhEBGRjvmuEGRkZLB582avY4iIJAzfFQIREWlPhUBExOdUCEREfE6FQETE51QIRER8ToVARMTnVAhERHxOhUBExOdUCEREfE6FQETE51QIRER8ToVARMTnfLEeAUBpaSnbt2/nK1/5CgCrV69myJAhHqcSEfFezAqBmf0euBLY4ZzLCz/3VeBpIAMIAJOcc5/GKsPhnnrqKYqLi+PVnIhIUojl0NDjwNjDnrsHWOOcOx9YE/5eREQ8FLNC4Jx7E/jHYU9fBfwh/PgPwL/Eqv2jueWWWygoKOBnP/sZzrl4Ni0ikrDifY7gdOfc9vDj/wRO72hHM5sGTAMYOnTocTVytGUon3rqKdLS0ti3bx9XX301TzzxBDfddNNxva6ISE/k2VVDLvSRvMOP5c65R5xzxc654tTU1BNuLy0tDYABAwZw/fXXU1lZecKvKSLSE8S7EPzdzM4ACP93RzwaDQaD7Nq1C4Dm5mZeeOEF8vLy4tG0iEjCi/fQ0ErgZuDn4f8+H49GDx48SHl5Oc3NzbS0tPCtb32LqVOnxqNpEZGEF8vLR5cCpcBgM2sEfkKoADxjZrcC/wFMilX7bfXv35/169fHoykRkaQTs0LgnJvcwabLYtWmiIgcP00xISLicyoEIiI+p0IgIuJzKgQiIj6nQiAi4nMqBCIiPqdCICLicyoEIiI+p0IgIuJzKgQiIj6nQiAi4nOWDCt1mdlOQpPUHY/BwK4YxIm1ZM0Nyu6VZM2erLkhebKf7ZzrdEGXpCgEXWFm1c65pFupPllzg7J7JVmzJ2tuSO7sR6OhIRERn1MhEBHxuZ5cCB7xOkAXJWtuUHavJGv2ZM0NyZ39CD32HIGIiESnJ/cIREQkCkldCMxsrJltNbOPzOyeo2zva2ZPh7e/Z2YZ8U95dFFk/4GZvW9mm8xsjZmd7UXOo+kse5v9rjYzZ2YJc3VFNNnNbFL4vd9iZv8n3hmPJoqfl6Fm9oaZbQj/zHzbi5yHM7Pfm9kOM9vcwXYzs9+Ej2uTmRXGO2NHosh+Qzjzn83sHTO7IN4Zu41zLim/gBTgL8A5QB9gI5Bz2D7/Ffj38OPrgKe9zn0c2ccA/cKPb0+m7OH9BgBvAuuAYq9zH8f7fj6wATgt/P2QJMn9CHB7+HEOEPA6dzjLaKAQ2NzB9m8DLwMGXAS853Xm48j+zTY/J1ckUvbj/UrmHkEJ8JFz7mPn3CFgGXDVYftcBfwh/PhZ4DIzszhm7Ein2Z1zbzjnPg9/uw5Ij3PGjkTzvgP8DPgF8EU8w3UimuxTgd855z4FcM7tiHPGo4kmtwNODT8eCHwSx3wdcs69CfzjGLtcBSxxIeuAQWZ2RnzSHVtn2Z1z77T+nJBYv6PHLZkLQRrwtzbfN4afO+o+zrkgsBf4WlzSHVs02du6ldCnpkTQafZw9/4s59yL8QwWhWje9ywgy8zeNrN1ZjY2buk6Fk3unwI3mlkj8BJwR3yinbDj/V1IVIn0O3rcenkdQI7NzG4EioF/8jpLNMzsJOBXwPc8jtJVvQgND5US+oT3ppkNd87t8TRV5yYDjzvnfmlmFwNPmFmec+5Lr4P1dGY2hlAh+C9eZ+mqZO4RbAPOavN9evi5o+5jZr0IdZl3xyXdsUWTHTP7FvBvwDjn3ME4ZetMZ9kHAHlAhZkFCI37rkyQE8bRvO+NwErnXLNzrgGoI1QYvBRN7luBZwCcc+8CJxOaDyfRRfW7kKjMLB94FLjKOZcIf1u6JJkLQRVwvpllmlkfQieDVx62z0rg5vDjicDrLnxmx2OdZjezC4GFhIpAIoxTtzpmdufcXufcYOdchnMug9DY6TjnXLU3cduJ5mdmBaHeAGY2mNBQ0cfxDHkU0eT+K3AZgJllEyoEO+OasmtWAjeFrx66CNjrnNvudahomNlQ4Dngu865Oq+ZQnyDAAADbUlEQVTznBCvz1afyBehKw7qCF1R8W/h5/4HoT88EPpl+CPwEVAJnON15uPI/hrwd6A2/LXS68zRZj9s3woS5KqhKN93IzS09T7wZ+A6rzNHmTsHeJvQFUW1QJnXmcO5lgLbgWZCva1bgenA9Dbv9+/Cx/XnBPtZ6Sz7o8CnbX5Hq73O3NUv3VksIuJzyTw0JCIi3UCFQETE51QIRER8ToVARMTnVAhERHxOhUCSjplldDQjZAzbrOjsprhY5TKzUjP7ZpvvHzezid3djviXCoH0WGaW4nWGblJKaKZLkZhQIZBk1cvMnjKzD8zsWTPrB2BmATP7hZnVANeY2VQzqzKzjWa2vM1+j4fnwX/HzD5u+wnbzGaH55jfaGY/b9PmNWZWaWZ1ZjbqWOHMLMXM/le47U1mdlv4+dJw7+JZM/swfAwW3vbt8HPrw9lesNAaGtOBfzWz2jbtjj5adpGuUCGQZPUN4GHnXDbwGaG1J1rtds4VOueWAc8550Y45y4APiB0d2irMwhNFHYl8HMAM7uC0NTII8P/5qE2+/dyzpUAM4GfdJLvVkLTJYwARgBTzSwzvO3C8GvkEFpj4BIzO5nQlCJXOOeKgFQA51wA+Hfg1865Aufc2o6yi3SVCoEkq785594OP36S9jM/Pt3mcZ6ZrTWzPwM3ALlttq1wzn3pnHsfOD383LeAx1x4LQjnXNv56J8L/3c9kNFJvjJCc+jUAu8Rmv68dfK6SudcowvNDFobfq1hwMcuNNEdhKY3OJajZRfpEk1DLcnq8LlR2n7f1Obx48C/OOc2mtn3CE8oF9Z2RtdoFixq3b+Fzn93DLjDOfdKuyfNSg9rN5rXOlaW1rZEukw9AklWQ8Pz7gNcD7zVwX4DgO1m1ptQj6AzrwK3tDmX8NUu5nsFuD3cLmaWZWb9j7H/VuAc+//ral/bZts+QschEhMqBJKstgIzzOwD4DRgQQf73UdoaOZt4MPOXtQ5t4rQ1MjV4WGdu7uY71FCM5jWhC8pXcgxPvk75w4QOs+xyszWE/rjvze8+U/A+MNOFot0G80+KpIgzOwU59z+8FVEvwPqnXO/9jqX9HzqEYgkjqnhXsgWQqvpLfQ4j/iEegQiIj6nHoGIiM+pEIiI+JwKgYiIz6kQiIj4nAqBiIjPqRCIiPjc/wPaWwytr7MffwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#now we want to use the bootstrapping to make new trees based on the new samples. we'll go back to making UPGMA trees.\n", + "\n", + "#start a calculator that uses sequence identity to calculate differences\n", + "calculator = DistanceCalculator('identity')\n", + "#start a distance tree constructor object \n", + "constructor = DistanceTreeConstructor(calculator)\n", + "#generate 5 bootstrap UPGMA trees\n", + "trees = bootstrap_trees(aln, 5, constructor)\n", + "\n", + "#let's look at the trees. (if you have few samples, short sequences the trees might look very similar)\n", + "for t in trees:\n", + " Phylo.draw(t)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#biopython gives us a useful function that puts all this together by bootstrapping trees and making a 'consensus' tree.\n", + "consensus_tree = bootstrap_consensus(aln, 100, constructor, majority_consensus)\n", + "Phylo.draw(consensus_tree)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Exercise 3. T-tests*\n", + "\n", + "Similarly to the $\\chi^{2}$ test we saw for testing deviations from HW equilibrium, we can use a T-test to compare differences in means between two independent samples. We can use this to revisit a the first programming question in the exercsies section. Does mutation rate and population size have an effect on the fitness of populations? We can translate this question to, is there a difference in the mean base pair distance between populations under different mutation and population size regimes?\n", + "\n", + "Scipy has a very useful function that implements the T-test called `scipy.stats.ttest_ind`. Run two independent simulations (with different mutation rates) and compute the difference in mean bp distance between the two at their final generation. Store the populations in two different variables. Give a list of `bp_distance_1` values for each memeber of the population to `ttest_ind()`. \n", + "\n", + "Make sure to read teh `ttest_ind()` documentation, particularly about the argumetn `equal_var`. What should we set it to?" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Ttest_indResult(statistic=1.3671266704990508, pvalue=0.17188793847221653)" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import collections\n", + "\n", + "target = \"..(((....).))\"\n", + "\n", + "#run two simulations\n", + "hi_mut_pop, hi_mut_stats = evolve(target, generations=5, pop_size=1000, mutation_rate=0.5)\n", + "lo_mut_pop, hi_mut_stats = evolve(target, generations=5, pop_size=1000, mutation_rate=0.05)\n", + "\n", + "#store lits of base pair distances for each population at last generation.\n", + "hi_bps = [p.bp_distance_1 for p in hi_mut_pop[-1]]\n", + "lo_bps = [p.bp_distance_1 for p in lo_mut_pop[-1]]\n", + "\n", + "#run the \n", + "stats.ttest_ind(hi_bps, lo_bps, equal_var=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Bonus! (difficult programming exercise)\n", + "1. *Nussinov Algorithm (Only try this if you are feeling brave and are done with the other exercises or are interested in getting a taste of Computer Science. It is beyond the scope of this workshop.)*\n", + "\n", + "There are several approaches for solving this problem, we will look at the simplest one here which is known as the Nussinov Algorithm. This algorithm is a popular example of a class of algorithms know as dynamic programming algorithms. The main idea behind these algorithms is that we can break down the problem into many subproblems which are easier to compute than the full problem. Once we have obtained the solution for the subproblems, we can retrieve the solution to the full problem by doing something called a backtrace (more on the backtrace later). \n", + "\n", + "Here, the problem is obtaining the optimal pairing on a string of nucleotides. In order to know how good our structure is, we assign a score to it. One possible scoring scheme could be adding 1 to the score per paired set of nucleotides, and 0 otherwise. So in other words, we want a pairing that will give us the highest possible score. We can write this quantity as $OPT(i, j)$ where $i$ and $j$ are the indices of the sequence between which we obtain the pairing score. Our algorithm is therefore going to compute a folding score for all substrings bound by $i$ and $j$ and store the value in what is known as a dynamic programming table. Our dynamic programming table will be a $N$ x $N$ array where $N$ is the length of our sequence. So now that we have a way of measuring how good a structure is, we need a way to evaluate scores given a subsequence. To do this, we set some rules on the structure of an RNA sequence:\n", + "\n", + "\n", + "If $i$ and $j$ form a pair:\n", + "1. The pair $i$ and $j$ must form a valid watson-crick pair.\n", + "2. $i < j-4$. This ensures that bonding is not happening between positions that are too close to each other, which would produce steric clashes.\n", + "3. If pair $(i,j)$ and $(k, l)$ are in the structure, then $i < k < j < l$. This ensures that there is no crossing over of pairs which would result in pseudoknots.\n", + "4. No base appears in more than one pair.\n", + "\n", + "Using these rules we can begin to build our algorithm. The first part of our algorithm needs to take as input indices $i$ and $j$ and return the value $OPT(i,j)$ which is the optimal score of a structure between $i$ and $j$. We start by thinking about values of $i$ and $j$ for which we can immediately know the solution, this is known as a 'base case'. This is a case where the solution is known and no further recursion is required. Once the algorithm reaches the base case, it can return a solution and propagate it upward to the first recursive call. So once we have reached $i$ and $j$ that are too close to form a structure (rule number 2), we know that the score is 0. \n", + "\n", + "Otherwise, we must weigh the possibility of forming a pair or not forming a pair. If $i$ and $j$ are unpaired, then $OPT(i,j)$ is just $OPT(i, j-1)$ since the score will not increase for unpaired indices. \n", + "\n", + "The other case is that $i$ is paired to some index $t$ on the interval $[i,j]$. We then add 1 to the score and consider the structure formed before and after the pairing between $i$ and $t$. We can write these two cases as $OPT(i, t-1)$ and $OPT(t+1, j)$. But how do we know which $t$ to pair $i$ with? Well we simply try all possible values of $t$ within the allowed range and choose the best one. \n", + "\n", + "All of this can be summed up as follows:\n", + "\n", + "$$ OPT(i,j) = max\\begin{cases}\n", + " OPT(i, j-1) \\quad \\text{If $i$ and $j$ are not paired with each other.}\\\\\n", + " max(1 + OPT(i, t-1) + OPT(t+1, j)) \\quad \\text{Where we try all values of $t$ < j - 4}\n", + " \\end{cases}$$\n", + "\n", + "\n", + "We can now use this recursion to fill our dynamic programming table. Once we have filled the table with scores, we can retrieve the optimal folding by a process called backtracking. We won't go into detail on how this works, but the main idea is that we can start by looking at the entry containing the score for the full sequence $OPT[0][N]$. We can then look at adjacent entries and deduce which case (pairing or not pairing) resulted in the current value. We can continue like this for the full table until we have retrieved the full structure." + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('ACCCGAUGUUAUAUAUACCU', '(...(..(((....).))))')\n" + ] + } + ], + "source": [ + "min_loop_length = 4\n", + "\n", + "def pair_check(tup):\n", + " if tup in [('A', 'U'), ('U', 'A'), ('C', 'G'), ('G', 'C')]:\n", + " return True\n", + " return False\n", + "\n", + "def OPT(i,j, sequence):\n", + " \"\"\" returns the score of the optimal pairing between indices i and j\"\"\"\n", + " #base case: no pairs allowed when i and j are less than 4 bases apart\n", + " if i >= j-min_loop_length:\n", + " return 0\n", + " else:\n", + " #i and j can either be paired or not be paired, if not paired then the optimal score is OPT(i,j-1)\n", + " unpaired = OPT(i, j-1, sequence)\n", + "\n", + " #check if j can be involved in a pairing with a position t\n", + " pairing = [1 + OPT(i, t-1, sequence) + OPT(t+1, j-1, sequence) for t in range(i, j-4)\\\n", + " if pair_check((sequence[t], sequence[j]))]\n", + " if not pairing:\n", + " pairing = [0]\n", + " paired = max(pairing)\n", + "\n", + "\n", + " return max(unpaired, paired)\n", + "\n", + "\n", + "def traceback(i, j, structure, DP, sequence):\n", + " #in this case we've gone through the whole sequence. Nothing to do.\n", + " if j <= i:\n", + " return\n", + " #if j is unpaired, there will be no change in score when we take it out, so we just recurse to the next index\n", + " elif DP[i][j] == DP[i][j-1]:\n", + " traceback(i, j-1, structure, DP, sequence)\n", + " #hi\n", + " else:\n", + " #try pairing j with a matching index k to its left.\n", + " for k in [b for b in range(i, j-min_loop_length) if pair_check((sequence[b], sequence[j]))]:\n", + " #if the score at i,j is the result of adding 1 from pairing (j,k) and whatever score\n", + " #comes from the substructure to its left (i, k-1) and to its right (k+1, j-1)\n", + " if k-1 < 0:\n", + " if DP[i][j] == DP[k+1][j-1] + 1:\n", + " structure.append((k,j))\n", + " traceback(k+1, j-1, structure, DP, sequence)\n", + " break\n", + " elif DP[i][j] == DP[i][k-1] + DP[k+1][j-1] + 1:\n", + " #add the pair (j,k) to our list of pairs\n", + " structure.append((k,j))\n", + " #move the recursion to the two substructures formed by this pairing\n", + " traceback(i, k-1, structure, DP, sequence)\n", + " traceback(k+1, j-1, structure, DP, sequence)\n", + " break\n", + "\n", + "def write_structure(sequence, structure):\n", + " dot_bracket = [\".\" for _ in range(len(sequence))]\n", + " for s in structure:\n", + " dot_bracket[min(s)] = \"(\"\n", + " dot_bracket[max(s)] = \")\"\n", + " return \"\".join(dot_bracket)\n", + "\n", + "\n", + "#initialize matrix with zeros where can't have pairings\n", + "def initialize(N):\n", + " #NxN matrix that stores the scores of the optimal pairings.\n", + " DP = np.empty((N,N))\n", + " DP[:] = np.NAN\n", + " for k in range(0, min_loop_length):\n", + " for i in range(N-k):\n", + " j = i + k\n", + " DP[i][j] = 0\n", + " return DP\n", + "\n", + "def nussinov(sequence):\n", + " N = len(sequence)\n", + " DP = initialize(N)\n", + " structure = []\n", + "\n", + " #fill the DP matrix\n", + " for k in range(min_loop_length, N):\n", + " for i in range(N-k):\n", + " j = i + k\n", + " DP[i][j] = OPT(i,j, sequence)\n", + "\n", + " #copy values to lower triangle to avoid null references\n", + " for i in range(N):\n", + " for j in range(0, i):\n", + " DP[i][j] = DP[j][i]\n", + "\n", + "\n", + " traceback(0,N-1, structure, DP, sequence)\n", + " return (sequence, write_structure(sequence, structure))\n", + "\n", + "print(nussinov(\"ACCCGAUGUUAUAUAUACCU\"))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/src/test/data/TestCommandEntryExecutionAction.cws b/src/test/data/TestCommandEntryExecutionAction.cws new file mode 100644 index 0000000000000000000000000000000000000000..89fa2da6ccf6d824a9210dd3955944f0c813f7e3 GIT binary patch literal 269 zcmWIWW@Zs#U|`^2I8?ADpg|?cXeyBR0f@PQI5|JBBsH%@uOc@mwErMivjI=rdpp-_ zuleq#9KX^1ZB5U?8ymA60;4mPU)=VWy#3`{d(Fw?{mXUy<<~noXX#k~FWJYXr;m0v`hUhBM=xvKN}l&uG+*sgt0n#>Sv&U5UVmfdlU{fD>h z2%b^ZcEGf9en&S$oSPTR4)A7V5@E*eexMh? aU`Zp0Lh?<3H!B-Rh!F@af%HBQhXDZUp" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%latex\n", + "$$\\Gamma$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test Entry" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Text" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/test/data/TestEntryLoad2.ipynb b/src/test/data/TestEntryLoad2.ipynb new file mode 100644 index 0000000..1d7cbb7 --- /dev/null +++ b/src/test/data/TestEntryLoad2.ipynb @@ -0,0 +1,72 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 4\n" + ] + } + ], + "source": "2+2" + }, + { + "cell_type": "markdown", + "metadata": { + "cantor": { + "text_entry_content": "\n

        Text entry

        " + } + }, + "source": [ + "\n", + "

        Text entry

        " + ] + }, + { + "cell_type": "markdown", + "metadata": { + }, + "source": "#### Markdown entry" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cantor": { + "latex_entry": true + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAG8AAAAVCAYAAABIfLDHAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGaklEQVRoge1ZTUwTaRh+3OyRr57p3NvBG6EtiRykpWYvAoV4UKSsHExNSTEaiY1s1mhkw8bNkqWhsTFZFZB4MJTS7EkL7sVIaW9KZ3rzZ6ZHtB8n06R7KPPR6UyhM/Kza/ZJ5jDvfD/zzfu9z/t87xwrlUplGASlWyCkyWi3/7HPOFbtvEg0ptuo39cDztrM7n1nz2FmeorZ6vXbDaFgYM82klzA4tLyru+j16b2fb9VHKuNPEHMwz98Cbzdhuj0lCbClOdDgwPMAc6TpzA0OIB2l4O1W0tnMDu/gL7ebni73Br7+qu/G37JdCaLkdFrAIClZ081jolEY4gnkrjoH0Bfb8+Rs4IkFw5l83xXa+DtNgCAxUJ0P8Lz1CpCwQBSK6vM1uXpRCgYgMvRxi7FkYQQlT0UDKCvtxuUbjX8ki5HG4YGBwBANa+C4xaC8RvXMTQ4cOSOA6DLFgcBjfMaQV9vDyS5gNTKS1C6hRO83VD/dqcDOVE01CcUDIC32/BobgGSXGB2SS7gc5Giy9NpaLyDQvW7HTQMOS+eSKLfV6GlLk8n1tYzyIkieIPOIxZiqL2C8fAYKKUIj//MbI/nnuCi/4Kp8Q4ChxV1APC9kcaUUsblpz1uhH+6heGhQTQ1NU5VkWgMX758AVDJf7uh3eWAy9HG7nm7DUODA5idX0AkGsNxC4G3y/3VVCmIeTxPVej4dJebpQ5Kt1QM4XK0sbYneDtcTodq7ngiiXgiCa+nE+lMFgDAWa0qcSXJsmq8eCIJAOjr7dY8txDC3kUQ8yhSqrI37DxJLmBDEFXKkhCC1+l19PV2NzoMQsEAEyC83Ya5hw8086TXM3g894QtUNN/fUcMKbnQLH759TcQQpj4qr4vUoq1dAbxRBJ9vd0QhArLhIIBzM4vIDh6lYm6dCaLj5IMC2mCJMtsY7a7HFXOk5lgGxocwFo6g3aXA+HxW6CUguft7Dlvt6Hf18Ocl9v+9i28DV7P9gYrlUrl2qvV1VEOjIyqbFPTM+XNzU8a23n/sKZ/qVQqv3q9Vm51dZSnpmd0n+vNUX29e/+h7vM3bzfKra6OunM3ek1Nz2jm2Nz8VG51dZRfvV5jtsDIaDkwMlp+83ZDs4Y/H82qbIGR0bprrm5zxne2/O79h3KpVCrfmZhUjX3eP1y+MzGp6VdrM5Tzaump39cDQcxDEPNftfv1wFmbwdv1c+nz1Cq6PJ0QxLypMyZQocR4Iol2p0NlJ6QJLmebhtKLRcqioBqfi9TU/By3Q6c3b1xXjd3v60E8kVQpckkuoKVGW+zpvHQmi5Er1xBPJBmPV7h553Acid5n3P01oHRrzyOEslEm794Gb7dhdn7B1ObJiSLodg5JZ7Kqq1ikEGrUsMWkyKqHehsTALweNwghiCd2xE9qZRVej1vVbs+cp5zPqpFaWWWH9EYqJY1CEQfKfP2+Hk2bxaVl3LxxHUBFffqHL2Fi8p4mdzYKnrdr1md2rP0CIU3wejqxuLTMcvrnItUwn6lz3kdJ3ruRCdRSlV4lpdqhivo0Q58WUokkapL2GoVZRvrRf6Ei3jJZpFZe6m5kw86jdAs5wdgBux4kSUYkGkMkGoN/+BJm5xfqtlUouzbvKId3o/TJ223grM3YqLOW/UgDgPmNzlmb4XK2YXFpGZIs65bbNM7bLedQuoVI9P6+8T/HWRn1zj18UJeCBTGP8Pituofx8fAYAGBi8p6h+W+GxxBPJDVVkXgiCY6zGhpLAWe1avKlWXg9bqRWXoIQ/e+tKkyPXLm2nazzIISghVfv8pyQB6WVUtTk3duawSr0dR9AJaokuaAaJxS8zCLHefIUXM42zPzxO+uvRJeSg+KJJBLJv/B2IwegEi3j4TFV9AliHhOT91jUcdbm7U1xWVcd1iKdyeLx3BN4PW5wnBWCIIIQUjnXba8nJ1TGbuFtCAUvIyeIeLGyivR6lq1PmU+SCxgZvcpojrNaWekunkhq+nk97l3Pyb6z57D07KnuM81fhcOCnvOUqK9OzJFobF9FUT0oFYxa8WIW6UxWVV0xi93Wb6g8dtCoVVPpTNZw0dssGolSI9iPTaDUkuvBlNo8LLxIrZrOPf9FzM4vwPPDGXb/UdIXKgqOxHmN/MtTirz7HRH/ZnBWK1p427YwjO0adcAR5Ly9RBGwI3b0CtffOpTc22K37/m35B9iM14IYS5yoAAAAABJRU5ErkJggg==" + }, + "metadata": { + }, + "output_type": "display_data" + } + ], + "source": [ + "%%latex\n", + "\\LaTeX\\ entry" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/src/test/data/TestMarkdownAttachment.ipynb b/src/test/data/TestMarkdownAttachment.ipynb new file mode 100644 index 0000000..6adacae --- /dev/null +++ b/src/test/data/TestMarkdownAttachment.ipynb @@ -0,0 +1,77 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "2+2" + ] + }, + { + "attachments": { + "CantorLogo.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![CantorLogo.png](attachment:CantorLogo.png)\n", + "![CantorLogo.png](attachment:CantorLogo.png)" + ] + }, + { + "attachments": { + "CantorLogo.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAABHNCSVQICAgIfAhkiAAAHgNJREFUeJztXWuQHcV5PbOrfUlIu3rx0As9wEhGQi9knhYSFkhCkoHElMt2uWwHJ1SCUymn/CepVNmVSuVHfrmSSmJX4TiJq5yy42ABQtJKCAQGhMRDgEAsEhIgHkK7eiNp37fz4947093T3dPT0zO3726fstl75+v+umemz3zf6em+Ajw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDzqCUERjaxafvUDRbTjMbqx58DHnf0Dw+dt+iyEIJ91/pAU0Y7H6Maybz1y/acnPz9o0+cYm85kIMTzw6MI2B9nDdY9eniMIHiCeHgo4Ani4aGA1yAeIwZ5jDIfQTw8FPAE8fBQoJAUKwmvv/0BLnxu9f2OxwhD0NiM21bML7xdJzSIVygeySA10bI+xfLwUMATxMNDASc0CI/3zo3He+cnhN9Tp2jK8qT6P4GJiP1xPlXtJbSs0cd451T19GziE1b2VXUNJTaisCX55G0z24dw66x+RQ+LQUEaJF35/lIjzg82A4TIb6JtmykBZDajgWxoE1xgU1v5sJ1BrmWT3I+JbSW2GNKPIxsoKIKYnZlRLYMnn7JN25FDZcvY91R1VFFAVkXZlCFxFD6zlrYBdzVIws1NfSM10ifTwSHzl9oma9M0Qsh8GqRISemTvEHLpC8YxUSQpOuQJj82Ta0UdbLaTCOEtk3ms8jBZztCJNxHoRAbqSlW+kFr0kjyYLGSBnFtmaZdsjqpbKLiSTbT6CHzWSBJaxFvnNQgphEij7QrFVIMlsznYTHtktXRsinq2M8CvAYxQ47i1oowtzRrpQXbwjwH8a1OrdyCGxpEy4cDwlyTOFbgijA3QYYHltI6WjWITvh3Qpjrulf4y0OYa4l2ExQszDOPkxzgiAYxPHUvzBPrFC3MjRYUatfxGiSOIlMrF4S57dRKZSv4xaRpX2sJJ5ea0BULE3SuCHMTWB7oRQtz7fhRAxa5H0EU8MJc4UpSR8sm7Z4hER2cndKFIxpEVMVc0KVOnyykE3UlzHMYzNaFufgmpuuUBdRfBMl4c/MQ36Zpl6wtbdiOEMqmChTmDkUcRzWIA+88VLB0c70wt9dUXqivCFLgPH8thblW+uS6MDdOrZIfZkXCXQ0Sc2EYIVwQ5hYHc90IcxMk3qviaePGUhPN865bYc670bFZTLtkdbRsKpcKf1YnWLSMGnYDOLHUJNmBF+ZZ/BUtzJPSp9S2JL85wgkNonPiXpgn+DRNrQpOGU3vVa3giAYxnwmR1clqqzthbgJXhLnKp0Epm3BDg0jrJQ8WK2kQ15Zp2iWrk8omKp5kGwHCXK+s3aZ14LwGMRXmqUW7tBH9wTLihXmGqVsbqe6o1SBC5ChurQhz09TKBWFuO7VS2Qp8l5MHHNEgKWq5/s5DBVeEuQmKFOZSfxm0rCHc1CDE4FRzfhoVLcy1RLsJXBfmyvuocJYTnNcgrKPRI8xVdYoW5i4sRiSoRfxwVINYTa1cEOa2UyuVreAXk9YeVlRbOmQoCk5rkOzNOiLMTWD7CVywMDcS7UrUhjZuaJBEuxfmoc2Vdx4ZopHRfaxRWKkbDZJe0GVPJ+pKmOcwSVG0MK+FxkiCkxqEgcbNzUN8m6Zdsra0YTtCKJtyW5i7AEc0iMRuO7VSdsHOzfXCPKVNM3oke88HbmgQq23pDZaihblW+uS6MDdNrWxFj9GqQVI/WVwQ5hYHc90IcxNkvI9McSsdSgenNYjTwpx3o2OzmHbJ6mjZVC4V/goT5oSoelIoCkqx0p6sF+ZJtqKFuVH6NAKEvrMRxAtzeR9MbUpkuBZ5pMiuwAkNoucku7itO2FuAleEucqnwp/SnNafBTgbQWTIQ5hrX3gvzPWg0ZZVYuUINzRI0hXRCNfW+jPahHmGqVv7wjzh/GugQeonxRI6tizMTVMrF4S57dRKZStSmNPF0nvODPdTLBfeeajgijA3gWPC3KXUqgq3CZJz3ly0MNcS7SZwXZg7NnWbBm5okKTqaWwOC3NVnaKFeS0WI2aOHqNVgwifSa4Lc9uplcpW8Mu4zBMTgrbS29K1nRfcTrFEcEWYm8DyQK/rXYJ1kna5SRDC/FEVoQ54Ya6FnKKRNWHuEDmAOtEgmfxYmrotQphPn3YVvvG1+xPLRc7FPhsaGoBAVifZ7aOPP4l3Dh1m2skjtUqN0apBtOrYTq1UthoJ8/s3rsf0q65M798yxra1ocwwkmsqlDZ6eA1SQebZjrCwnZtbhDBfsmgh5s2Zrd2nPEEQMAGoMGFO+XQl0XKSIDFoDvSihbnWTdToe9OYMdi0/m4db4UgYP5KcrURLMxp1JUGyV2Ym97AjMJ89crbMWliB1Nm286ncaK7J1ZR/vwN5K0SsFPpQXQcILh3w3pMnjQxbg/dcr5zFObKu5Z0T3PgmLMaJKpcoDDn3ejYMqZd7e0T8JU7bmeOHXn/Q+zYtZurGKDEJR9MGlQ9HJBYI0w3Am6gE+DuO1fH+klTqgFBpeWEgZyHMGd6VDzcTrFGoDDnbZvW3Y3m5ubwe6lUwu+f2MqVDyqD0yY5qu7iKVRAHQoIZ894LYyjR43gxq+a2Iycrgtzqs7sWTOxbPEipsy+V/fjk0+PU5XK5CAScoSplYAc0CCHqr9VclTbriZa1lIrTVu6QnbhyO9iiao4LswtEPH+TfcgoB7XfX19eLLzKcpPMjkIkZADQVSPJwfzkeD5PXsxYcL48Ojx4ycquoPTLkA5vBDOkQrWdJ2UmrnCeQ2SKiSbhGuLqVWa6PGl5Usxa8Z0psyOXc/iwoWLlQoBRw0BOWSRA0HUloAcAQFK1IEXXtoXNUCIhBwUSYOAXcpiW5hLIrPXICHyizhJ3k2jR5q0q6WlGRvWrmGO9Zw8iedefKlSgXr6U+lNBGoaSkKOcgYlJodwOIf5k4AcAdcTQr0pyTijJavjCtzQILrVikytchTmd626AxPGj2fMm7d0Ynh4mCEHUZCDyMiB6hgXkAPxlC2sRgWjGDmiWQDmPIJQwwjO20KKHK+XprAdOKJBkp+6I2Ux4uRJE3HH7bcwZboOHcbBrnc5cpQhIkdDQ4ApkydjUkcHmpub0D8wiDNnz6K75xQIKTE9am1pwfwvXBuSAwTY/+YB3mUiOQhHjurZBQFA+Pck/PlLkOo+auke+wxyQoPYPC0r0UPmM+NiRAC4d8M6jBkTXfbh4WFsfmI7l1aJ5pcCLLjuWtx04zLM/8I8tLa2xnz39vbhnUOH8eLefTj03lGAAB3t7fiTb3+DKfeXPzpQdVn+IyMH3ROhaI7KMlIopzfmxdOjsAiSEQ4Lc1UdfmB94Zq5WLhgPlPmhZdexonuk/G0h8LMGdPxwH2bMGvmdGkZAGhra8WyxYuwbPEiHHn/A/z2/x6DdKkIRY7Y05l50474+VEBo1o1qBykS5pmAURkrxGc1iDJfvUHeh4RIk360NDQgPs2rGemdS9cvIjtO58RkCP6vvK2W3DvhrVobGxUtBbHvDmz8aO/+gs898JLcWNIjqqgp3oQey8oIgeVBhKaLwFr04XuQ2nkapAMqOE7Dy1okvTWL92Iq668gjFv2/E0LvX28pXCT+vW3Il1d4mWgZQH7uefX0BvXx/aWlsxfvxlDPkAoKmpCV9Z9WVh/URykHL/GXUR0B8IR45ypUAkVcodFpyhoJjCVgsUpEEMT3uECPOxbW1Yd9edTJlPj3+GPXtfZStSo23FsqVYu2ZVzPeJ7h4889wLOPB2Fy5cvIhqQjJu3Dgsun4B7lx5O664fKqid+wbchU5wnOh7dWwESMH3QDHEkspsvE4ygD3I4gIlqZuixLm69asxrixY6luEPz+ie0okVJ4rDymyv46Ojrwtfs2MhGBEILOp3ajc9dulErVetEgvnDhIvbsfQX7Xt6Pu9eswro1q2MRhTkHIkurAoDQrxEhJAdj57+RaEq53uGGBskpJKvIIWtLG5rC/MrLL8etN61gyrz51js4fORo+D1cvVEZiRvXrkFLS7SAkRCC3zz6OPbsfYVvCfT7kAABhkslbNuxC+fOncfX//heIUnKRAwrURBoCMYuIwftm7YH6vuYdoKlBnxz9E26Aq4vRuRw38b1jMAeHBzC41s7w+8B83QG2ieMx9Il7ALGPfteEZIDHDnoof3iS/uwZx9dh+0pKVeiUBnM9DnH0i62db4/hLMHIPJXiYn30Y3o46YGIcKPqmKZU6uFC+bju9/6urJbv/jVr/F21yFtki5cMB/XXTuPMe/+w4s4dfoMgIgctLulixeisSF6bvX19+OJrTuFvY8GIj8MCUgAPLZ1O5YtuQGtLS1sF8uVKLDkiNsj39IzF5Cj6i8IqOUv8qqVL/JrW4uUzekIkuqpI3ViL7X66j3y6VY+tWpsbMS9G9YyZc6dP4+dzzwHgCIH5+XaeXOZI/vfOEDNdBGmbJTrxz0BwKVLvdj/xoHY8dTkIIQOVrwxtDHkAMonGQSV6pRT06UmNUAxBCEJ/9fykS1C6NiSMHXyZKy85SYtn3fcdgumTJ7MHNuy7SkMDAwwG5KofA4giE0FHzp8lC9Y/iYlR/ScDUiAdw8dUZyRQCMYkIPuQWwFAIl9kCPpgWVjHKWEsxHEdJDrhmvTaeK7Vq/E+MvGKf2Nv+wy3LX6Dsb84bGP8cr+1xlyRE/VaKDxvntOnULsjCuraUWRgyYHAJw8eUpyJhQ5qn9j5ICaHHybAnKUXdA5c/1ED8ARDZKYWxYgzA8fPYp/+um/xUp3tLfj+9/5ZvnH2AC0trbinrvX4DePPhaV4vxtWLsGra1R3l+e1mW30UaL/wg9wsJ2qhgeHhachCytqlCOes8xVOLqVxviyMHvrC2PbMmdobYWVh/euuTgV7HQtiSMXA2SMjSaRogsaVdf/wBO9PTgs+5unOjuxonuHnzW3YOuw0fw0suvMeVXLFuCGdOuEvqaMX0aVixfyhx7df8b+PCjj6kjYnIA5QWHNNonsMvio3OJk6P8h93PMUFQn5+pEpJD0ELYTy7t0iIH2NcpRvfKp1gCFLoYMRp65U/lW79t5zPMkpCGhgbct3G90N/9G9ejgcqj+vsHsGU7PQtFPf05cgABeriUaPbVs6KahO4h4xL0SKcH5tzZsyCH/Okk/PFrLnIIfcjIQfhrq92jmqIQghgT3/ZiRJUtnJJk7QGAixcvYseuZ5njc2dfjSU3LGSOLVu8CHNnX80ce2r3czh3/nPKG8InMH2o+uHoB8eY+suX3IAgCGLbZJkOUheSWTLfEGD5ksVQgQi+qMkh+fGfIKCOyMkR74A+JWoQQIqKINlPzUpqpXkzIpKQsM7ze/bFfsht07q70NRUlnFNTU3YuI79dcRTp89g9x9erHqtdCHyyZODEII33nqb8TF1ymTcfOMyReSIDvP7OW5esRxTp7AzaRHiT376KD8TXDYoyEFI5bTE++hJvFZSjyQliqWIkxqkXMfyCaddU8UtsSiVhvHYk51MkYkdHbhzZflH375yx+2Y2NHO2B/f2omhoaHQGfPbVhw5qu18eOwjHPv4E8bPvZvWxxcgVpesl6o1WXJceflU/NGme+LnVSkd/Tf6UB7fghW8YWThKgDhOhkpOaiIE7vKygxBcqzgEOK+BoGl6CHzqVxOwl75rkPv4WDXIabsnStvx5yrZ2H1SvbXEQ8feR9vvvUOmGdoNbUSkINQCxe3bN/JpDltra14+KHvYWb1V1ASdgLOnDEdP3joQeGuw9g5CshB++LTrkBIjvgIjc5asmDSQqQvAo5qEGEgT2hE9TQyuOCSdwOPb+3EEDX12tzcjD9/8LtobmoKj5VKJWzeso12FnVBSA62f+8eeg97X2FnztonTMAPH/4zfHXDWowfN66yn6Psu4rLLhuHTevvxl8//BDaJ0zQOEfmD5sO8bsGAXZ9roAcQj/i5FDUjcoXeckaBBBXfrRB143lCKG7GJHSJN0nT+H5F/di1ZdvDc1VHVLFnn2v4tPjJyKPhBtcslWAoTXA7zY/iSumTsUcahZqzJgxWLNqJVZ/+Ta8/8ExfHL8OHp7+9DW1oppV12FubNnae08pHkVDmp+qUkssgjIIfDNroyX3CHjCFF8ZHF3uTt/2FJqpYWEpew7du3G8qWLhW/UL/X2YtvOp6MasdycJQcfPapvyAcHB/CzX/wXvv+db+Haa9j1WY2Njbhm3hxcM29O4ql89MmnmDl9muBE4k/88IuAHJGdIgcXPWTksBE9Eh3lhLrQIMawvZS9MiB6+/qxdccuYbnOp3bj4sVLoB+x8sjBHmKWjxCgt68P//rIL9G56xkmrdPB4OAgHtu6Hb/6n9/Kz6faPP02XZl2ickRK6cih0P6QgdO/OxPYp0ihbnWDSTY+/JruO3mFcwb9RPdPXh+zz6w5BA9p0lkC3nCLh+p1iuVSniy8ym8/OrrWLNqJZYuWYQW6tfgefT19ePl1/Zj59PP4vTZs7jyisul50rLIXnaVe0gnVaJs/7EK5dBmOepM1SoLw3Ce8pLmIva5JdnoCzEH/7T74W79jZv2Y5SaTgaaOETOSU5uAmCgATo6TmFX//vo/jd5icwb94czJoxHZMmdqC5uRkDAwM4ffoMjh37GIePHsXA4FBYt6+vH6+98WbsFlBTBKI/CKghSXhyaD5gTFMrORlGqwZR1tWvbBohtG8khyPvf4A3DryNJTcsxMGuQ+g6dJgjB52Zi72JNjsxaRe9fIQQ9A8M4GDXu+VfYqx4UO3nOHvuHP7jv38tfnkfEpLtHb3ZKUYOAbSir43UKslFDvxxRINIzsx2aqXsQvqbSwA8trUTvX192Lxlu1bkKH8iFR7EV+XSLfHkiLk02OwUeyshjBxAdbNTjBzh+5B4fwVumTqpbQ7ACQ2S+qKYPqmMhbncdubsWfzzzx5Bd09PecAL34vpkYP+zP/jNeWDtM/0m51Yc2SLkYOtHpWgyBFLg0wWlaZELcjj7j/imdNiRJmttaUFUyZP0vZbrhaVmDFjWmXgBOGKcMZLdXRGL8xj9uhtdfXJzRGLcVR5t0JHLR4lQWIUPvpF5CFAEKC75yT6evuEaZXkvbgc1tbNEbNxlBF18btY6gunaUuoM2/ubDz47W+mrz8C8e+P/CfefOsgmCtP2M1OJtHDnBy1gyMahEOK66MbIZKaaGxI99u3IxmNDQ2I7eeo/FWRIwaLM4m1ghMaRLuupXceIn8j4VcAbaHEk4OaBMgjQuhe+dGrQXTO3OKTSlR6cHAQff39qfw4Cf7kkqabBBgcHIyqq8hhezlJ0vJ3r0FY5C3MaXS9+x7+5if/iHB2iFkCQlWhl2WgIqhRFdjx9gIEKIlsip2AVZUfzhkJBCs76Kg/fFl6sxM/cQCk2uzEdsHOA8v1uO2mBkHOgk5Uh95FKCIH/d8U5BDaEnYCRiYxOURfq+SQ7+cQ1E8iB1FsdpL3SG6rE2FOw3kNonacTZjHbewQiS3AIwJySDxX33PELBrkKB8SkKMy4PmxTpODcGXLJsEwT9oJSJVOlVrlKMyTSuUxztzQIHxxRV3bqZXaG/U4F5BD5i8kBx89wpFXeXJLyCFPlYiYHICcHOAqAHo7AU1Gm8WVD6nTukSvZnBagxQ1hSgckOHx8n9E5CCCW5mGHJMmduAHDz2o7PK//PwRnD5zlm2GJwfh2uEii5AccXfidJLvUJHC3AG4TRAOphHCNH+Opx7c2ioiJkfsGciRo2pramqKvb3n0URt5Y0IKxnUachRsQn9yAZtAcLcNbo4oUF0wmnmC2dwc8PBTgLuH6KppEfUgKTJQfgnOhDlZ/Sg1Fi3wSw7EZGDkOiLTloV1olsmXcCqmwW34fUgjyOaJAUp247emilXaSiSILwM+1c+k8Q8OSgNUSAyvSvGuEUsSRyQLLZiTkvxWYnlhxRlVSplW1hLpkV9O9BQug/WUzTruQu8FGgSpKKZwk5+M1ObORgbWfOnsPPf/krlIOR+F3+mbNnowWJYKqHfRKTo9pWis1OJs9oi8JcVKfWcJQgEhQgzEObxELbZNtkReQATxyU/zm2tw92xSIL0xFCt5C8E5CJEIabnVJFD5Evrk6SzWU4oUG06hYkzFXEKZvKC9q106oKOQhtqxYk3BNdsJuJTjZE2z3YHqjSqvh5ic4yVfpk6YGlGz1qQSs3NIjEbDrItdo1uLkkfJqLbjKdwAsmTA12AhIiI0dkEJEjCP/ZM+p4pa2kzU4qmEaIzPdR4rcIOLvUhEHKgW4aIdKkXYTSFCpyoCwwKOjsBGQbTNoJyJCjcgqi6JZ6J6BmaqWNOnwf4myKpfXUsZh2yeok2dTkEAzRMC8SpV2VCiRKrURrq1KTgyj+ZScT1EiYj+AUK0tdO3luks00DSinXQG/cqvyia6pGTmgIkcUPfi2AuarJjnqTZjXgCFu/y5WTd556NvoUrEBrSBHPO2Kigsmu7TJQcKesFWrpWVnoSJHvLCdB5bZffQaRAmtkGw7l02Y0aK+gZ7mZYZvrBzvSOQvql4d3dEgp7wz6yk5clCTAKlIEO+asE7m1Eplc0SSOKFBhPaUAz236CHzqdAkQWgS7ecQNyIsRW92goQcpBpcUkSOnFMrmb9UtqQ2C4L7GoR34YAw13IZiDc7sQOL+sOX5TY7qcjBnyW/2Sldxw1sfFEdm8n7kNGrQYjyq14T6W+uSYTQtsllBvOlSo40m514ctB+M212kvVVZbOUdsnq6PcqH9SFBjGNEHmkVkrwQhz8d/Zj9UgSOUhacqjStnhvYn1X2bRh8d1VLeGEBtGqm2GJQvpGDaOH8DuhlqUgTg5CxOQIiwvIgQD8TzSKNjsJOi/tuxQFvPPQuY/846Yo1I0Gkfs2jBBFp12CwZ9mJyBDDsLSQLSfwzRCmKZWMn9WMXo1SEItk9RKZStgnp+2VbIhJpIodwJWPoVlY+RQ7wRMdQauC3OmpNcg6WB5oBtHCJVP5nP5W0B/E5GDROXYtIqLKnQb6tCXuq9KW6HCvLZwVoNkih41E+Y6NoJwaEvJQRh7SA4iIQf1yVpq5aAwH70ahEi+2hbmhhHHKHoo3kMQjhXsMJWRQ9F2zpMUphHC9D4KkymdDCsHBjmtQeTu7EYIdXZiRhxFpbBNZnaLjhCxtCreS1lsErWV2ibzmYI4+cBrkAgjQZir+gMqktBRQ0QOjYGZ6toUcC2yRA/jfuQAZzWI3Jndm2tdmKvIIbRFJIkW7TKvDuXtWrgWphEi08NK4I8tlD4LyAtuaBCNCqYRwjjtKnieX0oOjVQoj9RKGxavU3KkT+XOCuriV020QrK0sv2Bbi96sLZU5BiBwtxF1I9ItxyS8xDmKgIoHFJ1Na+ThanbmgnzTA+s4mlUjAZJOK88xLepTYkMN1doVQlsk9RKZXNFmItcmTeZO9ydxaKRczrBmooQ5ho+ZfZRJsxrDacJMqKFuXbaJSmi8JdHaiXzl8oma9NRcgDOaBDLgi6HdKKw6KGRdqU6A0vXwg1hPko1iDzJtizMbadWKlvBLyYT+5PGZintktXRtqUsmgd9nE6xRMgjtVI3WLwwtzLIKX/iwvlPUmQ5D1eSLncJMoqFucifkU3WpivvPBzWHlU4okH0ihctzLMsRjS11aUwN0HifRTZTXN1c7ihQXR8JNkKTiespUFUW3kI86HGVpxpny+0xf2SWEMEwNjezzD20vHw2NSpU7DwiwtkTpBETQLgrbcOorunJ15P+cCSmnJDXSw1CWFwhYoW5kai3aSOZoTob+5A1zXfTd82hZkfbWUIsvCLC/APP/67TD7/9sd/j6d39yQXrDHc1SAU6kmYq+pYE+YWUivXkJgF1AgFLXc3mO3Rdm42mJ0Q5ppLTVxCLXtl8FuRmeHkcvfWMSV0tAxpVTd5+52c61oklubTXlYvC7EIgLaWQVw+fFxUUhtTxnyOSWMjv02li+g5/kEmn83kEiaPlZ/H+BbBwRqwU+Nf6s6O3T/doDy17nMDQGlIVcRjlGOoFGDa5DZlmQd+suv6nrN9B222WxcaxMOjVihomjchNjqab3u4BaP3UhnhI4iHhwJOvAeZ2t5c6y54eAjhI4iHhwJuaBAPD0fhI4iHhwKeIB4eCniCeHgo4DWIh4cCPoJ4eChQyFqsG6+b8kAR7XiMbrx55HTnwFDpfK374eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4VE7/D819ostIxp2dgAAAABJRU5ErkJggg==" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![CantorLogo.png](attachment:CantorLogo.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/test/data/TestNotebookWithJson.ipynb b/src/test/data/TestNotebookWithJson.ipynb new file mode 100644 index 0000000..f071ca3 --- /dev/null +++ b/src/test/data/TestNotebookWithJson.ipynb @@ -0,0 +1,103 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import uuid\n", + "from IPython.display import display_javascript, display_html, display\n", + "\n", + "class RenderJSON(object):\n", + " def __init__(self, json_data):\n", + " if isinstance(json_data, dict) or isinstance(json_data, list):\n", + " self.json_str = json.dumps(json_data)\n", + " else:\n", + " self.json_str = json_data\n", + " self.uuid = str(uuid.uuid4())\n", + "\n", + " def _ipython_display_(self):\n", + " display_html('
        '.format(self.uuid), raw=True)\n", + " display_javascript(\"\"\"\n", + " require([\"https://rawgit.com/caldwell/renderjson/master/renderjson.js\"], function() {\n", + " renderjson.set_show_to_level(2);\n", + " document.getElementById('%s').appendChild(renderjson(%s))\n", + " });\n", + " \"\"\" % (self.uuid, self.json_str), raw=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
        " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + " require([\"https://rawgit.com/caldwell/renderjson/master/renderjson.js\"], function() {\n", + " renderjson.set_show_to_level(2);\n", + " document.getElementById('bb6d9031-c990-4aee-849e-6d697430777c').appendChild(renderjson([{\"a\": 1}, {\"b\": 2, \"in1\": {\"key\": \"value\"}}]))\n", + " });\n", + " " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "RenderJSON([\n", + " {\n", + " \"a\": 1\n", + " }, \n", + " {\n", + " \"b\": 2,\n", + " \"in1\": {\n", + " \"key\": \"value\"\n", + " }\n", + " }\n", + "])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/test/data/TestNotebookWithModJson.ipynb b/src/test/data/TestNotebookWithModJson.ipynb new file mode 100644 index 0000000..412bd60 --- /dev/null +++ b/src/test/data/TestNotebookWithModJson.ipynb @@ -0,0 +1,106 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import uuid\n", + "from IPython.display import display_javascript, display_html, display\n", + "\n", + "class RenderJSON(object):\n", + " def __init__(self, json_data):\n", + " if isinstance(json_data, dict) or isinstance(json_data, list):\n", + " self.json_str = json.dumps(json_data)\n", + " else:\n", + " self.json_str = json_data\n", + " self.uuid = str(uuid.uuid4())\n", + "\n", + " def _ipython_display_(self):\n", + " display_html('
        '.format(self.uuid), raw=True)\n", + " display_javascript(\"\"\"\n", + " require([\"https://rawgit.com/caldwell/renderjson/master/renderjson.js\"], function() {\n", + " renderjson.set_show_to_level(2);\n", + " document.getElementById('%s').appendChild(renderjson(%s))\n", + " });\n", + " \"\"\" % (self.uuid, self.json_str), raw=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
        " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + " require([\"https://rawgit.com/caldwell/renderjson/master/renderjson.js\"], function() {\n", + " renderjson.set_show_to_level(2);\n", + " document.getElementById('bb6d9031-c990-4aee-849e-6d697430777c').appendChild(renderjson([{\"a\": 1}, {\"b\": 2, \"in1\": {\"key\": \"value\"}}]))\n", + " });\n", + " " + ], + "text/plain": [ + "<__main__.RenderJSON at 0x7fa1599c6828>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "RenderJSON([\n", + " {\n", + " \"a\": 1\n", + " }, \n", + " {\n", + " \"b\": 2,\n", + " \"in1\": {\n", + " \"key\": \"value\"\n", + " }\n", + " }\n", + "])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/test/data/TestResultsLoad.ipynb b/src/test/data/TestResultsLoad.ipynb new file mode 100644 index 0000000..177c5ff --- /dev/null +++ b/src/test/data/TestResultsLoad.ipynb @@ -0,0 +1,119 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import Latex" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello world\n" + ] + } + ], + "source": [ + "print(\"Hello world\")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "Graphics object consisting of 1 graphics primitive" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot(x^2, (x,0,5))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "Animation with 20 frames" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sines = [plot(c*sin(x), (-2*pi,2*pi), color=Color(c,0,0), ymin=-1, ymax=1) for c in sxrange(0,1,.05)]\n", + "a = animate(sines)\n", + "a.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$$\\Gamma$$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Latex(\"$$\\Gamma$$\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "SageMath 8.1", + "language": "", + "name": "sagemath" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.15+" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/test/data/Transformation2D.ipynb b/src/test/data/Transformation2D.ipynb new file mode 100644 index 0000000..1b88e9f --- /dev/null +++ b/src/test/data/Transformation2D.ipynb @@ -0,0 +1,1254 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Rigid-body transformations in a plane (2D)\n", + "\n", + "> Marcos Duarte \n", + "> Laboratory of Biomechanics and Motor Control ([http://demotu.org/](http://demotu.org/)) \n", + "> Federal University of ABC, Brazil" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The kinematics of a rigid body is completely described by its pose, i.e., its position and orientation in space (and the corresponding changes are translation and rotation). The translation and rotation of a rigid body are also known as rigid-body transformations (or simply, rigid transformations).\n", + "\n", + "Remember that in physics, a [rigid body](https://en.wikipedia.org/wiki/Rigid_body) is a model (an idealization) for a body in which deformation is neglected, i.e., the distance between every pair of points in the body is considered constant. Consequently, the position and orientation of a rigid body can be completely described by a corresponding coordinate system attached to it. For instance, two (or more) coordinate systems can be used to represent the same rigid body at two (or more) instants or two (or more) rigid bodies in space.\n", + "\n", + "Rigid-body transformations are used in motion analysis (e.g., of the human body) to describe the position and orientation of each segment (using a local (anatomical) coordinate system defined for each segment) in relation to a global coordinate system fixed at the laboratory. Furthermore, one can define an additional coordinate system called technical coordinate system also fixed at the rigid body but not based on anatomical landmarks. In this case, the position of the technical markers is first described in the laboratory coordinate system, and then the technical coordinate system is calculated to recreate the anatomical landmarks position in order to finally calculate the original anatomical coordinate system (and obtain its unknown position and orientation through time).\n", + "\n", + "In what follows, we will study rigid-body transformations by looking at the transformations between two coordinate systems. For simplicity, let's first analyze planar (two-dimensional) rigid-body transformations and later we will extend these concepts to three dimensions (where the study of rotations are more complicated)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Affine transformations\n", + "\n", + "Translation and rotation are two examples of [affine transformations](https://en.wikipedia.org/wiki/Affine_transformation). Affine transformations preserve straight lines, but not necessarily the distance between points. Other examples of affine transformations are scaling, shear, and reflection. The figure below illustrates different affine transformations in a plane. Note that a 3x3 matrix is shown on top of each transformation; these matrices are known as the transformation matrices and are the mathematical representation of the physical transformations. Next, we will study how to use this approach to describe the translation and rotation of a rigid-body. \n", + "
        \n", + "
        Affine transformations
        Figure. Examples of affine transformations in a plane applied to a square (with the letter F in it) and the corresponding transformation matrices (image from Wikipedia).
        " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Translation\n", + "\n", + "In a two-dimensional space, two coordinates and one angle are sufficient to describe the pose of the rigid body, totalizing three degrees of freedom for a rigid body. Let's see first the transformation for translation, then for rotation, and combine them at last.\n", + "\n", + "A pure two-dimensional translation of a coordinate system in relation to other coordinate system and the representation of a point in these two coordinate systems are illustrated in the figure below (remember that this is equivalent to describing a translation between two rigid bodies). \n", + "
        \n", + "
        translation 2D
        Figure. A point in two-dimensional space represented in two coordinate systems (Global and local), with one system translated.
        \n", + "\n", + "The position of point $\\mathbf{P}$ originally described in the local coordinate system but now described in the Global coordinate system in vector form is:\n", + "\n", + "$$ \\mathbf{P_G} = \\mathbf{L_G} + \\mathbf{P_l} $$\n", + "\n", + "Or for each component:\n", + "\n", + "$$ \\mathbf{P_X} = \\mathbf{L_X} + \\mathbf{P}_x $$\n", + "\n", + "$$ \\mathbf{P_Y} = \\mathbf{L_Y} + \\mathbf{P}_y $$\n", + "\n", + "And in matrix form is:\n", + "\n", + "$$\n", + "\\begin{bmatrix}\n", + "\\mathbf{P_X} \\\\\n", + "\\mathbf{P_Y} \n", + "\\end{bmatrix} =\n", + "\\begin{bmatrix}\n", + "\\mathbf{L_X} \\\\\n", + "\\mathbf{L_Y} \n", + "\\end{bmatrix} +\n", + "\\begin{bmatrix}\n", + "\\mathbf{P}_x \\\\\n", + "\\mathbf{P}_y \n", + "\\end{bmatrix}\n", + "$$\n", + "\n", + "Because position and translation can be treated as vectors, the inverse operation, to describe the position at the local coordinate system in terms of the Global coordinate system, is simply:\n", + "\n", + "$$ \\mathbf{P_l} = \\mathbf{P_G} -\\mathbf{L_G} $$\n", + "
        \n", + "$$ \\begin{bmatrix}\n", + "\\mathbf{P}_x \\\\\n", + "\\mathbf{P}_y \n", + "\\end{bmatrix} =\n", + "\\begin{bmatrix}\n", + "\\mathbf{P_X} \\\\\n", + "\\mathbf{P_Y} \n", + "\\end{bmatrix} - \n", + "\\begin{bmatrix}\n", + "\\mathbf{L_X} \\\\\n", + "\\mathbf{L_Y} \n", + "\\end{bmatrix} $$\n", + "\n", + "From classical mechanics, this transformation is an example of [Galilean transformation](http://en.wikipedia.org/wiki/Galilean_transformation). \n", + "\n", + "For example, if the local coordinate system is translated by $\\mathbf{L_G}=[2, 3]$ in relation to the Global coordinate system, a point with coordinates $\\mathbf{P_l}=[4, 5]$ at the local coordinate system will have the position $\\mathbf{P_G}=[6, 8]$ at the Global coordinate system:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Import the necessary libraries\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([6, 8])" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "LG = np.array([2, 3]) # (Numpy 1D array with 2 elements)\n", + "Pl = np.array([4, 5])\n", + "PG = LG + Pl\n", + "PG" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This operation also works if we have more than one data point (NumPy knows how to handle vectors with different dimensions):" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 6, 8],\n", + " [ 8, 10],\n", + " [10, 12]])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Pl = np.array([[4, 5], [6, 7], [8, 9]]) # 2D array with 3 rows and two columns\n", + "PG = LG + Pl\n", + "PG" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Rotation\n", + "\n", + "A pure two-dimensional rotation of a coordinate system in relation to other coordinate system and the representation of a point in these two coordinate systems are illustrated in the figure below (remember that this is equivalent to describing a rotation between two rigid bodies). The rotation is around an axis orthogonal to this page, not shown in the figure (for a three-dimensional coordinate system the rotation would be around the $\\mathbf{Z}$ axis). \n", + "
        \n", + "
        rotation 2D
        Figure. A point in the two-dimensional space represented in two coordinate systems (Global and local), with one system rotated in relation to the other around an axis orthogonal to both coordinate systems.
        \n", + "\n", + "Consider we want to express the position of point $\\mathbf{P}$ in the Global coordinate system in terms of the local coordinate system knowing only the coordinates at the local coordinate system and the angle of rotation between the two coordinate systems. \n", + "\n", + "There are different ways of deducing that, we will see three of these methods next. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Using trigonometry\n", + "\n", + "From figure below, the coordinates of point $\\mathbf{P}$ in the Global coordinate system can be determined finding the sides of the triangles marked in red. \n", + "
        \n", + "
        rotation 2D
        Figure. The coordinates of a point at the Global coordinate system in terms of the coordinates of this point at the local coordinate system.
        \n", + "\n", + "Then: \n", + "\n", + "$$ \\mathbf{P_X} = \\mathbf{P}_x \\cos \\alpha - \\mathbf{P}_y \\sin \\alpha $$\n", + "\n", + "$$ \\mathbf{P_Y} = \\mathbf{P}_x \\sin \\alpha + \\mathbf{P}_y \\cos \\alpha $$ \n", + "\n", + "The equations above can be expressed in matrix form:\n", + "\n", + "$$\n", + "\\begin{bmatrix} \n", + "\\mathbf{P_X} \\\\\n", + "\\mathbf{P_Y} \n", + "\\end{bmatrix} =\n", + "\\begin{bmatrix}\n", + "\\cos\\alpha & -\\sin\\alpha \\\\\n", + "\\sin\\alpha & \\cos\\alpha \n", + "\\end{bmatrix} \\begin{bmatrix}\n", + "\\mathbf{P}_x \\\\\n", + "\\mathbf{P}_y \n", + "\\end{bmatrix} $$\n", + "\n", + "Or simply:\n", + "\n", + "$$ \\mathbf{P_G} = \\mathbf{R_{Gl}}\\mathbf{P_l} $$\n", + "\n", + "Where $\\mathbf{R_{Gl}}$ is the rotation matrix that rotates the coordinates from the local to the Global coordinate system:\n", + "\n", + "$$ \\mathbf{R_{Gl}} = \\begin{bmatrix}\n", + "\\cos\\alpha & -\\sin\\alpha \\\\\n", + "\\sin\\alpha & \\cos\\alpha \n", + "\\end{bmatrix} $$\n", + "\n", + "So, given any position at the local coordinate system, with the rotation matrix above we are able to determine the position at the Global coordinate system. Let's check that before looking at other methods to obtain this matrix. \n", + "\n", + "For instance, consider a local coordinate system rotated by $45^o$ in relation to the Global coordinate system, a point in the local coordinate system with position $\\mathbf{P_l}=[1, 1]$ will have the following position at the Global coordinate system:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0. ],\n", + " [1.4142]])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "RGl = np.array([[np.cos(np.pi/4), -np.sin(np.pi/4)], [np.sin(np.pi/4), np.cos(np.pi/4)]])\n", + "Pl = np.array([[1, 1]]).T # transpose the array for correct matrix multiplication\n", + "PG = np.dot(RGl, Pl) # the function dot() is used for matrix multiplication of arrays\n", + "np.around(PG, 4) # round the number due to floating-point arithmetic errors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have rounded the number to 4 decimal places due to [floating-point arithmetic errors in the computation](http://floating-point-gui.de). \n", + "\n", + "And if we have the points [1,1], [0,1], [1,0] at the local coordinate system, their positions at the Global coordinate system are:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0. , -0.7071, 0.7071],\n", + " [ 1.4142, 0.7071, 0.7071]])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Pl = np.array([[1, 1], [0, 1], [1, 0]]).T # transpose array for matrix multiplication\n", + "PG = np.dot(RGl, Pl) # the function dot() is used for matrix multiplication with arrays\n", + "np.around(PG, 4) # round the number due to floating point arithmetic errors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have done all the calculations using the array function in NumPy. A [NumPy array is different than a matrix](http://www.scipy.org/NumPy_for_Matlab_Users), if we want to use explicit matrices in NumPy, the calculation above will be:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0. , -0.7071, 0.7071],\n", + " [ 1.4142, 0.7071, 0.7071]])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "RGl = np.mat([[np.cos(np.pi/4), -np.sin(np.pi/4)], [np.sin(np.pi/4), np.cos(np.pi/4)]])\n", + "Pl = np.mat([[1, 1], [0,1], [1, 0]]).T # 2x3 matrix\n", + "PG = RGl*Pl # matrix multiplication in NumPy\n", + "np.around(PG, 4) # round the number due to floating point arithmetic errors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Both array and matrix types work in NumPy, but you should choose only one type and not mix them; the array is preferred because it is [the standard vector/matrix/tensor type of NumPy](http://www.scipy.org/NumPy_for_Matlab_Users)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. Using direction cosines\n", + "\n", + "Another way to determine the rotation matrix is to use the concept of direction cosine. \n", + "\n", + "> Direction cosines are the cosines of the angles between any two vectors. \n", + "\n", + "For the present case with two coordinate systems, they are the cosines of the angles between each axis of one coordinate system and each axis of the other coordinate system. The figure below illustrates the directions angles between the two coordinate systems, expressing the local coordinate system in terms of the Global coordinate system. \n", + "
        \n", + "
        direction angles 2D
        Figure. Definition of direction angles at the two-dimensional space.
        \n", + "
        \n", + "$$ \\mathbf{R_{Gl}} = \\begin{bmatrix}\n", + "\\cos\\mathbf{X}x & \\cos\\mathbf{X}y \\\\\n", + "\\cos\\mathbf{Y}x & \\cos\\mathbf{Y}y \n", + "\\end{bmatrix} = \n", + "\\begin{bmatrix}\n", + "\\cos(\\alpha) & \\cos(90^o+\\alpha) \\\\\n", + "\\cos(90^o-\\alpha) & \\cos(\\alpha)\n", + "\\end{bmatrix} = \n", + "\\begin{bmatrix}\n", + "\\cos\\alpha & -\\sin\\alpha \\\\\n", + "\\sin\\alpha & \\cos\\alpha \n", + "\\end{bmatrix} $$ \n", + "\n", + "The same rotation matrix as obtained before.\n", + "\n", + "Note that the order of the direction cosines is because in our convention, the first row is for the $\\mathbf{X}$ coordinate and the second row for the $\\mathbf{Y}$ coordinate (the outputs). For the inputs, we followed the same order, first column for the $\\mathbf{x}$ coordinate, second column for the $\\mathbf{y}$ coordinate." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. Using a basis\n", + "\n", + "Another way to deduce the rotation matrix is to view the axes of the rotated coordinate system as unit vectors, versors, of a
        basis as illustrated in the figure below.\n", + "\n", + "> A basis is a set of linearly independent vectors that can represent every vector in a given vector space, i.e., a basis defines a coordinate system.\n", + "\n", + "
        basis 2D
        Figure. Definition of the rotation matrix using a basis at the two-dimensional space.
        \n", + "\n", + "The coordinates of these two versors at the local coordinate system in terms of the Global coordinate system are:\n", + "\n", + "$$ \\begin{array}{l l}\n", + "\\mathbf{e}_x = \\cos\\alpha\\:\\mathbf{e_X} + \\sin\\alpha\\:\\mathbf{e_Y} \\\\\n", + "\\mathbf{e}_y = -\\sin\\alpha\\:\\mathbf{e_X} + \\cos\\alpha\\:\\mathbf{e_Y}\n", + "\\end{array}$$\n", + "\n", + "Note that as unit vectors, each of the versors above should have norm (length) equals to one, which indeed is the case.\n", + "\n", + "If we express each versor above as different columns of a matrix, we obtain the rotation matrix again: \n", + "\n", + "$$ \\mathbf{R_{Gl}} = \\begin{bmatrix}\n", + "\\cos\\alpha & -\\sin\\alpha \\\\\\\n", + "\\sin\\alpha & \\cos\\alpha \n", + "\\end{bmatrix} $$\n", + "\n", + "This means that the rotation matrix can be viewed as the basis of the rotated coordinate system defined by its versors. \n", + "\n", + "This third way to derive the rotation matrix is in fact the method most commonly used in motion analysis because the coordinates of markers (in the Global/laboratory coordinate system) are what we measure with cameras. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. Using the inner (dot or scalar) product between versors\n", + "\n", + "Yet another way to deduce the rotation matrix is to define it as the dot product between the versors of the bases related to the two coordinate systems:\n", + "\n", + "$$\n", + "\\mathbf{R_{Gl}} = \\begin{bmatrix}\n", + "\\mathbf{\\hat{e}_X}\\! \\cdot \\mathbf{\\hat{e}_x} & \\mathbf{\\hat{e}_X}\\! \\cdot \\mathbf{\\hat{e}_y} \\\\\n", + "\\mathbf{\\hat{e}_Y}\\! \\cdot \\mathbf{\\hat{e}_x} & \\mathbf{\\hat{e}_Y}\\! \\cdot \\mathbf{\\hat{e}_y} \n", + "\\end{bmatrix}\n", + "$$ \n", + "\n", + "By definition:\n", + "\n", + "$$ \\hat{\\mathbf{e}}_1\\! \\cdot \\hat{\\mathbf{e}}_2 = ||\\hat{\\mathbf{e}}_1|| \\times ||\\hat{\\mathbf{e}}_2||\\cos(e_1,e_2)=\\cos(e_1,e_2)$$\n", + "\n", + "And the rotation matrix will be equal to the matrix deduced based on the direction cosines." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Local-to-Global and Global-to-local coordinate systems' rotations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we want the inverse operation, to express the position of point $\\mathbf{P}$ in the local coordinate system in terms of the Global coordinate system, the figure below illustrates that using trigonometry. \n", + "
        \n", + "
        rotation 2D
        Figure. The coordinates of a point at the local coordinate system in terms of the coordinates at the Global coordinate system.
        \n", + "\n", + "Then:\n", + "\n", + "$$ \\mathbf{P}_x = \\;\\;\\mathbf{P_X} \\cos \\alpha + \\mathbf{P_Y} \\sin \\alpha $$\n", + "\n", + "$$ \\mathbf{P}_y = -\\mathbf{P_X} \\sin \\alpha + \\mathbf{P_Y} \\cos \\alpha $$\n", + "\n", + "And in matrix form:\n", + "\n", + "$$\n", + "\\begin{bmatrix} \n", + "\\mathbf{P}_x \\\\\n", + "\\mathbf{P}_y \n", + "\\end{bmatrix} =\n", + "\\begin{bmatrix}\n", + "\\cos\\alpha & \\sin\\alpha \\\\\n", + "-\\sin\\alpha & \\cos\\alpha \n", + "\\end{bmatrix} \\begin{bmatrix}\n", + "\\mathbf{P_X} \\\\\n", + "\\mathbf{P_Y} \n", + "\\end{bmatrix} $$\n", + "\n", + "$$ \\mathbf{P_l} = \\mathbf{R_{lG}}\\mathbf{P_G} $$\n", + "\n", + "Where $\\mathbf{R_{lG}}$ is the rotation matrix that rotates the coordinates from the Global to the local coordinate system (note the inverse order of the subscripts):\n", + "\n", + "$$ \\mathbf{R_{lG}} = \\begin{bmatrix}\n", + "\\cos\\alpha & \\sin\\alpha \\\\\n", + "-\\sin\\alpha & \\cos\\alpha \n", + "\\end{bmatrix} $$\n", + "\n", + "If we use the direction cosines to calculate the rotation matrix, because the axes didn't change, the cosines are the same, only the order changes, now $\\mathbf{x, y}$ are the rows (outputs) and $\\mathbf{X, Y}$ are the columns (inputs):\n", + "\n", + "$$ \\mathbf{R_{lG}} = \\begin{bmatrix}\n", + "\\cos\\mathbf{X}x & \\cos\\mathbf{Y}x \\\\\n", + "\\cos\\mathbf{X}y & \\cos\\mathbf{Y}y \n", + "\\end{bmatrix} = \n", + "\\begin{bmatrix}\n", + "\\cos(\\alpha) & \\cos(90^o-\\alpha) \\\\\n", + "\\cos(90^o+\\alpha) & \\cos(\\alpha)\n", + "\\end{bmatrix} = \n", + "\\begin{bmatrix}\n", + "\\cos\\alpha & \\sin\\alpha \\\\\n", + "-\\sin\\alpha & \\cos\\alpha \n", + "\\end{bmatrix} $$\n", + "\n", + "And defining the versors of the axes in the Global coordinate system for a basis in terms of the local coordinate system would also produce this latter rotation matrix.\n", + "\n", + "The two sets of equations and matrices for the rotations from Global-to-local and local-to-Global coordinate systems are very similar, this is no coincidence. Each of the rotation matrices we deduced, $\\mathbf{R_{Gl}}$ and $\\mathbf{R_{lG}}$, perform the inverse operation in relation to the other. Each matrix is the inverse of the other. \n", + "\n", + "In other words, the relation between the two rotation matrices means it is equivalent to instead of rotating the local coordinate system by $\\alpha$ in relation to the Global coordinate system, to rotate the Global coordinate system by $-\\alpha$ in relation to the local coordinate system; remember that $\\cos(-\\alpha)=\\cos(\\alpha)$ and $\\sin(-\\alpha)=-\\sin(\\alpha)$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Rotation of a Vector\n", + "\n", + "We can also use the rotation matrix to rotate a vector by a given angle around an axis of the coordinate system as shown in the figure below. \n", + "
        \n", + "
        rotation 2D of a vector
        Figure. Rotation of a position vector $\\mathbf{P}$ by an angle $\\alpha$ in the two-dimensional space.
        \n", + "\n", + "We will not prove that we use the same rotation matrix, but think that in this case the vector position rotates by the same angle instead of the coordinate system. The new coordinates of the vector position $\\mathbf{P'}$ rotated by an angle $\\alpha$ is simply the rotation matrix (for the angle $\\alpha$) multiplied by the coordinates of the vector position $\\mathbf{P}$:\n", + "\n", + "$$ \\mathbf{P'} = \\mathbf{R}_\\alpha\\mathbf{P} $$\n", + "\n", + "Consider for example that $\\mathbf{P}=[2,1]$ and $\\alpha=30^o$; the coordinates of $\\mathbf{P'}$ are:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "P':\n", + " [[1.23205081]\n", + " [1.8660254 ]]\n" + ] + } + ], + "source": [ + "a = np.pi/6\n", + "R = np.array([[np.cos(a), -np.sin(a)], [np.sin(a), np.cos(a)]])\n", + "P = np.array([[2, 1]]).T\n", + "Pl = np.dot(R, P)\n", + "print(\"P':\\n\", Pl)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The rotation matrix\n", + "\n", + "**[See here for a review about matrix and its main properties](http://nbviewer.ipython.org/github/demotu/BMC/blob/master/notebooks/Matrix.ipynb)**.\n", + "\n", + "A nice property of the rotation matrix is that its inverse is the transpose of the matrix (because the columns/rows are mutually orthogonal and have norm equal to one). \n", + "This property can be shown with the rotation matrices we deduced:\n", + "\n", + "$$ \\begin{array}{l l}\n", + "\\mathbf{R}\\:\\mathbf{R^T} & = \n", + "\\begin{bmatrix}\n", + "\\cos\\alpha & -\\sin\\alpha \\\\\n", + "\\sin\\alpha & \\cos\\alpha \n", + "\\end{bmatrix} \n", + "\\begin{bmatrix}\n", + "\\cos\\alpha & \\sin\\alpha \\\\\n", + "-\\sin\\alpha & \\cos\\alpha \n", + "\\end{bmatrix} \\\\\n", + "& = \\begin{bmatrix}\n", + "\\cos^2\\alpha+\\sin^2\\alpha & \\cos\\alpha \\sin\\alpha-\\sin\\alpha \\cos\\alpha\\;\\; \\\\\n", + "\\sin\\alpha \\cos\\alpha-\\cos\\alpha \\sin\\alpha & \\sin^2\\alpha+\\cos^2\\alpha\\;\\;\n", + "\\end{bmatrix} \\\\\n", + "& = \\begin{bmatrix}\n", + "1 & 0 \\\\\n", + "0 & 1 \n", + "\\end{bmatrix} \\\\\n", + "& = \\mathbf{I} \\\\\n", + "\\mathbf{R^{-1}} = \\mathbf{R^T}\n", + "\\end{array} $$\n", + "\n", + "This means that if we have a rotation matrix, we know its inverse. \n", + "\n", + "The transpose and inverse operators in NumPy are methods of the array:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Orthogonal matrix (RGl):\n", + " [[ 0.7071 -0.7071]\n", + " [ 0.7071 0.7071]]\n", + "Transpose (RGl.T):\n", + " [[ 0.7071 0.7071]\n", + " [-0.7071 0.7071]]\n", + "Inverse (RGl.I):\n", + " [[ 0.7071 0.7071]\n", + " [-0.7071 0.7071]]\n" + ] + } + ], + "source": [ + "RGl = np.mat([[np.cos(np.pi/4), -np.sin(np.pi/4)], [np.sin(np.pi/4), np.cos(np.pi/4)]])\n", + "\n", + "print('Orthogonal matrix (RGl):\\n', np.around(RGl, 4))\n", + "print('Transpose (RGl.T):\\n', np.around(RGl.T, 4))\n", + "print('Inverse (RGl.I):\\n', np.around(RGl.I, 4))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the inverse and the transpose mathematical operations, the coordinates at the local coordinate system given the coordinates at the Global coordinate system and the rotation matrix can be obtained by: \n", + "\n", + "$$ \\begin{array}{l l}\n", + "\\mathbf{P_G} = \\mathbf{R_{Gl}}\\mathbf{P_l} \\implies \\\\\n", + "\\\\\n", + "\\mathbf{R_{Gl}^{-1}}\\mathbf{P_G} = \\mathbf{R_{Gl}^{-1}}\\mathbf{R_{Gl}}\\mathbf{P_l} \\implies \\\\\n", + "\\\\\n", + "\\mathbf{R_{Gl}^{-1}}\\mathbf{P_G} = \\mathbf{I}\\:\\mathbf{P_l} \\implies \\\\\n", + "\\\\\n", + "\\mathbf{P_l} = \\mathbf{R_{Gl}^{-1}}\\mathbf{P_G} = \\mathbf{R_{Gl}^T}\\mathbf{P_G} \\quad \\text{or}\n", + "\\quad \\mathbf{P_l} = \\mathbf{R_{lG}}\\mathbf{P_G}\n", + "\\end{array} $$\n", + "\n", + "Where we referred the inverse of $\\mathbf{R_{Gl}}\\;(\\:\\mathbf{R_{Gl}^{-1}})$ as $\\mathbf{R_{lG}}$ (note the different order of the subscripts). \n", + "\n", + "Let's show this calculation in NumPy:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rotation matrix (RGl):\n", + " [[ 0.7071 -0.7071]\n", + " [ 0.7071 0.7071]]\n", + "Position at the local coordinate system (Pl):\n", + " [[1]\n", + " [1]]\n", + "Position at the Global coordinate system (PG=RGl*Pl):\n", + " [[0. ]\n", + " [1.41]]\n", + "Position at the local coordinate system using the inverse of RGl (Pl=RlG*PG):\n", + " [[1.]\n", + " [1.]]\n" + ] + } + ], + "source": [ + "RGl = np.array([[np.cos(np.pi/4), -np.sin(np.pi/4)], [np.sin(np.pi/4), np.cos(np.pi/4)]])\n", + "print('Rotation matrix (RGl):\\n', np.around(RGl, 4))\n", + "\n", + "Pl = np.array([[1, 1]]).T # transpose the array for correct matrix multiplication\n", + "print('Position at the local coordinate system (Pl):\\n', Pl)\n", + "\n", + "PG = np.dot(RGl, Pl) # the function dot() is used for matrix multiplication with arrays\n", + "print('Position at the Global coordinate system (PG=RGl*Pl):\\n', np.around(PG,2))\n", + "\n", + "Pl = np.dot(RGl.T, PG)\n", + "print('Position at the local coordinate system using the inverse of RGl (Pl=RlG*PG):\\n', Pl)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**In summary, some of the properties of the rotation matrix are:** \n", + "1. The columns of the rotation matrix form a basis of (independent) unit vectors (versors) and the rows are also independent versors since the transpose of the rotation matrix is another rotation matrix. \n", + "2. The rotation matrix is orthogonal. There is no linear combination of one of the lines or columns of the matrix that would lead to the other row or column, i.e., the lines and columns of the rotation matrix are independent, orthogonal, to each other (this is property 1 rewritten). Because each row and column have norm equal to one, this matrix is also sometimes said to be orthonormal. \n", + "3. The determinant of the rotation matrix is equal to one (or equal to -1 if a left-hand coordinate system was used, but you should rarely use that). For instance, the determinant of the rotation matrix we deduced is $cos\\alpha cos\\alpha - sin\\alpha(-sin\\alpha)=1$.\n", + "4. The inverse of the rotation matrix is equals to its transpose.\n", + "\n", + "**On the different meanings of the rotation matrix:** \n", + "- It represents the coordinate transformation between the coordinates of a point expressed in two different coordinate systems. \n", + "- It describes the rotation between two coordinate systems. The columns are the direction cosines (versors) of the axes of the rotated coordinate system in relation to the other coordinate system and the rows are also direction cosines (versors) for the inverse rotation. \n", + "- It is an operator for the calculation of the rotation of a vector in a coordinate system.\n", + "- Rotation matrices provide a means of numerically representing rotations without appealing to angular specification.\n", + "\n", + "**Which matrix to use, from local to Global or Global to local?** \n", + "- A typical use of the transformation is in movement analysis, where there are the fixed Global (laboratory) coordinate system and the local (moving, e.g. anatomical) coordinate system attached to each body segment. Because the movement of the body segment is measured in the Global coordinate system, using cameras for example, and we want to reconstruct the coordinates of the markers at the anatomical coordinate system, we want the transformation leading from the Global coordinate system to the local coordinate system.\n", + "- Of course, if you have one matrix, it is simple to get the other; you just have to pay attention to use the right one." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Translation and rotation\n", + "\n", + "Consider now the case where the local coordinate system is translated and rotated in relation to the Global coordinate system and a point is described in both coordinate systems as illustrated in the figure below (once again, remember that this is equivalent to describing a translation and a rotation between two rigid bodies). \n", + "
        \n", + "
        translation and rotation 2D
        Figure. A point in two-dimensional space represented in two coordinate systems, with one system translated and rotated.
        \n", + "\n", + "The position of point $\\mathbf{P}$ originally described in the local coordinate system, but now described in the Global coordinate system in vector form is:\n", + "\n", + "$$ \\mathbf{P_G} = \\mathbf{L_G} + \\mathbf{R_{Gl}}\\mathbf{P_l} $$\n", + "\n", + "And in matrix form:\n", + "\n", + "$$ \\begin{bmatrix}\n", + "\\mathbf{P_X} \\\\\n", + "\\mathbf{P_Y} \n", + "\\end{bmatrix} =\n", + "\\begin{bmatrix} \\mathbf{L_{X}} \\\\\\ \\mathbf{L_{Y}} \\end{bmatrix} + \n", + "\\begin{bmatrix}\n", + "\\cos\\alpha & -\\sin\\alpha \\\\\n", + "\\sin\\alpha & \\cos\\alpha \n", + "\\end{bmatrix} \\begin{bmatrix}\n", + "\\mathbf{P}_x \\\\\n", + "\\mathbf{P}_y \n", + "\\end{bmatrix} $$\n", + "\n", + "This means that we first *disrotate* the local coordinate system and then correct for the translation between the two coordinate systems. Note that we can't invert this order: the point position is expressed in the local coordinate system and we can't add this vector to another vector expressed in the Global coordinate system, first we have to convert the vectors to the same coordinate system.\n", + "\n", + "If now we want to find the position of a point at the local coordinate system given its position in the Global coordinate system, the rotation matrix and the translation vector, we have to invert the expression above:\n", + "\n", + "$$ \\begin{array}{l l}\n", + "\\mathbf{P_G} = \\mathbf{L_G} + \\mathbf{R_{Gl}}\\mathbf{P_l} \\implies \\\\\n", + "\\\\\n", + "\\mathbf{R_{Gl}^{-1}}(\\mathbf{P_G} - \\mathbf{L_G}) = \\mathbf{R_{Gl}^{-1}}\\mathbf{R_{Gl}}\\mathbf{P_l} \\implies \\\\\n", + "\\\\\n", + "\\mathbf{P_l} = \\mathbf{R_{Gl}^{-1}}\\left(\\mathbf{P_G}-\\mathbf{L_G}\\right) = \\mathbf{R_{Gl}^T}\\left(\\mathbf{P_G}-\\mathbf{L_G}\\right) \\quad \\text{or} \\quad \\mathbf{P_l} = \\mathbf{R_{lG}}\\left(\\mathbf{P_G}-\\mathbf{L_G}\\right) \n", + "\\end{array} $$\n", + "\n", + "The expression above indicates that to perform the inverse operation, to go from the Global to the local coordinate system, we first translate and then rotate the coordinate system." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Transformation matrix\n", + "\n", + "It is possible to combine the translation and rotation operations in only one matrix, called the transformation matrix (also referred as homogeneous transformation matrix):\n", + "\n", + "$$ \\begin{bmatrix}\n", + "\\mathbf{P_X} \\\\\n", + "\\mathbf{P_Y} \\\\\n", + "1\n", + "\\end{bmatrix} =\n", + "\\begin{bmatrix}\n", + "\\cos\\alpha & -\\sin\\alpha & \\mathbf{L_{X}} \\\\\n", + "\\sin\\alpha & \\cos\\alpha & \\mathbf{L_{Y}} \\\\\n", + "0 & 0 & 1\n", + "\\end{bmatrix} \\begin{bmatrix}\n", + "\\mathbf{P}_x \\\\\n", + "\\mathbf{P}_y \\\\\n", + "1\n", + "\\end{bmatrix} $$\n", + "\n", + "Or simply:\n", + "\n", + "$$ \\mathbf{P_G} = \\mathbf{T_{Gl}}\\mathbf{P_l} $$\n", + "\n", + "The inverse operation, to express the position at the local coordinate system in terms of the Global coordinate system, is:\n", + "\n", + "$$ \\mathbf{P_l} = \\mathbf{T_{Gl}^{-1}}\\mathbf{P_G} $$\n", + "\n", + "However, because $\\mathbf{T_{Gl}}$ is not orthonormal when there is a translation, its inverse is not its transpose. Its inverse in matrix form is given by:\n", + "\n", + "$$ \\begin{bmatrix}\n", + "\\mathbf{P}_x \\\\\n", + "\\mathbf{P}_y \\\\\n", + "1\n", + "\\end{bmatrix} =\n", + "\\begin{bmatrix}\n", + "\\mathbf{R^{-1}_{Gl}} & \\cdot & - \\mathbf{R^{-1}_{Gl}}\\mathbf{L_{G}} \\\\\n", + "\\cdot & \\cdot & \\cdot \\\\\n", + "0 & 0 & 1\n", + "\\end{bmatrix} \\begin{bmatrix}\n", + "\\mathbf{P_X} \\\\\n", + "\\mathbf{P_Y} \\\\\n", + "1\n", + "\\end{bmatrix} $$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Calculation of a basis\n", + "\n", + "A typical scenario in motion analysis is to calculate the rotation matrix using the position of markers placed on the moving rigid body. With the markers' positions, we create a local basis, which by definition is the rotation matrix for the rigid body with respect to the Global (laboratory) coordinate system. To define a coordinate system using a basís, we also will need to define an origin. \n", + "\n", + "Let's see how to calculate a basis given the markers' positions. \n", + "Consider the markers at m1=[1,1]`, m2=[1,2] and m3=[-1,1] measured in the Global coordinate system as illustrated in the figure below: \n", + "
        \n", + "
        translation and rotation 2D
        Figure. Three points in the two-dimensional space, two possible vectors given these points, and the corresponding basis.
        \n", + "\n", + "A possible local coordinate system with origin at the position of m1 is also illustrated in the figure above. Intentionally, the three markers were chosen to form orthogonal vectors. \n", + "The translation vector between the two coordinate system is:\n", + "\n", + "$$\\mathbf{L_{Gl}} = m_1 - [0,0] = [1,1]$$\n", + "\n", + "The vectors expressing the axes of the local coordinate system are:\n", + "\n", + "$$ x = m_2 - m_1 = [1,2] - [1,1] = [0,1] $$\n", + "\n", + "$$ y = m_3 - m_1 = [-1,1] - [1,1] = [-2,0] $$\n", + "\n", + "Note that these two vectors do not form a basis yet because they are not unit vectors (in fact, only *y* is not a unit vector). Let's normalize these vectors:\n", + "\n", + "$$ \\begin{array}{}\n", + "e_x = \\frac{x}{||x||} = \\frac{[0,1]}{\\sqrt{0^2+1^2}} = [0,1] \\\\\n", + "\\\\\n", + "e_y = \\frac{y}{||y||} = \\frac{[-2,0]}{\\sqrt{2^2+0^2}} = [-1,0] \n", + "\\end{array} $$\n", + "\n", + "Beware that the versors above are not exactly the same as the ones shown in the right plot of the last figure, the versors above if plotted will start at the origin of the coordinate system, not at [1,1] as shown in the figure.\n", + "\n", + "We could have done this calculation in NumPy (we will need to do that when dealing with real data later):" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x = [0. 1.] , y = [-2. 0.] \n", + "ex= [0. 1.] , ey= [-1. 0.]\n" + ] + } + ], + "source": [ + "m1 = np.array([1.,1.]) # marker 1\n", + "m2 = np.array([1.,2.]) # marker 2\n", + "m3 = np.array([-1.,1.]) # marker 3\n", + "\n", + "x = m2 - m1 # vector x\n", + "y = m3 - m1 # vector y\n", + "\n", + "vx = x/np.linalg.norm(x) # versor x\n", + "vy = y/np.linalg.norm(y) # verson y\n", + "\n", + "print(\"x =\", x, \", y =\", y, \"\\nex=\", vx, \", ey=\", vy)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, both $\\mathbf{e}_x$ and $\\mathbf{e}_y$ are unit vectors (versors) and they are orthogonal, a basis can be formed with these two versors, and we can represent the rotation matrix using this basis (just place the versors of this basis as columns of the rotation matrix):\n", + "\n", + "$$ \\mathbf{R_{Gl}} = \\begin{bmatrix}\n", + "0 & -1 \\\\\n", + "1 & 0 \n", + "\\end{bmatrix} $$\n", + "\n", + "This rotation matrix makes sense because from the figure above we see that the local coordinate system we defined is rotated by 90$^o$ in relation to the Global coordinate system and if we use the general form for the rotation matrix:\n", + "\n", + "$$ \\mathbf{R} = \\begin{bmatrix}\n", + "\\cos\\alpha & -\\sin\\alpha \\\\\n", + "\\sin\\alpha & \\cos\\alpha \n", + "\\end{bmatrix} = \n", + "\\begin{bmatrix}\n", + "\\cos90^o & -\\sin90^o \\\\\n", + "\\sin90^o & \\cos90^o \n", + "\\end{bmatrix} =\n", + "\\begin{bmatrix}\n", + "0 & -1 \\\\\n", + "1 & 0 \n", + "\\end{bmatrix} $$\n", + "\n", + "So, the position of any point in the local coordinate system can be represented in the Global coordinate system by:\n", + "\n", + "$$ \\begin{array}{l l}\n", + "\\mathbf{P_G} =& \\mathbf{L_{Gl}} + \\mathbf{R_{Gl}}\\mathbf{P_l} \\\\\n", + "\\\\\n", + "\\mathbf{P_G} =& \\begin{bmatrix} 1 \\\\ 1 \\end{bmatrix} + \\begin{bmatrix} 0 & -1 \\\\ 1 & 0 \\end{bmatrix} \\mathbf{P_l} \n", + "\\end{array} $$\n", + "\n", + "For example, the point $\\mathbf{P_l}=[1,1]$ has the following position at the Global coordinate system:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Translation vector:\n", + " [[1]\n", + " [1]]\n", + "Rotation matrix:\n", + " [[ 0 -1]\n", + " [ 1 0]]\n", + "Position at the local coordinate system:\n", + " [[1]\n", + " [1]]\n", + "Position at the Global coordinate system, PG = LGl + RGl*Pl:\n", + " [[0]\n", + " [2]]\n" + ] + } + ], + "source": [ + "LGl = np.array([[1, 1]]).T\n", + "print('Translation vector:\\n', LGl)\n", + "\n", + "RGl = np.array([[0, -1], [1, 0]])\n", + "print('Rotation matrix:\\n', RGl)\n", + "\n", + "Pl = np.array([[1, 1]]).T\n", + "print('Position at the local coordinate system:\\n', Pl)\n", + "\n", + "PG = LGl + np.dot(RGl, Pl)\n", + "print('Position at the Global coordinate system, PG = LGl + RGl*Pl:\\n', PG)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Determination of the unknown angle of rotation\n", + "\n", + "If we didn't know the angle of rotation between the two coordinate systems, which is the typical situation in motion analysis, we simply would equate one of the terms of the two-dimensional rotation matrix in its algebraic form to its correspondent value in the numerical rotation matrix we calculated.\n", + "\n", + "For instance, taking the first term of the rotation matrices above: $\\cos\\alpha = 0$ implies that $\\theta$ is 90$^o$ or 270$^o$, but combining with another matrix term, $\\sin\\alpha = 1$, implies that $\\alpha=90^o$. We can solve this problem in one step using the tangent $(\\sin\\alpha/\\cos\\alpha)$ function with two terms of the rotation matrix and calculating the angle with the `arctan2(y, x)` function:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The angle is: 90.0\n" + ] + } + ], + "source": [ + "ang = np.arctan2(RGl[1, 0], RGl[0, 0])*180/np.pi\n", + "print('The angle is:', ang)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And this procedure would be repeated for each segment and for each instant of the analyzed movement to find the rotation of each segment." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Joint angle as a sequence of rotations of adjacent segments\n", + "\n", + "In the notebook about [two-dimensional angular kinematics](http://nbviewer.ipython.org/github/demotu/BMC/blob/master/notebooks/AngularKinematics2D.ipynb), we calculated segment and joint angles using simple trigonometric relations. We can also calculate these two-dimensional angles using what we learned here about the rotation matrix.\n", + "\n", + "The segment angle will be given by the matrix representing the rotation from the laboratory coordinate system (G) to a coordinate system attached to the segment and the joint angle will be given by the matrix representing the rotation from one segment coordinate system (l1) to the other segment coordinate system (l2). So, we have to calculate two basis now, one for each segment and the joint angle will be given by the product between the two rotation matrices. \n", + "\n", + "To define a two-dimensional basis, we need to calculate vectors perpendicular to each of these lines. Here is a way of doing that. First, let's find three non-collinear points for each basis:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "x1, y1, x2, y2 = 0, 0, 1, 1 # points at segment 1\n", + "x3, y3, x4, y4 = 1.1, 1, 2.1, 0 # points at segment 2\n", + "\n", + "#The slope of the perpendicular line is minus the inverse of the slope of the line\n", + "xl1 = x1 - (y2-y1); yl1 = y1 + (x2-x1) # point at the perpendicular line 1\n", + "xl2 = x4 - (y3-y4); yl2 = y4 + (x3-x4) # point at the perpendicular line 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With these three points, we can create a basis and the corresponding rotation matrix:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "b1x = np.array([x2-x1, y2-y1])\n", + "b1x = b1x/np.linalg.norm(b1x) # versor x of basis 1\n", + "b1y = np.array([xl1-x1, yl1-y1])\n", + "b1y = b1y/np.linalg.norm(b1y) # versor y of basis 1\n", + "b2x = np.array([x3-x4, y3-y4])\n", + "b2x = b2x/np.linalg.norm(b2x) # versor x of basis 2\n", + "b2y = np.array([xl2-x4, yl2-y4])\n", + "b2y = b2y/np.linalg.norm(b2y) # versor y of basis 2\n", + "\n", + "RGl1 = np.array([b1x, b1y]).T # rotation matrix from segment 1 to the laboratory\n", + "RGl2 = np.array([b2x, b2y]).T # rotation matrix from segment 2 to the laboratory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, the segment and joint angles are simply matrix operations:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rotation matrix for segment 1:\n", + " [[ 0.7071 -0.7071]\n", + " [ 0.7071 0.7071]]\n", + "\n", + "Rotation angle of segment 1: 45.0\n", + "\n", + "Rotation matrix for segment 2:\n", + " [[-0.7071 -0.7071]\n", + " [ 0.7071 -0.7071]]\n", + "\n", + "Rotation angle of segment 2: 135.0\n", + "\n", + "Joint rotation matrix (Rl1l2 = Rl1G*RGl2):\n", + " [[ 0. -1.]\n", + " [ 1. -0.]]\n", + "\n", + "Joint angle: 90.0\n" + ] + } + ], + "source": [ + "print('Rotation matrix for segment 1:\\n', np.around(RGl1, 4))\n", + "print('\\nRotation angle of segment 1:', np.arctan2(RGl1[1,0], RGl1[0,0])*180/np.pi)\n", + "print('\\nRotation matrix for segment 2:\\n', np.around(RGl2, 4))\n", + "print('\\nRotation angle of segment 2:', np.arctan2(RGl1[1,0], RGl2[0,0])*180/np.pi)\n", + "\n", + "Rl1l2 = np.dot(RGl1.T, RGl2) # Rl1l2 = Rl1G*RGl2\n", + "\n", + "print('\\nJoint rotation matrix (Rl1l2 = Rl1G*RGl2):\\n', np.around(Rl1l2, 4))\n", + "print('\\nJoint angle:', np.arctan2(Rl1l2[1,0], Rl1l2[0,0])*180/np.pi)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Same result as obtained in [Angular kinematics in a plane (2D)](http://nbviewer.ipython.org/github/demotu/BMC/blob/master/notebooks/AngularKinematics2D.ipynb). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Kinematic chain in a plain (2D)\n", + "\n", + "The fact that we simply multiplied the rotation matrices to calculate the rotation matrix of one segment in relation to the other is powerful and can be generalized for any number of segments: given a serial kinematic chain with links 1, 2, ..., n and 0 is the base/laboratory, the rotation matrix between the base and last link is: $\\mathbf{R_{n,n-1}R_{n-1,n-2} \\dots R_{2,1}R_{1,0}}$, where each matrix in this product (calculated from right to left) is the rotation of one link with respect to the next one. \n", + "\n", + "For instance, consider a kinematic chain with two links, the link 1 is rotated by $\\alpha_1$ with respect to the base (0) and the link 2 is rotated by $\\alpha_2$ with respect to the link 1. \n", + "Using Sympy, the rotation matrices for link 2 w.r.t. link 1 $(R_{12})$ and for link 1 w.r.t. base 0 $(R_{01})$ are: " + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import display, Math\n", + "from sympy import sin, cos, Matrix, simplify, latex, symbols\n", + "from sympy.interactive import printing\n", + "printing.init_printing()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$$\\mathbf{R_{12}}=\\left[\\begin{matrix}\\cos{\\left(\\alpha_{2} \\right)} & - \\sin{\\left(\\alpha_{2} \\right)}\\\\\\sin{\\left(\\alpha_{2} \\right)} & \\cos{\\left(\\alpha_{2} \\right)}\\end{matrix}\\right]$$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$$\\mathbf{R_{01}}=\\left[\\begin{matrix}\\cos{\\left(\\alpha_{1} \\right)} & - \\sin{\\left(\\alpha_{1} \\right)}\\\\\\sin{\\left(\\alpha_{1} \\right)} & \\cos{\\left(\\alpha_{1} \\right)}\\end{matrix}\\right]$$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "a1, a2 = symbols('alpha1 alpha2')\n", + "\n", + "R12 = Matrix([[cos(a2), -sin(a2)], [sin(a2), cos(a2)]])\n", + "display(Math(latex(r'\\mathbf{R_{12}}=') + latex(R12)))\n", + "R01 = Matrix([[cos(a1), -sin(a1)], [sin(a1), cos(a1)]])\n", + "display(Math(latex(r'\\mathbf{R_{01}}=') + latex(R01)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The rotation matrix of link 2 w.r.t. the base $(R_{02})$ is given simply by $R_{01}*R_{12}$:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$$\\mathbf{R_{02}}=\\left[\\begin{matrix}- \\sin{\\left(\\alpha_{1} \\right)} \\sin{\\left(\\alpha_{2} \\right)} + \\cos{\\left(\\alpha_{1} \\right)} \\cos{\\left(\\alpha_{2} \\right)} & - \\sin{\\left(\\alpha_{1} \\right)} \\cos{\\left(\\alpha_{2} \\right)} - \\sin{\\left(\\alpha_{2} \\right)} \\cos{\\left(\\alpha_{1} \\right)}\\\\\\sin{\\left(\\alpha_{1} \\right)} \\cos{\\left(\\alpha_{2} \\right)} + \\sin{\\left(\\alpha_{2} \\right)} \\cos{\\left(\\alpha_{1} \\right)} & - \\sin{\\left(\\alpha_{1} \\right)} \\sin{\\left(\\alpha_{2} \\right)} + \\cos{\\left(\\alpha_{1} \\right)} \\cos{\\left(\\alpha_{2} \\right)}\\end{matrix}\\right]$$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "R02 = R01*R12\n", + "display(Math(latex(r'\\mathbf{R_{02}}=') + latex(R02)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Which simplifies to:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$$\\mathbf{R_{02}}=\\left[\\begin{matrix}\\cos{\\left(\\alpha_{1} + \\alpha_{2} \\right)} & - \\sin{\\left(\\alpha_{1} + \\alpha_{2} \\right)}\\\\\\sin{\\left(\\alpha_{1} + \\alpha_{2} \\right)} & \\cos{\\left(\\alpha_{1} + \\alpha_{2} \\right)}\\end{matrix}\\right]$$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(Math(latex(r'\\mathbf{R_{02}}=') + latex(simplify(R02))))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As expected.\n", + "\n", + "The typical use of all these concepts is in the three-dimensional motion analysis where we will have to deal with angles in different planes, which needs a special manipulation as we will see next." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Problems\n", + "\n", + "1. A local coordinate system is rotated 30$^o$ clockwise in relation to the Global reference system. \n", + " A. Determine the matrices for rotating one coordinate system to another (two-dimensional). \n", + " B. What are the coordinates of the point [1, 1] (local coordinate system) at the global coordinate system? \n", + " C. And if this point is at the Global coordinate system and we want the coordinates at the local coordinate system? \n", + " D. Consider that the local coordinate system, besides the rotation is also translated by [2, 2]. What are the matrices for rotation, translation, and transformation from one coordinate system to another (two-dimensional)? \n", + " E. Repeat B and C considering this translation.\n", + " \n", + "2. Consider a local coordinate system U rotated 45$^o$ clockwise in relation to the Global reference system and another local coordinate system V rotated 45$^o$ clockwise in relation to the local reference system U. \n", + " A. Determine the rotation matrices of all possible transformations between the coordinate systems. \n", + " B. For the point [1, 1] in the coordinate system U, what are its coordinates in coordinate system V and in the Global coordinate system? \n", + " \n", + "3. Using the rotation matrix, deduce the new coordinates of a square figure with coordinates [0, 0], [1, 0], [1, 1], and [0, 1] when rotated by 0$^o$, 45$^o$, 90$^o$, 135$^o$, and 180$^o$ (always clockwise).\n", + " \n", + "4. Solve the problem 2 of [Angular kinematics in a plane (2D)](http://nbviewer.ipython.org/github/demotu/BMC/blob/master/notebooks/AngularKinematics2D.ipynb) but now using the concept of two-dimensional transformations. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "- Robertson G, Caldwell G, Hamill J, Kamen G (2013) [Research Methods in Biomechanics](http://books.google.com.br/books?id=gRn8AAAAQBAJ). 2nd Edition. Human Kinetics. \n", + "- Ruina A, Rudra P (2013) [Introduction to Statics and Dynamics](http://ruina.tam.cornell.edu/Book/index.html). Oxford University Press. \n", + "- Winter DA (2009) [Biomechanics and motor control of human movement](http://books.google.com.br/books?id=_bFHL08IWfwC). 4 ed. Hoboken, EUA: Wiley. \n", + "- Zatsiorsky VM (1997) [Kinematics of Human Motion](http://books.google.com.br/books/about/Kinematics_of_Human_Motion.html?id=Pql_xXdbrMcC&redir_esc=y). Champaign, Human Kinetics." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/src/test/data/TwoCommandEntryWithResults.cws b/src/test/data/TwoCommandEntryWithResults.cws new file mode 100644 index 0000000000000000000000000000000000000000..46159d217e9bc3f137a522ba1dec5cecf44aa5bc GIT binary patch literal 258 zcmWIWW@Zs#U|`^2xLvX(;G^vI;w~VMn-PeCbaH-PNorn+UPW%s=D?DV<$Rqy1)&9g zXS7f1bDh^erFYK5S9jy%O^usHCkaj79Q-*bXDXAHx6!B1Q{LI&-aHvas% z!G=}(`JX#?j_eV!R@T*3madiHR}r2P6*DV%Q9#V3Nl_swt5X&%2?&aukhMBwQdHog zl=P&<{DBNc!SY7~Y{DcaC$+NrY3F>I_=lSzz?+dtgc-M^f$j!_C5<2o$qNDAtZX15 NMj*5V(wjjX1^~XeQjP!s literal 0 HcmV?d00001 diff --git a/src/test/worksheet_test.cpp b/src/test/worksheet_test.cpp new file mode 100644 index 0000000..8d8e7eb --- /dev/null +++ b/src/test/worksheet_test.cpp @@ -0,0 +1,7052 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Sirgienko Nikita +*/ + +#include +#include +#include +#include +#include +#include + +#include "worksheet_test.h" +#include "../worksheet.h" +#include "../session.h" +#include "../worksheetentry.h" +#include "../worksheetview.h" +#include "../textentry.h" +#include "../markdownentry.h" +#include "../commandentry.h" +#include "../latexentry.h" +#include "../lib/backend.h" +#include "../lib/expression.h" +#include "../lib/result.h" +#include "../lib/textresult.h" +#include "../lib/imageresult.h" +#include "../lib/latexresult.h" +#include "../lib/animationresult.h" +#include "../lib/mimeresult.h" +#include "../lib/htmlresult.h" + +#include "config-cantor-test.h" + +static const QString dataPath = QString::fromLocal8Bit(PATH_TO_TEST_NOTEBOOKS)+QLatin1String("/"); + +void WorksheetTest::initTestCase() +{ + const QStringList& backends = Cantor::Backend::listAvailableBackends(); + if (backends.isEmpty()) + { + QString reason = i18n("Testing of worksheets requires a functioning backends"); + QSKIP( reason.toStdString().c_str(), SkipAll ); + } +} + +Worksheet* WorksheetTest::loadWorksheet(const QString& name) +{ + Worksheet* w = new Worksheet(Cantor::Backend::getBackend(QLatin1String("maxima")), nullptr, false); + new WorksheetView(w, nullptr); + w->load(dataPath + name); + KActionCollection* collection = new KActionCollection(nullptr, QString()); + w->setActionCollection(collection); + return w; +} + +QString WorksheetTest::plainMarkdown(WorksheetEntry* markdownEntry) +{ + QString plain; + + if (markdownEntry->type() == MarkdownEntry::Type) + { + QString text = markdownEntry->toPlain(QString(), QLatin1String("\n"), QLatin1String("\n")); + text.remove(0,1); + text.chop(2); + plain = text; + } + + return plain; +} + +QString WorksheetTest::plainText(WorksheetEntry* textEntry) +{ + QString plain; + + if (textEntry->type() == TextEntry::Type) + { + QString text = textEntry->toPlain(QString(), QLatin1String("\n"), QLatin1String("\n")); + text.remove(0,1); + text.chop(2); + plain = text; + } + + return plain; +} + +QString WorksheetTest::plainLatex(WorksheetEntry* latexEntry) +{ + QString plain; + + if (latexEntry->type() == LatexEntry::Type) + { + QString text = latexEntry->toPlain(QString(), QLatin1String("\n"), QLatin1String("\n")); + text.remove(0,1); + text.chop(2); + plain = text; + } + + return plain; +} + +int WorksheetTest::entriesCount(Worksheet* worksheet) +{ + int count = 0; + WorksheetEntry* entry = worksheet->firstEntry(); + while (entry) + { + count++; + entry = entry->next(); + } + return count; +} + +Cantor::Expression * WorksheetTest::expression(WorksheetEntry* entry) +{ + CommandEntry* command = dynamic_cast(entry); + if (command) + return command->expression(); + else + return nullptr; +} + +QString WorksheetTest::plainCommand(WorksheetEntry* commandEntry) +{ + QString plain; + + if (commandEntry->type() == CommandEntry::Type) + { + plain = commandEntry->toPlain(QString(), QString(), QString()); + } + + return plain; +} + +void WorksheetTest::testMarkdown(WorksheetEntry* &entry, const QString& content) +{ + WorksheetEntry* current = entry; + QVERIFY(current); + entry = entry->next(); + QCOMPARE(current->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(current), content); +} + +void WorksheetTest::testTextEntry(WorksheetEntry *& entry, const QString& content) +{ + WorksheetEntry* current = entry; + QVERIFY(current); + entry = entry->next(); + QCOMPARE(current->type(), (int)TextEntry::Type); + QCOMPARE(plainText(current), content); +} + +void WorksheetTest::testCommandEntry(WorksheetEntry *& entry, int id, const QString& content) +{ + WorksheetEntry* current = entry; + QVERIFY(current); + entry = entry->next(); + QCOMPARE(current->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(current), content); + QVERIFY(expression(current)); + QCOMPARE(expression(current)->id(), id); + QCOMPARE(expression(current)->results().size(), 0); +} + +void WorksheetTest::testCommandEntry(WorksheetEntry* entry, int id, int resultsCount, const QString& content) +{ + QVERIFY(entry); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), content); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), id); + QCOMPARE(expression(entry)->results().size(), resultsCount); +} + +void WorksheetTest::testLatexEntry(WorksheetEntry *& entry, const QString& content) +{ + WorksheetEntry* current = entry; + QVERIFY(current); + entry = entry->next(); + QCOMPARE(current->type(), (int)LatexEntry::Type); + QCOMPARE(plainLatex(current), content); +} + +void WorksheetTest::testImageResult(WorksheetEntry* entry, int index) +{ + QVERIFY(expression(entry)); + QVERIFY(expression(entry)->results().size() > index); + QCOMPARE(expression(entry)->results().at(index)->type(), (int)Cantor::ImageResult::Type); + QVERIFY(expression(entry)->results().at(index)->data().value().isNull() == false); +} + +void WorksheetTest::testTextResult(WorksheetEntry* entry, int index, const QString& content) +{ + QVERIFY(expression(entry)); + QVERIFY(expression(entry)->results().size() > index); + QCOMPARE(expression(entry)->results().at(index)->type(), (int)Cantor::TextResult::Type); + Cantor::TextResult* result = static_cast(expression(entry)->results().at(index)); + QVERIFY(result->format() == Cantor::TextResult::PlainTextFormat); + QCOMPARE(result->plain(), content); +} + +void WorksheetTest::testHtmlResult(WorksheetEntry* entry, int index, const QString& content) +{ + QVERIFY(expression(entry)); + QVERIFY(expression(entry)->results().size() > index); + QCOMPARE(expression(entry)->results().at(index)->type(), (int)Cantor::HtmlResult::Type); + Cantor::HtmlResult* result = static_cast(expression(entry)->results().at(index)); + QCOMPARE(result->plain(), content); +} + +void WorksheetTest::testHtmlResult(WorksheetEntry* entry, int index, const QString& plain, const QString& html) +{ + QVERIFY(expression(entry)); + QVERIFY(expression(entry)->results().size() > index); + QCOMPARE(expression(entry)->results().at(index)->type(), (int)Cantor::HtmlResult::Type); + Cantor::HtmlResult* result = static_cast(expression(entry)->results().at(index)); + QCOMPARE(result->data().toString(), html); + QCOMPARE(result->plain(), plain); +} + +void WorksheetTest::waitForSignal(QObject* sender, const char* signal) +{ + QTimer timeout( this ); + timeout.setSingleShot( true ); + + QEventLoop loop; + connect( sender, signal, &loop, SLOT(quit()) ); + connect(&timeout, &QTimer::timeout, &loop, &QEventLoop::quit); + timeout.start( 25000 ); + loop.exec(); +} + + +void WorksheetTest::testJupyter1() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(loadWorksheet(QLatin1String("Lecture-2B-Single-Atom-Lasing.ipynb"))); + + qDebug() << w->firstEntry(); + QCOMPARE(entriesCount(w.data()), 41); + + WorksheetEntry* entry = w->firstEntry(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String("# QuTiP lecture: Single-Atom-Lasing")); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String( + "Author: J. R. Johansson (robert@riken.jp), http://dml.riken.jp/~rob/\n" + "\n" + "The latest version of this [IPython notebook](http://ipython.org/ipython-doc/dev/interactive/htmlnotebook.html) lecture is available at [http://github.com/jrjohansson/qutip-lectures](http://github.com/jrjohansson/qutip-lectures).\n" + "\n" + "The other notebooks in this lecture series are indexed at [http://jrjohansson.github.com](http://jrjohansson.github.com)." + )); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "# setup the matplotlib graphics library and configure it to show \n" + "# figures inline in the notebook\n" + "%matplotlib inline\n" + "import matplotlib.pyplot as plt\n" + "import numpy as np" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 1); + QCOMPARE(expression(entry)->results().size(), 0); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "# make qutip available in the rest of the notebook\n" + "from qutip import *\n" + "\n" + "from IPython.display import Image" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 2); + QCOMPARE(expression(entry)->results().size(), 0); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String( + "# Introduction and model\n" + "\n" + "Consider a single atom coupled to a single cavity mode, as illustrated in the figure below. If there atom excitation rate $\\Gamma$ exceeds the relaxation rate, a population inversion can occur in the atom, and if coupled to the cavity the atom can then act as a photon pump on the cavity." + )); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "Image(filename='images/schematic-lasing-model.png')" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 3); + QCOMPARE(expression(entry)->results().size(), 1); + QCOMPARE(expression(entry)->result()->type(), (int)Cantor::ImageResult::Type); + QVERIFY(expression(entry)->result()->data().value().isNull() == false); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String( + "The coherent dynamics in this model is described by the Hamiltonian\n" + "\n" + "$H = \\hbar \\omega_0 a^\\dagger a + \\frac{1}{2}\\hbar\\omega_a\\sigma_z + \\hbar g\\sigma_x(a^\\dagger + a)$\n" + "\n" + "where $\\omega_0$ is the cavity energy splitting, $\\omega_a$ is the atom energy splitting and $g$ is the atom-cavity interaction strength.\n" + "\n" + "In addition to the coherent dynamics the following incoherent processes are also present: \n" + "\n" + "1. $\\kappa$ relaxation and thermal excitations of the cavity, \n" + "2. $\\Gamma$ atomic excitation rate (pumping process).\n" + "\n" + "The Lindblad master equation for the model is:\n" + "\n" + "$\\frac{d}{dt}\\rho = -i[H, \\rho] + \\Gamma\\left(\\sigma_+\\rho\\sigma_- - \\frac{1}{2}\\sigma_-\\sigma_+\\rho - \\frac{1}{2}\\rho\\sigma_-\\sigma_+\\right)\n" + "+ \\kappa (1 + n_{\\rm th}) \\left(a\\rho a^\\dagger - \\frac{1}{2}a^\\dagger a\\rho - \\frac{1}{2}\\rho a^\\dagger a\\right)\n" + "+ \\kappa n_{\\rm th} \\left(a^\\dagger\\rho a - \\frac{1}{2}a a^\\dagger \\rho - \\frac{1}{2}\\rho a a^\\dagger\\right)$\n" + "\n" + "in units where $\\hbar = 1$.\n" + "\n" + "References:\n" + "\n" + " * [Yi Mu, C.M. Savage, Phys. Rev. A 46, 5944 (1992)](http://dx.doi.org/10.1103/PhysRevA.46.5944)\n" + "\n" + " * [D.A. Rodrigues, J. Imbers, A.D. Armour, Phys. Rev. Lett. 98, 067204 (2007)](http://dx.doi.org/10.1103/PhysRevLett.98.067204)\n" + "\n" + " * [S. Ashhab, J.R. Johansson, A.M. Zagoskin, F. Nori, New J. Phys. 11, 023030 (2009)](http://dx.doi.org/10.1088/1367-2630/11/2/023030)" + )); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String("### Problem parameters")); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "w0 = 1.0 * 2 * pi # cavity frequency\n" + "wa = 1.0 * 2 * pi # atom frequency\n" + "g = 0.05 * 2 * pi # coupling strength\n" + "\n" + "kappa = 0.04 # cavity dissipation rate\n" + "gamma = 0.00 # atom dissipation rate\n" + "Gamma = 0.35 # atom pump rate\n" + "\n" + "N = 50 # number of cavity fock states\n" + "n_th_a = 0.0 # avg number of thermal bath excitation\n" + "\n" + "tlist = np.linspace(0, 150, 101)" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 5); + QCOMPARE(expression(entry)->results().size(), 0); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String("### Setup the operators, the Hamiltonian and initial state")); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "# initial state\n" + "psi0 = tensor(basis(N,0), basis(2,0)) # start without excitations\n" + "\n" + "# operators\n" + "a = tensor(destroy(N), qeye(2))\n" + "sm = tensor(qeye(N), destroy(2))\n" + "sx = tensor(qeye(N), sigmax())\n" + "\n" + "# Hamiltonian\n" + "H = w0 * a.dag() * a + wa * sm.dag() * sm + g * (a.dag() + a) * sx" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 6); + QCOMPARE(expression(entry)->results().size(), 0); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String("H")); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 7); + QCOMPARE(expression(entry)->results().size(), 1); + QCOMPARE(expression(entry)->result()->type(), (int)Cantor::LatexResult::Type); + { + Cantor::LatexResult* result = static_cast(expression(entry)->result()); + QCOMPARE(result->code(), QLatin1String( + "Quantum object: dims = [[50, 2], [50, 2]], shape = [100, 100], type = oper, isherm = True\\begin{equation*}\\left(\\begin{array}{*{11}c}0.0 & 0.0 & 0.0 & 0.314 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 6.283 & 0.314 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.314 & 6.283 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.314 & 0.0 & 0.0 & 12.566 & 0.444 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.444 & 12.566 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\\\vdots & \\vdots & \\vdots & \\vdots & \\vdots & \\ddots & \\vdots & \\vdots & \\vdots & \\vdots & \\vdots\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 301.593 & 2.177 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 2.177 & 301.593 & 0.0 & 0.0 & 2.199\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 307.876 & 2.199 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 2.199 & 307.876 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 2.199 & 0.0 & 0.0 & 314.159\\\\\\end{array}\\right)\\end{equation*}" + )); + QCOMPARE(result->plain(), QLatin1String( + "Quantum object: dims = [[50, 2], [50, 2]], shape = [100, 100], type = oper, isherm = True\n" + "Qobj data =\n" + "[[ 0. 0. 0. ..., 0. 0. 0. ]\n" + " [ 0. 6.28318531 0.31415927 ..., 0. 0. 0. ]\n" + " [ 0. 0.31415927 6.28318531 ..., 0. 0. 0. ]\n" + " ..., \n" + " [ 0. 0. 0. ..., 307.87608005\n" + " 2.19911486 0. ]\n" + " [ 0. 0. 0. ..., 2.19911486\n" + " 307.87608005 0. ]\n" + " [ 0. 0. 0. ..., 0. 0.\n" + " 314.15926536]]" + )); + QCOMPARE(result->mimeType(), QStringLiteral("image/x-eps")); + } + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String("### Create a list of collapse operators that describe the dissipation")); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "# collapse operators\n" + "c_ops = []\n" + "\n" + "rate = kappa * (1 + n_th_a)\n" + "if rate > 0.0:\n" + " c_ops.append(sqrt(rate) * a)\n" + "\n" + "rate = kappa * n_th_a\n" + "if rate > 0.0:\n" + " c_ops.append(sqrt(rate) * a.dag())\n" + "\n" + "rate = gamma\n" + "if rate > 0.0:\n" + " c_ops.append(sqrt(rate) * sm)\n" + "\n" + "rate = Gamma\n" + "if rate > 0.0:\n" + " c_ops.append(sqrt(rate) * sm.dag())" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 8); + QCOMPARE(expression(entry)->results().size(), 0); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String( + "### Evolve the system\n" + "\n" + "Here we evolve the system with the Lindblad master equation solver, and we request that the expectation values of the operators $a^\\dagger a$ and $\\sigma_+\\sigma_-$ are returned by the solver by passing the list `[a.dag()*a, sm.dag()*sm]` as the fifth argument to the solver." + )); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "opt = Odeoptions(nsteps=2000) # allow extra time-steps \n" + "output = mesolve(H, psi0, tlist, c_ops, [a.dag() * a, sm.dag() * sm], options=opt)" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 9); + QCOMPARE(expression(entry)->results().size(), 0); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String( + "## Visualize the results\n" + "\n" + "Here we plot the excitation probabilities of the cavity and the atom (these expectation values were calculated by the `mesolve` above)." + )); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "n_c = output.expect[0]\n" + "n_a = output.expect[1]\n" + "\n" + "fig, axes = plt.subplots(1, 1, figsize=(8,6))\n" + "\n" + "axes.plot(tlist, n_c, label=\"Cavity\")\n" + "axes.plot(tlist, n_a, label=\"Atom excited state\")\n" + "axes.set_xlim(0, 150)\n" + "axes.legend(loc=0)\n" + "axes.set_xlabel('Time')\n" + "axes.set_ylabel('Occupation probability');" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 10); + QCOMPARE(expression(entry)->results().size(), 1); + QCOMPARE(expression(entry)->result()->type(), (int)Cantor::ImageResult::Type); + QVERIFY(expression(entry)->result()->data().value().isNull() == false); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String("## Steady state: cavity fock-state distribution and wigner function")); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String("rho_ss = steadystate(H, c_ops)")); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 11); + QCOMPARE(expression(entry)->results().size(), 0); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "fig, axes = plt.subplots(1, 2, figsize=(12,6))\n" + "\n" + "xvec = np.linspace(-5,5,200)\n" + "\n" + "rho_cavity = ptrace(rho_ss, 0)\n" + "W = wigner(rho_cavity, xvec, xvec)\n" + "wlim = abs(W).max()\n" + "\n" + "axes[1].contourf(xvec, xvec, W, 100, norm=mpl.colors.Normalize(-wlim,wlim), cmap=plt.get_cmap('RdBu'))\n" + "axes[1].set_xlabel(r'Im $\\alpha$', fontsize=18)\n" + "axes[1].set_ylabel(r'Re $\\alpha$', fontsize=18)\n" + "\n" + "axes[0].bar(arange(0, N), real(rho_cavity.diag()), color=\"blue\", alpha=0.6)\n" + "axes[0].set_ylim(0, 1)\n" + "axes[0].set_xlim(0, N)\n" + "axes[0].set_xlabel('Fock number', fontsize=18)\n" + "axes[0].set_ylabel('Occupation probability', fontsize=18);" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 13); + QCOMPARE(expression(entry)->results().size(), 1); + QCOMPARE(expression(entry)->result()->type(), (int)Cantor::ImageResult::Type); + QVERIFY(expression(entry)->result()->data().value().isNull() == false); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String("## Cavity fock-state distribution and Wigner function as a function of time")); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "tlist = np.linspace(0, 25, 5)\n" + "output = mesolve(H, psi0, tlist, c_ops, [], options=Odeoptions(nsteps=5000))" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 14); + QCOMPARE(expression(entry)->results().size(), 0); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "rho_ss_sublist = output.states\n" + "\n" + "xvec = np.linspace(-5,5,200)\n" + "\n" + "fig, axes = plt.subplots(2, len(rho_ss_sublist), figsize=(3*len(rho_ss_sublist), 6))\n" + "\n" + "for idx, rho_ss in enumerate(rho_ss_sublist):\n" + "\n" + " # trace out the cavity density matrix\n" + " rho_ss_cavity = ptrace(rho_ss, 0)\n" + " \n" + " # calculate its wigner function\n" + " W = wigner(rho_ss_cavity, xvec, xvec)\n" + " \n" + " # plot its wigner function\n" + " wlim = abs(W).max()\n" + " axes[0,idx].contourf(xvec, xvec, W, 100, norm=mpl.colors.Normalize(-wlim,wlim), cmap=plt.get_cmap('RdBu'))\n" + " axes[0,idx].set_title(r'$t = %.1f$' % tlist[idx])\n" + " \n" + " # plot its fock-state distribution\n" + " axes[1,idx].bar(arange(0, N), real(rho_ss_cavity.diag()), color=\"blue\", alpha=0.8)\n" + " axes[1,idx].set_ylim(0, 1)\n" + " axes[1,idx].set_xlim(0, 15)" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 15); + QCOMPARE(expression(entry)->results().size(), 1); + QCOMPARE(expression(entry)->result()->type(), (int)Cantor::ImageResult::Type); + QVERIFY(expression(entry)->result()->data().value().isNull() == false); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String( + "## Steady state average photon occupation in cavity as a function of pump rate\n" + "\n" + "References:\n" + "\n" + " * [S. Ashhab, J.R. Johansson, A.M. Zagoskin, F. Nori, New J. Phys. 11, 023030 (2009)](http://dx.doi.org/10.1088/1367-2630/11/2/023030)" + )); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "def calulcate_avg_photons(N, Gamma):\n" + " \n" + " # collapse operators\n" + " c_ops = []\n" + "\n" + " rate = kappa * (1 + n_th_a)\n" + " if rate > 0.0:\n" + " c_ops.append(sqrt(rate) * a)\n" + "\n" + " rate = kappa * n_th_a\n" + " if rate > 0.0:\n" + " c_ops.append(sqrt(rate) * a.dag())\n" + "\n" + " rate = gamma\n" + " if rate > 0.0:\n" + " c_ops.append(sqrt(rate) * sm)\n" + "\n" + " rate = Gamma\n" + " if rate > 0.0:\n" + " c_ops.append(sqrt(rate) * sm.dag())\n" + " \n" + " # Ground state and steady state for the Hamiltonian: H = H0 + g * H1\n" + " rho_ss = steadystate(H, c_ops)\n" + " \n" + " # cavity photon number\n" + " n_cavity = expect(a.dag() * a, rho_ss)\n" + " \n" + " # cavity second order coherence function\n" + " g2_cavity = expect(a.dag() * a.dag() * a * a, rho_ss) / (n_cavity ** 2)\n" + "\n" + " return n_cavity, g2_cavity" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 16); + QCOMPARE(expression(entry)->results().size(), 0); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "Gamma_max = 2 * (4*g**2) / kappa\n" + "Gamma_vec = np.linspace(0.1, Gamma_max, 50)\n" + "\n" + "n_avg_vec = []\n" + "g2_vec = []\n" + "\n" + "for Gamma in Gamma_vec:\n" + " n_avg, g2 = calulcate_avg_photons(N, Gamma)\n" + " n_avg_vec.append(n_avg)\n" + " g2_vec.append(g2)" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 17); + QCOMPARE(expression(entry)->results().size(), 0); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "fig, axes = plt.subplots(1, 1, figsize=(12,6))\n" + "\n" + "axes.plot(Gamma_vec * kappa / (4*g**2), n_avg_vec, color=\"blue\", alpha=0.6, label=\"numerical\")\n" + "\n" + "axes.set_xlabel(r'$\\Gamma\\kappa/(4g^2)$', fontsize=18)\n" + "axes.set_ylabel(r'Occupation probability $\\langle n \\rangle$', fontsize=18)\n" + "axes.set_xlim(0, 2);" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 18); + QCOMPARE(expression(entry)->results().size(), 1); + QCOMPARE(expression(entry)->result()->type(), (int)Cantor::ImageResult::Type); + QVERIFY(expression(entry)->result()->data().value().isNull() == false); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "fig, axes = plt.subplots(1, 1, figsize=(12,6))\n" + "\n" + "axes.plot(Gamma_vec * kappa / (4*g**2), g2_vec, color=\"blue\", alpha=0.6, label=\"numerical\")\n" + "\n" + "axes.set_xlabel(r'$\\Gamma\\kappa/(4g^2)$', fontsize=18)\n" + "axes.set_ylabel(r'$g^{(2)}(0)$', fontsize=18)\n" + "axes.set_xlim(0, 2)\n" + "axes.text(0.1, 1.1, \"Lasing regime\", fontsize=16)\n" + "axes.text(1.5, 1.8, \"Thermal regime\", fontsize=16);" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 19); + QCOMPARE(expression(entry)->results().size(), 1); + QCOMPARE(expression(entry)->result()->type(), (int)Cantor::ImageResult::Type); + QVERIFY(expression(entry)->result()->data().value().isNull() == false); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String( + "Here we see that lasing is suppressed for $\\Gamma\\kappa/(4g^2) > 1$. \n" + "\n" + "\n" + "Let's look at the fock-state distribution at $\\Gamma\\kappa/(4g^2) = 0.5$ (lasing regime) and $\\Gamma\\kappa/(4g^2) = 1.5$ (suppressed regime):" + )); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String( + "### Case 1: $\\Gamma\\kappa/(4g^2) = 0.5$" + )); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "Gamma = 0.5 * (4*g**2) / kappa" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 20); + QCOMPARE(expression(entry)->results().size(), 0); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "c_ops = [sqrt(kappa * (1 + n_th_a)) * a, sqrt(kappa * n_th_a) * a.dag(), sqrt(gamma) * sm, sqrt(Gamma) * sm.dag()]\n" + "\n" + "rho_ss = steadystate(H, c_ops)" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 21); + QCOMPARE(expression(entry)->results().size(), 0); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "fig, axes = plt.subplots(1, 2, figsize=(16,6))\n" + "\n" + "xvec = np.linspace(-10,10,200)\n" + "\n" + "rho_cavity = ptrace(rho_ss, 0)\n" + "W = wigner(rho_cavity, xvec, xvec)\n" + "wlim = abs(W).max()\n" + "axes[1].contourf(xvec, xvec, W, 100, norm=mpl.colors.Normalize(-wlim,wlim), cmap=plt.get_cmap('RdBu'))\n" + "axes[1].set_xlabel(r'Im $\\alpha$', fontsize=18)\n" + "axes[1].set_ylabel(r'Re $\\alpha$', fontsize=18)\n" + "\n" + "axes[0].bar(arange(0, N), real(rho_cavity.diag()), color=\"blue\", alpha=0.6)\n" + "axes[0].set_xlabel(r'$n$', fontsize=18)\n" + "axes[0].set_ylabel(r'Occupation probability', fontsize=18)\n" + "axes[0].set_ylim(0, 1)\n" + "axes[0].set_xlim(0, N);" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 22); + QCOMPARE(expression(entry)->results().size(), 1); + QCOMPARE(expression(entry)->result()->type(), (int)Cantor::ImageResult::Type); + QVERIFY(expression(entry)->result()->data().value().isNull() == false); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String( + "### Case 2: $\\Gamma\\kappa/(4g^2) = 1.5$" + )); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "Gamma = 1.5 * (4*g**2) / kappa" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 23); + QCOMPARE(expression(entry)->results().size(), 0); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "c_ops = [sqrt(kappa * (1 + n_th_a)) * a, sqrt(kappa * n_th_a) * a.dag(), sqrt(gamma) * sm, sqrt(Gamma) * sm.dag()]\n" + "\n" + "rho_ss = steadystate(H, c_ops)" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 24); + QCOMPARE(expression(entry)->results().size(), 0); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "fig, axes = plt.subplots(1, 2, figsize=(16,6))\n" + "\n" + "xvec = np.linspace(-10,10,200)\n" + "\n" + "rho_cavity = ptrace(rho_ss, 0)\n" + "W = wigner(rho_cavity, xvec, xvec)\n" + "wlim = abs(W).max()\n" + "axes[1].contourf(xvec, xvec, W, 100, norm=mpl.colors.Normalize(-wlim,wlim), cmap=plt.get_cmap('RdBu'))\n" + "axes[1].set_xlabel(r'Im $\\alpha$', fontsize=18)\n" + "axes[1].set_ylabel(r'Re $\\alpha$', fontsize=18)\n" + "\n" + "axes[0].bar(arange(0, N), real(rho_cavity.diag()), color=\"blue\", alpha=0.6)\n" + "axes[0].set_xlabel(r'$n$', fontsize=18)\n" + "axes[0].set_ylabel(r'Occupation probability', fontsize=18)\n" + "axes[0].set_ylim(0, 1)\n" + "axes[0].set_xlim(0, N);" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 26); + QCOMPARE(expression(entry)->results().size(), 1); + QCOMPARE(expression(entry)->result()->type(), (int)Cantor::ImageResult::Type); + QVERIFY(expression(entry)->result()->data().value().isNull() == false); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String( + "Too large pumping rate $\\Gamma$ kills the lasing process: reversed threshold." + )); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QLatin1String( + "### Software version" + )); + + entry = entry->next(); + QCOMPARE(entry->type(), (int)CommandEntry::Type); + QCOMPARE(plainCommand(entry), QLatin1String( + "from qutip.ipynbtools import version_table\n" + "\n" + "version_table()" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->id(), 27); + QCOMPARE(expression(entry)->results().size(), 1); + testHtmlResult(entry, 0, QString::fromUtf8( + "" + ), QString::fromUtf8( + "
        SoftwareVersion
        IPython2.0.0
        OSposix [linux]
        Python3.4.1 (default, Jun 9 2014, 17:34:49) \n" + "[GCC 4.8.3]
        QuTiP3.0.0.dev-5a88aa8
        Numpy1.8.1
        matplotlib1.3.1
        Cython0.20.1post0
        SciPy0.13.3
        Thu Jun 26 14:28:35 2014 JST
        " + )); + + QCOMPARE(entry->next(), nullptr); +} + +void WorksheetTest::testJupyter2() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(loadWorksheet(QLatin1String("AEC.04 - Evolutionary Strategies and Covariance Matrix Adaptation.ipynb"))); + + QCOMPARE(w->isReadOnly(), false); + QCOMPARE(w->session()->backend()->id(), QLatin1String("python")); + + WorksheetEntry* entry = w->firstEntry(); + + testMarkdown(entry, QLatin1String( + "
        \n" + "\n" + "UFF logo\n" + "\n" + "\n" + "IC logo\n" + "\n" + "
        " + )); + + testMarkdown(entry, QString::fromLocal8Bit( + "# Understanding evolutionary strategies and covariance matrix adaptation\n" + "\n" + "## Luis Martí, [IC](http://www.ic.uff.br)/[UFF](http://www.uff.br)\n" + "\n" + "[http://lmarti.com](http://lmarti.com); [lmarti@ic.uff.br](mailto:lmarti@ic.uff.br) \n" + "\n" + "[Advanced Evolutionary Computation: Theory and Practice](http://lmarti.com/aec-2014) " + )); + + testMarkdown(entry, QString::fromLocal8Bit( + "The notebook is better viewed rendered as slides. You can convert it to slides and view them by:\n" + "- using [nbconvert](http://ipython.org/ipython-doc/1/interactive/nbconvert.html) with a command like:\n" + " ```bash\n" + " $ ipython nbconvert --to slides --post serve \n" + " ```\n" + "- installing [Reveal.js - Jupyter/IPython Slideshow Extension](https://github.com/damianavila/live_reveal)\n" + "- using the online [IPython notebook slide viewer](https://slideviewer.herokuapp.com/) (some slides of the notebook might not be properly rendered).\n" + "\n" + "This and other related IPython notebooks can be found at the course github repository:\n" + "* [https://github.com/lmarti/evolutionary-computation-course](https://github.com/lmarti/evolutionary-computation-course)" + )); + + testCommandEntry(entry, 1, QLatin1String( + "import numpy as np\n" + "import matplotlib.pyplot as plt\n" + "import matplotlib.colors as colors\n" + "from matplotlib import cm \n" + "from mpl_toolkits.mplot3d import axes3d\n" + "from scipy.stats import norm, multivariate_normal\n" + "import math\n" + "\n" + "%matplotlib inline\n" + "%config InlineBackend.figure_format = 'retina'\n" + "plt.rc('text', usetex=True)\n" + "plt.rc('font', family='serif')\n" + "plt.rcParams['text.latex.preamble'] ='\\\\usepackage{libertine}\\n\\\\usepackage[utf8]{inputenc}'\n" + "\n" + "import seaborn\n" + "seaborn.set(style='whitegrid')\n" + "seaborn.set_context('notebook')" + )); + + testMarkdown(entry, QString::fromLocal8Bit( + "### Statistics recap\n" + "\n" + "* [Random variable](http://en.wikipedia.org/wiki/Random_variable): a variable whose value is subject to variations due to __chance__. A random variable can take on a set of possible different values, each with an associated probability, in contrast to other mathematical variables.\n" + "\n" + "* [Probability distribution](http://en.wikipedia.org/wiki/Probability_distribution): mathematical function describing the possible values of a random variable and their associated probabilities.\n" + "\n" + "* [Probability density function (pdf)](http://en.wikipedia.org/wiki/Probability_density_function) of a __continuous random variable__ is a function that describes the relative likelihood for this random variable to take on a given value. \n" + " * The probability of the random variable falling within a particular range of values is given by the integral of this variable’s density over that range.\n" + " * The probability density function is nonnegative everywhere, and its integral over the entire space is equal to one.\n" + " \n" + "\n" + " " + )); + + testMarkdown(entry, QLatin1String( + "### [Moments](http://en.wikipedia.org/wiki/Moment_(mathematics)\n" + "\n" + "The probability distribution of a random variable is often characterised by a small number of parameters, which also have a practical interpretation.\n" + "\n" + "* [Mean](http://en.wikipedia.org/wiki/Mean) (a.k.a expected value) refers to one measure of the central tendency either of a probability distribution or of the random variable characterized by that distribution.\n" + " * population mean: $\\mu = \\operatorname{E}[X]$.\n" + " * estimation of sample mean: $\\bar{x}$.\n" + "* [Standard deviation](http://en.wikipedia.org/wiki/Standard_deviation) measures the amount of variation or dispersion from the mean.\n" + " * population deviation:\n" + " $$\n" + "\\sigma = \\sqrt{\\operatorname E[X^2]-(\\operatorname E[X])^2} = \\sqrt{\\frac{1}{N} \\sum_{i=1}^N (x_i - \\mu)^2}.\n" + "$$\n" + " * unbiased estimator:\n" + " $$ \n" + " s^2 = \\frac{1}{N-1} \\sum_{i=1}^N (x_i - \\overline{x})^2.\n" + " $$" + )); + + testMarkdown(entry, QLatin1String("### Two samples")); + + testCommandEntry(entry, 2, QLatin1String( + "sample1 = np.random.normal(0, 0.5, 1000)\n" + "sample2 = np.random.normal(1,1,500)" + )); + + testCommandEntry(entry, 3, QLatin1String( + "def plot_normal_sample(sample, mu, sigma):\n" + " 'Plots an histogram and the normal distribution corresponding to the parameters.'\n" + " x = np.linspace(mu - 4*sigma, mu + 4*sigma, 100)\n" + " plt.plot(x, norm.pdf(x, mu, sigma), 'b', lw=2)\n" + " plt.hist(sample, 30, normed=True, alpha=0.2)\n" + " plt.annotate('3$\\sigma$', \n" + " xy=(mu + 3*sigma, 0), xycoords='data',\n" + " xytext=(0, 100), textcoords='offset points',\n" + " fontsize=15,\n" + " arrowprops=dict(arrowstyle=\"->\",\n" + " connectionstyle=\"arc,angleA=180,armA=20,angleB=90,armB=15,rad=7\"))\n" + " plt.annotate('-3$\\sigma$', \n" + " xy=(mu -3*sigma, 0), xycoords='data', \n" + " xytext=(0, 100), textcoords='offset points',\n" + " fontsize=15,\n" + " arrowprops=dict(arrowstyle=\"->\",\n" + " connectionstyle=\"arc,angleA=180,armA=20,angleB=90,armB=15,rad=7\"))" + )); + + testCommandEntry(entry, 4, 2, QLatin1String( + "plt.figure(figsize=(11,4))\n" + "plt.subplot(121)\n" + "plot_normal_sample(sample1, 0, 0.5)\n" + "plt.title('Sample 1: $\\mu=0$, $\\sigma=0.5$')\n" + "plt.subplot(122)\n" + "plot_normal_sample(sample2, 1, 1)\n" + "plt.title('Sample 2: $\\mu=1$, $\\sigma=1$')\n" + "plt.tight_layout();" + )); + testTextResult(entry, 0, QLatin1String( + "/usr/local/lib/python3.6/dist-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n" + " warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"" + )); + testImageResult(entry, 1); + entry = entry->next(); + + testCommandEntry(entry, 5, 1, QLatin1String( + "print('Sample 1; estimated mean:', sample1.mean(), ' and std. dev.: ', sample1.std())\n" + "print('Sample 2; estimated mean:', sample2.mean(), ' and std. dev.: ', sample2.std())" + )); + testTextResult(entry, 0, QLatin1String( + "Sample 1; estimated mean: 0.007446590585087637 and std. dev.: 0.5083158965764596\n" + "Sample 2; estimated mean: 0.969635147915706 and std. dev.: 1.0213164282805647" + )); + entry = entry->next(); + + testMarkdown(entry, QLatin1String( + "[Covariance](http://en.wikipedia.org/wiki/Covariance) is a measure of how much two random variables change together. \n" + "$$\n" + "\\operatorname{cov}(X,Y) = \\operatorname{E}{\\big[(X - \\operatorname{E}[X])(Y - \\operatorname{E}[Y])\\big]},\n" + "$$\n" + "$$\n" + "\\operatorname{cov}(X,X) = s(X),\n" + "$$\n" + "\n" + "* The sign of the covariance therefore shows the tendency in the linear relationship between the variables. \n" + "* The magnitude of the covariance is not easy to interpret. \n" + "* The normalized version of the covariance, the correlation coefficient, however, shows by its magnitude the strength of the linear relation." + )); + + testMarkdown(entry, QLatin1String("### Understanding covariance")); + + testCommandEntry(entry, 6, QLatin1String( + "sample_2d = np.array(list(zip(sample1, np.ones(len(sample1))))).T" + )); + + testCommandEntry(entry, 7, 1, QLatin1String( + "plt.scatter(sample_2d[0,:], sample_2d[1,:], marker='x');" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testCommandEntry(entry, 8, 1, QLatin1String( + "np.cov(sample_2d) # computes covariance between the two components of the sample" + )); + testTextResult(entry, 0, QLatin1String( + "array([[0.25864369, 0. ],\n" + " [0. , 0. ]])" + )); + entry = entry->next(); + + testMarkdown(entry, QLatin1String( + "As the sample is only distributed along one axis, the covariance does not detects any relationship between them." + )); + + testMarkdown(entry, QLatin1String( + "What happens when we rotate the sample?" + )); + + testCommandEntry(entry, 9, QLatin1String( + "def rotate_sample(sample, angle=-45):\n" + " 'Rotates a sample by `angle` degrees.'\n" + " theta = (angle/180.) * np.pi\n" + " rot_matrix = np.array([[np.cos(theta), -np.sin(theta)], \n" + " [np.sin(theta), np.cos(theta)]])\n" + " return sample.T.dot(rot_matrix).T" + )); + + testCommandEntry(entry, 10, QLatin1String( + "rot_sample_2d = rotate_sample(sample_2d)" + )); + + testCommandEntry(entry, 11, 1, QLatin1String( + "plt.scatter(rot_sample_2d[0,:], rot_sample_2d[1,:], marker='x');" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testCommandEntry(entry, 12, 1, QLatin1String( + "np.cov(rot_sample_2d)" + )); + testTextResult(entry, 0, QLatin1String( + "array([[0.12932185, 0.12932185],\n" + " [0.12932185, 0.12932185]])" + )); + entry = entry->next(); + + testMarkdown(entry, QLatin1String( + "### A two-dimensional normally-distributed variable" + )); + + testCommandEntry(entry, 13, 2, QLatin1String( + "mu = [0,1]\n" + "cov = [[1,0],[0,0.2]] # diagonal covariance, points lie on x or y-axis\n" + "sample = np.random.multivariate_normal(mu,cov,1000).T\n" + "plt.scatter(sample[0], sample[1], marker='x', alpha=0.29)\n" + "\n" + "estimated_mean = sample.mean(axis=1)\n" + "estimated_cov = np.cov(sample)\n" + "e_x,e_y = np.random.multivariate_normal(estimated_mean,estimated_cov,500).T\n" + "\n" + "plt.plot(e_x,e_y,'rx', alpha=0.47)\n" + "x, y = np.mgrid[-4:4:.01, -1:3:.01]\n" + "pos = np.empty(x.shape + (2,))\n" + "pos[:, :, 0] = x; pos[:, :, 1] = y\n" + "rv = multivariate_normal(estimated_mean, estimated_cov)\n" + "plt.contour(x, y, rv.pdf(pos), cmap=cm.viridis_r, lw=4)\n" + "plt.axis('equal');" + )); + testTextResult(entry, 0, QLatin1String( + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'lw'\n" + " s)" + )); + testImageResult(entry, 1); + entry = entry->next(); + + testMarkdown(entry, QLatin1String( + "### This is better understood in 3D" + )); + + testCommandEntry(entry, 14, 1, QLatin1String( + "fig = plt.figure(figsize=(11,5))\n" + "ax = fig.gca(projection='3d')\n" + "ax.plot_surface(x, y, rv.pdf(pos), cmap=cm.viridis_r, rstride=30, cstride=10, linewidth=1, alpha=0.47)\n" + "ax.plot_wireframe(x, y, rv.pdf(pos), linewidth=0.47, alpha=0.47)\n" + "ax.scatter(e_x, e_y, 0.4, marker='.', alpha=0.47)\n" + "ax.axis('tight');" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QLatin1String( + "Again, what happens if we rotate the sample?" + )); + + testCommandEntry(entry, 15, QLatin1String( + "rot_sample = rotate_sample(sample)\n" + "estimated_mean = rot_sample.mean(axis=1)\n" + "estimated_cov = np.cov(rot_sample)\n" + "e_x,e_y = np.random.multivariate_normal(estimated_mean,estimated_cov,500).T" + )); + + testCommandEntry(entry, 16, 1, QLatin1String( + "fig = plt.figure(figsize=(11,4))\n" + "plt.subplot(121)\n" + "plt.scatter(rot_sample[0,:], rot_sample[1,:], marker='x', alpha=0.7)\n" + "plt.title('\"Original\" data')\n" + "plt.axis('equal')\n" + "plt.subplot(122)\n" + "plt.scatter(e_x, e_y, marker='o', color='g', alpha=0.7)\n" + "plt.title('Sampled data')\n" + "plt.axis('equal');" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QLatin1String( + "Covariance captures the dependency and can model disposition of the \"original\" sample." + )); + + testCommandEntry(entry, 17, QLatin1String( + "x, y = np.mgrid[-4:4:.01, -3:3:.01]\n" + "pos = np.empty(x.shape + (2,))\n" + "pos[:, :, 0] = x; pos[:, :, 1] = y\n" + "rv = multivariate_normal(estimated_mean, estimated_cov)" + )); + + testCommandEntry(entry, 18, 1, QLatin1String( + "fig = plt.figure(figsize=(11,5))\n" + "ax = fig.gca(projection='3d')\n" + "ax.plot_surface(x, y, rv.pdf(pos), cmap=cm.viridis_r, rstride=30, cstride=10, linewidth=1, alpha=0.47)\n" + "ax.plot_wireframe(x, y, rv.pdf(pos), linewidth=0.47, alpha=0.47)\n" + "ax.scatter(e_x, e_y, 0.4, marker='.', alpha=0.47)\n" + "ax.axis('tight');" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QLatin1String( + "# Evolutionary Strategies\n" + "\n" + "We will be using DEAP again to present some of the ES main concepts." + )); + + testCommandEntry(entry, 19, QLatin1String( + "import array, random, time, copy\n" + "\n" + "from deap import base, creator, benchmarks, tools, algorithms\n" + "\n" + "random.seed(42) # Fixing a random seed: You should not do this in practice." + )); + + testMarkdown(entry, QLatin1String( + "Before we dive into the discussion lets code some support functions." + )); + + testCommandEntry(entry, 20, QLatin1String( + "def plot_problem_3d(problem, bounds, resolution=100., \n" + " cmap=cm.viridis_r, rstride=10, cstride=10, \n" + " linewidth=0.15, alpha=0.65, ax=None):\n" + " 'Plots a given deap benchmark problem in 3D mesh.'\n" + " (minx,miny),(maxx,maxy) = bounds\n" + " x_range = np.arange(minx, maxx, (maxx-minx)/resolution)\n" + " y_range = np.arange(miny, maxy, (maxy-miny)/resolution)\n" + " \n" + " X, Y = np.meshgrid(x_range, y_range)\n" + " Z = np.zeros((len(x_range), len(y_range)))\n" + " \n" + " for i in range(len(x_range)):\n" + " for j in range(len(y_range)):\n" + " Z[i,j] = problem((x_range[i], y_range[j]))[0]\n" + " \n" + " if not ax:\n" + " fig = plt.figure(figsize=(11,6))\n" + " ax = fig.gca(projection='3d')\n" + " \n" + " cset = ax.plot_surface(X, Y, Z, cmap=cmap, rstride=rstride, cstride=cstride, linewidth=linewidth, alpha=alpha)" + )); + + testCommandEntry(entry, 21, QLatin1String( + "def plot_problem_controur(problem, bounds, optimum=None,\n" + " resolution=100., cmap=cm.viridis_r, \n" + " rstride=1, cstride=10, linewidth=0.15,\n" + " alpha=0.65, ax=None):\n" + " 'Plots a given deap benchmark problem as a countour plot'\n" + " (minx,miny),(maxx,maxy) = bounds\n" + " x_range = np.arange(minx, maxx, (maxx-minx)/resolution)\n" + " y_range = np.arange(miny, maxy, (maxy-miny)/resolution)\n" + " \n" + " X, Y = np.meshgrid(x_range, y_range)\n" + " Z = np.zeros((len(x_range), len(y_range)))\n" + " \n" + " for i in range(len(x_range)):\n" + " for j in range(len(y_range)):\n" + " Z[i,j] = problem((x_range[i], y_range[j]))[0]\n" + " \n" + " if not ax:\n" + " fig = plt.figure(figsize=(6,6))\n" + " ax = fig.gca()\n" + " ax.set_aspect('equal')\n" + " ax.autoscale(tight=True)\n" + " \n" + " cset = ax.contourf(X, Y, Z, cmap=cmap, rstride=rstride, cstride=cstride, linewidth=linewidth, alpha=alpha)\n" + " \n" + " if optimum:\n" + " ax.plot(optimum[0], optimum[1], 'bx', linewidth=4, markersize=15)" + )); + + testCommandEntry(entry, 22, QLatin1String( + "def plot_cov_ellipse(pos, cov, volume=.99, ax=None, fc='lightblue', ec='darkblue', alpha=1, lw=1):\n" + " ''' Plots an ellipse that corresponds to a bivariate normal distribution.\n" + " Adapted from http://www.nhsilbert.net/source/2014/06/bivariate-normal-ellipse-plotting-in-python/'''\n" + " from scipy.stats import chi2\n" + " from matplotlib.patches import Ellipse\n" + "\n" + " def eigsorted(cov):\n" + " vals, vecs = np.linalg.eigh(cov)\n" + " order = vals.argsort()[::-1]\n" + " return vals[order], vecs[:,order]\n" + "\n" + " if ax is None:\n" + " ax = plt.gca()\n" + "\n" + " vals, vecs = eigsorted(cov)\n" + " theta = np.degrees(np.arctan2(*vecs[:,0][::-1]))\n" + "\n" + " kwrg = {'facecolor':fc, 'edgecolor':ec, 'alpha':alpha, 'linewidth':lw}\n" + "\n" + " # Width and height are \"full\" widths, not radius\n" + " width, height = 2 * np.sqrt(chi2.ppf(volume,2)) * np.sqrt(vals)\n" + " ellip = Ellipse(xy=pos, width=width, height=height, angle=theta, **kwrg)\n" + " ax.add_artist(ellip)" + )); + + testMarkdown(entry, QLatin1String( + "### Why benchmarks (test) functions?\n" + "\n" + "In applied mathematics, [test functions](http://en.wikipedia.org/wiki/Test_functions_for_optimization), also known as artificial landscapes, are useful to evaluate characteristics of optimization algorithms, such as:\n" + "\n" + "* Velocity of convergence.\n" + "* Precision.\n" + "* Robustness.\n" + "* General performance.\n" + "\n" + "DEAP has a number of test problems already implemented. See http://deap.readthedocs.org/en/latest/api/benchmarks.html" + )); + + testMarkdown(entry, QLatin1String( + "### [Bohachevsky benchmark problem](http://deap.readthedocs.org/en/latest/api/benchmarks.html#deap.benchmarks.bohachevsky)\n" + "\n" + "$$\\text{minimize } f(\\mathbf{x}) = \\sum_{i=1}^{N-1}(x_i^2 + 2x_{i+1}^2 - 0.3\\cos(3\\pi x_i) - 0.4\\cos(4\\pi x_{i+1}) + 0.7), \\mathbf{x}\\in \\left[-100,100\\right]^n,$$\n" + "\n" + "> Optimum in $\\mathbf{x}=\\mathbf{0}$, $f(\\mathbf{x})=0$." + )); + + testCommandEntry(entry, 23, QLatin1String( + "current_problem = benchmarks.bohachevsky" + )); + + testCommandEntry(entry, 24, 1, QLatin1String( + "plot_problem_3d(current_problem, ((-10,-10), (10,10)))" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QLatin1String( + "The Bohachevsky problem has many local optima." + )); + + testCommandEntry(entry, 25, 1, QLatin1String( + "plot_problem_3d(current_problem, ((-2.5,-2.5), (2.5,2.5)))" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testCommandEntry(entry, 26, 2, QLatin1String( + "ax = plt.figure().gca()\n" + "plot_problem_controur(current_problem, ((-2.5,-2.5), (2.5,2.5)), optimum=(0,0), ax=ax)\n" + "ax.set_aspect('equal')" + )); + testTextResult(entry, 0, QLatin1String( + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)" + )); + testImageResult(entry, 1); + entry = entry->next(); + + testMarkdown(entry, QLatin1String( + "## ($\\mu$,$\\lambda$) evolutionary strategy\n" + "\n" + "Some basic initialization parameters." + )); + + testCommandEntry(entry, 27, QLatin1String( + "search_space_dims = 2 # we want to plot the individuals so this must be 2\n" + "\n" + "MIN_VALUE, MAX_VALUE = -10., 10.\n" + "MIN_STRAT, MAX_STRAT = 0.0000001, 1. " + )); + + testCommandEntry(entry, 28, QLatin1String( + "# We are facing a minimization problem\n" + "creator.create(\"FitnessMin\", base.Fitness, weights=(-1.0,))\n" + "\n" + "# Evolutionary strategies need a location (mean)\n" + "creator.create(\"Individual\", array.array, typecode='d', \n" + " fitness=creator.FitnessMin, strategy=None)\n" + "# ...and a value of the strategy parameter.\n" + "creator.create(\"Strategy\", array.array, typecode=\"d\")" + )); + + testMarkdown(entry, QLatin1String( + "Evolutionary strategy individuals are more complex than those we have seen so far.\n" + "\n" + "They need a custom creation/initialization function." + )); + + testCommandEntry(entry, 29, QLatin1String( + "def init_univariate_es_ind(individual_class, strategy_class,\n" + " size, min_value, max_value, \n" + " min_strat, max_strat):\n" + " ind = individual_class(random.uniform(min_value, max_value) \n" + " for _ in range(size))\n" + " # we modify the instance to include the strategy in run-time.\n" + " ind.strategy = strategy_class(random.uniform(min_strat, max_strat) for _ in range(size))\n" + " return ind" + )); + + testCommandEntry(entry, 30, QLatin1String( + "toolbox = base.Toolbox() \n" + "toolbox.register(\"individual\", init_univariate_es_ind, \n" + " creator.Individual, \n" + " creator.Strategy,\n" + " search_space_dims, \n" + " MIN_VALUE, MAX_VALUE, \n" + " MIN_STRAT, MAX_STRAT)\n" + "toolbox.register(\"population\", tools.initRepeat, list, \n" + " toolbox.individual)" + )); + + testMarkdown(entry, QLatin1String( + "How does an individual and a population looks like?" + )); + + testCommandEntry(entry, 31, QLatin1String( + "ind = toolbox.individual()\n" + "pop = toolbox.population(n=3)" + )); + + testCommandEntry(entry, 32, QLatin1String( + "def plot_individual(individual, ax=None):\n" + " 'Plots an ES indiviual as center and 3*sigma ellipsis.'\n" + " cov = np.eye(len(individual)) * individual.strategy\n" + " plot_cov_ellipse(individual, cov, volume=0.99, alpha=0.56, ax=ax)\n" + " if ax:\n" + " ax.scatter(individual[0], individual[1], \n" + " marker='+', color='k', zorder=100)\n" + " else:\n" + " plt.scatter(individual[0], individual[1], \n" + " marker='+', color='k', zorder=100)\n" + "\n" + " \n" + "def plot_population(pop, gen=None, max_gen=None, ax=None):\n" + " if gen:\n" + " plt.subplot(max_gen, 1, gen)\n" + " \n" + " for ind in pop:\n" + " plot_individual(ind, ax)" + )); + + qDebug() << "command entry 33"; + testCommandEntry(entry, 33, 2, QString::fromUtf8( + "plot_problem_controur(current_problem, ((-10,-10), (10,10)), optimum=(0,0))\n" + "plot_individual(ind)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)" + )); + testImageResult(entry, 1); + entry = entry->next(); + + qDebug() << "command entry 34"; + testCommandEntry(entry, 34, 2, QString::fromUtf8( + "plot_problem_controur(current_problem, ((-10,-10), (10,10)), optimum=(0,0))\n" + "plot_population(pop)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)" + )); + testImageResult(entry, 1); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "### Mutation of an evolution strategy individual according to its strategy attribute. \n" + "First the strategy is mutated according to an extended log normal rule, \n" + "$$\n" + "\\boldsymbol{\\sigma}_t = \\exp(\\tau_0 \\mathcal{N}_0(0, 1)) \\left[ \\sigma_{t-1, 1}\\exp(\\tau\n" + "\\mathcal{N}_1(0, 1)), \\ldots, \\sigma_{t-1, n} \\exp(\\tau\n" + "\\mathcal{N}_n(0, 1))\\right],\n" + "$$\n" + "with \n" + "$$\\tau_0 =\n" + "\\frac{c}{\\sqrt{2n}}\\text{ and }\\tau = \\frac{c}{\\sqrt{2\\sqrt{n}}},\n" + "$$\n" + "\n" + "the individual is mutated by a normal distribution of mean 0 and standard deviation of $\\boldsymbol{\\sigma}_{t}$ (its current strategy). \n" + "\n" + "A recommended choice is $c=1$ when using a $(10,100)$ evolution strategy." + )); + + qDebug() << "command entry 35"; + testCommandEntry(entry, 35, QString::fromUtf8( + "toolbox.register(\"mutate\", tools.mutESLogNormal, c=1, indpb=0.1)" + )); + + testMarkdown(entry, QString::fromUtf8( + "Blend crossover on both, the individual and the strategy." + )); + + qDebug() << "command entry 36"; + testCommandEntry(entry, 36, QString::fromUtf8( + "toolbox.register(\"mate\", tools.cxESBlend, alpha=0.1)\n" + "toolbox.register(\"evaluate\", current_problem)\n" + "toolbox.register(\"select\", tools.selBest)" + )); + + qDebug() << "command entry 37"; + testCommandEntry(entry, 37, QString::fromUtf8( + "mu_es, lambda_es = 3,21\n" + "\n" + "pop = toolbox.population(n=mu_es)\n" + "hof = tools.HallOfFame(1)\n" + "\n" + "pop_stats = tools.Statistics(key=copy.deepcopy)\n" + "pop_stats.register('pop', copy.deepcopy) # -- copies the populations themselves\n" + " \n" + "pop, logbook = algorithms.eaMuCommaLambda(pop, toolbox, mu=mu_es, lambda_=lambda_es, \n" + " cxpb=0.6, mutpb=0.3, ngen=40, stats=pop_stats, halloffame=hof, verbose=False)" + )); + + testMarkdown(entry, QString::fromUtf8( + "### The final population" + )); + + qDebug() << "command entry 38"; + testCommandEntry(entry, 38, 2, QString::fromUtf8( + "plot_problem_controur(current_problem, ((-10,-10), (10,10)), optimum=(0,0))\n" + "plot_population(pop)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)" + )); + testImageResult(entry, 1); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "The plot (most probably) shows a \"dark blue\" ellipse as all individuals are overlapping. " + )); + + testMarkdown(entry, QString::fromUtf8( + "Let's see how the evolutionary process took place in animated form." + )); + + qDebug() << "command entry 39"; + testCommandEntry(entry, 39, QString::fromUtf8( + "from matplotlib import animation\n" + "from IPython.display import HTML" + )); + + qDebug() << "command entry 40"; + testCommandEntry(entry, 40, QString::fromUtf8( + "def animate(i):\n" + " 'Updates all plots to match frame _i_ of the animation.'\n" + " ax.clear()\n" + " plot_problem_controur(current_problem, ((-10.1,-10.1), (10.1,10.1)), optimum=(0,0), ax=ax)\n" + " plot_population(logbook[i]['pop'], ax=ax)\n" + " ax.set_title('$t=$' +str(i))\n" + " return []" + )); + + qDebug() << "command entry 41"; + testCommandEntry(entry, 41, 1, QString::fromUtf8( + "fig = plt.figure(figsize=(5,5))\n" + "ax = fig.gca()\n" + "anim = animation.FuncAnimation(fig, animate, frames=len(logbook), interval=300, blit=True)\n" + "plt.close()" + )); + testTextResult(entry, 0, QString::fromUtf8( + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)" + )); + entry = entry->next(); + + qDebug() << "command entry 42"; + testCommandEntry(entry, 42, 2, QString::fromUtf8( + "HTML(anim.to_html5_video())" + )); + testTextResult(entry, 0, QString::fromUtf8( + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)\n" + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)" + )); + testHtmlResult(entry, 1, QString::fromUtf8( + "" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "How the population progressed as the evolution proceeded?" + )); + + qDebug() << "command entry 43"; + testCommandEntry(entry, 43, QString::fromUtf8( + "pop = toolbox.population(n=mu_es)\n" + "\n" + "stats = tools.Statistics(lambda ind: ind.fitness.values)\n" + "stats.register(\"avg\", np.mean)\n" + "stats.register(\"std\", np.std)\n" + "stats.register(\"min\", np.min)\n" + "stats.register(\"max\", np.max)\n" + " \n" + "pop, logbook = algorithms.eaMuCommaLambda(pop, toolbox, \n" + " mu=mu_es, lambda_=lambda_es, \n" + " cxpb=0.6, mutpb=0.3, \n" + " ngen=40, stats=stats, \n" + " verbose=False)" + )); + + qDebug() << "command entry 44"; + testCommandEntry(entry, 44, 1, QString::fromUtf8( + "plt.figure(1, figsize=(7, 4))\n" + "plt.plot(logbook.select('avg'), 'b-', label='Avg. fitness')\n" + "plt.fill_between(range(len(logbook)), logbook.select('max'), logbook.select('min'), facecolor='blue', alpha=0.47)\n" + "plt.plot(logbook.select('std'), 'm--', label='Std. deviation')\n" + "plt.legend(frameon=True)\n" + "plt.ylabel('Fitness'); plt.xlabel('Iterations');" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "What happens if we increase $\\mu$ and $\\lambda$?" + )); + + qDebug() << "command entry 45"; + testCommandEntry(entry, 45, 1, QString::fromUtf8( + "mu_es, lambda_es = 10,100\n" + "pop, logbook = algorithms.eaMuCommaLambda(toolbox.population(n=mu_es), toolbox, mu=mu_es, lambda_=lambda_es, \n" + " cxpb=0.6, mutpb=0.3, ngen=40, stats=stats, halloffame=hof, verbose=False)\n" + "plt.figure(1, figsize=(7, 4))\n" + "plt.plot(logbook.select('avg'), 'b-', label='Avg. fitness')\n" + "plt.fill_between(range(len(logbook)), logbook.select('max'), logbook.select('min'), facecolor='blue', alpha=0.47)\n" + "plt.plot(logbook.select('std'), 'm--', label='Std. deviation')\n" + "plt.legend(frameon=True)\n" + "plt.ylabel('Fitness'); plt.xlabel('Iterations');" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "# Covariance Matrix Adaptation Evolutionary Strategy" + )); + + testMarkdown(entry, QString::fromUtf8( + "* In an evolution strategy, new candidate solutions are sampled according to a multivariate normal distribution in the $\\mathbb{R}^n$. \n" + "* Recombination amounts to selecting a new mean value for the distribution. \n" + "* Mutation amounts to adding a random vector, a perturbation with zero mean. \n" + "* Pairwise dependencies between the variables in the distribution are represented by a covariance matrix. \n" + "\n" + "### The covariance matrix adaptation (CMA) is a method to update the covariance matrix of this distribution. \n" + "\n" + "> This is particularly useful, if the objective function $f()$ is ill-conditioned." + )); + + testMarkdown(entry, QString::fromUtf8( + "### CMA-ES features\n" + "\n" + "* Adaptation of the covariance matrix amounts to learning a second order model of the underlying objective function.\n" + "* This is similar to the approximation of the inverse Hessian matrix in the Quasi-Newton method in classical optimization. \n" + "* In contrast to most classical methods, fewer assumptions on the nature of the underlying objective function are made. \n" + "* *Only the ranking between candidate solutions is exploited* for learning the sample distribution and neither derivatives nor even the function values themselves are required by the method." + )); + + qDebug() << "command entry 46"; + testCommandEntry(entry, 46, QString::fromUtf8( + "from deap import cma" + )); + + testMarkdown(entry, QString::fromUtf8( + "A similar setup to the previous one." + )); + + qDebug() << "command entry 47"; + testCommandEntry(entry, 47, 1, QString::fromUtf8( + "creator.create(\"Individual\", list, fitness=creator.FitnessMin)\n" + "toolbox = base.Toolbox()\n" + "toolbox.register(\"evaluate\", current_problem)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "/home/mmmm1998/.local/lib/python3.6/site-packages/deap/creator.py:141: RuntimeWarning: A class named 'Individual' has already been created and it will be overwritten. Consider deleting previous creation of that class or rename it.\n" + " RuntimeWarning)" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "We will place our start point by hand at $(5,5)$." + )); + + qDebug() << "command entry 48"; + testCommandEntry(entry, 48, 1, QString::fromUtf8( + "cma_es = cma.Strategy(centroid=[5.0]*search_space_dims, sigma=5.0, lambda_=5*search_space_dims)\n" + "toolbox.register(\"generate\", cma_es.generate, creator.Individual)\n" + "toolbox.register(\"update\", cma_es.update)\n" + "\n" + "hof = tools.HallOfFame(1)\n" + "stats = tools.Statistics(lambda ind: ind.fitness.values)\n" + "stats.register(\"avg\", np.mean)\n" + "stats.register(\"std\", np.std)\n" + "stats.register(\"min\", np.min)\n" + "stats.register(\"max\", np.max)\n" + "\n" + "# The CMA-ES algorithm converge with good probability with those settings\n" + "pop, logbook = algorithms.eaGenerateUpdate(toolbox, ngen=60, stats=stats, \n" + " halloffame=hof, verbose=False)\n" + " \n" + "print(\"Best individual is %s, fitness: %s\" % (hof[0], hof[0].fitness.values))" + )); + testTextResult(entry, 0, QString::fromUtf8( + "Best individual is [-2.524016407520609e-08, -4.0857988576506457e-08], fitness: (6.517009154549669e-14,)" + )); + entry = entry->next(); + + qDebug() << "command entry 49"; + testCommandEntry(entry, 49, 1, QString::fromUtf8( + "plt.figure(1, figsize=(7, 4))\n" + "plt.plot(logbook.select('avg'), 'b-', label='Avg. fitness')\n" + "plt.fill_between(range(len(logbook)), logbook.select('max'), logbook.select('min'), facecolor='blue', alpha=0.47)\n" + "plt.plot(logbook.select('std'), 'm--', label='Std. deviation')\n" + "plt.legend(frameon=True)\n" + "plt.ylabel('Fitness'); plt.xlabel('Iterations');" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "### OK, but wouldn't it be nice to have an animated plot of how CMA-ES progressed? \n" + "\n" + "* We need to do some coding to make this animation work.\n" + "* We are going to create a class named `PlotableStrategy` that inherits from `deap.cma.Strategy`. This class logs the features we need to make the plots as evolution takes place. That is, for every iteration we store:\n" + " * Current centroid and covariance ellipsoid.\n" + " * Updated centroid and covariance.\n" + " * Sampled individuals.\n" + " * Evolution path.\n" + " \n" + "_Note_: I think that DEAP's implementation of CMA-ES has the drawback of storing information that should be stored as part of \"individuals\". I leave this for an afternoon hack." + )); + + qDebug() << "command entry 50"; + testCommandEntry(entry, 50, QString::fromUtf8( + "from math import sqrt, log, exp\n" + "class PlotableStrategy(cma.Strategy):\n" + " \"\"\"This is a modification of deap.cma.Strategy class.\n" + " We store the execution data in order to plot it.\n" + " **Note:** This class should not be used for other uses than\n" + " the one it is meant for.\"\"\"\n" + " \n" + " def __init__(self, centroid, sigma, **kargs):\n" + " \"\"\"Does the original initialization and then reserves \n" + " the space for the statistics.\"\"\"\n" + " super(PlotableStrategy, self).__init__(centroid, sigma, **kargs)\n" + " \n" + " self.stats_centroids = []\n" + " self.stats_new_centroids = []\n" + " self.stats_covs = []\n" + " self.stats_new_covs = []\n" + " self.stats_offspring = []\n" + " self.stats_offspring_weights = []\n" + " self.stats_ps = []\n" + " \n" + " def update(self, population):\n" + " \"\"\"Update the current covariance matrix strategy from the\n" + " *population*.\n" + " \n" + " :param population: A list of individuals from which to update the\n" + " parameters.\n" + " \"\"\"\n" + " # -- store current state of the algorithm\n" + " self.stats_centroids.append(copy.deepcopy(self.centroid))\n" + " self.stats_covs.append(copy.deepcopy(self.C))\n" + " \n" + " \n" + " population.sort(key=lambda ind: ind.fitness, reverse=True)\n" + " \n" + " # -- store sorted offspring\n" + " self.stats_offspring.append(copy.deepcopy(population))\n" + " \n" + " old_centroid = self.centroid\n" + " self.centroid = np.dot(self.weights, population[0:self.mu])\n" + " \n" + " # -- store new centroid\n" + " self.stats_new_centroids.append(copy.deepcopy(self.centroid))\n" + " \n" + " c_diff = self.centroid - old_centroid\n" + " \n" + " \n" + " # Cumulation : update evolution path\n" + " self.ps = (1 - self.cs) * self.ps \\\n" + " + sqrt(self.cs * (2 - self.cs) * self.mueff) / self.sigma \\\n" + " * np.dot(self.B, (1. / self.diagD) \\\n" + " * np.dot(self.B.T, c_diff))\n" + " \n" + " # -- store new evol path\n" + " self.stats_ps.append(copy.deepcopy(self.ps))\n" + " \n" + " hsig = float((np.linalg.norm(self.ps) / \n" + " sqrt(1. - (1. - self.cs)**(2. * (self.update_count + 1.))) / self.chiN\n" + " < (1.4 + 2. / (self.dim + 1.))))\n" + " \n" + " self.update_count += 1\n" + " \n" + " self.pc = (1 - self.cc) * self.pc + hsig \\\n" + " * sqrt(self.cc * (2 - self.cc) * self.mueff) / self.sigma \\\n" + " * c_diff\n" + " \n" + " # Update covariance matrix\n" + " artmp = population[0:self.mu] - old_centroid\n" + " self.C = (1 - self.ccov1 - self.ccovmu + (1 - hsig) \\\n" + " * self.ccov1 * self.cc * (2 - self.cc)) * self.C \\\n" + " + self.ccov1 * np.outer(self.pc, self.pc) \\\n" + " + self.ccovmu * np.dot((self.weights * artmp.T), artmp) \\\n" + " / self.sigma**2\n" + " \n" + " # -- store new covs\n" + " self.stats_new_covs.append(copy.deepcopy(self.C))\n" + " \n" + " self.sigma *= np.exp((np.linalg.norm(self.ps) / self.chiN - 1.) \\\n" + " * self.cs / self.damps)\n" + " \n" + " self.diagD, self.B = np.linalg.eigh(self.C)\n" + " indx = np.argsort(self.diagD)\n" + " \n" + " self.cond = self.diagD[indx[-1]]/self.diagD[indx[0]]\n" + " \n" + " self.diagD = self.diagD[indx]**0.5\n" + " self.B = self.B[:, indx]\n" + " self.BD = self.B * self.diagD" + )); + + testMarkdown(entry, QString::fromUtf8( + "It is now possible to use/test our new class." + )); + + qDebug() << "command entry 51"; + testCommandEntry(entry, 51, QString::fromUtf8( + "toolbox = base.Toolbox()\n" + "toolbox.register(\"evaluate\", current_problem)" + )); + + qDebug() << "command entry 52"; + testCommandEntry(entry, 52, QString::fromUtf8( + "max_gens = 40\n" + "cma_es = PlotableStrategy(centroid=[5.0]*search_space_dims, sigma=1.0, lambda_=5*search_space_dims)\n" + "toolbox.register(\"generate\", cma_es.generate, creator.Individual)\n" + "toolbox.register(\"update\", cma_es.update)\n" + "\n" + "# The CMA-ES algorithm converge with good probability with those settings\n" + "a = algorithms.eaGenerateUpdate(toolbox, ngen=max_gens, verbose=False)" + )); + + testMarkdown(entry, QString::fromUtf8( + "Me can now code the `animate_cma_es()` function." + )); + + qDebug() << "command entry 53"; + testCommandEntry(entry, 53, QString::fromUtf8( + "norm=colors.Normalize(vmin=np.min(cma_es.weights), vmax=np.max(cma_es.weights))\n" + "sm = cm.ScalarMappable(norm=norm, cmap=plt.get_cmap('gray'))" + )); + + qDebug() << "command entry 54"; + testCommandEntry(entry, 54, QString::fromUtf8( + "def animate_cma_es(gen):\n" + " ax.cla()\n" + " plot_problem_controur(current_problem, ((-11,-11), (11,11)), optimum=(0,0), ax=ax)\n" + " \n" + " plot_cov_ellipse(cma_es.stats_centroids[gen], cma_es.stats_covs[gen], volume=0.99, alpha=0.29, ax=ax)\n" + " ax.plot(cma_es.stats_centroids[gen][0], cma_es.stats_centroids[gen][1], 'ro', markeredgecolor = 'none', ms=10)\n" + " \n" + " plot_cov_ellipse(cma_es.stats_new_centroids[gen], cma_es.stats_new_covs[gen], volume=0.99, \n" + " alpha=0.29, fc='green', ec='darkgreen', ax=ax)\n" + " ax.plot(cma_es.stats_new_centroids[gen][0], cma_es.stats_new_centroids[gen][1], 'go', markeredgecolor = 'none', ms=10)\n" + " \n" + " for i in range(gen+1):\n" + " if i == 0:\n" + " ax.plot((0,cma_es.stats_ps[i][0]),\n" + " (0,cma_es.stats_ps[i][1]), 'b--')\n" + " else:\n" + " ax.plot((cma_es.stats_ps[i-1][0],cma_es.stats_ps[i][0]),\n" + " (cma_es.stats_ps[i-1][1],cma_es.stats_ps[i][1]),'b--')\n" + " \n" + " for i,ind in enumerate(cma_es.stats_offspring[gen]):\n" + " if i < len(cma_es.weights):\n" + " color = sm.to_rgba(cma_es.weights[i])\n" + " else:\n" + " color= sm.to_rgba(norm.vmin)\n" + " ax.plot(ind[0], ind[1], 'o', color = color, ms=5, markeredgecolor = 'none')\n" + " \n" + " ax.set_ylim((-10,10))\n" + " ax.set_xlim((-10,10))\n" + " ax.set_title('$t=$' +str(gen))\n" + " return []" + )); + + testMarkdown(entry, QString::fromUtf8( + "### CMA-ES progress " + )); + + qDebug() << "command entry 55"; + testCommandEntry(entry, 55, 1, QString::fromUtf8( + "fig = plt.figure(figsize=(6,6))\n" + "ax = fig.gca()\n" + "anim = animation.FuncAnimation(fig, animate_cma_es, frames=max_gens, interval=300, blit=True)\n" + "plt.close()" + )); + testTextResult(entry, 0, QString::fromUtf8( + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)" + )); + entry = entry->next(); + + qDebug() << "command entry 56"; + testCommandEntry(entry, 56, 2, QString::fromUtf8( + "HTML(anim.to_html5_video())" + )); + testTextResult(entry, 0, QString::fromUtf8( + "/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py:960: UserWarning: The following kwargs were not used by contour: 'rstride', 'cstride', 'linewidth'\n" + " s)" + )); + testHtmlResult(entry, 1, QString::fromUtf8( + "" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "* Current centroid and covariance: **red**.\n" + "* Updated centroid and covariance: **green**. \n" + "* Sampled individuals: **shades of gray representing their corresponding weight**.\n" + "* Evolution path: **blue line starting in (0,0)**. " + )); + + testMarkdown(entry, QString::fromUtf8( + "## Homework\n" + "\n" + "1. Make an animated plot with the covariance update process. You can rely on the notebook of the previous demonstration class.\n" + "2. Compare ES, CMA-ES and a genetic algortihm.\n" + "2. How do you think that evolutionary strategies and CMA-ES should be modified in order to cope with combinatorial problems?\n" + "3. How can evolution strategies be improved?\n" + )); + + testMarkdown(entry, QString::fromUtf8( + "
        \n" + "
        \n" + "
        \n" + "
        \n" + "
        \n" + " \"Creative\n" + "
        \n" + "
        \n" + " This work is licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-nc-sa/4.0/).\n" + "
        \n" + "
        \n" + "
        \n" + "
        " + )); + + qDebug() << "command entry 58"; + testCommandEntry(entry, 58, 1, QString::fromUtf8( + "# To install run: pip install version_information\n" + "%load_ext version_information\n" + "%version_information scipy, numpy, matplotlib, seaborn, deap" + )); + testHtmlResult(entry, 0, QString::fromLatin1( + "Software versions\n" + "Python 3.6.7 64bit [GCC 8.2.0]\n" + "IPython 6.3.1\n" + "OS Linux 4.15.0 50 generic x86_64 with Ubuntu 18.04 bionic\n" + "scipy 1.1.0\n" + "numpy 1.14.5\n" + "matplotlib 2.2.2\n" + "seaborn 0.9.0\n" + "deap 1.2\n" + "Wed May 29 19:31:25 2019 MSK" + ), QString::fromLatin1( + "
        SoftwareVersion
        Python3.6.7 64bit [GCC 8.2.0]
        IPython6.3.1
        OSLinux 4.15.0 50 generic x86_64 with Ubuntu 18.04 bionic
        scipy1.1.0
        numpy1.14.5
        matplotlib2.2.2
        seaborn0.9.0
        deap1.2
        Wed May 29 19:31:25 2019 MSK
        " + )); + entry = entry->next(); + + qDebug() << "command entry 59"; + testCommandEntry(entry, 59, 1, QString::fromUtf8( + "# this code is here for cosmetic reasons\n" + "from IPython.core.display import HTML\n" + "from urllib.request import urlopen\n" + "HTML(urlopen('https://raw.githubusercontent.com/lmarti/jupyter_custom/master/custom.include').read().decode('utf-8'))" + )); + testHtmlResult(entry, 0, QString::fromUtf8( + "" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + " " + )); + + QCOMPARE(entry, nullptr); +} + +void WorksheetTest::testJupyter3() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(loadWorksheet(QLatin1String("Population_Genetics.ipynb"))); + + QCOMPARE(w->isReadOnly(), false); + QCOMPARE(w->session()->backend()->id(), QLatin1String("python")); + + WorksheetEntry* entry = w->firstEntry(); + + testMarkdown(entry, QString::fromUtf8( + "## Population Genetics in *an* RNA World\n" + "\n" + "In order to study population genetics, we first need a model of a population. And even before that, we need to define what we mean by *population*. Populations can be defined on many levels and with many diffferent criteria. For our purposes, we will simply say that a population is a set of individuals sharing a common environment. And because this is population *genetics* we can think of individuals as entities comprising of specific genes or chromosomes. \n" + "\n" + "So where do we get a population from? As you may have discussed in previous workshops, there are very large datasets containing sequencing information from different populations. So we could download one of these datasets and perform some analysis on it. But I find this can be dry and tedious. So why download data when we can simply create our own?\n" + "\n" + "In this workshop we're going to be creating and studying our own \"artificial\" populations to illustrate some important population genetics concepts and methodologies. Not only will this help you learn population genetics, but you will get a lot more programming practice than if we were to simply parse data files and go from there. \n" + "\n" + "More specifically, we're going to build our own RNA world.\n" + "\n" + "As you may know, RNA is widely thought to be the first self replicating life-form to arise x billion years ago. One of the strongest arguments for this theory is that RNA is able to carry information in its nucleotides like DNA, and like protein, it is able to adopt higher order structures to catalyze reactions, such as self replication. So it is likely, and there is growing evidence that this is the case, that the first form of replicating life was RNA. And because of this dual property of RNA as an information vessel as well as a structural/functional element we can use RNA molecules to build very nice population models. \n" + "\n" + "So in this notebook, I'll be walking you through building genetic populations, simulating their evolution, and using statistics and other mathematical tools for understanding key properties of populations.\n" + "\n" + "### Building an RNA population\n" + "\n" + "As we saw earlier, RNA has the nice property of posessing a strong mapping between information carrying (sequence) and function (structure). This is analogous to what is known in evolutionary terms as a genotype and a phenotype. With these properties, we have everything we need to model a population, and simulate its evolution.\n" + "\n" + "#### RNA sequence-structure\n" + "\n" + "We can think of the genotype as a sequence $s$ consisting of letters/nucleotides from the alphabet $\\{U,A,C,G\\}$. The corresponding phenotype $\\omega$ is the secondary structure of $s$ which can be thought of as a pairing between nucleotides in the primary sequence that give rise to a 2D architecture. Because it has been shown that the function of many biomolecules, including RNA, is driven by structure this gives us a good proxy for phenotype. \n" + "\n" + "Below is an example of what an RNA secondary structure, or pairing, looks like." + )); + + qDebug() << "command entry 1"; + testCommandEntry(entry, 1, 1, QString::fromUtf8( + "### 1\n" + "\n" + "from IPython.display import Image\n" + "#This will load an image of an RNA secondary structure\n" + "Image(url='http://www.tbi.univie.ac.at/~pkerp/forgi/_images/1y26_ss.png')" + )); + testHtmlResult(entry, 0, QString::fromLatin1( + "" + ), QString::fromLatin1( + "" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "As you can see, unparied positions are forming loop-like structures, and paired positions are forming stem-like structures. It is this spatial arrangement of nucleotides that drives RNA's function. Therefore, another sequence that adopts a similar shape, is likely to behave in a similar manner. Another thing to notice is that, although in reality this is often not the case, in general we only allow pairs between $\\{C,G\\}$ and $\\{A, U\\}$ nucleotides, most modern approaches allow for non-canonical pairings and you will find some examples of this in the above structure.\n" + "\n" + "*How do we go from a sequence to a structure?*\n" + "\n" + "So a secondary structure is just a list of pairings between positions. How do we get the optimal pairing?\n" + "\n" + "The algorithm we're going to be using in our simulations is known as the Nussinov Algorithm. The Nussinov algorithm is one of the first and simplest attempts at predicting RNA structure. Because bonds tend to stabilize RNA, the algorithm tries to maximize the number of pairs in the structure and return that as its solution. Current approaches achieve more accurate solutions by using energy models based one experimental values to then obtain a structure that minimizes free energy. But since we're not really concerned with the accuracy of our predictions, Nussinov is a good entry point. Furthermore, the main algorithmic concepts are the same between Nussinov and state of the art RNA structure prediction algorithms. I implemented the algorithm in a separate file called `fold.py` that we can import and use its functions. I'm not going to go into detail here on how the algorithm works because it is beyond the scope of this workshop but there is a bonus exercise at the end if you're curious.\n" + "\n" + "You can predict a secondary structure by calling `nussinov()` with a sequence string and it will return a tuple in the form `(structure, pairs)`." + )); + + qDebug() << "command entry 2"; + testCommandEntry(entry, 2, 1, QString::fromUtf8( + "import numpy as np\n" + "from fold import nussinov\n" + "\n" + "sequence_to_fold = \"ACCCGAUGUUAUAUAUACCU\"\n" + "struc = nussinov(sequence_to_fold)\n" + "print(sequence_to_fold)\n" + "print(struc[0])" + )); + testTextResult(entry, 0, QString::fromUtf8( + "ACCCGAUGUUAUAUAUACCU\n" + "(...(..(((....).))))" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "You will see a funny dot-bracket string in the output. This is a representation of the structure of an RNA. Quite simply, a matching parir of parentheses (open and close) correspond to the nucleotides at those positions being paried. Whereas, a dot means that that position is unpaired in the structure. Feel free to play around with the input sequence to get a better understanding of the notation.\n" + "\n" + "So that's enough about RNA structure prediction. Let's move on to building our populations.\n" + "\n" + "### Fitness of a sequence: Target Structure\n" + "\n" + "Now that we have a good way of getting a phenotype (secondary structure), we need a way to evaluate the fitness of that phenotype. If we think in real life terms, fitness is the ability of a genotype to replicate into the next generation. If you have a gene carrying a mutation that causes some kind of disease, your fitness is decreased and you have a lower chance of contributing offspring to the next generation. On a molecular level the same concept applies. A molecule needs to accomplish a certain function, i.e. bind to some other molecule or send some kind of signal. And as we've seen before, the most important factor that determines how well it can carry out this function is its structure. So we can imagine that a certain structure, we can call this a 'target' structure, is required in order to accomplish a certain function. So a sequence that folds correctly to a target structure is seen as having a greater fitness than one that does not. Since we've encoded structures as simple dot-bracket strings, we can easily compare structures and thus evaluate the fitness between a given structure and the target, or 'correct' structure. \n" + "\n" + "There are many ways to compare structures $w_{1}$ and $w_{2}$, but we're going to use one of the simplest ways, which is base-pair distance. This is just the number of pairs in $w_{1}$ that are not in $w_{2}$. Again, this is beyond the scope of this workshop so I'll just give you the code for it and if you would like to know more you can ask me." + )); + + qDebug() << "command entry 3"; + testCommandEntry(entry, 3, 1, QString::fromUtf8( + "### 3\n" + "\n" + "#ss_to_bp() and bp_distance() by Vladimir Reinharz.\n" + "def ss_to_bp(ss):\n" + " bps = set()\n" + " l = []\n" + " for i, x in enumerate(ss):\n" + " if x == '(':\n" + " l.append(i)\n" + " elif x == ')':\n" + " bps.add((l.pop(), i))\n" + " return bps\n" + "\n" + "def bp_distance(w1, w2):\n" + " \"\"\"\n" + " return base pair distance between structures w1 and w1. \n" + " w1 and w1 are lists of tuples representing pairing indices.\n" + " \"\"\"\n" + " return len(set(w1).symmetric_difference(set(w2)))\n" + "\n" + "#let's fold two sequences\n" + "w1 = nussinov(\"CCAAAAGG\")\n" + "w2 = nussinov(\"ACAAAAGA\")\n" + "\n" + "print(w1)\n" + "print(w2)\n" + "\n" + "#give the list of pairs to bp_distance and see what the distance is.\n" + "print(bp_distance(w1[-1], w2[-1]))" + )); + testTextResult(entry, 0, QString::fromUtf8( + "('((....))', [(0, 7), (1, 6)])\n" + "('.(....).', [(1, 6)])\n" + "1" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "## Defining a cell: a little bit of Object Oriented Programming (OOP)\n" + "\n" + "Since we're going to be playing aroudn with sequences and structures and fitness values a lot, it's best to package it all nicely into an object. As you'll have seen with Vlad, objects are just a nice way of grouping data into an easily accessible form. \n" + "\n" + "We're trying to simulate evolution on a very simple kind of organism, or cell. It contains two copies of a RNA gene, each with a corresponding structure. " + )); + + qDebug() << "command entry 4"; + testCommandEntry(entry, 4, 1, QString::fromUtf8( + "### 4\n" + "class Cell:\n" + " def __init__(self, seq_1, struc_1, seq_2, struc_2):\n" + " self.sequence_1 = seq_1\n" + " self.sequence_2 = seq_2\n" + " self.structure_1 = struc_1\n" + " self.structure_2 = struc_2\n" + " \n" + "#for now just try initializing a Cell with made up sequences and structures\n" + "cell = Cell(\"AACCCCUU\", \"((.....))\", \"GGAAAACA\", \"(....).\")\n" + "print(cell.sequence_1, cell.structure_2, cell.sequence_1, cell.structure_2)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "AACCCCUU (....). AACCCCUU (....)." + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "## Populations of Cells\n" + "\n" + "Now we've defined a 'Cell'. Since a population is a collection of individuals our populations will naturally consist of **lists** of 'Cell' objects, each with their own sequences. Here we initialize all the Cells with random sequences and add them to the 'population' list." + )); + + qDebug() << "command entry 5"; + testCommandEntry(entry, 5, QString::fromUtf8( + "### 5\n" + "import random\n" + "\n" + "def populate(target, pop_size=100):\n" + " \n" + " population = []\n" + "\n" + " for i in range(pop_size):\n" + " #get a random sequence to start with\n" + " sequence = \"\".join([random.choice(\"AUCG\") for _ in range(len(target))])\n" + " #use nussinov to get the secondary structure for the sequence\n" + " structure = nussinov(sequence)\n" + " #add a new Cell object to the population list\n" + " new_cell = Cell(sequence, structure, sequence, structure)\n" + " new_cell.id = i\n" + " new_cell.parent = i\n" + " population.append(new_cell)\n" + " \n" + " return population" + )); + + testMarkdown(entry, QString::fromUtf8( + "Try creating a new population and printing the first 10 sequences and structures (in dot-bracket) on the first chromosome!" + )); + + qDebug() << "command entry 6"; + testCommandEntry(entry, 6, 1, QString::fromUtf8( + "### 6\n" + "target = \"(.(((....).).).)....\"\n" + "pop = populate(target, pop_size=100)\n" + "for p in pop[:10]:\n" + " print(p.id, p.sequence_1, p.structure_1[0], p.sequence_2, p.structure_2[0])" + )); + testTextResult(entry, 0, QString::fromUtf8( + "0 GGACGGAGCAUUAUCUGCUA (((...(....).))..).. GGACGGAGCAUUAUCUGCUA (((...(....).))..)..\n" + "1 ACAAUCGCCUCACUCACGUU (.(..((..(.....))))) ACAAUCGCCUCACUCACGUU (.(..((..(.....)))))\n" + "2 UCCGUUCUAUUAGUUCAUAG .(..(((.....)...).)) UCCGUUCUAUUAGUUCAUAG .(..(((.....)...).))\n" + "3 CAAACCUUGUUCGUAAUACA .(....)((((....).))) CAAACCUUGUUCGUAAUACA .(....)((((....).)))\n" + "4 GCAUCGAGUGCGCGGCAUAA ((..((....)).).).... GCAUCGAGUGCGCGGCAUAA ((..((....)).).)....\n" + "5 GAAUUCUGAGAUCAUACUCG (((((.....)..))..)). GAAUUCUGAGAUCAUACUCG (((((.....)..))..)).\n" + "6 GGAACCGUAGGCUUUGCAAG (.(((....)..))..)... GGAACCGUAGGCUUUGCAAG (.(((....)..))..)...\n" + "7 GCAAAAGACAGCCCGCAUCA ((....).)((....).).. GCAAAAGACAGCCCGCAUCA ((....).)((....).)..\n" + "8 GGGUACCGACAACGGAGCUC ((.(.(((....)))).).) GGGUACCGACAACGGAGCUC ((.(.(((....)))).).)\n" + "9 CUCUUAUUUCACUUAGCUGU (.(((.....)...))..). CUCUUAUUUCACUUAGCUGU (.(((.....)...))..)." + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "## The Fitness of a Cell\n" + "\n" + "Now that we can store populatoins of cells, we need a way to evaluate the fitness of a given Cell. Recall that a Cell is simply an object that contains two RNA sequences (think of it as two copies of a gene on each chromosome). \n" + "\n" + "So we simply need to loop through each Cell in a population and compute base pair distance to the target structure. However, simply using base-pair distance is not a very good measure of fitness. There are two reasons for this: \n" + "\n" + "1. We want fitness to represent a *probability* that a cell will reproduce, and base pair distance is an integer.\n" + "2. We want this probability to be a *relative* measure. That is, we want to be the fitness to be proportional to how good a cell is with respect to all others in the population. This touches on an important principle in evolution where we only need to be 'better' than the competition and not good in some absolute measure. For example, if you and I are being chased by a bear. In order to survive, I only need to be faster than you, and not necessarily some absolute level of fitness.\n" + "\n" + "In order to get a probability (number between 0 and 1) we use the following equation to define the fitness of a structure $\\omega$ on a target structure $T$:\n" + "\n" + "$$P(\\omega, T) = N^{-1} exp(\\frac{-\\beta \\texttt{dist}(\\omega, T)}{\\texttt{len}(\\omega)})$$\n" + "\n" + "$$N = \\sum_{i \\in Pop}{P(\\omega_i, T})$$\n" + "\n" + "Here, the $N$ is what gives us the 'relative' measure because we divide the fitness of the Cell by the sum of the fitness of every other Cell. \n" + "\n" + "Let's take a quick look at how this function behaves if we plot different base pair distance values.\n" + "\n" + "What is the effect of the parameter $\\beta$? Try plotting the same function but with different values of $\\beta$." + )); + + qDebug() << "command entry 8"; + testCommandEntry(entry, 8, 2, QString::fromUtf8( + "%matplotlib inline\n" + "import matplotlib.pyplot as plt\n" + "import math\n" + "import seaborn as sns\n" + "\n" + "target_length = 50\n" + "beta = -2\n" + "\n" + "plt.plot([math.exp(beta * (bp_dist / float(target_length))) for bp_dist in range(target_length)])\n" + "plt.xlabel(\"Base pair distance to target structure\")\n" + "plt.ylabel(\"P(w, T)\")" + )); + testTextResult(entry, 0, QString::fromLatin1("Text(0,0.5,'P(w, T)')")); + testImageResult(entry, 1); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "As you can see, it's a very simple function that evaluates to 1 (highest fitness) if the base pair distance is 0, and decreases as the structures get further and further away from the target. I didn't include the $N$ in the plotting as it will be a bit more annoying to compute, but it is simply a scaling factor so the shape and main idea won't be different.\n" + "\n" + "Now we can use this function to get a fitness value for each Cell in our population." + )); + + qDebug() << "command entry 9"; + testCommandEntry(entry, 9, 1, QString::fromUtf8( + "### 7\n" + "\n" + "def compute_fitness(population, target, beta=-2):\n" + " \"\"\"\n" + " Assigns a fitness and bp_distance value to each cell in the population.\n" + " \"\"\"\n" + " #store the fitness values of each cell\n" + " tot = []\n" + " #iterate through each cell\n" + " for cell in population:\n" + " \n" + " #calculate the bp_distance of each chromosome using the cell's structure\n" + " bp_distance_1 = bp_distance(cell.structure_1[-1], ss_to_bp(target))\n" + " bp_distance_2 = bp_distance(cell.structure_2[-1], ss_to_bp(target))\n" + " \n" + " #use the bp_distances and the above fitness equation to calculate the fitness of each chromosome\n" + " fitness_1 = math.exp((beta * bp_distance_1 / float(len(cell.sequence_1))))\n" + " fitness_2 = math.exp((beta * bp_distance_2 / float(len(cell.sequence_2))))\n" + "\n" + " #get the fitness of the whole cell by multiplying the fitnesses of each chromosome\n" + " cell.fitness = fitness_1 * fitness_2\n" + " \n" + " #store the bp_distance of each chromosome.\n" + " cell.bp_distance_1 = bp_distance_1\n" + " cell.bp_distance_2 = bp_distance_2\n" + " \n" + " \n" + " #add the cell's fitness value to the list of all fitness values (used for normalization later)\n" + " tot.append(cell.fitness)\n" + "\n" + " #normalization factor is sum of all fitness values in population\n" + " norm = np.sum(tot)\n" + " #divide all fitness values by the normalization factor.\n" + " for cell in population:\n" + " cell.fitness = cell.fitness / norm\n" + "\n" + " return None\n" + "\n" + "compute_fitness(pop, target)\n" + "for cell in pop[:10]:\n" + " print(cell.fitness, cell.bp_distance_1, cell.bp_distance_2)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "0.013612068231863143 6 6\n" + "0.007470461436952334 9 9\n" + "0.009124442203822766 8 8\n" + "0.007470461436952334 9 9\n" + "0.013612068231863143 6 6\n" + "0.007470461436952334 9 9\n" + "0.02030681957427158 4 4\n" + "0.009124442203822766 8 8\n" + "0.006116296518116008 10 10\n" + "0.009124442203822766 8 8" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "## Introducing diversity: Mutations\n" + "\n" + "Evolution would go nowhere without random mutations. While mutations are technically just random errors in the copying of genetic material, they are essential in the process of evolution. This is because they introduce novel diversity to populatons, which with a low frequency can be beneficial. And when a beneficial mutation arises (i.e. a mutation that increases fitness, or replication probability) it quickly takes over the population and the populatioin as a whole has a higher fitness.\n" + "\n" + "Implementing mutations in our model will be quite straightforward. Since mutations happen at the genotype/sequence level, we simply have to iterate through our strings of nucleotides (sequences) and randomly introduce changes." + )); + + qDebug() << "command entry 10"; + testCommandEntry(entry, 10, 1, QString::fromUtf8( + "def mutate(sequence, mutation_rate=0.001):\n" + " \"\"\"Takes a sequence and mutates bases with probability mutation_rate\"\"\"\n" + " \n" + " #start an empty string to store the mutated sequence\n" + " new_sequence = \"\"\n" + " #boolean storing whether or not the sequence got mutated\n" + " mutated = False\n" + " #go through every bp in the sequence\n" + " for bp in sequence:\n" + " #generate a random number between 0 and 1\n" + " r = random.random()\n" + " #if r is below mutation rate, introduce a mutation\n" + " if r < mutation_rate:\n" + " #add a randomly sampled nucleotide to the new sequence\n" + " new_sequence = new_sequence + random.choice(\"aucg\")\n" + " mutated = True\n" + " else:\n" + " #if the mutation condition did not get met, copy the current bp to the new sequence\n" + " new_sequence = new_sequence + bp\n" + " \n" + " return (new_sequence, mutated)\n" + "\n" + "sequence_to_mutate = 'AAAAGGAGUGUGUAUGU'\n" + "print(sequence_to_mutate)\n" + "print(mutate(sequence_to_mutate, mutation_rate=0.5))" + )); + testTextResult(entry, 0, QString::fromUtf8( + "AAAAGGAGUGUGUAUGU\n" + "('AcAAGgAuUGUuaAaGa', True)" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "## Selection\n" + "\n" + "The final process in this evolution model is selection. Once you have populations with a diverse range of fitnesses, we need to select the fittest individuals and let them replicate and contribute offspring to the next generation. In real populations this is just the process of reproduction. If you're fit enough you will be likely to reproduce more than another individual who is not as well suited to the environment.\n" + "\n" + "In order to represent this process in our model, we will use the fitness values that we assigned to each Cell earlier and use that to select replicating Cells. This is equivalent to sampling from a population with the sampling being weighted by the fitness of each Cell. Thankfully, `numpy.random.choice` comes to the rescue here. Once we have sampled enough Cells to build our next generation, we introduce mutations and compute the fitness values of the new generation." + )); + + qDebug() << "command entry 11"; + testCommandEntry(entry, 11, 1, QString::fromUtf8( + "def selection(population, target, mutation_rate=0.001, beta=-2):\n" + " \"\"\"\n" + " Returns a new population with offspring of the input population\n" + " \"\"\"\n" + "\n" + " #select the sequences that will be 'parents' and contribute to the next generation\n" + " parents = np.random.choice(population, len(population), p=[rna.fitness for rna in population], replace=True)\n" + "\n" + " #build the next generation using the parents list\n" + " next_generation = [] \n" + " for i, p in enumerate(parents):\n" + " new_cell = Cell(p.sequence_1, p.structure_1, p.sequence_2, p.structure_2)\n" + " new_cell.id = i\n" + " new_cell.parent = p.id\n" + " \n" + " next_generation.append(new_cell)\n" + "\n" + " #introduce mutations in next_generation sequeneces and re-fold when a mutation occurs\n" + " for rna in next_generation: \n" + " mutated_sequence_1, mutated_1 = mutate(rna.sequence_1, mutation_rate=mutation_rate)\n" + " mutated_sequence_2, mutated_2 = mutate(rna.sequence_2, mutation_rate=mutation_rate)\n" + " \n" + " if mutated_1:\n" + " rna.sequence_1 = mutated_sequence_1\n" + " rna.structure_1 = nussinov(mutated_sequence_1)\n" + " if mutated_2:\n" + " rna.sequence_2 = mutated_sequence_2\n" + " rna.structure_2 = nussinov(mutated_sequence_2)\n" + " else:\n" + " continue\n" + "\n" + " #update fitness values for the new generation\n" + " compute_fitness(next_generation, target, beta=beta)\n" + "\n" + " return next_generation\n" + "\n" + "next_gen = selection(pop, target)\n" + "for cell in next_gen[:10]:\n" + " print(cell.sequence_1)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "GAGCUUUAAACUAAUCUAAU\n" + "GCAAAAGACAGCCaGCAUCA\n" + "UUUCUUUUUCCCCCCCGAUG\n" + "AAGCCCUAGGUAUGUUGUAG\n" + "AAGAAGUACCCAUACAGAUG\n" + "CUAAGACGACUUUUAGUUCA\n" + "ACCUGCCAUCAUCACCAGAC\n" + "AGAAUUGCUGUUCUCUAUCU\n" + "GCGGAUCAUACUCCAAGUCG\n" + "GAGCUUUAAACUAAUCUAAU" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "## Gathering information on our populations\n" + "\n" + "Here we simply store some statistics (in a dictionary) on the population at each generation such as the average base pair distance and the average fitness of the populations. No coding to do here, it's not a very interesting function but feel free to give it a look." + )); + + qDebug() << "command entry 12"; + testCommandEntry(entry, 12, QString::fromUtf8( + "def record_stats(pop, population_stats):\n" + " \"\"\"\n" + " Takes a population list and a dictionary and updates it with stats on the population.\n" + " \"\"\"\n" + " generation_bp_distance_1 = [rna.bp_distance_1 for rna in pop]\n" + " generation_bp_distance_2 = [rna.bp_distance_2 for rna in pop]\n" + "\n" + " mean_bp_distance_1 = np.mean(generation_bp_distance_1)\n" + " mean_bp_distance_2 = np.mean(generation_bp_distance_2)\n" + " \n" + " mean_fitness = np.mean([rna.fitness for rna in pop])\n" + "\n" + "\n" + " population_stats.setdefault('mean_bp_distance_1', []).append(mean_bp_distance_1)\n" + " population_stats.setdefault('mean_bp_distance_2', []).append(mean_bp_distance_2)\n" + " \n" + " population_stats.setdefault('mean_fitness', []).append(mean_fitness)\n" + " \n" + " return None" + )); + + testMarkdown(entry, QString::fromUtf8( + "## And finally.... evolution\n" + "\n" + "We can put all the above parts together in a simple function that does the following:\n" + "\n" + "1. start a new population and compute its fitness\n" + "2. repeat the following for the desired number of generations:\n" + " 1. record statistics on population\n" + " 2. perform selection+mutation\n" + " 3. store new population\n" + "\n" + "And that's it! We have an evolutionary reactor!" + )); + + qDebug() << "command entry 13"; + testCommandEntry(entry, 13, QString::fromUtf8( + "def evolve(target, generations=10, pop_size=100, mutation_rate=0.001, beta=-2):\n" + " \"\"\"\n" + " Takes target structure and sets up initial population, performs selection and iterates for desired generations.\n" + " \"\"\"\n" + " #store list of all populations throughotu generations [[cells from generation 1], [cells from gen. 2]...]\n" + " populations = []\n" + " #start a dictionary that will hold some stats on the populations.\n" + " population_stats = {}\n" + " \n" + " #get a starting population\n" + " initial_population = populate(target, pop_size=pop_size)\n" + " #compute fitness of initial population\n" + " compute_fitness(initial_population, target)\n" + "\n" + " #set current_generation to initial population.\n" + " current_generation = initial_population\n" + "\n" + " #iterate the selection process over the desired number of generations\n" + " for i in range(generations):\n" + "\n" + " #let's get some stats on the structures in the populations \n" + " record_stats(current_generation, population_stats)\n" + " \n" + " #add the current generation to our list of populations.\n" + " populations.append(current_generation)\n" + "\n" + " #select the next generation\n" + " new_gen = selection(current_generation, target, mutation_rate=mutation_rate, beta=beta)\n" + " #set current generation to be the generation we just obtained.\n" + " current_generation = new_gen \n" + " \n" + " return (populations, population_stats)" + )); + + testMarkdown(entry, QString::fromUtf8( + "Try a run of the `evolve()` function." + )); + + qDebug() << "command entry 14"; + testCommandEntry(entry, 14, QString::fromUtf8( + "pops, pops_stats = evolve(\"(((....)))\", generations=20, pop_size=1000, mutation_rate=0.005, beta=-2)" + )); + + testMarkdown(entry, QString::fromUtf8( + "Let's see if it actually worked by plotting the average base pair distance as a function of generations for both genes in each cell. We should expect a gradual decrease as the populations get closer to the target structure." + )); + + qDebug() << "command entry 15"; + testCommandEntry(entry, 15, 1, QString::fromUtf8( + "def evo_plot(pops_stats):\n" + " \"\"\"\n" + " Plot base pair distance for each chromosome over generations.\n" + " \"\"\"\n" + " for m in ['mean_bp_distance_1', 'mean_bp_distance_2']:\n" + " plt.plot(pops_stats[m], label=m)\n" + " plt.legend()\n" + " plt.xlabel(\"Generations\")\n" + " plt.ylabel(\"Mean Base Pair Distance\")\n" + " \n" + "evo_plot(pops_stats)" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "You should see a nice drop in base pair distance! Another way of visualizing this is by plotting a histogram of the base pair distance of all Cells in the initial population versus the final population." + )); + + qDebug() << "command entry 16"; + testCommandEntry(entry, 16, 1, QString::fromUtf8( + "def bp_distance_distributions(pops):\n" + " \"\"\"\n" + " Plots histograms of base pair distance in initial and final populations.\n" + " \"\"\"\n" + " #plot bp_distance_1 for rnas in first population\n" + " g = sns.distplot([rna.bp_distance_1 for rna in pops[0]], label='initial population')\n" + " #plot bp_distance_1 for rnas in first population\n" + " g = sns.distplot([rna.bp_distance_1 for rna in pops[-1]], label='final population')\n" + " g.set(xlabel='Mean Base Pair Distance')\n" + " g.legend()\n" + "bp_distance_distributions(pops)" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "## Studying our evolved sequences with some Population Genetics tools\n" + "\n" + "Now that we've generated some sequences, we can analyze them!\n" + "\n" + "So after several rounds of selection, what do we get? We have a bunch of different sequences. We would like a way to characterize this diversity. One important tool for doing this is by making what is known as phylogenetic trees. \n" + "\n" + "Phylogenetic trees tell us about which groups of similar sequences are present and how they are likely related in evolutionary time. \n" + "\n" + "There are several ways of building phylogenetic trees using BioPython. Here we will go over one type and I'll leave another one as an exercise.\n" + "\n" + "### UPGMA (Unweighted Pair Group Method with Arithmetic Means)\n" + "\n" + "This is basically a clustering method based on the distance (or number of differences) between every pair of sequences. It assumes that sequences that are more similar are more likely to be related than the other way around. \n" + "\n" + "For $N$ sequences, the algorithm builds an $NxN$ matrix that stores the distance between each sequence to every other sequence. The algorithm goes through this matrix and finds the pair of sequences that is most similar and merges it into a 'cluster' or in tree terms, connects them to a common node. This process is repeated until all the sequences have been assigned to a group. Refer to the wikipedia article on [UPGMA](https://en.wikipedia.org/wiki/UPGMA) for a more detailed explanation. \n" + "" + )); + + qDebug() << "command entry 18"; + testCommandEntry(entry, 18, QString::fromUtf8( + "from Bio import SeqIO\n" + "from Bio.Seq import Seq\n" + "from Bio.SeqRecord import SeqRecord\n" + "from Bio import AlignIO" + )); + + qDebug() << "command entry 19"; + testCommandEntry(entry, 19, QString::fromUtf8( + "sequences = []\n" + "#let's take the first 10 sequences of our population to keep things simple\n" + "for seq in pops[-1][:10]:\n" + " #store each sequence in the sequences list as a SeqRecord object\n" + " sequences.append(SeqRecord(Seq(seq.sequence_1), id=str(seq.id)))\n" + " \n" + "\n" + "#write our sequences to fasta format\n" + "with open(\"seq.fasta\", \"w+\") as f:\n" + " SeqIO.write(sequences, f, \"fasta\")" + )); + + testMarkdown(entry, QString::fromUtf8( + "The UPGMA algorithm requires a `MultipleSeqAlignment` object to build the distance matrix. So now that we have the `seq.fasta` file, we can give it to an online multiple sequence alignment tool. We can do this through BioPython but it requires some installation and setup so we will skip that for now. Go to the [MUSCLE Web Server](http://www.ebi.ac.uk/Tools/msa/muscle/) and give it the `seq.fasta` file. It will take a few seconds and it will give you an alignment and click *Download Alignment File*, copy paste the whole thing to a new file called `aln.clustal`. This is the alignment we will use to build our tree." + )); + + qDebug() << "command entry 21"; + testCommandEntry(entry, 21, QString::fromUtf8( + "#open the alignmnent file\n" + "with open(\"aln.clustal\", \"r\") as aln:\n" + " #use AlignIO to read the alignment file in 'clustal' format\n" + " alignment = AlignIO.read(aln, \"clustal\")" + )); + + qDebug() << "command entry 22"; + testCommandEntry(entry, 22, 1, QString::fromUtf8( + "from Bio.Phylo.TreeConstruction import DistanceCalculator\n" + "\n" + "#calculate the distance matrix\n" + "calculator = DistanceCalculator('identity')\n" + "#adds distance matrix to the calculator object and returns it\n" + "dm = calculator.get_distance(alignment)\n" + "print(dm)\n" + "" + )); + testTextResult(entry, 0, QString::fromUtf8( + "8\t0\n" + "7\t0.6\t0\n" + "0\t0.8\t0.6\t0\n" + "3\t1.0\t0.7\t0.4\t0\n" + "6\t1.0\t0.7\t0.4\t0.09999999999999998\t0\n" + "9\t0.8\t1.0\t0.5\t0.7\t0.6\t0\n" + "1\t0.9\t0.9\t0.8\t0.9\t0.8\t0.4\t0\n" + "2\t0.9\t0.9\t0.8\t0.9\t0.8\t0.4\t0.0\t0\n" + "4\t0.9\t0.9\t0.9\t1.0\t0.9\t0.5\t0.09999999999999998\t0.09999999999999998\t0\n" + "5\t0.9\t0.9\t0.9\t1.0\t0.9\t0.5\t0.09999999999999998\t0.09999999999999998\t0.0\t0\n" + "\t8\t7\t0\t3\t6\t9\t1\t2\t4\t5" + )); + entry = entry->next(); + + qDebug() << "command entry 23"; + testCommandEntry(entry, 23, QString::fromUtf8( + "from Bio.Phylo.TreeConstruction import DistanceTreeConstructor\n" + "\n" + "#initialize a DistanceTreeConstructor object based on our distance calculator object\n" + "constructor = DistanceTreeConstructor(calculator)\n" + "\n" + "#build the tree\n" + "upgma_tree = constructor.build_tree(alignment)" + )); + + qDebug() << "command entry 24"; + testCommandEntry(entry, 24, 1, QString::fromUtf8( + "from Bio import Phylo\n" + "import pylab\n" + "#draw the tree\n" + "Phylo.draw(upgma_tree)" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "## Introducing mating to the model\n" + "\n" + "The populations we generated evolved asexually. This means that individuals do not mate or exchange genetic information. So to make our simulation a bit more interesting let's let the Cells mate. This is going to require a few small changes in the `selection()` function. Previously, when we selected sequences to go into the next generation we just let them provide one offspring which was a copy of itself and introduced mutations. Now instead of choosing one Cell at a time, we will randomly choose two 'parents' that will mate. When they mate, each parent will contribute one of its chromosomes to the child. We'll repeat this process until we have filled the next generation." + )); + + qDebug() << "command entry 25"; + testCommandEntry(entry, 25, 1, QString::fromUtf8( + "def selection_with_mating(population, target, mutation_rate=0.001, beta=-2):\n" + " next_generation = []\n" + " \n" + " counter = 0\n" + " while len(next_generation) < len(population):\n" + " #select two parents based on their fitness\n" + " parents_pair = np.random.choice(population, 2, p=[rna.fitness for rna in population], replace=False)\n" + " \n" + " #take the sequence and structure from the first parent's first chromosome and give it to the child\n" + " child_chrom_1 = (parents_pair[0].sequence_1, parents_pair[0].structure_1)\n" + "\n" + " #do the same for the child's second chromosome and the second parent.\n" + " child_chrom_2 = (parents_pair[1].sequence_2, parents_pair[1].structure_2)\n" + "\n" + "\n" + " #initialize the new child Cell witht he new chromosomes.\n" + " child_cell = Cell(child_chrom_1[0], child_chrom_1[1], child_chrom_2[0], child_chrom_2[1])\n" + "\n" + " #give the child and id and store who its parents are\n" + " child_cell.id = counter\n" + " child_cell.parent_1 = parents_pair[0].id\n" + " child_cell.parent_2 = parents_pair[1].id\n" + "\n" + " #add the child to the new generation\n" + " next_generation.append(child_cell)\n" + " \n" + " counter = counter + 1\n" + " \n" + " \n" + " #introduce mutations in next_generation sequeneces and re-fold when a mutation occurs (same as before)\n" + " for rna in next_generation: \n" + " mutated_sequence_1, mutated_1 = mutate(rna.sequence_1, mutation_rate=mutation_rate)\n" + " mutated_sequence_2, mutated_2 = mutate(rna.sequence_2, mutation_rate=mutation_rate)\n" + "\n" + " if mutated_1:\n" + " rna.sequence_1 = mutated_sequence_1\n" + " rna.structure_1 = nussinov(mutated_sequence_1)\n" + " if mutated_2:\n" + " rna.sequence_2 = mutated_sequence_2\n" + " rna.structure_2 = nussinov(mutated_sequence_2)\n" + " else:\n" + " continue\n" + "\n" + " #update fitness values for the new generation\n" + " compute_fitness(next_generation, target, beta=beta)\n" + "\n" + " return next_generation \n" + "\n" + "#run a small test to make sure it works\n" + "next_gen = selection_with_mating(pop, target)\n" + "for cell in next_gen[:10]:\n" + " print(cell.sequence_1)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "CGUACCUGAAAAGCUAACUA\n" + "GGAACCGUAGGCUUUGCAAG\n" + "ACCUGCCAUCAUCACCAGAC\n" + "UAGAGGUAGAAUUGUAGGCU\n" + "GAUUCCGCGCGAAUACCGCG\n" + "GCAUCGAGUGCGCGGCAUAA\n" + "UAAUAAAAAGGUGCUGAUAU\n" + "GAUUCCGCGCGAAUACCGCG\n" + "UCACUAAACUCCUCGACUAC\n" + "AUGAUCAUGGUGAGCAGUUU" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "Now we just have to update our `evolution()` function to call the new `selection_with_mating()` function." + )); + + qDebug() << "command entry 26"; + testCommandEntry(entry, 26, QString::fromUtf8( + "def evolve_with_mating(target, generations=10, pop_size=100, mutation_rate=0.001, beta=-2):\n" + " populations = []\n" + " population_stats = {}\n" + " \n" + " initial_population = populate(target, pop_size=pop_size)\n" + " compute_fitness(initial_population, target)\n" + " \n" + " current_generation = initial_population\n" + "\n" + " #iterate the selection process over the desired number of generations\n" + " for i in range(generations):\n" + " #let's get some stats on the structures in the populations \n" + " record_stats(current_generation, population_stats)\n" + " \n" + " #add the current generation to our list of populations.\n" + " populations.append(current_generation)\n" + "\n" + " #select the next generation, but this time with mutations\n" + " new_gen = selection_with_mating(current_generation, target, mutation_rate=mutation_rate, beta=beta)\n" + " current_generation = new_gen \n" + " \n" + " return (populations, population_stats)" + )); + + testMarkdown(entry, QString::fromUtf8( + "Try out the new evolution model!" + )); + + qDebug() << "command entry 28"; + testCommandEntry(entry, 28, 1, QString::fromUtf8( + "pops_mating, pops_stats_mating = evolve_with_mating(\"(((....)))\", generations=20, pop_size=1000, beta=0)\n" + "\n" + "evo_plot(pops_stats_mating)" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "## Hardy Weinberg Equilibrium\n" + "\n" + "When we are presented with data from a population we don't know much about. It is often useful to try to learn whether there are any evolutionary or behavioural influences that are shaping population dynamics. This could be in the form of selective pressure, mating preference, genetic drift, mutations, gene flow, etc. So in order to detect if something like this is happening we need to develop a test. This is where Hardy Weinberg comes in. \n" + "\n" + "The Hardy Weinberg equilibrium states that \"allele and genotype frequencies remain constant in the absence of other evolutionary influences. (such as the ones we mentioned above)\" - Wikipedia.\n" + "\n" + "So if we can measure allele/genotype frequencies (which we can do because we have sequences), we can see whether the HW principle holds true. If it does not, then we can do more digging to see what could be happening to shift populations away from equilibrium.\n" + "\n" + "In order to do this we need to define an 'allele'. An allele (for our purproses) will be a locus (position in a sequence) that can take one of two states, a *reference* state or an *alternate* state. For example, we can look at locus number **5** (position 5 in our RNA sequences) and call reference **C**, and alternate **G**. If we are in HW we can predict the frequency of each allele in our population.\n" + "\n" + "To simplify our notation we will call the alternate allele *A* and the reference allele *a*. We can write the probability of each allele as $p_{A} + p_{a} = 1$. Since we are dealing with diploid populations, each individual will have two copies of each locus so it can be $p_{AA}, p{Aa}, p{aA}, p{aa}$. By simple probability laws we can get an expression for the probability of each genotype based on the probabilities of the single loci $p_{a}$ and $p_{A}$.\n" + "\n" + "$$p_{aa}\\simeq p_{a}^2$$\n" + "\n" + "$$p_{AA}\\simeq p_{A}^2$$\n" + "\n" + "$$p_{Aa,~aA} \\simeq 2 p_{a} p_{A}.$$\n" + "\n" + "Since it is hard to know what the true probability of observing either $p_{a}$ and $p_{A}$ we can estimate this probability from our data as follows:\n" + "\n" + "$$\\hat p_a=\\frac{2N_{aa}+N_{aA}}{2N}=1-\\hat p_A.$$\n" + "\n" + "Where $N$ denotes the number of each genotype that we observe in our sequences. \n" + "\n" + "Based on these estimates we can expect the following frequencies for each genotype: \n" + "\n" + "$N_{aa}\\simeq e_{aa}=N \\hat p_a^2$\n" + "\n" + "$N_{AA}\\simeq e_{AA}= N \\hat p_{A}^2$\n" + "\n" + "$N_{Aa,~aA} \\simeq e_{Aa} = 2 N \\hat p_{a} \\hat p_{A}.$\n" + "\n" + "Now we have expected values, and observed values. We need a test to determine whether we have a significant departure from the hypothesis of Hardy Weinberg equilibrium. The statistical test that is commonly used is known as the $\\chi^{2}$ test. If you take a look at the equation you'll see that the statistic simply takes the squared difference between our observed value and the expected value (divided by expected) and sums this for each possible genotype. The reason we take the squared difference is because we want to deal only with positive values, hence the name $\\chi^{2}$.\n" + "\n" + "$$X^2= \\frac{(N_{aa}-e_{aa})^2}{e_{aa}}+ \\frac{(N_{Aa}-e_{Aa})^2}{e_{Aa}}+ \\frac{(N_{AA}-e_{AA})^2}{e_{AA}}.$$\n" + "\n" + "The first thing we need to do is get alleles from our sequence data. This boils down to going through each sequence at the position of interest and counting the number of $AA$, $Aa$, $aa$ we get.\n" + "\n" + "\n" + "\\** the sections on Hardy Weinberg and F-statistics are adapted from Simon Gravel's HGEN 661 Notes" + )); + + qDebug() << "command entry 29"; + testCommandEntry(entry, 29, QString::fromUtf8( + "def allele_finder(pop, locus, ref, alt):\n" + " genotypes = []\n" + " for p in pop:\n" + " #get the nucleotide at the locus from the first chromosome \n" + " locus_1 = p.sequence_1[locus].upper()\n" + " #same for the second\n" + " locus_2 = p.sequence_2[locus].upper()\n" + " \n" + " #check that it is either ref or alt, we don't care about other alleles for now.\n" + " if locus_1 in (ref, alt) and locus_2 in (ref, alt):\n" + " #if the alelle is ref, store a value of 1 in allele_1, and 0 otherwise\n" + " allele_1 = int(locus_1 == ref)\n" + " #same for the second allele\n" + " allele_2 = int(locus_2 == ref)\n" + " \n" + " #add allele to our list of alleles as a tuple. \n" + " genotypes.append((allele_1, allele_2))\n" + " return genotypes" + )); + + qDebug() << "command entry 30"; + testCommandEntry(entry, 30, 1, QString::fromUtf8( + "pop_hw, stats_hw = evolve_with_mating(\"(((....)))\", pop_size=1000, generations=10, beta=0, mutation_rate=0.005)\n" + "alleles = allele_finder(pop_hw[-1], 5, 'C', 'G')\n" + "print(alleles[:10])" + )); + testTextResult(entry, 0, QString::fromUtf8( + "[(0, 0), (0, 0), (0, 1), (1, 0), (0, 1), (1, 0), (1, 0), (1, 0), (1, 0), (0, 1)]" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "Now that we have alleles represented in the right form, we can see if our population is at Hardy Weinberg equilibrium using the $\\chi_{2}$ test and the equations above." + )); + + qDebug() << "command entry 31"; + testCommandEntry(entry, 31, 1, QString::fromUtf8( + "from scipy import stats\n" + "from scipy.stats import chi2\n" + "\n" + "def hardy_weinberg_chi2_test(alleles):\n" + " \n" + " #store counts for N_AA, N_Aa/aA, N_aa\n" + " hom_ref_count = 0\n" + " het_count = 0\n" + " hom_alt_count = 0\n" + " \n" + " #each allele in the list alleles is in the form (0,0) or (0,1) or (1,0) or (1,1)\n" + " #count how many of each type we have\n" + " for a in alleles:\n" + " if (a[0]==0 and a[1]==0):\n" + " hom_ref_count += 1\n" + " elif ((a[0]==0 and a[1]==1) or (a[0]==1 and a[1]==0)):\n" + " het_count += 1\n" + " elif (a[0]==1 and a[1]==1):\n" + " hom_alt_count += 1\n" + " else:\n" + " continue\n" + " \n" + " #total number of genotypes: N\n" + " genotype_count = hom_ref_count + het_count + hom_alt_count\n" + "\n" + " #estimate p_a, p_A\n" + " alt_counts = (2 * hom_alt_count) + het_count\n" + " ref_counts = (2 * hom_ref_count) + het_count\n" + " \n" + " \n" + " #get expectations e_AA, e_aA,Aa, e_aa\n" + " hom_ref_expectation = ref_counts**2 / (4.*genotype_count) # the expected number of homozygote references \n" + " het_expectation = ref_counts * alt_counts / (2.*genotype_count) # the expected number of hets \n" + " hom_alt_expectation = alt_counts**2 / (4.*genotype_count) # the expected number of homozygote nonreferences \n" + "\n" + " #store observed values in list in the form [N_AA, N_aA,Aa, N_aa]\n" + " observations = [hom_ref_count, het_count, hom_alt_count]\n" + " #store expected values in the same form\n" + " expectations = [hom_ref_expectation, het_expectation, hom_alt_expectation]\n" + " \n" + " #start a dictionary that will store our results.\n" + " statistics = {\n" + " 'hom_ref': (hom_ref_count, hom_ref_expectation),\n" + " 'het': (het_count, het_expectation),\n" + " 'hom_alt': (hom_alt_count, hom_alt_expectation), \n" + " 'ref_counts': ref_counts, \n" + " 'alt_counts': alt_counts,\n" + " 'genotype_count': genotype_count\n" + " }\n" + "\n" + " #call scipy function for chi2 test.\n" + " chi_2_statistic = stats.chisquare(observations, f_exp=expectations, ddof=1, axis=0)\n" + " \n" + " #return chi2 and statistics dictionary\n" + " return (chi_2_statistic, statistics)\n" + "\n" + "hardy_weinberg_chi2_test(alleles)" + )); + testTextResult(entry, 0, QString::fromLatin1( + "(Power_divergenceResult(statistic=0.001476611280908458, pvalue=0.9693474730942313),\n" + " {'hom_ref': (81, 81.14693877551021),\n" + " 'het': (120, 119.70612244897958),\n" + " 'hom_alt': (44, 44.14693877551021),\n" + " 'ref_counts': 282,\n" + " 'alt_counts': 208,\n" + " 'genotype_count': 245})" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "Can we say that our population is at equilibrium? Can you find parameters for `evolution_with_mating()` that will give us populations outside of the HW equilibrium?" + )); + + testMarkdown(entry, QString::fromUtf8( + "## A brief interlude on the p-value\n" + "\n" + "Let's take a minute to understand what the p-value means. The p-value is a probability. Specifically, it is the probability of observing a value equal to or more extreme than that our statistic given the test distribution. So in our case, it is the probability of observing a $X^2$ greater than or equal to the one the test gives us under a $\\chi^2$ distribution. When this value is very small, it suggests that it is unlikely that we are sampling from our assumed 'null' distribution and that some other alternate distribution is the true distribution. So a low p-value here would be evidence against the neutral Hardy Weinberg model and would suggest that our population is experiencing some influences such as mating preference, selection, mutation etc.\n" + "\n" + "A lot of research bases its conclusions solely on p-value and it is important to be very wary of this bad practice. It has become a bad convention that people say a p-value lower than some arbitrary threshold means one's findings are significant. However, very often the p-value does not give us the whole story and we need to know about things like sample size, size of impact, reproducibility, power of the test, etc. (check this out [American Statistical Association statement on p-values](http://www.nature.com/news/statisticians-issue-warning-over-misuse-of-p-values-1.19503), [p-hacking](http://fivethirtyeight.com/features/science-isnt-broken/#part1), and [this](http://allendowney.blogspot.ca/2016/06/there-is-still-only-one-test.html))\n" + "\n" + "Let's just visualize this very quickly using the $\\chi^{2}_{1}$ distribution. You will see that the p-value corresponds to the shaded red area under the curve. That area is the probability of observing a value as extreme or more than the one we found. When that is a very small area, we can be more confident that our assumption of HW is false." + )); + + qDebug() << "command entry 32"; + testCommandEntry(entry, 32, 2, QString::fromUtf8( + "#number of samples to take from the x2 distribution.\n" + "number_of_samples = 1000\n" + "\n" + "range_points = 2000\n" + "range_start = 0\n" + "\n" + "degrees_of_freedom = 1\n" + "\n" + "range_end = chi2.ppf(1-1./number_of_samples, degrees_of_freedom)\n" + " \n" + "x_range = np.linspace(range_start, range_end, range_points) \n" + "plt.plot(x_range, chi2.pdf(x_range, degrees_of_freedom))\n" + "\n" + "#find the index value of our statistic value. you can put in different values here.\n" + "statistic = 0.5\n" + "\n" + "#find the index in x_range corresponding to the statistic value (within 0.01)\n" + "point = 0\n" + "for i, nb in enumerate(x_range):\n" + " if nb < statistic + .01 and nb > statistic - .01:\n" + " point = i\n" + "\n" + "#fill area under the curve representing p-value\n" + "plt.fill_between(x_range[point:], chi2.pdf(x_range, degrees_of_freedom)[point:], alpha=0.3, color=\"red\")\n" + "\n" + "plt.xlabel(\"X-statistic\")\n" + "plt.ylabel(r\"$\\chi^2_%d$\" % degrees_of_freedom)\n" + "" + )); + testTextResult(entry, 0, QString::fromUtf8( + "Text(0,0.5,'$\\\\chi^2_1$')" + )); + testImageResult(entry, 1); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "## Population structure: F-statistics\n" + "\n" + "The last topic we'll cover is F-statistics. \n" + "\n" + "Once we find that our population strays from the HW condition we can begin to ask why that is the case. Often this deviation from the expected allele frequencies under HW is due to mating preference. Hardy Weinberg assumes that all individuals in a population have an equal probability of mating with any other individual (random mating). However, when certain individuals prefer to mate with specific others (in real populations this can be due to culture, race, geographic barriers, etc.), you get what is known as population structure. Population structure means that we begin to see *sub-populations* within our total population where individuals prefer to mate within their sub-population. This biased mating will result in a higher number of homozygotes than we would expect under Hardy-Weinberg equilibrium. Simply because mating preferences will tend to drive populations toward similar genotypes. So if this is the case, and no other factors are biasing allele dynamics, within sub-populations we should have Hardy-Weinberg like conditions. \n" + "\n" + "For example, if Raptors fans prefer to mate with other Raptors fans, then when we consider only Raptors fans, we should observe random mating. Simply because if the mating preference criterion is 'being a Raptor's fan' then any Raptor's fan will be equally likely to mate with any other Raptor's fan so we have Hardy Weinberg again.\n" + "\n" + "Let's express this in quantities we can measure.\n" + "\n" + "From before we calculated the observed and expected number of heterozygotes in a population. Let's call these $\\hat H$ and $H_{IT}$ respectively. $\\hat H$ is just the count of heterozygotes, and $H_{IT}$ is the same as the expected number of heterozygotes we calculated earlier.\n" + "\n" + "We define a quantity $e_{IT}$ as a measure of the 'excess heterozygosity' in the population when we consider all individuals $I$ in the total population $T$. $e_{IT} > 1$ when we have more heterozygotes than we expect under HW. And $0 < e_{IT} < 1$ if we have less heterozygotes than we would expect under HW.\n" + "\n" + "\n" + "$$e_{IT}=\\frac{\\mbox{observed proportion of hets}}{\\mbox{expected proportion of hets}}=\\frac{ H_{obs}}{H_{IT}}$$\n" + "\n" + "We use $e_{IT}$ to define the statistic $F_{IT}$\n" + "\n" + "$$F_{IT}=1-e_{IT}$$\n" + "\n" + "So $F_{IT} > 0$ when we have a lack of heterozygotes and $F_{IT} < 0$ when we have an excess of heterozygotes. $F_{IT} = 0$ under random mating.\n" + "\n" + "When we have a subpropulation $S$ we can calculate the equivalent quantity but instead of considering heterozygosity in the whole population we only take a sub-population into account.\n" + "\n" + "$$e_{IS} = \\frac{H_{obs}}{H_{IS}}$$\n" + "\n" + "And lastly, we have $F_{ST}$. This one is not as intuitive to derive so I'm not including the derivation here. But basically it measure the excess heterozygosity in the total population due to the presence of two subpopulations with allele frequencies $p_{1}$ and $p_{2}$.\n" + "\n" + "$$F_{ST}= \\frac{(p_1-p_2)^2}{4 p (1-p)}$$" + )); + + qDebug() << "command entry 33"; + testCommandEntry(entry, 33, QString::fromUtf8( + "def F_statistics(total_pop, sub_pop_1, sub_pop_2): \n" + " \"\"\"\n" + " Uses definitions above and allele counts from two sub-populations and a total population to compute F-statistics.\n" + " \"\"\"\n" + " #recall that the input dictionaries each contain a tuple in the form(observed, expected) for each genotype\n" + " f_IT = 1 - total_pop['het'][0] / (1. * total_pop['het'][1])\n" + " \n" + " \n" + " f_IS_1 = 1 - sub_pop_1['het'][0] / (1. * sub_pop_1['het'][1])\n" + " f_IS_2 = 1 - sub_pop_2['het'][0] / (1. * sub_pop_2['het'][1]) \n" + " \n" + " p1 = sub_pop_1['ref_counts'] / (1. * sub_pop_1['genotype_count'])\n" + " p2 = sub_pop_2['ref_counts'] / (1. * sub_pop_2['genotype_count'])\n" + " \n" + " p = total_pop['ref_counts'] / (1. * total_pop['genotype_count'])\n" + " \n" + " f_ST = ((p1 - p2) ** 2) / (4.0 * p * (1 - p)) \n" + " \n" + " F_dict = {\n" + " 'f_IT': f_IT,\n" + " 'f_IS_1': f_IS_1,\n" + " 'f_IS_2': f_IS_2,\n" + " 'f_ST': f_ST\n" + " }\n" + " \n" + " return F_dict" + )); + + testMarkdown(entry, QString::fromUtf8( + "Let's get some data for our F-tests. First we need to evolve two populations indepenently of each other, to simulate isolated mating. Then to simulate the total population we combine the two sub-populations. We then use our `allele_finder()` function to get all the alleles, and the `hardy_weinberg_chi_2_test()` function to get our expected and observed counts. Finally we plug those into the `f_statistics()` function." + )); + + qDebug() << "command entry 34"; + testCommandEntry(entry, 34, QString::fromUtf8( + "generation = -1\n" + "\n" + "#run two independent simulations\n" + "sub_pop_1, sub_pop_1_stats= evolve_with_mating(\"(((....)))\", pop_size=1000, generations=15, beta=-1, mutation_rate=0.005)\n" + "sub_pop_2, sub_pop_2_stats= evolve_with_mating(\"(((....)))\", pop_size=1000, generations=15, beta=-1, mutation_rate=0.005)" + )); + + qDebug() << "command entry 35"; + testCommandEntry(entry, 35, 1, QString::fromUtf8( + "#merge the two populations into a total population.\n" + "total_pop = sub_pop_1[generation] + sub_pop_2[generation]\n" + "\n" + "\n" + "#choose a reference and alternate allele\n" + "ref_allele = \"A\"\n" + "alt_allele = \"G\"\n" + "\n" + "#choose the position of the locus of interest.\n" + "locus = 1\n" + "\n" + "#get list of alleles for each population\n" + "total_pop_alleles = allele_finder(total_pop, locus, ref_allele, alt_allele)\n" + "sub_pop_1_alleles = allele_finder(sub_pop_1[generation],locus, ref_allele, alt_allele)\n" + "sub_pop_2_alleles = allele_finder(sub_pop_2[generation],locus, ref_allele, alt_allele)\n" + "\n" + "#get homo/het expectations using hardy weinberg function\n" + "total_pop_counts = hardy_weinberg_chi2_test(total_pop_alleles)[1]\n" + "sub_pop_1_counts = hardy_weinberg_chi2_test(sub_pop_1_alleles)[1]\n" + "sub_pop_2_counts = hardy_weinberg_chi2_test(sub_pop_2_alleles)[1]\n" + "\n" + "#call f-statistics function\n" + "f_statistics = F_statistics(total_pop_counts, sub_pop_1_counts, sub_pop_2_counts)\n" + "print(f_statistics)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "{'f_IT': 0.054216581725422874, 'f_IS_1': 0.037559168553200184, 'f_IS_2': -0.08899167437557809, 'f_ST': -0.3885918781521351}" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "Try playing with different evolution parameters and see the effect on the different F-statistics. This workshop is a work in progress so there may be some biases in our simulation scheme that can make for come confusing F-statistics. If you come up with anything interesting I would love to know about it." + )); + + testMarkdown(entry, QString::fromUtf8( + "## Exercises / Extra Material\n" + "\n" + "### Programming Exercises\n" + "\n" + "i. *Heatmap of mutation rates vs. population sizes.* (short) \n" + "\n" + "Make a heatmap that plots the base pair distance of the average base pair distance of the population at generation `-1` for mutation rates $\\mu = \\{0, 0.001, 0.01, 0.1, 0.5\\}$ and population sizes $N=\\{10, 100, 1000, 10000\\}$. The resulting heatmap will be `5x4` dimensions. You may choose how many generations to evolve your populations, just plot the last one in the heatmap." + )); + + qDebug() << "command entry 36"; + testCommandEntry(entry, 36, 2, QString::fromUtf8( + "#lists of mutation rates and population sizes to test\n" + "mutation_rates = [0, 0.001, 0.01, 0.1, 0.5]\n" + "population_sizes = [10, 100, 1000, 10000]\n" + "\n" + "#number of generations to run each simulation\n" + "generations = 1\n" + "#target structure\n" + "target = \"(.((....)))\"\n" + "\n" + "#list to store our results\n" + "bp_distances = []\n" + "\n" + "#nested for loop to go through each combination of mutation rates and population sizes.\n" + "for m in mutation_rates:\n" + " #list to store the population size results for current mutation rate.\n" + " bp_distances_by_pop_size = []\n" + " #try each population size\n" + " for p in population_sizes:\n" + " #call evolve() with m and p \n" + " pop, pop_stats = evolve(target, mutation_rate=m, pop_size=p, generations=generations)\n" + " #add bp_distance of chromosome 1 at generation -1 (last generation) to bp_distances_by_pop_size\n" + " bp_distances_by_pop_size.append(pop_stats['mean_bp_distance_1'][-1])\n" + " #add to global list once all combinations of current mutation rate and population sizes.\n" + " bp_distances.append(bp_distances_by_pop_size)\n" + " \n" + "#use bp_distances matrxi to make a heatmap\n" + "sns.heatmap(bp_distances)\n" + "\n" + "#labels\n" + "plt.xlabel(\"Population Size\")\n" + "#xticks/yticks takes a list of numbers that specify the position of the ticks and a list with the tick labels\n" + "plt.xticks([i + .5 for i in range(len(population_sizes))], population_sizes)\n" + "plt.ylabel(\"Mutation Rate\")\n" + "plt.yticks([i + .5 for i in range(len(mutation_rates))], mutation_rates)" + )); + testTextResult(entry, 0, QString::fromLatin1( + "([,\n" + " ,\n" + " ,\n" + " ,\n" + " ],\n" + " )" + )); + testImageResult(entry, 1); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "ii. *Introduce mating preferences within a population.* (medium length) \n" + "\n" + "Modify the `selection_with_mating()` function to allow for mating preferences within a population. In our example above we were just running two independent simulations to study barriers to gene flow. But now you will implement mating preferences within a single simulation. Your function will assign each Cell a new attribute called `self.preference` which will take a string value denoting the mating type the current cell prefers to mate with. For example we can have a population with three mating types: $\\{A, B, C\\}$. Your function will randomly assign preferences to each cell in the initial population. We will define a preference between types $A$ and $B$ as the probability that two cells of those given types will mate if selected. \n" + "\n" + "$$\n" + "preferences(A,B,C) = \n" + "\\begin{bmatrix}\n" + " 0.7 & 0.1 & 0.2 \\\\\n" + " 0.1 & 0.9 & 0 \\\\\n" + " 0.2 & 0 & 0.8 \\\\\n" + "\\end{bmatrix}\n" + "$$\n" + "\n" + "Once you selected two potential parents for mating (as we did earlier) you will use the matrix to evaluate whether or not the two parents will mate and contribute an offspring to the next generation. " + )); + + qDebug() << "command entry 37"; + testCommandEntry(entry, 37, 1, QString::fromUtf8( + "def populate_with_preferences(target, preference_types, pop_size=100):\n" + " \n" + " population = []\n" + "\n" + " for i in range(pop_size):\n" + " #get a random sequence to start with\n" + " sequence = \"\".join([random.choice(\"AUCG\") for _ in range(len(target))])\n" + " #use nussinov to get the secondary structure for the sequence\n" + " structure = nussinov(sequence)\n" + " #add a new Cell object to the population list\n" + " new_cell = Cell(sequence, structure, sequence, structure)\n" + " new_cell.id = i\n" + " new_cell.parent = i\n" + " \n" + " #assign preference\n" + " new_cell.preference = random.choice(preference_types)\n" + " population.append(new_cell)\n" + " \n" + " return population\n" + "\n" + "def selection_with_mating_preference(population, target, preference_matrix, preference_types, mutation_rate=0.001, beta=-2):\n" + " next_generation = []\n" + " \n" + " counter = 0\n" + " while len(next_generation) < len(population):\n" + " #select two parents based on their fitness\n" + " parents_pair = np.random.choice(population, 2, p=[rna.fitness for rna in population], replace=False)\n" + " \n" + " #look up probabilty of mating in the preference_matrix\n" + " mating_probability = preference_matrix[parents_pair[0].preference][parents_pair[1].preference]\n" + " \n" + " r = random.random()\n" + " #if random number below mating_probability, mate the Cells as before\n" + " if r < mating_probability:\n" + " #take the sequence and structure from the first parent's first chromosome and give it to the child\n" + " child_chrom_1 = (parents_pair[0].sequence_1, parents_pair[0].structure_1)\n" + "\n" + " #do the same for the child's second chromosome and the second parent.\n" + " child_chrom_2 = (parents_pair[1].sequence_2, parents_pair[1].structure_2)\n" + "\n" + "\n" + " #initialize the new child Cell witht he new chromosomes.\n" + " child_cell = Cell(child_chrom_1[0], child_chrom_1[1], child_chrom_2[0], child_chrom_2[1])\n" + "\n" + " #give the child and id and store who its parents are\n" + " child_cell.id = counter\n" + " child_cell.parent_1 = parents_pair[0].id\n" + " child_cell.parent_2 = parents_pair[1].id\n" + " \n" + " #give the child a random preference\n" + " child_cell.preference = random.choice(preference_types)\n" + "\n" + " #add the child to the new generation\n" + " next_generation.append(child_cell)\n" + "\n" + " counter = counter + 1\n" + " \n" + " \n" + " #introduce mutations in next_generation sequeneces and re-fold when a mutation occurs (same as before)\n" + " for rna in next_generation: \n" + " mutated_sequence_1, mutated_1 = mutate(rna.sequence_1, mutation_rate=mutation_rate)\n" + " mutated_sequence_2, mutated_2 = mutate(rna.sequence_2, mutation_rate=mutation_rate)\n" + "\n" + " if mutated_1:\n" + " rna.sequence_1 = mutated_sequence_1\n" + " rna.structure_1 = nussinov(mutated_sequence_1)\n" + " if mutated_2:\n" + " rna.sequence_2 = mutated_sequence_2\n" + " rna.structure_2 = nussinov(mutated_sequence_2)\n" + " else:\n" + " continue\n" + "\n" + " #update fitness values for the new generation\n" + " compute_fitness(next_generation, target, beta=beta)\n" + "\n" + " return next_generation \n" + "\n" + "\n" + "def evolve_with_mating_preferences(target, preference_types, preference_matrix,\\\n" + " generations=10, pop_size=100, mutation_rate=0.001, beta=-2):\n" + " populations = []\n" + " population_stats = {}\n" + " \n" + " initial_population = populate_with_preferences(target, preference_types, pop_size=pop_size)\n" + " compute_fitness(initial_population, target)\n" + " \n" + " current_generation = initial_population\n" + "\n" + " #iterate the selection process over the desired number of generations\n" + " for i in range(generations):\n" + " #let's get some stats on the structures in the populations \n" + " record_stats(current_generation, population_stats)\n" + " \n" + " #add the current generation to our list of populations.\n" + " populations.append(current_generation)\n" + "\n" + " #select the next generation, but this time with mutations\n" + " new_gen = selection_with_mating_preference(current_generation, target, preference_matrix, \\\n" + " preference_types, mutation_rate=mutation_rate, beta=beta)\n" + " current_generation = new_gen \n" + " \n" + " return (populations, population_stats)\n" + "\n" + "\n" + "\n" + "#run a small test to make sure it works\n" + "target = \".(((....)))\"\n" + "#for convenience, let's give the preference types integer values in sequential order\n" + "preference_types = [0,1,2]\n" + "\n" + "preference_matrix = np.array([[0.7, 0.1, 0.2],[0.1, 0.9, 0],[0.2, 0, 0.8]])\n" + " \n" + "pops, pop_stats = evolve_with_mating_preferences(target, preference_types, preference_matrix)\n" + "\n" + "for cell in pops[-1][:10]:\n" + " print(cell.sequence_1)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "UAUCUCUAGAA\n" + "UCAAACGGUUU\n" + "CCUAGACUUUC\n" + "UAUCUCUAGAA\n" + "CCUAGACUUUC\n" + "GGCAaUGGUGC\n" + "GGCAaUGGUGC\n" + "CGGUGCCAUGG\n" + "CCCGGUUACGU\n" + "CGGGGAGUUUU" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "### Population Genetics / Bioinformatics Exercises\n" + "\n" + "*Exercise 1. Make a tree using maximum parsimony.*\n" + "\n" + "We saw how to make trees using a distance score. Another popular method is known as the maximum parsimony approach. I won't go into too much detail on this since we are short on time, but I will give a quick intro and we'll look at how ot make a tree using maximum parsimony.\n" + "\n" + "This approach is based on the principle of parsimony, which states that the simplest explanation for our data is the most likely to be true. So given an alignment, we assume that the best tree is the one that minimizes the number of changes, or mutations. This is often a reasonable assumption to make since mutation rates in real populations are generally low, and things like back-mutations (e.g. A --> C --> A) are unlikely. Computing the tree that that maximizes parsimony directly is a difficult task, but evaluating the parsimony score of a tree given the tree is easy. So this approach basically generates many random trees for the data and scores them based on parsimony keeping the most parsimonious tree. Take a look at [the biopython manual to work through this example](http://biopython.org/wiki/Phylo), and [this one](http://biopython.org/DIST/docs/api/Bio.Phylo.TreeConstruction.ParsimonyTreeConstructor-class.html).\n" + "\n" + "Since we already have an alignment (`aln.clustal`) we will just re-use it and make a maximum parsimony tree instead. " + )); + + qDebug() << "command entry 38"; + testCommandEntry(entry, 38, 1, QString::fromUtf8( + "from Bio.Phylo.TreeConstruction import *\n" + "\n" + "#open our alignment file (or make a new one if you want)\n" + "with open('aln.clustal', 'r') as align:\n" + " aln = AlignIO.read(align, 'clustal')\n" + "\n" + "#create a parsimony scorer object\n" + "scorer = ParsimonyScorer()\n" + "#the searcher object will search through possible trees and score them.\n" + "searcher = NNITreeSearcher(scorer)\n" + "\n" + "#takes our searcher object and a seed tree (upgma_tree) to find the best tree\n" + "constructor = ParsimonyTreeConstructor(searcher, upgma_tree)\n" + "\n" + "#build the tree \n" + "parsimony_tree = constructor.build_tree(aln)\n" + "\n" + "#draw the tree\n" + "Phylo.draw(parsimony_tree)" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "*Exercise 2. Bootstrapping*\n" + "\n" + "We just saw two methods of growing phylogenetic trees given an alignment. However, as we saw with the maximum parsimony approach, there can be many different trees for a single data set. How do we know our tree is a good representation of the data? By 'good' here we will instead use the word 'robust'. Is the tree we use too sensitive to the particularities of the data we gave it? If we make a small change in the sequence will we get a very different tree? Normally these problems would be addressed by re-sampling and seeing if we obtain similar results. But we can't really re-sample evolution. It happened once and we can't make it happen again. So we use something called *bootstrapping* which is a technique often used in statistics where instead of generating new data, you re-sample from your present data.\n" + "\n" + "So we have a multiple sequence alignment with $M$ sequences (rows) each with sequences of length $N$ nucleotides (columns). For each row, we can randomly sample $N$ nucleotides with replacement to make a new 'bootstrapped' sequence also of length $N$. Think of it as a kind of shuffling of the data. This gives us a whole new alignment that we can again use to make a new tree.\n" + "\n" + "This process is repeated many times to obtain many trees. The differences in topology (shape/structure) of the trees we obtained are assessed. If after this shuffling/perturbations we still get similar enough looking trees we can say that our final tree is robust to small changes in the data. ([some more reading on this](http://projecteuclid.org/download/pdf_1/euclid.ss/1063994979))\n" + "\n" + "Let's run a small example of this using the bootstrapping functions in `BioPython`." + )); + + qDebug() << "command entry 39"; + testCommandEntry(entry, 39, 1, QString::fromUtf8( + "from Bio.Phylo.Consensus import *\n" + "\n" + "#open our alignment file.\n" + "with open('aln.clustal', 'r') as align:\n" + " aln = AlignIO.read(align, 'clustal')\n" + "\n" + "#take 5 bootstrap samples from our alignment\n" + "bootstraps = bootstrap(aln,5)\n" + "\n" + "#let's print each new alignment in clustal format. you should see 5 different alignments.\n" + "for b in bootstraps:\n" + " print(b.format('clustal'))" + )); + testTextResult(entry, 0, QString::fromUtf8( + "CLUSTAL X (1.81) multiple sequence alignment\n" + "\n" + "\n" + "8 GAAGAGACAC\n" + "7 GGGGGAGCGC\n" + "0 GCCACAGCGC\n" + "3 ACCACAGUGU\n" + "6 CCCACAGUGU\n" + "9 CCCACUAGAG\n" + "1 CCCUCUCGCG\n" + "2 CCCUCUCGCG\n" + "4 CUUUUUCGCG\n" + "5 CUUUUUCGCG\n" + " \n" + "\n" + "\n" + "\n" + "CLUSTAL X (1.81) multiple sequence alignment\n" + "\n" + "\n" + "8 GGAUUUCUUA\n" + "7 GAGCCCCCCG\n" + "0 AAGGGGCGGG\n" + "3 AAGGGGUGGG\n" + "6 AAGGGGUGGG\n" + "9 AUAUUUGUUA\n" + "1 UUCUUUGUUC\n" + "2 UUCUUUGUUC\n" + "4 UUCUUUGUUC\n" + "5 UUCUUUGUUC\n" + " \n" + "\n" + "\n" + "\n" + "CLUSTAL X (1.81) multiple sequence alignment\n" + "\n" + "\n" + "8 UCUUGAGAUC\n" + "7 CCCGGGGGGC\n" + "0 GCGAGGGCAC\n" + "3 GUGCAGACCU\n" + "6 GUGCCGCCCU\n" + "9 UGUACACCAG\n" + "1 UGUGCCCCGG\n" + "2 UGUGCCCCGG\n" + "4 UGUGCCCUGG\n" + "5 UGUGCCCUGG\n" + " \n" + "\n" + "\n" + "\n" + "CLUSTAL X (1.81) multiple sequence alignment\n" + "\n" + "\n" + "8 GGUGCGCAUG\n" + "7 GACGCAUGGG\n" + "0 AAGGUAAGAA\n" + "3 AAGAUAUGCA\n" + "6 AAGCUAUGCA\n" + "9 AUUCUUAAAA\n" + "1 UUUCAUACGU\n" + "2 UUUCAUACGU\n" + "4 UUUCAUACGU\n" + "5 UUUCAUACGU\n" + " \n" + "\n" + "\n" + "\n" + "CLUSTAL X (1.81) multiple sequence alignment\n" + "\n" + "\n" + "8 GCUAGGAACC\n" + "7 GCGGGGGGCU\n" + "0 AUACGGGGCA\n" + "3 AUCCAAGGUU\n" + "6 AUCCCCGGUU\n" + "9 AUACCCAAGA\n" + "1 UAGCCCCCGA\n" + "2 UAGCCCCCGA\n" + "4 UAGUCCCCGA\n" + "5 UAGUCCCCGA" + )); + entry = entry->next(); + + qDebug() << "command entry 40"; + testCommandEntry(entry, 40, 5, QString::fromUtf8( + "#now we want to use the bootstrapping to make new trees based on the new samples. we'll go back to making UPGMA trees.\n" + "\n" + "#start a calculator that uses sequence identity to calculate differences\n" + "calculator = DistanceCalculator('identity')\n" + "#start a distance tree constructor object \n" + "constructor = DistanceTreeConstructor(calculator)\n" + "#generate 5 bootstrap UPGMA trees\n" + "trees = bootstrap_trees(aln, 5, constructor)\n" + "\n" + "#let's look at the trees. (if you have few samples, short sequences the trees might look very similar)\n" + "for t in trees:\n" + " Phylo.draw(t)" + )); + testImageResult(entry, 0); + testImageResult(entry, 1); + testImageResult(entry, 2); + testImageResult(entry, 3); + testImageResult(entry, 4); + entry = entry->next(); + + qDebug() << "command entry 41"; + testCommandEntry(entry, 41, 1, QString::fromUtf8( + "#biopython gives us a useful function that puts all this together by bootstrapping trees and making a 'consensus' tree.\n" + "consensus_tree = bootstrap_consensus(aln, 100, constructor, majority_consensus)\n" + "Phylo.draw(consensus_tree)" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "*Exercise 3. T-tests*\n" + "\n" + "Similarly to the $\\chi^{2}$ test we saw for testing deviations from HW equilibrium, we can use a T-test to compare differences in means between two independent samples. We can use this to revisit a the first programming question in the exercsies section. Does mutation rate and population size have an effect on the fitness of populations? We can translate this question to, is there a difference in the mean base pair distance between populations under different mutation and population size regimes?\n" + "\n" + "Scipy has a very useful function that implements the T-test called `scipy.stats.ttest_ind`. Run two independent simulations (with different mutation rates) and compute the difference in mean bp distance between the two at their final generation. Store the populations in two different variables. Give a list of `bp_distance_1` values for each memeber of the population to `ttest_ind()`. \n" + "\n" + "Make sure to read teh `ttest_ind()` documentation, particularly about the argumetn `equal_var`. What should we set it to?" + )); + + qDebug() << "command entry 42"; + testCommandEntry(entry, 42, 1, QString::fromUtf8( + "import collections\n" + "\n" + "target = \"..(((....).))\"\n" + "\n" + "#run two simulations\n" + "hi_mut_pop, hi_mut_stats = evolve(target, generations=5, pop_size=1000, mutation_rate=0.5)\n" + "lo_mut_pop, hi_mut_stats = evolve(target, generations=5, pop_size=1000, mutation_rate=0.05)\n" + "\n" + "#store lits of base pair distances for each population at last generation.\n" + "hi_bps = [p.bp_distance_1 for p in hi_mut_pop[-1]]\n" + "lo_bps = [p.bp_distance_1 for p in lo_mut_pop[-1]]\n" + "\n" + "#run the \n" + "stats.ttest_ind(hi_bps, lo_bps, equal_var=False)" + )); + testTextResult(entry, 0, QString::fromLatin1( + "Ttest_indResult(statistic=1.3671266704990508, pvalue=0.17188793847221653)" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "### Bonus! (difficult programming exercise)\n" + "1. *Nussinov Algorithm (Only try this if you are feeling brave and are done with the other exercises or are interested in getting a taste of Computer Science. It is beyond the scope of this workshop.)*\n" + "\n" + "There are several approaches for solving this problem, we will look at the simplest one here which is known as the Nussinov Algorithm. This algorithm is a popular example of a class of algorithms know as dynamic programming algorithms. The main idea behind these algorithms is that we can break down the problem into many subproblems which are easier to compute than the full problem. Once we have obtained the solution for the subproblems, we can retrieve the solution to the full problem by doing something called a backtrace (more on the backtrace later). \n" + "\n" + "Here, the problem is obtaining the optimal pairing on a string of nucleotides. In order to know how good our structure is, we assign a score to it. One possible scoring scheme could be adding 1 to the score per paired set of nucleotides, and 0 otherwise. So in other words, we want a pairing that will give us the highest possible score. We can write this quantity as $OPT(i, j)$ where $i$ and $j$ are the indices of the sequence between which we obtain the pairing score. Our algorithm is therefore going to compute a folding score for all substrings bound by $i$ and $j$ and store the value in what is known as a dynamic programming table. Our dynamic programming table will be a $N$ x $N$ array where $N$ is the length of our sequence. So now that we have a way of measuring how good a structure is, we need a way to evaluate scores given a subsequence. To do this, we set some rules on the structure of an RNA sequence:\n" + "\n" + "\n" + "If $i$ and $j$ form a pair:\n" + "1. The pair $i$ and $j$ must form a valid watson-crick pair.\n" + "2. $i < j-4$. This ensures that bonding is not happening between positions that are too close to each other, which would produce steric clashes.\n" + "3. If pair $(i,j)$ and $(k, l)$ are in the structure, then $i < k < j < l$. This ensures that there is no crossing over of pairs which would result in pseudoknots.\n" + "4. No base appears in more than one pair.\n" + "\n" + "Using these rules we can begin to build our algorithm. The first part of our algorithm needs to take as input indices $i$ and $j$ and return the value $OPT(i,j)$ which is the optimal score of a structure between $i$ and $j$. We start by thinking about values of $i$ and $j$ for which we can immediately know the solution, this is known as a 'base case'. This is a case where the solution is known and no further recursion is required. Once the algorithm reaches the base case, it can return a solution and propagate it upward to the first recursive call. So once we have reached $i$ and $j$ that are too close to form a structure (rule number 2), we know that the score is 0. \n" + "\n" + "Otherwise, we must weigh the possibility of forming a pair or not forming a pair. If $i$ and $j$ are unpaired, then $OPT(i,j)$ is just $OPT(i, j-1)$ since the score will not increase for unpaired indices. \n" + "\n" + "The other case is that $i$ is paired to some index $t$ on the interval $[i,j]$. We then add 1 to the score and consider the structure formed before and after the pairing between $i$ and $t$. We can write these two cases as $OPT(i, t-1)$ and $OPT(t+1, j)$. But how do we know which $t$ to pair $i$ with? Well we simply try all possible values of $t$ within the allowed range and choose the best one. \n" + "\n" + "All of this can be summed up as follows:\n" + "\n" + "$$ OPT(i,j) = max\\begin{cases}\n" + " OPT(i, j-1) \\quad \\text{If $i$ and $j$ are not paired with each other.}\\\\\n" + " max(1 + OPT(i, t-1) + OPT(t+1, j)) \\quad \\text{Where we try all values of $t$ < j - 4}\n" + " \\end{cases}$$\n" + "\n" + "\n" + "We can now use this recursion to fill our dynamic programming table. Once we have filled the table with scores, we can retrieve the optimal folding by a process called backtracking. We won't go into detail on how this works, but the main idea is that we can start by looking at the entry containing the score for the full sequence $OPT[0][N]$. We can then look at adjacent entries and deduce which case (pairing or not pairing) resulted in the current value. We can continue like this for the full table until we have retrieved the full structure." + )); + + qDebug() << "command entry 43"; + testCommandEntry(entry, 43, 1, QString::fromUtf8( + "min_loop_length = 4\n" + "\n" + "def pair_check(tup):\n" + " if tup in [('A', 'U'), ('U', 'A'), ('C', 'G'), ('G', 'C')]:\n" + " return True\n" + " return False\n" + "\n" + "def OPT(i,j, sequence):\n" + " \"\"\" returns the score of the optimal pairing between indices i and j\"\"\"\n" + " #base case: no pairs allowed when i and j are less than 4 bases apart\n" + " if i >= j-min_loop_length:\n" + " return 0\n" + " else:\n" + " #i and j can either be paired or not be paired, if not paired then the optimal score is OPT(i,j-1)\n" + " unpaired = OPT(i, j-1, sequence)\n" + "\n" + " #check if j can be involved in a pairing with a position t\n" + " pairing = [1 + OPT(i, t-1, sequence) + OPT(t+1, j-1, sequence) for t in range(i, j-4)\\\n" + " if pair_check((sequence[t], sequence[j]))]\n" + " if not pairing:\n" + " pairing = [0]\n" + " paired = max(pairing)\n" + "\n" + "\n" + " return max(unpaired, paired)\n" + "\n" + "\n" + "def traceback(i, j, structure, DP, sequence):\n" + " #in this case we've gone through the whole sequence. Nothing to do.\n" + " if j <= i:\n" + " return\n" + " #if j is unpaired, there will be no change in score when we take it out, so we just recurse to the next index\n" + " elif DP[i][j] == DP[i][j-1]:\n" + " traceback(i, j-1, structure, DP, sequence)\n" + " #hi\n" + " else:\n" + " #try pairing j with a matching index k to its left.\n" + " for k in [b for b in range(i, j-min_loop_length) if pair_check((sequence[b], sequence[j]))]:\n" + " #if the score at i,j is the result of adding 1 from pairing (j,k) and whatever score\n" + " #comes from the substructure to its left (i, k-1) and to its right (k+1, j-1)\n" + " if k-1 < 0:\n" + " if DP[i][j] == DP[k+1][j-1] + 1:\n" + " structure.append((k,j))\n" + " traceback(k+1, j-1, structure, DP, sequence)\n" + " break\n" + " elif DP[i][j] == DP[i][k-1] + DP[k+1][j-1] + 1:\n" + " #add the pair (j,k) to our list of pairs\n" + " structure.append((k,j))\n" + " #move the recursion to the two substructures formed by this pairing\n" + " traceback(i, k-1, structure, DP, sequence)\n" + " traceback(k+1, j-1, structure, DP, sequence)\n" + " break\n" + "\n" + "def write_structure(sequence, structure):\n" + " dot_bracket = [\".\" for _ in range(len(sequence))]\n" + " for s in structure:\n" + " dot_bracket[min(s)] = \"(\"\n" + " dot_bracket[max(s)] = \")\"\n" + " return \"\".join(dot_bracket)\n" + "\n" + "\n" + "#initialize matrix with zeros where can't have pairings\n" + "def initialize(N):\n" + " #NxN matrix that stores the scores of the optimal pairings.\n" + " DP = np.empty((N,N))\n" + " DP[:] = np.NAN\n" + " for k in range(0, min_loop_length):\n" + " for i in range(N-k):\n" + " j = i + k\n" + " DP[i][j] = 0\n" + " return DP\n" + "\n" + "def nussinov(sequence):\n" + " N = len(sequence)\n" + " DP = initialize(N)\n" + " structure = []\n" + "\n" + " #fill the DP matrix\n" + " for k in range(min_loop_length, N):\n" + " for i in range(N-k):\n" + " j = i + k\n" + " DP[i][j] = OPT(i,j, sequence)\n" + "\n" + " #copy values to lower triangle to avoid null references\n" + " for i in range(N):\n" + " for j in range(0, i):\n" + " DP[i][j] = DP[j][i]\n" + "\n" + "\n" + " traceback(0,N-1, structure, DP, sequence)\n" + " return (sequence, write_structure(sequence, structure))\n" + "\n" + "print(nussinov(\"ACCCGAUGUUAUAUAUACCU\"))" + )); + testTextResult(entry, 0, QString::fromUtf8( + "('ACCCGAUGUUAUAUAUACCU', '(...(..(((....).))))')" + )); + entry = entry->next(); + + QCOMPARE(entry, nullptr); +} + +void WorksheetTest::testJupyter4() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(loadWorksheet(QLatin1String("A Reaction-Diffusion Equation Solver in Python with Numpy.ipynb"))); + + QCOMPARE(w->isReadOnly(), false); + QCOMPARE(w->session()->backend()->id(), QLatin1String("python")); + + WorksheetEntry* entry = w->firstEntry(); + + testMarkdown(entry, QString::fromUtf8( + "This notebook demonstrates how IPython notebooks can be used to discuss the theory and implementation of numerical algorithms on one page.\n" + "\n" + "With `ipython nbconvert --to markdown name.ipynb` a notebook like this one can be made into a \n" + "[blog post](http://georg.io/2013/12/Crank_Nicolson) in one easy step. To display the graphics in your resultant blog post use,\n" + "for instance, your [Dropbox Public folder](https://www.dropbox.com/help/16/en) that you can \n" + "[activate here](https://www.dropbox.com/enable_public_folder)." + )); + + testMarkdown(entry, QString::fromUtf8( + "# The Crank-Nicolson Method" + )); + + testMarkdown(entry, QString::fromUtf8( + "The [Crank-Nicolson method](http://en.wikipedia.org/wiki/Crank%E2%80%93Nicolson_method) is a well-known finite difference method for the\n" + "numerical integration of the heat equation and closely related partial differential equations.\n" + "\n" + "We often resort to a Crank-Nicolson (CN) scheme when we integrate numerically reaction-diffusion systems in one space dimension\n" + "\n" + "$$\\frac{\\partial u}{\\partial t} = D \\frac{\\partial^2 u}{\\partial x^2} + f(u),$$\n" + "\n" + "$$\\frac{\\partial u}{\\partial x}\\Bigg|_{x = 0, L} = 0,$$\n" + "\n" + "where $u$ is our concentration variable, $x$ is the space variable, $D$ is the diffusion coefficient of $u$, $f$ is the reaction term,\n" + "and $L$ is the length of our one-dimensional space domain.\n" + "\n" + "Note that we use [Neumann boundary conditions](http://en.wikipedia.org/wiki/Neumann_boundary_condition) and specify that the solution\n" + "$u$ has zero space slope at the boundaries, effectively prohibiting entrance or exit of material at the boundaries (no-flux boundary conditions)." + )); + + testMarkdown(entry, QString::fromUtf8( + "## Finite Difference Methods" + )); + + testMarkdown(entry, QString::fromUtf8( + "Many fantastic textbooks and tutorials have been written about finite difference methods, for instance a free textbook by\n" + "[Lloyd Trefethen](http://people.maths.ox.ac.uk/trefethen/pdetext.html).\n" + "\n" + "Here we describe a few basic aspects of finite difference methods.\n" + "\n" + "The above reaction-diffusion equation describes the time evolution of variable $u(x,t)$ in one space dimension ($u$ is a line concentration).\n" + "If we knew an analytic expression for $u(x,t)$ then we could plot $u$ in a two-dimensional coordinate system with axes $t$ and $x$.\n" + "\n" + "To approximate $u(x,t)$ numerically we discretize this two-dimensional coordinate system resulting, in the simplest case, in a\n" + "two-dimensional [regular grid](http://en.wikipedia.org/wiki/Regular_grid).\n" + "This picture is employed commonly when constructing finite differences methods, see for instance \n" + "[Figure 3.2.1 of Trefethen](http://people.maths.ox.ac.uk/trefethen/3all.pdf).\n" + "\n" + "Let us discretize both time and space as follows:\n" + "\n" + "$$t_n = n \\Delta t,~ n = 0, \\ldots, N-1,$$\n" + "\n" + "$$x_j = j \\Delta x,~ j = 0, \\ldots, J-1,$$\n" + "\n" + "where $N$ and $J$ are the number of discrete time and space points in our grid respectively.\n" + "$\\Delta t$ and $\\Delta x$ are the time step and space step respectively and defined as follows:\n" + "\n" + "$$\\Delta t = T / N,$$\n" + "\n" + "$$\\Delta x = L / J,$$\n" + "\n" + "where $T$ is the point in time up to which we will integrate $u$ numerically.\n" + "\n" + "Our ultimate goal is to construct a numerical method that allows us to approximate the unknonwn analytic solution $u(x,t)$\n" + "reasonably well in these discrete grid points.\n" + "\n" + "That is we want construct a method that computes values $U(j \\Delta x, n \\Delta t)$ (note: capital $U$) so that\n" + "\n" + "$$U(j \\Delta x, n \\Delta t) \\approx u(j \\Delta x, n \\Delta t)$$\n" + "\n" + "As a shorthand we will write $U_j^n = U(j \\Delta x, n \\Delta t)$ and $(j,n)$ to refer to grid point $(j \\Delta x, n \\Delta t)$." + )); + + testMarkdown(entry, QString::fromUtf8( + "## The Crank-Nicolson Stencil" + )); + + testMarkdown(entry, QString::fromUtf8( + "Based on the two-dimensional grid we construct we then approximate the operators of our reaction-diffusion system.\n" + "\n" + "For instance, to approximate the time derivative on the left-hand side in grid point $(j,n)$ we use the values of $U$ in two specific grid points:\n" + "\n" + "$$\\frac{\\partial u}{\\partial t}\\Bigg|_{x = j \\Delta x, t = n \\Delta t} \\approx \\frac{U_j^{n+1} - U_j^n}{\\Delta t}.$$\n" + "\n" + "We can think of this scheme as a stencil that we superimpose on our $(x,t)$-grid and this particular stencil is\n" + "commonly referred to as [forward difference](http://en.wikipedia.org/wiki/Finite_difference#Forward.2C_backward.2C_and_central_differences).\n" + "\n" + "The spatial part of the [Crank-Nicolson stencil](http://journals.cambridge.org/abstract_S0305004100023197)\n" + "(or see [Table 3.2.2 of Trefethen](http://people.maths.ox.ac.uk/trefethen/3all.pdf))\n" + "for the heat equation ($u_t = u_{xx}$) approximates the \n" + "[Laplace operator](http://en.wikipedia.org/wiki/Laplace_operator) of our equation and takes the following form\n" + "\n" + "$$\\frac{\\partial^2 u}{\\partial x^2}\\Bigg|_{x = j \\Delta x, t = n \\Delta t} \\approx \\frac{1}{2 \\Delta x^2} \\left( U_{j+1}^n - 2 U_j^n + U_{j-1}^n + U_{j+1}^{n+1} - 2 U_j^{n+1} + U_{j-1}^{n+1}\\right).$$\n" + "\n" + "To approximate $f(u(j \\Delta x, n \\Delta t))$ we write simply $f(U_j^n)$.\n" + "\n" + "These approximations define the stencil for our numerical method as pictured on [Wikipedia](http://en.wikipedia.org/wiki/Crank%E2%80%93Nicolson_method).\n" + "\n" + "![SVG](https://dl.dropboxusercontent.com/u/129945779/georgio/CN-stencil.svg)\n" + "\n" + "Applying this stencil to grid point $(j,n)$ gives us the following approximation of our reaction-diffusion equation:\n" + "\n" + "$$\\frac{U_j^{n+1} - U_j^n}{\\Delta t} = \\frac{D}{2 \\Delta x^2} \\left( U_{j+1}^n - 2 U_j^n + U_{j-1}^n + U_{j+1}^{n+1} - 2 U_j^{n+1} + U_{j-1}^{n+1}\\right) + f(U_j^n).$$" + )); + + testMarkdown(entry, QString::fromUtf8( + "## Reordering Stencil into Linear System" + )); + + testMarkdown(entry, QString::fromUtf8( + "Let us define $\\sigma = \\frac{D \\Delta t}{2 \\Delta x^2}$ and reorder the above approximation of our reaction-diffusion equation:\n" + "\n" + "$$-\\sigma U_{j-1}^{n+1} + (1+2\\sigma) U_j^{n+1} -\\sigma U_{j+1}^{n+1} = \\sigma U_{j-1}^n + (1-2\\sigma) U_j^n + \\sigma U_{j+1}^n + \\Delta t f(U_j^n).$$\n" + "\n" + "This equation makes sense for space indices $j = 1,\\ldots,J-2$ but it does not make sense for indices $j=0$ and $j=J-1$ (on the boundaries):\n" + "\n" + "$$j=0:~-\\sigma U_{-1}^{n+1} + (1+2\\sigma) U_0^{n+1} -\\sigma U_{1}^{n+1} = \\sigma U_{-1}^n + (1-2\\sigma) U_0^n + \\sigma U_{1}^n + \\Delta t f(U_0^n),$$\n" + "\n" + "$$j=J-1:~-\\sigma U_{J-2}^{n+1} + (1+2\\sigma) U_{J-1}^{n+1} -\\sigma U_{J}^{n+1} = \\sigma U_{J-2}^n + (1-2\\sigma) U_{J-1}^n + \\sigma U_{J}^n + \\Delta t f(U_{J-1}^n).$$\n" + "\n" + "The problem here is that the values $U_{-1}^n$ and $U_J^n$ lie outside our grid.\n" + "\n" + "However, we can work out what these values should equal by considering our Neumann boundary condition.\n" + "Let us discretize our boundary condition at $j=0$ with the \n" + "[backward difference](http://en.wikipedia.org/wiki/Finite_difference#Forward.2C_backward.2C_and_central_differences) and\n" + "at $j=J-1$ with the\n" + "[forward difference](http://en.wikipedia.org/wiki/Finite_difference#Forward.2C_backward.2C_and_central_differences):\n" + "\n" + "$$\\frac{U_1^n - U_0^n}{\\Delta x} = 0,$$\n" + "\n" + "$$\\frac{U_J^n - U_{J-1}^n}{\\Delta x} = 0.$$\n" + "\n" + "These two equations make it clear that we need to amend our above numerical approximation for\n" + "$j=0$ with the identities $U_0^n = U_1^n$ and $U_0^{n+1} = U_1^{n+1}$, and\n" + "for $j=J-1$ with the identities $U_{J-1}^n = U_J^n$ and $U_{J-1}^{n+1} = U_J^{n+1}$.\n" + "\n" + "Let us reinterpret our numerical approximation of the line concentration of $u$ in a fixed point in time as a vector $\\mathbf{U}^n$:\n" + "\n" + "$$\\mathbf{U}^n = \n" + "\\begin{bmatrix} U_0^n \\\\ \\vdots \\\\ U_{J-1}^n \\end{bmatrix}.$$\n" + "\n" + "Using this notation we can now write our above approximation for a fixed point in time, $t = n \\Delta t$, compactly as a linear system:\n" + "\n" + "$$\n" + "\\begin{bmatrix}\n" + "1+\\sigma & -\\sigma & 0 & 0 & 0 & \\cdots & 0 & 0 & 0 & 0\\\\\n" + "-\\sigma & 1+2\\sigma & -\\sigma & 0 & 0 & \\cdots & 0 & 0 & 0 & 0 \\\\\n" + "0 & -\\sigma & 1+2\\sigma & -\\sigma & \\cdots & 0 & 0 & 0 & 0 & 0 \\\\\n" + "0 & 0 & \\ddots & \\ddots & \\ddots & \\ddots & 0 & 0 & 0 & 0 \\\\\n" + "0 & 0 & 0 & 0 & 0 & 0 & 0 & -\\sigma & 1+2\\sigma & -\\sigma \\\\\n" + "0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & -\\sigma & 1+\\sigma\n" + "\\end{bmatrix}\n" + "\\begin{bmatrix}\n" + "U_0^{n+1} \\\\\n" + "U_1^{n+1} \\\\\n" + "U_2^{n+1} \\\\\n" + "\\vdots \\\\\n" + "U_{J-2}^{n+1} \\\\\n" + "U_{J-1}^{n+1}\n" + "\\end{bmatrix} =\n" + "\\begin{bmatrix}\n" + "1-\\sigma & \\sigma & 0 & 0 & 0 & \\cdots & 0 & 0 & 0 & 0\\\\\n" + "\\sigma & 1-2\\sigma & \\sigma & 0 & 0 & \\cdots & 0 & 0 & 0 & 0 \\\\\n" + "0 & \\sigma & 1-2\\sigma & \\sigma & \\cdots & 0 & 0 & 0 & 0 & 0 \\\\\n" + "0 & 0 & \\ddots & \\ddots & \\ddots & \\ddots & 0 & 0 & 0 & 0 \\\\\n" + "0 & 0 & 0 & 0 & 0 & 0 & 0 & \\sigma & 1-2\\sigma & \\sigma \\\\\n" + "0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \\sigma & 1-\\sigma\n" + "\\end{bmatrix}\n" + "\\begin{bmatrix}\n" + "U_0^{n} \\\\\n" + "U_1^{n} \\\\\n" + "U_2^{n} \\\\\n" + "\\vdots \\\\\n" + "U_{J-2}^{n} \\\\\n" + "U_{J-1}^{n}\n" + "\\end{bmatrix} +\n" + "\\begin{bmatrix}\n" + "\\Delta t f(U_0^n) \\\\\n" + "\\Delta t f(U_1^n) \\\\\n" + "\\Delta t f(U_2^n) \\\\\n" + "\\vdots \\\\\n" + "\\Delta t f(U_{J-2}^n) \\\\\n" + "\\Delta t f(U_{J-1}^n)\n" + "\\end{bmatrix}.\n" + "$$\n" + "\n" + "Note that since our numerical integration starts with a well-defined initial condition at $n=0$, $\\mathbf{U}^0$, the\n" + "vector $\\mathbf{U}^{n+1}$ on the left-hand side is the only unknown in this system of linear equations.\n" + "\n" + "Thus, to integrate numerically our reaction-diffusion system from time point $n$ to $n+1$ we need to solve numerically for vector $\\mathbf{U}^{n+1}$.\n" + "\n" + "Let us call the matrix on the left-hand side $A$, the one on the right-hand side $B$,\n" + "and the vector on the right-hand side $\\mathbf{f}^n$.\n" + "Using this notation we can write the above system as\n" + "\n" + "$$A \\mathbf{U}^{n+1} = B \\mathbf{U}^n + f^n.$$\n" + "\n" + "In this linear equation, matrices $A$ and $B$ are defined by our problem: we need to specify these matrices once for our\n" + "problem and incorporate our boundary conditions in them.\n" + "Vector $\\mathbf{f}^n$ is a function of $\\mathbf{U}^n$ and so needs to be reevaluated in every time point $n$.\n" + "We also need to carry out one matrix-vector multiplication every time point, $B \\mathbf{U}^n$, and\n" + "one vector-vector addition, $B \\mathbf{U}^n + f^n$.\n" + "\n" + "The most expensive numerical operation is inversion of matrix $A$ to solve for $\\mathbf{U}^{n+1}$, however we may\n" + "get away with doing this only once and store the inverse of $A$ as $A^{-1}$:\n" + "\n" + "$$\\mathbf{U}^{n+1} = A^{-1} \\left( B \\mathbf{U}^n + f^n \\right).$$" + )); + + testMarkdown(entry, QString::fromUtf8( + "## A Crank-Nicolson Example in Python" + )); + + testMarkdown(entry, QString::fromUtf8( + "Let us apply the CN method to a two-variable reaction-diffusion system that was introduced by \n" + "[Mori *et al.*](http://www.sciencedirect.com/science/article/pii/S0006349508704442):\n" + "\n" + "$$\\frac{\\partial u}{\\partial t} = D_u \\frac{\\partial^2 u}{\\partial x^2} + f(u,v),$$\n" + "\n" + "$$\\frac{\\partial v}{\\partial t} = D_v \\frac{\\partial^2 v}{\\partial x^2} - f(u,v),$$\n" + "\n" + "with Neumann boundary conditions\n" + "\n" + "$$\\frac{\\partial u}{\\partial x}\\Bigg|_{x=0,L} = 0,$$\n" + "\n" + "$$\\frac{\\partial v}{\\partial x}\\Bigg|_{x=0,L} = 0.$$\n" + "\n" + "The variables of this system, $u$ and $v$, represent the concetrations of the active form and its inactive form respectively.\n" + "The reaction term $f(u,v)$ describes the interchange (activation and inactivation) between these two states of the protein.\n" + "A particular property of this system is that the inactive has much greater diffusivity that the active form, $D_v \\gg D_u$.\n" + "\n" + "Using the CN method to integrate this system numerically, we need to set up two separate approximations\n" + "\n" + "$$A_u \\mathbf{U}^{n+1} = B_u \\mathbf{U}^n + \\mathbf{f}^n,$$\n" + "\n" + "$$A_v \\mathbf{V}^{n+1} = B_v \\mathbf{V}^n - \\mathbf{f}^n,$$\n" + "\n" + "with two different $\\sigma$ terms, $\\sigma_u = \\frac{D_u \\Delta t}{2 \\Delta x^2}$ and $\\sigma_v = \\frac{D_v \\Delta t}{2 \\Delta x^2}$." + )); + + testMarkdown(entry, QString::fromUtf8( + "### Import Packages" + )); + + testMarkdown(entry, QString::fromUtf8( + "For the matrix-vector multiplication, vector-vector addition, and matrix inversion that we will need to carry\n" + "out we will use the Python library [NumPy](http://www.numpy.org/).\n" + "To visualize our numerical solutions, we will use [pyplot](http://matplotlib.org/api/pyplot_api.html)." + )); + + qDebug() << "command entry 1"; + testCommandEntry(entry, 1, QString::fromUtf8( + "import numpy\n" + "from matplotlib import pyplot" + )); + + testMarkdown(entry, QString::fromUtf8( + "Numpy allows us to truncate the numerical values of matrices and vectors to improve their display with \n" + "[`set_printoptions`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.set_printoptions.html)." + )); + + qDebug() << "command entry 2"; + testCommandEntry(entry, 2, QString::fromUtf8( + "numpy.set_printoptions(precision=3)" + )); + + testMarkdown(entry, QString::fromUtf8( + "### Specify Grid" + )); + + testMarkdown(entry, QString::fromUtf8( + "Our one-dimensional domain has unit length and we define `J = 100` equally spaced\n" + "grid points in this domain.\n" + "This divides our domain into `J-1` subintervals, each of length `dx`." + )); + + qDebug() << "command entry 3"; + testCommandEntry(entry, 3, QString::fromUtf8( + "L = 1.\n" + "J = 100\n" + "dx = float(L)/float(J-1)\n" + "x_grid = numpy.array([j*dx for j in range(J)])" + )); + + testMarkdown(entry, QString::fromUtf8( + "Equally, we define `N = 1000` equally spaced grid points on our time domain of length `T = 200` thus dividing our time domain into `N-1` intervals of length `dt`." + )); + + qDebug() << "command entry 4"; + testCommandEntry(entry, 4, QString::fromUtf8( + "T = 200\n" + "N = 1000\n" + "dt = float(T)/float(N-1)\n" + "t_grid = numpy.array([n*dt for n in range(N)])" + )); + + testMarkdown(entry, QString::fromUtf8( + "### Specify System Parameters and the Reaction Term" + )); + + testMarkdown(entry, QString::fromUtf8( + "We choose our parameter values based on the work by\n" + "[Mori *et al.*](http://www.sciencedirect.com/science/article/pii/S0006349508704442)." + )); + + qDebug() << "command entry 5"; + testCommandEntry(entry, 5, QString::fromUtf8( + "D_v = float(10.)/float(100.)\n" + "D_u = 0.01 * D_v\n" + "\n" + "k0 = 0.067\n" + "f = lambda u, v: dt*(v*(k0 + float(u*u)/float(1. + u*u)) - u)\n" + "g = lambda u, v: -f(u,v)\n" + " \n" + "sigma_u = float(D_u*dt)/float((2.*dx*dx))\n" + "sigma_v = float(D_v*dt)/float((2.*dx*dx))\n" + "\n" + "total_protein = 2.26" + )); + + testMarkdown(entry, QString::fromUtf8( + "### Specify the Initial Condition" + )); + + testMarkdown(entry, QString::fromUtf8( + "As discussed by\n" + "[Mori *et al.*](http://www.sciencedirect.com/science/article/pii/S0006349508704442),\n" + "we can expect to observe interesting behaviour in the steady state of this system\n" + "if we choose a heterogeneous initial condition for $u$.\n" + "\n" + "Here, we initialize $u$ with a step-like heterogeneity:" + )); + + qDebug() << "command entry 7"; + testCommandEntry(entry, 7, QString::fromUtf8( + "no_high = 10\n" + "U = numpy.array([0.1 for i in range(no_high,J)] + [2. for i in range(0,no_high)])\n" + "V = numpy.array([float(total_protein-dx*sum(U))/float(J*dx) for i in range(0,J)])" + )); + + testMarkdown(entry, QString::fromUtf8( + "Note that we make certain that total protein amounts equal a certain value,\n" + "`total_protein`.\n" + "The importance of this was discussed by \n" + "[Walther *et al.*](http://link.springer.com/article/10.1007%2Fs11538-012-9766-5).\n" + "\n" + "Let us plot our initial condition for confirmation:" + )); + + qDebug() << "command entry 9"; + testCommandEntry(entry, 9, 1, QString::fromUtf8( + "pyplot.ylim((0., 2.1))\n" + "pyplot.xlabel('x'); pyplot.ylabel('concentration')\n" + "pyplot.plot(x_grid, U)\n" + "pyplot.plot(x_grid, V)\n" + "pyplot.show()" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "The blue curve is the initial condition for $U$, stored in Python variable `U`,\n" + "and the green curve is the initial condition for $V$ stored in `V`." + )); + + testMarkdown(entry, QString::fromUtf8( + "### Create Matrices" + )); + + testMarkdown(entry, QString::fromUtf8( + "The matrices that we need to construct are all tridiagonal so they are easy to\n" + "construct with \n" + "[`numpy.diagflat`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.diagflat.html)." + )); + + qDebug() << "command entry 10"; + testCommandEntry(entry, 10, QString::fromUtf8( + "A_u = numpy.diagflat([-sigma_u for i in range(J-1)], -1) +\\\n" + " numpy.diagflat([1.+sigma_u]+[1.+2.*sigma_u for i in range(J-2)]+[1.+sigma_u]) +\\\n" + " numpy.diagflat([-sigma_u for i in range(J-1)], 1)\n" + " \n" + "B_u = numpy.diagflat([sigma_u for i in range(J-1)], -1) +\\\n" + " numpy.diagflat([1.-sigma_u]+[1.-2.*sigma_u for i in range(J-2)]+[1.-sigma_u]) +\\\n" + " numpy.diagflat([sigma_u for i in range(J-1)], 1)\n" + " \n" + "A_v = numpy.diagflat([-sigma_v for i in range(J-1)], -1) +\\\n" + " numpy.diagflat([1.+sigma_v]+[1.+2.*sigma_v for i in range(J-2)]+[1.+sigma_v]) +\\\n" + " numpy.diagflat([-sigma_v for i in range(J-1)], 1)\n" + " \n" + "B_v = numpy.diagflat([sigma_v for i in range(J-1)], -1) +\\\n" + " numpy.diagflat([1.-sigma_v]+[1.-2.*sigma_v for i in range(J-2)]+[1.-sigma_v]) +\\\n" + " numpy.diagflat([sigma_v for i in range(J-1)], 1)" + )); + + testMarkdown(entry, QString::fromUtf8( + "To confirm, this is what `A_u` looks like:" + )); + + qDebug() << "command entry 11"; + testCommandEntry(entry, 11, 1, QString::fromUtf8( + "print A_u" + )); + testTextResult(entry, 0, QString::fromUtf8( + "[[ 1.981 -0.981 0. ... 0. 0. 0. ]\n" + " [-0.981 2.962 -0.981 ... 0. 0. 0. ]\n" + " [ 0. -0.981 2.962 ... 0. 0. 0. ]\n" + " ...\n" + " [ 0. 0. 0. ... 2.962 -0.981 0. ]\n" + " [ 0. 0. 0. ... -0.981 2.962 -0.981]\n" + " [ 0. 0. 0. ... 0. -0.981 1.981]]" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "### Solve the System Iteratively" + )); + + testMarkdown(entry, QString::fromUtf8( + "To advance our system by one time step, we need to do one matrix-vector multiplication followed by one vector-vector addition on the right hand side.\n" + "\n" + "To facilitate this, we rewrite our reaction term so that it accepts concentration vectors $\\mathbf{U}^n$ and $\\mathbf{V}^n$ as arguments\n" + "and returns vector $\\mathbf{f}^n$.\n" + "\n" + "As a reminder, this is our non-vectorial definition of $f$\n" + "\n" + " f = lambda u, v: v*(k0 + float(u*u)/float(1. + u*u)) - u" + )); + + qDebug() << "command entry 12"; + testCommandEntry(entry, 12, QString::fromUtf8( + "f_vec = lambda U, V: numpy.multiply(dt, numpy.subtract(numpy.multiply(V, \n" + " numpy.add(k0, numpy.divide(numpy.multiply(U,U), numpy.add(1., numpy.multiply(U,U))))), U))" + )); + + testMarkdown(entry, QString::fromUtf8( + "Let us make certain that this produces the same values as our non-vectorial `f`:" + )); + + qDebug() << "command entry 13"; + testCommandEntry(entry, 13, 1, QString::fromUtf8( + "print f(U[0], V[0])" + )); + testTextResult(entry, 0, QString::fromUtf8( + "0.009961358982745121" + )); + entry = entry->next(); + + qDebug() << "command entry 14"; + testCommandEntry(entry, 14, 1, QString::fromUtf8( + "print f(U[-1], V[-1])" + )); + testTextResult(entry, 0, QString::fromUtf8( + "-0.06238322322322325" + )); + entry = entry->next(); + + qDebug() << "command entry 15"; + testCommandEntry(entry, 15, 1, QString::fromUtf8( + "print f_vec(U, V)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "[ 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n" + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n" + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n" + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n" + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n" + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n" + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n" + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n" + " 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01\n" + " -0.062 -0.062 -0.062 -0.062 -0.062 -0.062 -0.062 -0.062 -0.062 -0.062]" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "Accounting for rounding of the displayed values due to the `set_printoptions` we set above, we\n" + "can see that `f` and `f_vec` generate the same values for our initial condition at both ends of our domain." + )); + + testMarkdown(entry, QString::fromUtf8( + "We will use [`numpy.linalg.solve`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.solve.html) to solve\n" + "our linear system each time step." + )); + + testMarkdown(entry, QString::fromUtf8( + "While we integrate our system over time we will record both `U` and `V` at each\n" + "time step in `U_record` and `V_record` respectively so that we can plot\n" + "our numerical solutions over time." + )); + + qDebug() << "command entry 16"; + testCommandEntry(entry, 16, QString::fromUtf8( + "U_record = []\n" + "V_record = []\n" + "\n" + "U_record.append(U)\n" + "V_record.append(V)\n" + "\n" + "for ti in range(1,N):\n" + " U_new = numpy.linalg.solve(A_u, B_u.dot(U) + f_vec(U,V))\n" + " V_new = numpy.linalg.solve(A_v, B_v.dot(V) - f_vec(U,V))\n" + " \n" + " U = U_new\n" + " V = V_new\n" + " \n" + " U_record.append(U)\n" + " V_record.append(V)" + )); + + testMarkdown(entry, QString::fromUtf8( + "### Plot the Numerical Solution" + )); + + testMarkdown(entry, QString::fromUtf8( + "Let us take a look at the numerical solution we attain after `N` time steps." + )); + + qDebug() << "command entry 18"; + testCommandEntry(entry, 18, 1, QString::fromUtf8( + "pyplot.ylim((0., 2.1))\n" + "pyplot.xlabel('x'); pyplot.ylabel('concentration')\n" + "pyplot.plot(x_grid, U)\n" + "pyplot.plot(x_grid, V)\n" + "pyplot.show()" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "And here is a [kymograph](http://en.wikipedia.org/wiki/Kymograph) of the values of `U`.\n" + "This plot shows concisely the behaviour of `U` over time and we can clear observe the wave-pinning\n" + "behaviour described by [Mori *et al.*](http://www.sciencedirect.com/science/article/pii/S0006349508704442).\n" + "Furthermore, we observe that this wave pattern is stable for about 50 units of time and we therefore\n" + "conclude that this wave pattern is a stable steady state of our system." + )); + + qDebug() << "command entry 21"; + testCommandEntry(entry, 21, 1, QString::fromUtf8( + "U_record = numpy.array(U_record)\n" + "V_record = numpy.array(V_record)\n" + "\n" + "fig, ax = pyplot.subplots()\n" + "pyplot.xlabel('x'); pyplot.ylabel('t')\n" + "heatmap = ax.pcolor(x_grid, t_grid, U_record, vmin=0., vmax=1.2)" + )); + testImageResult(entry, 0); + entry = entry->next(); + + QCOMPARE(entry, nullptr); +} + +void WorksheetTest::testJupyter5() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(loadWorksheet(QLatin1String("Automata and Computability using Jupyter.ipynb"))); + + QCOMPARE(w->isReadOnly(), false); + QCOMPARE(w->session()->backend()->id(), QLatin1String("python")); + + WorksheetEntry* entry = w->firstEntry(); + + testMarkdown(entry, QString::fromUtf8( + "# Jove helps teach models of computation using Jupyter \n" + "\n" + "Included are modules on:\n" + "\n" + "* Sets, strings and languages\n" + "* Language operations\n" + "* Construction of and operations on DFA and NFA\n" + "* Regular expression parsing and automata inter-conversion\n" + "* Derivate-based parsing\n" + "* Pushdown automata\n" + "* The construction of parsers using context-free productions, including\n" + " a full lexer/parser for Jove's own markdown syntax\n" + "* Studies of parsing: ambiguity, associativity, precedence\n" + "* Turing machines (including one for the Collatz problem)\n" + "\n" + "For a complete Jove top-level reference, kindly refer to https://github.com/ganeshutah/Jove from where you can download and obtain Jove. You can also visit this Github link now and poke around (the NBViewer will display the contents).\n" + "\n" + "Once you are in the top-level Gallery link we provide, feel free to explore the hierarchy of modules found there.\n" + "\n" + "These notebooks should give you an idea of the contents.\n" + "\n" + "* [DFA Illustrations (has a Youtube)](http://nbviewer.jupyter.org/github/ganeshutah/Jove/blob/master/notebooks/tutorial/DFAUnit2.ipynb)\n" + "\n" + "* [Regular Operations](http://nbviewer.jupyter.org/github/ganeshutah/Jove/blob/master/notebooks/driver/Drive_AllRegularOps.ipynb)\n" + "\n" + "* [PDA Operations](http://nbviewer.jupyter.org/github/ganeshutah/Jove/blob/master/notebooks/driver/Drive_PDA_Based_Parsing.ipynb)\n" + "\n" + "* [TM Operations](http://nbviewer.jupyter.org/github/ganeshutah/Jove/blob/master/notebooks/driver/Drive_TM.ipynb)" + )); + + qDebug() << "command entry 1"; + testCommandEntry(entry, 1, 1, QString::fromUtf8( + "from IPython.display import YouTubeVideo\n" + "YouTubeVideo('dGcLHtYLgDU')" + )); + testHtmlResult(entry, 0, QString::fromLatin1( + "" + )); + entry = entry->next(); + + qDebug() << "command entry 2"; + testCommandEntry(entry, 2, 1, QString::fromUtf8( + "import sys\n" + "sys.path[0:0] = ['/home/mmmm1998/Документы/Репозитории/Jove','/home/mmmm1998/Документы/Репозитории/Jove/3rdparty'] # Put these at the head of the search path\n" + "from jove.DotBashers import *\n" + "from jove.Def_DFA import *\n" + "from jove.Def_NFA import *\n" + "from jove.Def_RE2NFA import *\n" + "from jove.Def_NFA2RE import *\n" + "from jove.Def_md2mc import *" + )); + testTextResult(entry, 0, QString::fromUtf8( + "You may use any of these help commands:\n" + "help(ResetStNum)\n" + "help(NxtStateStr)\n" + "\n" + "You may use any of these help commands:\n" + "help(mkp_dfa)\n" + "help(mk_dfa)\n" + "help(totalize_dfa)\n" + "help(addtosigma_delta)\n" + "help(step_dfa)\n" + "help(run_dfa)\n" + "help(accepts_dfa)\n" + "help(comp_dfa)\n" + "help(union_dfa)\n" + "help(intersect_dfa)\n" + "help(pruneUnreach)\n" + "help(iso_dfa)\n" + "help(langeq_dfa)\n" + "help(same_status)\n" + "help(h_langeq_dfa)\n" + "help(fixptDist)\n" + "help(min_dfa)\n" + "help(pairFR)\n" + "help(state_combos)\n" + "help(sepFinNonFin)\n" + "help(bash_eql_classes)\n" + "help(listminus)\n" + "help(bash_1)\n" + "help(mk_rep_eqc)\n" + "help(F_of)\n" + "help(rep_of_s)\n" + "help(q0_of)\n" + "help(Delta_of)\n" + "help(mk_state_eqc_name)\n" + "\n" + "You may use any of these help commands:\n" + "help(mk_nfa)\n" + "help(totalize_nfa)\n" + "help(step_nfa)\n" + "help(run_nfa)\n" + "help(ec_step_nfa)\n" + "help(Eclosure)\n" + "help(Echelp)\n" + "help(accepts_nfa)\n" + "help(nfa2dfa)\n" + "help(n2d)\n" + "help(inSets)\n" + "help(rev_dfa)\n" + "help(min_dfa_brz)\n" + "\n" + "You may use any of these help commands:\n" + "help(re2nfa)\n" + "\n" + "You may use any of these help commands:\n" + "help(RE2Str)\n" + "help(mk_gnfa)\n" + "help(mk_gnfa_from_D)\n" + "help(dfa2nfa)\n" + "help(del_gnfa_states)\n" + "help(gnfa_w_REStr)\n" + "help(del_one_gnfa_state)\n" + "help(Edges_Exist_Via)\n" + "help(choose_state_to_del)\n" + "help(form_alt_RE)\n" + "help(form_concat_RE)\n" + "help(form_kleene_RE)\n" + "\n" + "You may use any of these help commands:\n" + "help(md2mc)\n" + ".. and if you want to dig more, then ..\n" + "help(default_line_attr)\n" + "help(length_ok_input_items)\n" + "help(union_line_attr_list_fld)\n" + "help(extend_rsltdict)\n" + "help(form_delta)\n" + "help(get_machine_components)" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + " # Jove allows you to set problems in markdown and have students solve" + )); + + testMarkdown(entry, QString::fromUtf8( + "1) LOdd1Three0 : Set of strings over {0,1} with an odd # of 1s OR exactly three 0s. \n" + "\n" + "* Hint on how to arrive at the language:\n" + "\n" + " - develop NFAs for the two cases and perform their union. Obtain DFA\n" + "\n" + " - develop REs for the two cases and perform the union. \n" + "\n" + " - Testing the creations:\n" + "\n" + " . Come up with language for even # of 1s and separately for \"other than three 0s\". \n" + " \n" + " . Do two intersections. \n" + " \n" + " . Is the language empty?\n" + "\n" + "\n" + "2) Language of strings over {0,1} with exactly two occurrences of 0101 in it.\n" + "\n" + " * Come up with it directly (take overlaps into account, i.e. 010101 has two occurrences in it\n" + "\n" + " * Come up in another way\n" + "\n" + "Notes:\n" + "\n" + "* Most of the problem students will have in this course is interpreting English (technical English)\n" + "\n" + "* So again, read the writeup at the beginning of Module6 (should be ready soon today) and work on using the tool.\n" + "\n" + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "__Solutions__\n" + "\n" + "1) LOdd1Three0 : Set of strings over {0,1} with an odd # of 1s OR exactly three 0s. \n" + "\n" + "* Hint on how to arrive at the language:\n" + "\n" + " - develop NFAs for the two cases and perform their union. Obtain DFA\n" + "\n" + " - develop REs for the two cases and perform the union. \n" + "\n" + " - Testing the creations:\n" + "\n" + " . Come up with language for even # of 1s and separately for \"other than three 0s\". \n" + " \n" + " . Do two intersections. \n" + " \n" + " . Is the language empty?\n" + "\n" + "\n" + "2) Language of strings over {0,1} with exactly two occurrences of 0101 in it.\n" + "\n" + " * Come up with it directly (take overlaps into account, i.e. 010101 has two occurrences in it\n" + "\n" + " * Come up in another way\n" + "\n" + "Notes:\n" + "\n" + "* Most of the problem students will have in this course is interpreting English (technical English)\n" + "\n" + "* So again, read the writeup at the beginning of Module6 (should be ready soon today) and work on using the tool.\n" + "\n" + "\n" + "\n" + "" + )); + + qDebug() << "command entry 3"; + testCommandEntry(entry, 3, 1, QString::fromUtf8( + "RE_Odd1s = \"(0* 1 0* (1 0* 1 0)*)*\"\n" + "NFA_Odd1s = re2nfa(RE_Odd1s)\n" + "DO_Odd1s = dotObj_dfa(min_dfa(nfa2dfa(NFA_Odd1s)))\n" + "DO_Odd1s" + )); + testImageResult(entry, 0); + entry = entry->next(); + + qDebug() << "command entry 4"; + testCommandEntry(entry, 4, 1, QString::fromUtf8( + "RE_Ex3z = \"1* 0 1* 0 1* 0 1* + (0* 1 0* (1 0* 1 0*)*)\"\n" + "NFA_Ex3z = re2nfa(RE_Ex3z)\n" + "DO_Ex3z = dotObj_dfa(min_dfa(nfa2dfa(NFA_Ex3z)))\n" + "DO_Ex3z" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "# Check out all remaining modules of Jove covering these\n" + "\n" + "* Brzozowski derivatives for parsing\n" + "* Brzozowski minimization\n" + "* Context-free parsing\n" + "* (soon to come) [Binary Decision Diagrams; obtain now from software/ at](http://www.cs.utah.edu/fv)\n" + "* (soon to come) Post Correspondence Problem" + )); + + testMarkdown(entry, QString::fromUtf8( + "# Brzozowski's minimization defined\n" + "\n" + "It is nothing but these steps done in this order:\n" + "\n" + "* Reverse\n" + "* Determinize\n" + "* Reverse\n" + "* Determinize\n" + "\n" + "Voila! The machine is now minimal!" + )); + + qDebug() << "command entry 5"; + testCommandEntry(entry, 5, QString::fromUtf8( + "# The above example, with min_dfa replaced by the rev;det;rev;det\n" + "\n" + "DofNFA_Ex3z = nfa2dfa(re2nfa(\"1* 0 1* 0 1* 0 1* + (0* 1 0* (1 0* 1 0*)*)\"))\n" + "dotObj_dfa(DofNFA_Ex3z)\n" + "dotObj_dfa(DofNFA_Ex3z)\n" + "minDofNFA_Ex3z = nfa2dfa(rev_dfa(nfa2dfa(rev_dfa(DofNFA_Ex3z))))" + )); + + qDebug() << "command entry 6"; + testCommandEntry(entry, 6, 1, QString::fromUtf8( + "dotObj_dfa(minDofNFA_Ex3z)" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "# What's the largest postage that can't be made using 3,5 and 7 cents?\n" + "\n" + "Answer is 4. Find it out." + )); + + qDebug() << "command entry 7"; + testCommandEntry(entry, 7, 1, QString::fromUtf8( + "dotObj_dfa(min_dfa_brz(nfa2dfa(re2nfa(\"(111+11111+1111111)*\"))))" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "# Show ambiguity in parsing" + )); + + qDebug() << "command entry 8"; + testCommandEntry(entry, 8, 1, QString::fromUtf8( + "# Parsing an arithmetic expression\n" + "pdaEamb = md2mc('''PDA\n" + "!!E -> E * E | E + E | ~E | ( E ) | 2 | 3\n" + "I : '', # ; E# -> M\n" + "M : '', E ; ~E -> M\n" + "M : '', E ; E+E -> M\n" + "M : '', E ; E*E -> M\n" + "M : '', E ; (E) -> M\n" + "M : '', E ; 2 -> M\n" + "M : '', E ; 3 -> M\n" + "M : ~, ~ ; '' -> M\n" + "M : 2, 2 ; '' -> M\n" + "M : 3, 3 ; '' -> M\n" + "M : (, ( ; '' -> M\n" + "M : ), ) ; '' -> M\n" + "M : +, + ; '' -> M\n" + "M : *, * ; '' -> M\n" + "M : '', # ; # -> F\n" + "'''\n" + ")" + )); + testTextResult(entry, 0, QString::fromUtf8( + "Generating LALR tables" + )); + entry = entry->next(); + + qDebug() << "command entry 9"; + testCommandEntry(entry, 9, 1, QString::fromUtf8( + "from jove.Def_PDA import *" + )); + testTextResult(entry, 0, QString::fromUtf8( + "You may use any of these help commands:\n" + "help(explore_pda)\n" + "help(run_pda)\n" + "help(classify_l_id_path)\n" + "help(h_run_pda)\n" + "help(interpret_w_eps)\n" + "help(step_pda)\n" + "help(suvivor_id)\n" + "help(term_id)\n" + "help(final_id)\n" + "help(cvt_str_to_sym)\n" + "help(is_surv_id)\n" + "help(subsumed)\n" + "help(is_term_id)\n" + "help(is_final_id)" + )); + entry = entry->next(); + + qDebug() << "command entry 10"; + testCommandEntry(entry, 10, 1, QString::fromUtf8( + "explore_pda(\"3+2*3+2*3\", pdaEamb, STKMAX=7)" + )); + + testTextResult(entry, 0, QString::fromUtf8( + "*** Exploring wrt STKMAX = 7 ; increase it if needed ***\n" + "String 3+2*3+2*3 accepted by your PDA in 13 ways :-) \n" + "Here are the ways: \n" + "Final state ('F', '', '#')\n" + "Reached as follows:\n" + "-> ('I', '3+2*3+2*3', '#')\n" + "-> ('M', '3+2*3+2*3', 'E#')\n" + "-> ('M', '3+2*3+2*3', 'E*E#')\n" + "-> ('M', '3+2*3+2*3', 'E*E*E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E*E*E#')\n" + "-> ('M', '3+2*3+2*3', '3+E*E*E#')\n" + "-> ('M', '+2*3+2*3', '+E*E*E#')\n" + "-> ('M', '2*3+2*3', 'E*E*E#')\n" + "-> ('M', '2*3+2*3', '2*E*E#')\n" + "-> ('M', '*3+2*3', '*E*E#')\n" + "-> ('M', '3+2*3', 'E*E#')\n" + "-> ('M', '3+2*3', 'E+E*E#')\n" + "-> ('M', '3+2*3', '3+E*E#')\n" + "-> ('M', '+2*3', '+E*E#')\n" + "-> ('M', '2*3', 'E*E#')\n" + "-> ('M', '2*3', '2*E#')\n" + "-> ('M', '*3', '*E#')\n" + "-> ('M', '3', 'E#')\n" + "-> ('M', '3', '3#')\n" + "-> ('M', '', '#')\n" + "-> ('F', '', '#') .\n" + "Final state ('F', '', '#')\n" + "Reached as follows:\n" + "-> ('I', '3+2*3+2*3', '#')\n" + "-> ('M', '3+2*3+2*3', 'E#')\n" + "-> ('M', '3+2*3+2*3', 'E*E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E*E#')\n" + "-> ('M', '3+2*3+2*3', '3+E*E#')\n" + "-> ('M', '+2*3+2*3', '+E*E#')\n" + "-> ('M', '2*3+2*3', 'E*E#')\n" + "-> ('M', '2*3+2*3', 'E*E*E#')\n" + "-> ('M', '2*3+2*3', '2*E*E#')\n" + "-> ('M', '*3+2*3', '*E*E#')\n" + "-> ('M', '3+2*3', 'E*E#')\n" + "-> ('M', '3+2*3', 'E+E*E#')\n" + "-> ('M', '3+2*3', '3+E*E#')\n" + "-> ('M', '+2*3', '+E*E#')\n" + "-> ('M', '2*3', 'E*E#')\n" + "-> ('M', '2*3', '2*E#')\n" + "-> ('M', '*3', '*E#')\n" + "-> ('M', '3', 'E#')\n" + "-> ('M', '3', '3#')\n" + "-> ('M', '', '#')\n" + "-> ('F', '', '#') .\n" + "Final state ('F', '', '#')\n" + "Reached as follows:\n" + "-> ('I', '3+2*3+2*3', '#')\n" + "-> ('M', '3+2*3+2*3', 'E#')\n" + "-> ('M', '3+2*3+2*3', 'E*E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E*E#')\n" + "-> ('M', '3+2*3+2*3', '3+E*E#')\n" + "-> ('M', '+2*3+2*3', '+E*E#')\n" + "-> ('M', '2*3+2*3', 'E*E#')\n" + "-> ('M', '2*3+2*3', '2*E#')\n" + "-> ('M', '*3+2*3', '*E#')\n" + "-> ('M', '3+2*3', 'E#')\n" + "-> ('M', '3+2*3', 'E*E#')\n" + "-> ('M', '3+2*3', 'E+E*E#')\n" + "-> ('M', '3+2*3', '3+E*E#')\n" + "-> ('M', '+2*3', '+E*E#')\n" + "-> ('M', '2*3', 'E*E#')\n" + "-> ('M', '2*3', '2*E#')\n" + "-> ('M', '*3', '*E#')\n" + "-> ('M', '3', 'E#')\n" + "-> ('M', '3', '3#')\n" + "-> ('M', '', '#')\n" + "-> ('F', '', '#') .\n" + "Final state ('F', '', '#')\n" + "Reached as follows:\n" + "-> ('I', '3+2*3+2*3', '#')\n" + "-> ('M', '3+2*3+2*3', 'E#')\n" + "-> ('M', '3+2*3+2*3', 'E*E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E*E#')\n" + "-> ('M', '3+2*3+2*3', '3+E*E#')\n" + "-> ('M', '+2*3+2*3', '+E*E#')\n" + "-> ('M', '2*3+2*3', 'E*E#')\n" + "-> ('M', '2*3+2*3', '2*E#')\n" + "-> ('M', '*3+2*3', '*E#')\n" + "-> ('M', '3+2*3', 'E#')\n" + "-> ('M', '3+2*3', 'E+E#')\n" + "-> ('M', '3+2*3', '3+E#')\n" + "-> ('M', '+2*3', '+E#')\n" + "-> ('M', '2*3', 'E#')\n" + "-> ('M', '2*3', 'E*E#')\n" + "-> ('M', '2*3', '2*E#')\n" + "-> ('M', '*3', '*E#')\n" + "-> ('M', '3', 'E#')\n" + "-> ('M', '3', '3#')\n" + "-> ('M', '', '#')\n" + "-> ('F', '', '#') .\n" + "Final state ('F', '', '#')\n" + "Reached as follows:\n" + "-> ('I', '3+2*3+2*3', '#')\n" + "-> ('M', '3+2*3+2*3', 'E#')\n" + "-> ('M', '3+2*3+2*3', 'E*E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E*E#')\n" + "-> ('M', '3+2*3+2*3', '3+E*E#')\n" + "-> ('M', '+2*3+2*3', '+E*E#')\n" + "-> ('M', '2*3+2*3', 'E*E#')\n" + "-> ('M', '2*3+2*3', 'E+E*E#')\n" + "-> ('M', '2*3+2*3', 'E*E+E*E#')\n" + "-> ('M', '2*3+2*3', '2*E+E*E#')\n" + "-> ('M', '*3+2*3', '*E+E*E#')\n" + "-> ('M', '3+2*3', 'E+E*E#')\n" + "-> ('M', '3+2*3', '3+E*E#')\n" + "-> ('M', '+2*3', '+E*E#')\n" + "-> ('M', '2*3', 'E*E#')\n" + "-> ('M', '2*3', '2*E#')\n" + "-> ('M', '*3', '*E#')\n" + "-> ('M', '3', 'E#')\n" + "-> ('M', '3', '3#')\n" + "-> ('M', '', '#')\n" + "-> ('F', '', '#') .\n" + "Final state ('F', '', '#')\n" + "Reached as follows:\n" + "-> ('I', '3+2*3+2*3', '#')\n" + "-> ('M', '3+2*3+2*3', 'E#')\n" + "-> ('M', '3+2*3+2*3', 'E*E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E*E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E+E*E#')\n" + "-> ('M', '3+2*3+2*3', '3+E+E*E#')\n" + "-> ('M', '+2*3+2*3', '+E+E*E#')\n" + "-> ('M', '2*3+2*3', 'E+E*E#')\n" + "-> ('M', '2*3+2*3', 'E*E+E*E#')\n" + "-> ('M', '2*3+2*3', '2*E+E*E#')\n" + "-> ('M', '*3+2*3', '*E+E*E#')\n" + "-> ('M', '3+2*3', 'E+E*E#')\n" + "-> ('M', '3+2*3', '3+E*E#')\n" + "-> ('M', '+2*3', '+E*E#')\n" + "-> ('M', '2*3', 'E*E#')\n" + "-> ('M', '2*3', '2*E#')\n" + "-> ('M', '*3', '*E#')\n" + "-> ('M', '3', 'E#')\n" + "-> ('M', '3', '3#')\n" + "-> ('M', '', '#')\n" + "-> ('F', '', '#') .\n" + "Final state ('F', '', '#')\n" + "Reached as follows:\n" + "-> ('I', '3+2*3+2*3', '#')\n" + "-> ('M', '3+2*3+2*3', 'E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E#')\n" + "-> ('M', '3+2*3+2*3', 'E*E+E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E*E+E#')\n" + "-> ('M', '3+2*3+2*3', '3+E*E+E#')\n" + "-> ('M', '+2*3+2*3', '+E*E+E#')\n" + "-> ('M', '2*3+2*3', 'E*E+E#')\n" + "-> ('M', '2*3+2*3', '2*E+E#')\n" + "-> ('M', '*3+2*3', '*E+E#')\n" + "-> ('M', '3+2*3', 'E+E#')\n" + "-> ('M', '3+2*3', '3+E#')\n" + "-> ('M', '+2*3', '+E#')\n" + "-> ('M', '2*3', 'E#')\n" + "-> ('M', '2*3', 'E*E#')\n" + "-> ('M', '2*3', '2*E#')\n" + "-> ('M', '*3', '*E#')\n" + "-> ('M', '3', 'E#')\n" + "-> ('M', '3', '3#')\n" + "-> ('M', '', '#')\n" + "-> ('F', '', '#') .\n" + "Final state ('F', '', '#')\n" + "Reached as follows:\n" + "-> ('I', '3+2*3+2*3', '#')\n" + "-> ('M', '3+2*3+2*3', 'E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E#')\n" + "-> ('M', '3+2*3+2*3', '3+E#')\n" + "-> ('M', '+2*3+2*3', '+E#')\n" + "-> ('M', '2*3+2*3', 'E#')\n" + "-> ('M', '2*3+2*3', 'E*E#')\n" + "-> ('M', '2*3+2*3', 'E*E*E#')\n" + "-> ('M', '2*3+2*3', '2*E*E#')\n" + "-> ('M', '*3+2*3', '*E*E#')\n" + "-> ('M', '3+2*3', 'E*E#')\n" + "-> ('M', '3+2*3', 'E+E*E#')\n" + "-> ('M', '3+2*3', '3+E*E#')\n" + "-> ('M', '+2*3', '+E*E#')\n" + "-> ('M', '2*3', 'E*E#')\n" + "-> ('M', '2*3', '2*E#')\n" + "-> ('M', '*3', '*E#')\n" + "-> ('M', '3', 'E#')\n" + "-> ('M', '3', '3#')\n" + "-> ('M', '', '#')\n" + "-> ('F', '', '#') .\n" + "Final state ('F', '', '#')\n" + "Reached as follows:\n" + "-> ('I', '3+2*3+2*3', '#')\n" + "-> ('M', '3+2*3+2*3', 'E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E#')\n" + "-> ('M', '3+2*3+2*3', '3+E#')\n" + "-> ('M', '+2*3+2*3', '+E#')\n" + "-> ('M', '2*3+2*3', 'E#')\n" + "-> ('M', '2*3+2*3', 'E*E#')\n" + "-> ('M', '2*3+2*3', '2*E#')\n" + "-> ('M', '*3+2*3', '*E#')\n" + "-> ('M', '3+2*3', 'E#')\n" + "-> ('M', '3+2*3', 'E*E#')\n" + "-> ('M', '3+2*3', 'E+E*E#')\n" + "-> ('M', '3+2*3', '3+E*E#')\n" + "-> ('M', '+2*3', '+E*E#')\n" + "-> ('M', '2*3', 'E*E#')\n" + "-> ('M', '2*3', '2*E#')\n" + "-> ('M', '*3', '*E#')\n" + "-> ('M', '3', 'E#')\n" + "-> ('M', '3', '3#')\n" + "-> ('M', '', '#')\n" + "-> ('F', '', '#') .\n" + "Final state ('F', '', '#')\n" + "Reached as follows:\n" + "-> ('I', '3+2*3+2*3', '#')\n" + "-> ('M', '3+2*3+2*3', 'E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E#')\n" + "-> ('M', '3+2*3+2*3', '3+E#')\n" + "-> ('M', '+2*3+2*3', '+E#')\n" + "-> ('M', '2*3+2*3', 'E#')\n" + "-> ('M', '2*3+2*3', 'E*E#')\n" + "-> ('M', '2*3+2*3', '2*E#')\n" + "-> ('M', '*3+2*3', '*E#')\n" + "-> ('M', '3+2*3', 'E#')\n" + "-> ('M', '3+2*3', 'E+E#')\n" + "-> ('M', '3+2*3', '3+E#')\n" + "-> ('M', '+2*3', '+E#')\n" + "-> ('M', '2*3', 'E#')\n" + "-> ('M', '2*3', 'E*E#')\n" + "-> ('M', '2*3', '2*E#')\n" + "-> ('M', '*3', '*E#')\n" + "-> ('M', '3', 'E#')\n" + "-> ('M', '3', '3#')\n" + "-> ('M', '', '#')\n" + "-> ('F', '', '#') .\n" + "Final state ('F', '', '#')\n" + "Reached as follows:\n" + "-> ('I', '3+2*3+2*3', '#')\n" + "-> ('M', '3+2*3+2*3', 'E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E#')\n" + "-> ('M', '3+2*3+2*3', '3+E#')\n" + "-> ('M', '+2*3+2*3', '+E#')\n" + "-> ('M', '2*3+2*3', 'E#')\n" + "-> ('M', '2*3+2*3', 'E*E#')\n" + "-> ('M', '2*3+2*3', 'E+E*E#')\n" + "-> ('M', '2*3+2*3', 'E*E+E*E#')\n" + "-> ('M', '2*3+2*3', '2*E+E*E#')\n" + "-> ('M', '*3+2*3', '*E+E*E#')\n" + "-> ('M', '3+2*3', 'E+E*E#')\n" + "-> ('M', '3+2*3', '3+E*E#')\n" + "-> ('M', '+2*3', '+E*E#')\n" + "-> ('M', '2*3', 'E*E#')\n" + "-> ('M', '2*3', '2*E#')\n" + "-> ('M', '*3', '*E#')\n" + "-> ('M', '3', 'E#')\n" + "-> ('M', '3', '3#')\n" + "-> ('M', '', '#')\n" + "-> ('F', '', '#') .\n" + "Final state ('F', '', '#')\n" + "Reached as follows:\n" + "-> ('I', '3+2*3+2*3', '#')\n" + "-> ('M', '3+2*3+2*3', 'E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E#')\n" + "-> ('M', '3+2*3+2*3', '3+E#')\n" + "-> ('M', '+2*3+2*3', '+E#')\n" + "-> ('M', '2*3+2*3', 'E#')\n" + "-> ('M', '2*3+2*3', 'E+E#')\n" + "-> ('M', '2*3+2*3', 'E*E+E#')\n" + "-> ('M', '2*3+2*3', '2*E+E#')\n" + "-> ('M', '*3+2*3', '*E+E#')\n" + "-> ('M', '3+2*3', 'E+E#')\n" + "-> ('M', '3+2*3', '3+E#')\n" + "-> ('M', '+2*3', '+E#')\n" + "-> ('M', '2*3', 'E#')\n" + "-> ('M', '2*3', 'E*E#')\n" + "-> ('M', '2*3', '2*E#')\n" + "-> ('M', '*3', '*E#')\n" + "-> ('M', '3', 'E#')\n" + "-> ('M', '3', '3#')\n" + "-> ('M', '', '#')\n" + "-> ('F', '', '#') .\n" + "Final state ('F', '', '#')\n" + "Reached as follows:\n" + "-> ('I', '3+2*3+2*3', '#')\n" + "-> ('M', '3+2*3+2*3', 'E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E#')\n" + "-> ('M', '3+2*3+2*3', 'E+E+E#')\n" + "-> ('M', '3+2*3+2*3', '3+E+E#')\n" + "-> ('M', '+2*3+2*3', '+E+E#')\n" + "-> ('M', '2*3+2*3', 'E+E#')\n" + "-> ('M', '2*3+2*3', 'E*E+E#')\n" + "-> ('M', '2*3+2*3', '2*E+E#')\n" + "-> ('M', '*3+2*3', '*E+E#')\n" + "-> ('M', '3+2*3', 'E+E#')\n" + "-> ('M', '3+2*3', '3+E#')\n" + "-> ('M', '+2*3', '+E#')\n" + "-> ('M', '2*3', 'E#')\n" + "-> ('M', '2*3', 'E*E#')\n" + "-> ('M', '2*3', '2*E#')\n" + "-> ('M', '*3', '*E#')\n" + "-> ('M', '3', 'E#')\n" + "-> ('M', '3', '3#')\n" + "-> ('M', '', '#')\n" + "-> ('F', '', '#') ." + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "# Show how to disambiguate" + )); + + qDebug() << "command entry 11"; + testCommandEntry(entry, 11, 1, QString::fromUtf8( + "# Parsing an arithmetic expression\n" + "pdaE = md2mc('''PDA\n" + "!!E -> E+T | T\n" + "!!T -> T*F | F\n" + "!!F -> 2 | 3 | ~F | (E)\n" + "I : '', # ; E# -> M\n" + "M : '', E ; E+T -> M\n" + "M : '', E ; T -> M\n" + "M : '', T ; T*F -> M\n" + "M : '', T ; F -> M\n" + "M : '', F ; 2 -> M\n" + "M : '', F ; 3 -> M\n" + "M : '', F ; ~F -> M\n" + "M : '', F ; (E) -> M\n" + "M : ~, ~ ; '' -> M\n" + "M : 2, 2 ; '' -> M\n" + "M : 3, 3 ; '' -> M\n" + "M : (, ( ; '' -> M\n" + "M : ), ) ; '' -> M\n" + "M : +, + ; '' -> M\n" + "M : *, * ; '' -> M\n" + "M : '', # ; # -> F\n" + "'''\n" + ")" + )); + testTextResult(entry, 0, QString::fromUtf8( + "Generating LALR tables" + )); + entry = entry->next(); + + qDebug() << "command entry 12"; + testCommandEntry(entry, 12, 1, QString::fromUtf8( + "explore_pda(\"3+2*3+2*3\", pdaE, STKMAX=7)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "*** Exploring wrt STKMAX = 7 ; increase it if needed ***\n" + "String 3+2*3+2*3 accepted by your PDA in 1 ways :-) \n" + "Here are the ways: \n" + "Final state ('F', '', '#')\n" + "Reached as follows:\n" + "-> ('I', '3+2*3+2*3', '#')\n" + "-> ('M', '3+2*3+2*3', 'E#')\n" + "-> ('M', '3+2*3+2*3', 'E+T#')\n" + "-> ('M', '3+2*3+2*3', 'E+T+T#')\n" + "-> ('M', '3+2*3+2*3', 'T+T+T#')\n" + "-> ('M', '3+2*3+2*3', 'F+T+T#')\n" + "-> ('M', '3+2*3+2*3', '3+T+T#')\n" + "-> ('M', '+2*3+2*3', '+T+T#')\n" + "-> ('M', '2*3+2*3', 'T+T#')\n" + "-> ('M', '2*3+2*3', 'T*F+T#')\n" + "-> ('M', '2*3+2*3', 'F*F+T#')\n" + "-> ('M', '2*3+2*3', '2*F+T#')\n" + "-> ('M', '*3+2*3', '*F+T#')\n" + "-> ('M', '3+2*3', 'F+T#')\n" + "-> ('M', '3+2*3', '3+T#')\n" + "-> ('M', '+2*3', '+T#')\n" + "-> ('M', '2*3', 'T#')\n" + "-> ('M', '2*3', 'T*F#')\n" + "-> ('M', '2*3', 'F*F#')\n" + "-> ('M', '2*3', '2*F#')\n" + "-> ('M', '*3', '*F#')\n" + "-> ('M', '3', 'F#')\n" + "-> ('M', '3', '3#')\n" + "-> ('M', '', '#')\n" + "-> ('F', '', '#') ." + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "# And finally, run a Turing Machine with \"dynamic tape allocation\" :-)\n" + "\n" + "* Why not show how TMs are encoded? \n" + "* This markdown gets parsed to build a TM!\n" + "* This TM is for the famous \"3x+1\" problem (Collatz's Problem)" + )); + + qDebug() << "command entry 13"; + testCommandEntry(entry, 13, QString::fromUtf8( + "collatz_tm_str = \"\"\"\n" + "TM\n" + "\n" + "i_start : 0; ., R -> i_start !! erase this zero and try to find more\n" + "i_start : 1; 1, R -> goto_lsb !! we have a proper number, go to the lsb\n" + "i_start : .; ., S -> error !! error on no input or input == 0\n" + "\n" + "\n" + "goto_lsb : 0; 0,R | 1; 1,R -> goto_lsb !! scan off the right edge of the number\n" + "goto_lsb : .; .,L -> branch !! take a step back to be on the lsb and start branch\n" + "\n" + "\n" + "branch : 0; .,L -> branch !! number is even, divide by two and re-branch\n" + "branch : 1; 1,L -> check_n_eq_1 !! number is odd, check if it is 1\n" + "\n" + "\n" + "check_n_eq_1 : 0; 0,R | 1; 1,R -> 01_fma !! number wasn't 1, goto 3n+1\n" + "check_n_eq_1 : .; .,R -> f_halt !! number was 1, halt\n" + "\n" + "\n" + "!! carrying 0 we see a 0 so write 0 and carry 0 forward\n" + "00_fma : 0; 0,L -> 00_fma\n" + "\n" + "!! carrying 0 we see a 1 (times 3 is 11) so write 1 and carry 1 forward\n" + "00_fma : 1; 1,L -> 01_fma\n" + "\n" + "!! reached the end of the number, go back to the start\n" + "00_fma : .; .,R -> goto_lsb \n" + "\n" + "\n" + "!! carrying 1 we see a 0 so write 1 and carry 0 forward\n" + "01_fma : 0; 1,L -> 00_fma \n" + "\n" + "!! carrying 1 we see a 1 (times 3 is 11, plus our carry is 100) so write 0 and carry 10 forward\n" + "01_fma : 1; 0,L -> 10_fma \n" + "\n" + "!! reached the end of the number, write our 1 and go back to the start\n" + "01_fma : .; 1,R -> goto_lsb \n" + "\n" + "\n" + "!! carrying 10 we see a 0, so write 0 and carry 1 forward\n" + "10_fma : 0; 0,L -> 01_fma\n" + "\n" + "!! carrying 10 we see a 1 (times 3 is 11, plus our carry is 101), so write 1 and carry 10 forward\n" + "10_fma : 1; 1,L -> 10_fma\n" + "\n" + "!! reached the end of the number, write a 0 from our 10 and carry 1\n" + "10_fma : .; 0,L -> 01_fma\n" + "\n" + "!!\"\"\"\n" + "" + )); + + qDebug() << "command entry 14"; + testCommandEntry(entry, 14, 2, QString::fromUtf8( + "# Now show the above TM graphically!\n" + "collatz_tm = md2mc(collatz_tm_str)\n" + "dotObj_tm(collatz_tm, FuseEdges=True)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "Generating LALR tables" + )); + testImageResult(entry, 1); + entry = entry->next(); + + qDebug() << "command entry 15"; + testCommandEntry(entry, 15, 1, QString::fromUtf8( + "from jove.Def_TM import *" + )); + testTextResult(entry, 0, QString::fromUtf8( + "You may use any of these help commands:\n" + "help(step_tm)\n" + "help(run_tm)\n" + "help(explore_tm)" + )); + entry = entry->next(); + + qDebug() << "command entry 16"; + testCommandEntry(entry, 16, 1, QString::fromUtf8( + "# Will loop if the Collatz (\"3x+1\") program will ever loop!\n" + "explore_tm(collatz_tm, \"0110\", 100)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "Allocating 8 tape cells to the RIGHT!\n" + "Allocating 8 tape cells to the LEFT!\n" + "Detailing the halted configs now.\n" + "Accepted at ('f_halt', 5, '.....1..............', 65)\n" + " via .. \n" + " ->('i_start', 0, '0110', 100)\n" + " ->('i_start', 1, '.110', 99)\n" + " ->('goto_lsb', 2, '.110', 98)\n" + " ->('goto_lsb', 3, '.110', 97)\n" + " ->('goto_lsb', 4, '.110', 96)\n" + " ->('branch', 3, '.110........', 95)\n" + " ->('branch', 2, '.11.........', 94)\n" + " ->('check_n_eq_1', 1, '.11.........', 93)\n" + " ->('01_fma', 2, '.11.........', 92)\n" + " ->('10_fma', 1, '.10.........', 91)\n" + " ->('10_fma', 0, '.10.........', 90)\n" + " ->('01_fma', 7, '........010.........', 89)\n" + " ->('goto_lsb', 8, '.......1010.........', 88)\n" + " ->('goto_lsb', 9, '.......1010.........', 87)\n" + " ->('goto_lsb', 10, '.......1010.........', 86)\n" + " ->('goto_lsb', 11, '.......1010.........', 85)\n" + " ->('branch', 10, '.......1010.........', 84)\n" + " ->('branch', 9, '.......101..........', 83)\n" + " ->('check_n_eq_1', 8, '.......101..........', 82)\n" + " ->('01_fma', 9, '.......101..........', 81)\n" + " ->('10_fma', 8, '.......100..........', 80)\n" + " ->('01_fma', 7, '.......100..........', 79)\n" + " ->('10_fma', 6, '.......000..........', 78)\n" + " ->('01_fma', 5, '......0000..........', 77)\n" + " ->('goto_lsb', 6, '.....10000..........', 76)\n" + " ->('goto_lsb', 7, '.....10000..........', 75)\n" + " ->('goto_lsb', 8, '.....10000..........', 74)\n" + " ->('goto_lsb', 9, '.....10000..........', 73)\n" + " ->('goto_lsb', 10, '.....10000..........', 72)\n" + " ->('branch', 9, '.....10000..........', 71)\n" + " ->('branch', 8, '.....1000...........', 70)\n" + " ->('branch', 7, '.....100............', 69)\n" + " ->('branch', 6, '.....10.............', 68)\n" + " ->('branch', 5, '.....1..............', 67)\n" + " ->('check_n_eq_1', 4, '.....1..............', 66)\n" + " ->('f_halt', 5, '.....1..............', 65)" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "# END: You have a ton more waiting for your execution pleasure!" + )); + + QCOMPARE(entry, nullptr); +} + +void WorksheetTest::testJupyter6() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(loadWorksheet(QLatin1String("Cue Combination with Neural Populations .ipynb"))); + + QCOMPARE(w->isReadOnly(), false); + QCOMPARE(w->session()->backend()->id(), QLatin1String("python")); + + WorksheetEntry* entry = w->firstEntry(); + + testMarkdown(entry, QString::fromUtf8( + "# Humans and animals integrate multisensory cues near-optimally\n" + "## An intuition for how populations of neurons can perform Bayesian inference" + )); + + qDebug() << "command entry 30"; + testCommandEntry(entry, 30, QString::fromUtf8( + "from __future__ import division\n" + "import numpy as np\n" + "from scipy.special import factorial\n" + "import scipy.stats as stats\n" + "import pylab\n" + "import matplotlib.pyplot as plt\n" + "%matplotlib inline\n" + "import seaborn as sns\n" + "sns.set_style(\"darkgrid\")\n" + "import ipywidgets\n" + "from IPython.display import display\n" + "from matplotlib.font_manager import FontProperties\n" + "fontP = FontProperties()\n" + "fontP.set_size('medium')\n" + "%config InlineBackend.figure_format = 'svg'\n" + "\n" + "\n" + "def mean_firing_rate(gain, stimulus, preferred_stimulus, std_tc, baseline):\n" + " # Gaussian tuning curve that determines the mean firing rate (Poisson rate parameter) for a given stimulus\n" + " return baseline + gain*stats.norm.pdf(preferred_stimulus, loc = stimulus, scale = std_tc)\n" + "\n" + "def get_spikes(gain, stimulus, preferred_stimuli, std_tc, baseline):\n" + " # produce a vector of spikes for some population given some stimulus\n" + " lambdas = mean_firing_rate(gain, stimulus, preferred_stimuli, std_tc, baseline)\n" + " return np.random.poisson(lambdas)\n" + " \n" + "def likelihood(stimulus, r, gain, preferred_stimuli, std_tc, baseline):\n" + " # returns p(r|s)\n" + " lambdas = mean_firing_rate(gain, stimulus, preferred_stimuli, std_tc, baseline)\n" + " return np.prod(lambdas**r)\n" + "\n" + "def spikes_and_inference(r_V = True,\n" + " r_A = True,\n" + " show_tuning_curves = False,\n" + " show_spike_count = False,\n" + " show_likelihoods = True,\n" + " true_stimulus = 10,\n" + " number_of_neurons = 40,\n" + " r_V_gain = 15,\n" + " r_A_gain = 75,\n" + " r_V_tuning_curve_sigma = 10,\n" + " r_A_tuning_curve_sigma = 10,\n" + " tuning_curve_baseline = 0,\n" + " joint_likelihood = True,\n" + " r_V_plus_r_A = True,\n" + " cue = False):\n" + " np.random.seed(7)\n" + " max_s = 40\n" + " preferred_stimuli = np.linspace(-max_s*2, max_s*2, number_of_neurons)\n" + " n_hypothesized_s = 250\n" + " hypothesized_s = np.linspace(-max_s, max_s, n_hypothesized_s)\n" + " gains = {'r1': r_V_gain,\n" + " 'r2': r_A_gain,\n" + " 'r1+r2': r_V_gain + r_A_gain}\n" + " sigma_TCs = {'r1': r_V_tuning_curve_sigma,\n" + " 'r2': r_A_tuning_curve_sigma,\n" + " 'r1+r2': (r_V_tuning_curve_sigma + r_A_tuning_curve_sigma)/2}\n" + " spikes = {'r1': get_spikes(gains['r1'], true_stimulus, preferred_stimuli, sigma_TCs['r1'], tuning_curve_baseline),\n" + " 'r2': get_spikes(gains['r2'], true_stimulus, preferred_stimuli, sigma_TCs['r2'], tuning_curve_baseline)}\n" + " spikes['r1+r2'] = spikes['r1'] + spikes['r2']\n" + " active_pops = []\n" + " if r_V: active_pops.append('r1')\n" + " if r_A: active_pops.append('r2')\n" + " if r_V_plus_r_A: active_pops.append('r1+r2')\n" + "\n" + " colors = {'r1': sns.xkcd_rgb['light purple'],\n" + " 'r2': sns.xkcd_rgb['dark pink'],\n" + " 'r1+r2': sns.xkcd_rgb['royal blue'],\n" + " 'joint': sns.xkcd_rgb['gold']}\n" + " nSubplots = show_spike_count + show_tuning_curves + show_likelihoods\n" + " fig, axes = plt.subplots(nSubplots, figsize = (7, 1.5*nSubplots)) # number of subplots according to what's been requested\n" + " if not isinstance(axes, np.ndarray): axes = [axes] # makes axes into a list even if it's just one subplot\n" + " subplot_idx = 0\n" + " \n" + " def plot_true_stimulus_and_legend(subplot_idx):\n" + " axes[subplot_idx].plot(true_stimulus, 0, 'k^', markersize = 12, clip_on = False, label = 'true rattlesnake location')\n" + " axes[subplot_idx].legend(loc = 'center left', bbox_to_anchor = (1, 0.5), prop = fontP)\n" + " \n" + " if show_tuning_curves:\n" + " for neuron in range(number_of_neurons):\n" + " if r_V:\n" + " axes[subplot_idx].plot(hypothesized_s,\n" + " mean_firing_rate(gains['r1'],\n" + " hypothesized_s,\n" + " preferred_stimuli[neuron],\n" + " sigma_TCs['r1'],\n" + " tuning_curve_baseline),\n" + " color = colors['r1'])\n" + " if r_A:\n" + " axes[subplot_idx].plot(hypothesized_s,\n" + " mean_firing_rate(gains['r2'],\n" + " hypothesized_s,\n" + " preferred_stimuli[neuron],\n" + " sigma_TCs['r2'],\n" + " tuning_curve_baseline),\n" + " color = colors['r2'])\n" + " axes[subplot_idx].set_xlabel('location $s$')\n" + " axes[subplot_idx].set_ylabel('mean firing rate\\n(spikes/s)')\n" + " axes[subplot_idx].set_ylim((0, 4))\n" + " axes[subplot_idx].set_xlim((-40, 40))\n" + " axes[subplot_idx].set_yticks(np.linspace(0, 4, 5))\n" + " subplot_idx += 1\n" + "\n" + " if show_spike_count:\n" + " idx = abs(preferred_stimuli) < max_s\n" + " if r_V:\n" + " axes[subplot_idx].plot(preferred_stimuli[idx], spikes['r1'][idx], 'o', color = colors['r1'],\n" + " clip_on = False, label = '$\\mathbf{r}_\\mathrm{V}$',\n" + " markersize=4)\n" + " if r_A:\n" + " axes[subplot_idx].plot(preferred_stimuli[idx], spikes['r2'][idx], 'o', color = colors['r2'],\n" + " clip_on = False, label = '$\\mathbf{r}_\\mathrm{A}$',\n" + " markersize=4)\n" + " if r_V_plus_r_A:\n" + " axes[subplot_idx].plot(preferred_stimuli[idx], spikes['r1+r2'][idx], 'o', color = colors['r1+r2'],\n" + " clip_on = False, label = '$\\mathbf{r}_\\mathrm{V}+\\mathbf{r}_\\mathrm{A}$',\n" + " markersize=8, zorder=1)\n" + " axes[subplot_idx].set_xlabel('preferred location')\n" + " axes[subplot_idx].set_ylabel('spike count')\n" + " axes[subplot_idx].set_ylim((0, 10))\n" + " axes[subplot_idx].set_xlim((-40, 40))\n" + " plot_true_stimulus_and_legend(subplot_idx)\n" + " subplot_idx += 1\n" + "\n" + " if show_likelihoods:\n" + " if cue:\n" + " var = 'c'\n" + " else:\n" + " var = '\\mathbf{r}'\n" + " likelihoods = {}\n" + " \n" + " for population in active_pops:\n" + " likelihoods[population] = np.zeros_like(hypothesized_s)\n" + " for idx, ort in enumerate(hypothesized_s):\n" + " likelihoods[population][idx] = likelihood(ort, spikes[population], gains[population],\n" + " preferred_stimuli, sigma_TCs[population], tuning_curve_baseline)\n" + " likelihoods[population] /= np.sum(likelihoods[population]) # normalize\n" + "\n" + " if r_V:\n" + " axes[subplot_idx].plot(hypothesized_s, likelihoods['r1'], color = colors['r1'],\n" + " linewidth = 2, label = '$p({}_\\mathrm{{V}}|s)$'.format(var))\n" + " if r_A:\n" + " axes[subplot_idx].plot(hypothesized_s, likelihoods['r2'], color = colors['r2'],\n" + " linewidth = 2, label = '$p({}_\\mathrm{{A}}|s)$'.format(var))\n" + " if r_V_plus_r_A:\n" + " axes[subplot_idx].plot(hypothesized_s, likelihoods['r1+r2'], color = colors['r1+r2'],\n" + " linewidth = 2, label = '$p({}_\\mathrm{{V}}+{}_\\mathrm{{A}}|s)$'.format(var, var))\n" + " if joint_likelihood:\n" + " product = likelihoods['r1']*likelihoods['r2']\n" + " product /= np.sum(product)\n" + " axes[subplot_idx].plot(hypothesized_s, product, color = colors['joint'],linewidth = 7,\n" + " label = '$p({}_\\mathrm{{V}}|s)\\ p({}_\\mathrm{{A}}|s)$'.format(var, var), zorder = 1)\n" + "\n" + " axes[subplot_idx].set_xlabel('location $s$')\n" + " axes[subplot_idx].set_ylabel('probability')\n" + " axes[subplot_idx].set_xlim((-40, 40))\n" + " axes[subplot_idx].legend()\n" + " axes[subplot_idx].set_yticks([])\n" + " \n" + " plot_true_stimulus_and_legend(subplot_idx)\n" + " subplot_idx += 1" + )); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "

        We live in a complex environment and must constantly integrate sensory information to interact with the world around us. Inputs from different modalities might not always be congruent with each other, but dissociating the true nature of the stimulus may be a matter of life or death for an organism.

        \n" + "\n" + "

        You hear and see evidence of a rattlesnake in tall grass near you. You get an auditory and a visual cue of the snake's location $s$. Both cues are associated with a likelihood function indicating the probability of that cue for all possible locations of the snake. The likelihood function associated with the visual cue, $p(c_\\mathrm{V}|s)$, has high uncertainty, because of the tall grass. The auditory cue is easier to localize, so its associated likelihood function, $p(c_\\mathrm{A}|s)$, is sharper. In accordance with Bayes' Rule, and assuming a flat prior over the snake's location, an optimal estimate of the location of the snake can be computed by multiplying the two likelihoods. This joint likelihood will be between the two cues but closer to the less uncertain cue, and will have less uncertainty than both unimodal likelihood functions.

        " + )); + + qDebug() << "command entry 31"; + testCommandEntry(entry, 31, 1, QString::fromUtf8( + "spikes_and_inference(show_likelihoods = True, r_V_plus_r_A = False, cue = True)" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "Behavioral experiments have demonstrated that humans perform near-optimal Bayesian inference on ambiguous sensory information (van Beers *et al.*, 1999; Ernst & Banks, 2002; Kording & Wolpert, 2004; Stocker & Simoncelli, 2006). This has been demonstrated in cue combination experiments in which subjects report a near-optimal estimate of the stimulus given two noisy measurements of that stimulus. However, the neural basis for how humans might perform these computations is unclear. \n" + "\n" + "Ma *et. al.* (2006) propose that variance in cortical activity, rather than impairing sensory systems, is an adaptive mechanism to encode uncertainty in sensory measurements. They provide theory showing how the brain might use probabilistic population codes to perform near-optimal cue combination. We will re-derive the theory in here, and demonstrate it by simulating and decoding neural populations.\n" + "\n" + "## Cues can be represented by neural populations\n" + "\n" + "To return to our deadly rattlesnake, let's now assume that $c_\\mathrm{V}$ and $c_\\mathrm{A}$ are represented by populations of neurons $\\mathbf{r}_\\mathrm{V}$ and $\\mathbf{r}_\\mathrm{A}$, respectively. For our math and simulations, we assume that $\\mathbf{r}_\\mathrm{V}$ and $\\mathbf{r}_\\mathrm{A}$ are each composed of $N$ neurons that:\n" + "\n" + "* have independent Poisson variability\n" + "* have regularly spaced Gaussian tuning curves that are identical in mean and variance for neurons with the same index in both populations\n" + "\n" + "The populations may have different gains, $g_\\mathrm{V}$ and $g_\\mathrm{A}$.\n" + "\n" + "These are the tuning curves for the neurons in $\\mathbf{r}_\\mathrm{V}$ (purple) and $\\mathbf{r}_\\mathrm{A}$ (red). Each curve represents the mean firing rate of a single neuron given a location $s$. Each neuron thus has a preferred location, which is where its tuning curve peaks." + )); + + qDebug() << "command entry 32"; + testCommandEntry(entry, 32, 1, QString::fromUtf8( + "spikes_and_inference(show_tuning_curves = True, show_likelihoods = False)" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "The tuning curves are dense enough that we can also assume that $\\sum_{i=0}^N f_i(s) = k$ (*i.e.*, the sum of the tuning curves in a population is constant.)" + )); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "First, we will show how the brain can decode a likelihood over stimulus from neural activity. Then we will ask how the brain can compute joint likelihoods.\n" + "### How can the brain decode $p(\\mathbf{r_\\mathrm{V}}|s)$?\n" + "\n" + "\\begin{align}\n" + "L(s) &= p(\\mathbf{r_\\mathrm{V}}\\ |\\ s) \\tag{1} \\\\ \n" + "&= \\prod_{i=0}^N \\frac{e^{-g_\\mathrm{V}\\ f_i(s)}\\ g_\\mathrm{V}\\ f_i(s)^{r_{\\mathrm{V}i}}}{r_{\\mathrm{V}i}!} \\tag{2} \\\\\n" + "&\\propto \\prod_{i=0}^N e^{-g_\\mathrm{V}\\ f_i(s)}\\ f_i(s)^{r_{\\mathrm{V}i}} \\tag{3} \\\\\n" + "&= e^{-g_\\mathrm{V}\\sum_{i=0}^N f_i(s)} \\prod_{i=0}^N f_i(s)^{r_{\\mathrm{V}i}}\\tag{4} \\\\ \n" + "&= e^{-g_\\mathrm{V}k} \\prod_{i=0}^N f_i(s)^{r_{\\mathrm{V}i}} \\tag{5} \\\\\n" + "&\\propto \\prod_{i=0}^N f_i(s)^{r_{\\mathrm{V}i}} \\tag{6} \\\\\n" + "\\end{align}\n" + "\n" + "### Then what is the joint likelihood $p(\\mathbf{r_\\mathrm{V}}|s)\\ p(\\mathbf{r_\\mathrm{A}}|s)$?\n" + "\n" + "\\begin{align}\n" + "L(s) &= p(\\mathbf{r_\\mathrm{V}}\\ |\\ s)\\ p(\\mathbf{r_\\mathrm{A}}|s) \\tag{7} \\\\\n" + "&\\propto \\prod_{i=0}^N f_i(s)^{r_{\\mathrm{V}i}}\\ \\prod_{i=0}^N f_i(s)^{r_{\\mathrm{A}i}} \\tag{8} \\\\\n" + "&= \\prod_{i=0}^N f_i(s)^{r_{\\mathrm{V}i}+r_{\\mathrm{A}i}} \\tag{9} \\\\\n" + "\\end{align}\n" + "\n" + "## How can the brain compute the joint likelihood $p(\\mathbf{r}_\\mathrm{V}|s)\\ p(\\mathbf{r}_\\mathrm{A}|s)$?\n" + "The fact that we see neurons from $\\mathbf{r}_\\mathrm{V}$ and $\\mathbf{r}_\\mathrm{A}$ being added on a neuron-by-neuron basis in the exponent above suggests that we could construct a third population vector, $\\mathbf{r}_\\mathrm{V}+\\mathbf{r}_\\mathrm{A}$, and decode that.\n" + "\n" + "### First, we must prove that the sum of two Poisson-distributed random variables $X+Y$ is again Poisson-distributed.\n" + "\\begin{align}\n" + "X &\\sim \\textrm{Poisson}(\\lambda_x) \\textrm{, so } p(X=k)=\\frac{\\lambda_x^k\\ e^{-\\lambda_x}}{k!} \\tag{10} \\\\\n" + "Y &\\sim \\textrm{Poisson}(\\lambda_y) \\textrm{, so } p(X=k)=\\frac{\\lambda_y^k\\ e^{-\\lambda_y}}{k!} \\tag{11} \\\\\n" + "X+Y &\\overset{?}{\\sim} \\textrm{Poisson}(\\lambda_{x+y}) \\textrm{ and, if so, } \\lambda_{x+y}=? \\tag{12} \\\\\n" + "\\end{align}\n" + "\n" + "\\begin{align}\n" + "p(X+Y=n) &= p(X=0)\\ p(Y=n) + p(X=1)\\ p(Y=n-1)\\ +...+\\ p(X=n-1)\\ p(Y = 1) + p(X=n)\\ p(Y=0) \\tag{13} \\\\\n" + "&= \\sum_{k=0}^n p(X=k)\\ p(Y=n-k) \\tag{14} \\\\\n" + "&= \\sum_{k=0}^n \\frac{\\lambda_x^k\\ e^{-\\lambda_x}\\ \\lambda_y^{n-k}\\ e^{-\\lambda_y}}{k!(n-k)!} \\tag{15} \\\\\n" + "&= e^{-(\\lambda_x+\\lambda_y)} \\sum_{k=0}^n \\frac{1}{k!(n-k)!}\\ \\lambda_x^k\\ \\lambda_y^{n-k} \\tag{16} \\\\\n" + "&= e^{-(\\lambda_x+\\lambda_y)} \\frac{1}{n!} \\sum_{k=0}^n \\frac{n!}{k!(n-k)!}\\ \\lambda_x^k\\ \\lambda_y^{n-k} \\tag{17} \\\\\n" + "&= e^{-(\\lambda_x+\\lambda_y)} \\frac{1}{n!} \\sum_{k=0}^n \\binom{n}{k}\\ \\lambda_x^k\\ \\lambda_y^{n-k}\\ [ \\textrm{because} \\frac{n!}{k!(n-k)!}=\\binom{n}{k} ]\\tag{18} \\\\\n" + "&=\\frac{e^{-(\\lambda_x + \\lambda_y)}(\\lambda_x+\\lambda_y)^n}{n!} [ \\textrm{because} \\sum_{k=0}^n \\binom{n}{k}\\ x^ky^{n-k} = (x+y)^n ]\\tag{19} \\\\\n" + "\\end{align}\n" + "\n" + "Therefore, $X + Y \\sim \\mathrm{Poisson}(\\lambda_x + \\lambda_y)$.\n" + "\n" + "## What is $p(\\mathbf{r}_\\mathrm{V}+\\mathbf{r}_\\mathrm{A} | s)$?\n" + "\n" + "In our case:\n" + "\n" + "\\begin{align}\n" + "r_{\\mathrm{V}i} &\\sim \\textrm{Poisson}(g_\\mathrm{V}\\ f_i(s)) \\tag{20} \\\\\n" + "r_{\\mathrm{A}i} &\\sim \\textrm{Poisson}(g_\\mathrm{A}\\ f_i(s)) \\tag{21} \\\\\n" + "r_{\\mathrm{V}i}+r_{\\mathrm{A}i} &\\sim \\textrm{Poisson}((g_\\mathrm{V}+g_\\mathrm{A})\\ f_i(s)) \\tag{22} \\\\\n" + "\\end{align}\n" + "\n" + "\\begin{align}\n" + "L(s)&=p(\\mathbf{r}_\\mathrm{V} + \\mathbf{r}_\\mathrm{A}\\ |\\ s)\n" + "= \\prod_{i=0}^N \\frac{e^{-f_i(s)(g_\\mathrm{V}+g_\\mathrm{A})}\\ (g_\\mathrm{V}+g_\\mathrm{A})\\ f_i(s)^{r_{\\mathrm{V}i}+r_{\\mathrm{A}i}}}{(r_{\\mathrm{V}i}+r_{\\mathrm{A}i})!} \\tag{23} \\\\\n" + "&\\propto \\prod_{i=0}^N e^{-f_i(s)(g_\\mathrm{V}+g_\\mathrm{A})}\\ f_i(s)^{r_{\\mathrm{V}i}+r_{\\mathrm{A}i}} \\tag{24} \\\\\n" + "&= e^{-(g_\\mathrm{V}+g_\\mathrm{A})\\sum_{i=0}^Nf_i(s)} \\prod_{i=0}^N \\ f_i(s)^{r_{\\mathrm{V}i}+r_{\\mathrm{A}i}} \\tag{25} \\\\\n" + "&= e^{-(g_\\mathrm{V}+g_\\mathrm{A})k} \\prod_{i=0}^N \\ f_i(s)^{r_{\\mathrm{V}i}+r_{\\mathrm{A}i}} \\tag{26} \\\\\n" + "&\\propto \\prod_{i=0}^N f_i(s)^{r_{\\mathrm{V}i}+r_{\\mathrm{A}i}} \\tag{27} \\\\\n" + "\\end{align}\n" + "\n" + "Since equations $(9)$ and $(27)$ are proportional, we have shown that optimal cue combination can be executed by decoding linear sums of populations." + )); + + testMarkdown(entry, QString::fromUtf8( + "$$x = 2$$" + )); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "## Simulation\n" + "Here are the spike counts (during 1 s) from the two populations on one trial. Depicted in blue is a third population vector that is the sum of $\\mathbf{r}_\\mathrm{V}$ and $\\mathbf{r}_\\mathrm{A}$." + )); + + qDebug() << "command entry 33"; + testCommandEntry(entry, 33, 1, QString::fromUtf8( + "spikes_and_inference(show_spike_count = True, show_likelihoods = False)" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "Here are the decoded likelihoods for each population alone $(6)$, the joint likelihood $(9)$, and the likelihood for the summed population $(27)$. Note that the joint likelihood (gold) is less uncertain than either unimodal likelihood. Also note that it is identical to the likelihood for the summed population (blue)." + )); + + qDebug() << "command entry 34"; + testCommandEntry(entry, 34, 1, QString::fromUtf8( + "spikes_and_inference()" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "Here, we break the assumption that the two populations have the same tuning curve width. Note that the joint likelihood (gold) is no longer identical to the likelihood for the summed population (blue)." + )); + + qDebug() << "command entry 35"; + testCommandEntry(entry, 35, 1, QString::fromUtf8( + "spikes_and_inference(r_V_tuning_curve_sigma = 7, r_A_tuning_curve_sigma = 10)" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "Now you can play interactively with the parameters of the simulation using these sliders, and watch the decoded likelihoods shift around. Every time you change a parameter, new sets of spikes are generated and used to infer $s$.\n" + "\n" + "For the simulation to be interactive, you'll have to download this notebook." + )); + + qDebug() << "command entry 36"; + testCommandEntry(entry, 36, 1, QString::fromUtf8( + "i = ipywidgets.interactive(spikes_and_inference,\n" + " true_stimulus = (-40, 40, .1),\n" + " number_of_neurons = (2, 200, 1),\n" + " r_V_gain = (0, 100, 1),\n" + " r_A_gain = (0, 100, 1),\n" + " r_V_tuning_curve_sigma = (0.1, 50, .1),\n" + " r_A_tuning_curve_sigma = (0.1, 50, .1),\n" + " tuning_curve_baseline = (0, 20, .1));\n" + "display(ipywidgets.VBox(i.children[2:-1]))" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "\n" + "\n" + "" + )); + + testMarkdown(entry, QString::fromUtf8( + "## Conclusion\n" + "\n" + "It has been shown behaviorally that humans perform near-optimal Bayesian inference on ambiguous sensory information. As suggested by Ma *et. al.* (2006) and shown here, it is possible that the brain does this operation by simply performing linear combinations of populations of Poisson neurons receiving various sensory input. Cortical neurons may be particularly well suited for this task because they have Poisson-like firing rates, displaying reliable variability from trial to trial (Tolhurst, Movshon & Dean, 1982; Softky & Koch, 1993).\n" + "\n" + "High levels of noise in these populations might at first be difficult to reconcile considering highly precise behavioral data. However, variability in neural populations might be direcly representative of uncertainty in environmental stimuli. Variability in cortical populations would then be critical for precise neural coding.\n" + "\n" + "## References\n" + "\n" + "* Ernst MO, Banks MS. (2002). Humans integrate visual and haptic information in a statistically optimal fashion. *Nature.*\n" + "* Körding KP, Wolpert DM. (2004). Bayesian integration in sensorimotor learning. *Nature.*\n" + "* Ma WJ, Beck JM, Latham PE, Pouget A. (2006). Bayesian inference with probabilistic population codes. *Nature Neuroscience.*\n" + "* Softky WR, Koch C. (1993). The highly irregular firing of cortical cells is inconsistent with temporal integration of random EPSPs. *Journal of Neuroscience.*\n" + "* Stocker AA, Simoncelli EP. (2006). Noise characteristics and prior expectations in human visual speed perception. *Nature Neuroscience.*\n" + "* Tolhurst, DJ, Movshon JA, Dean AF. (1983). The statistical reliability of signals in single neurons in cat and monkey visual cortex. *Vision Research.*\n" + "* van Beers RJ, Sittig AC, Gon JJ. (1999). Integration of proprioceptive and visual position-information: An experimentally supported model. *Journal of Neurophysiology.*" + )); + + QCOMPARE(entry, nullptr); +} + +void WorksheetTest::testJupyter7() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(loadWorksheet(QLatin1String("Transformation2D.ipynb"))); + + QCOMPARE(w->isReadOnly(), false); + QCOMPARE(w->session()->backend()->id(), QLatin1String("python")); + + WorksheetEntry* entry = w->firstEntry(); + + testMarkdown(entry, QString::fromUtf8( + "# Rigid-body transformations in a plane (2D)\n" + "\n" + "> Marcos Duarte \n" + "> Laboratory of Biomechanics and Motor Control ([http://demotu.org/](http://demotu.org/)) \n" + "> Federal University of ABC, Brazil" + )); + + testMarkdown(entry, QString::fromUtf8( + "The kinematics of a rigid body is completely described by its pose, i.e., its position and orientation in space (and the corresponding changes are translation and rotation). The translation and rotation of a rigid body are also known as rigid-body transformations (or simply, rigid transformations).\n" + "\n" + "Remember that in physics, a [rigid body](https://en.wikipedia.org/wiki/Rigid_body) is a model (an idealization) for a body in which deformation is neglected, i.e., the distance between every pair of points in the body is considered constant. Consequently, the position and orientation of a rigid body can be completely described by a corresponding coordinate system attached to it. For instance, two (or more) coordinate systems can be used to represent the same rigid body at two (or more) instants or two (or more) rigid bodies in space.\n" + "\n" + "Rigid-body transformations are used in motion analysis (e.g., of the human body) to describe the position and orientation of each segment (using a local (anatomical) coordinate system defined for each segment) in relation to a global coordinate system fixed at the laboratory. Furthermore, one can define an additional coordinate system called technical coordinate system also fixed at the rigid body but not based on anatomical landmarks. In this case, the position of the technical markers is first described in the laboratory coordinate system, and then the technical coordinate system is calculated to recreate the anatomical landmarks position in order to finally calculate the original anatomical coordinate system (and obtain its unknown position and orientation through time).\n" + "\n" + "In what follows, we will study rigid-body transformations by looking at the transformations between two coordinate systems. For simplicity, let's first analyze planar (two-dimensional) rigid-body transformations and later we will extend these concepts to three dimensions (where the study of rotations are more complicated)." + )); + + testMarkdown(entry, QString::fromUtf8( + "## Affine transformations\n" + "\n" + "Translation and rotation are two examples of [affine transformations](https://en.wikipedia.org/wiki/Affine_transformation). Affine transformations preserve straight lines, but not necessarily the distance between points. Other examples of affine transformations are scaling, shear, and reflection. The figure below illustrates different affine transformations in a plane. Note that a 3x3 matrix is shown on top of each transformation; these matrices are known as the transformation matrices and are the mathematical representation of the physical transformations. Next, we will study how to use this approach to describe the translation and rotation of a rigid-body. \n" + "
        \n" + "
        Affine transformations
        Figure. Examples of affine transformations in a plane applied to a square (with the letter F in it) and the corresponding transformation matrices (image from Wikipedia).
        " + )); + + testMarkdown(entry, QString::fromUtf8( + "## Translation\n" + "\n" + "In a two-dimensional space, two coordinates and one angle are sufficient to describe the pose of the rigid body, totalizing three degrees of freedom for a rigid body. Let's see first the transformation for translation, then for rotation, and combine them at last.\n" + "\n" + "A pure two-dimensional translation of a coordinate system in relation to other coordinate system and the representation of a point in these two coordinate systems are illustrated in the figure below (remember that this is equivalent to describing a translation between two rigid bodies). \n" + "
        \n" + "
        translation 2D
        Figure. A point in two-dimensional space represented in two coordinate systems (Global and local), with one system translated.
        \n" + "\n" + "The position of point $\\mathbf{P}$ originally described in the local coordinate system but now described in the Global coordinate system in vector form is:\n" + "\n" + "$$ \\mathbf{P_G} = \\mathbf{L_G} + \\mathbf{P_l} $$\n" + "\n" + "Or for each component:\n" + "\n" + "$$ \\mathbf{P_X} = \\mathbf{L_X} + \\mathbf{P}_x $$\n" + "\n" + "$$ \\mathbf{P_Y} = \\mathbf{L_Y} + \\mathbf{P}_y $$\n" + "\n" + "And in matrix form is:\n" + "\n" + "$$\n" + "\\begin{bmatrix}\n" + "\\mathbf{P_X} \\\\\n" + "\\mathbf{P_Y} \n" + "\\end{bmatrix} =\n" + "\\begin{bmatrix}\n" + "\\mathbf{L_X} \\\\\n" + "\\mathbf{L_Y} \n" + "\\end{bmatrix} +\n" + "\\begin{bmatrix}\n" + "\\mathbf{P}_x \\\\\n" + "\\mathbf{P}_y \n" + "\\end{bmatrix}\n" + "$$\n" + "\n" + "Because position and translation can be treated as vectors, the inverse operation, to describe the position at the local coordinate system in terms of the Global coordinate system, is simply:\n" + "\n" + "$$ \\mathbf{P_l} = \\mathbf{P_G} -\\mathbf{L_G} $$\n" + "
        \n" + "$$ \\begin{bmatrix}\n" + "\\mathbf{P}_x \\\\\n" + "\\mathbf{P}_y \n" + "\\end{bmatrix} =\n" + "\\begin{bmatrix}\n" + "\\mathbf{P_X} \\\\\n" + "\\mathbf{P_Y} \n" + "\\end{bmatrix} - \n" + "\\begin{bmatrix}\n" + "\\mathbf{L_X} \\\\\n" + "\\mathbf{L_Y} \n" + "\\end{bmatrix} $$\n" + "\n" + "From classical mechanics, this transformation is an example of [Galilean transformation](http://en.wikipedia.org/wiki/Galilean_transformation). \n" + "\n" + "For example, if the local coordinate system is translated by $\\mathbf{L_G}=[2, 3]$ in relation to the Global coordinate system, a point with coordinates $\\mathbf{P_l}=[4, 5]$ at the local coordinate system will have the position $\\mathbf{P_G}=[6, 8]$ at the Global coordinate system:" + )); + + qDebug() << "command entry 1"; + testCommandEntry(entry, 1, QString::fromUtf8( + "# Import the necessary libraries\n" + "import numpy as np" + )); + + qDebug() << "command entry 2"; + testCommandEntry(entry, 2, 1, QString::fromUtf8( + "LG = np.array([2, 3]) # (Numpy 1D array with 2 elements)\n" + "Pl = np.array([4, 5])\n" + "PG = LG + Pl\n" + "PG" + )); + testTextResult(entry, 0, QString::fromLatin1( + "array([6, 8])" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "This operation also works if we have more than one data point (NumPy knows how to handle vectors with different dimensions):" + )); + + qDebug() << "command entry 3"; + testCommandEntry(entry, 3, 1, QString::fromUtf8( + "Pl = np.array([[4, 5], [6, 7], [8, 9]]) # 2D array with 3 rows and two columns\n" + "PG = LG + Pl\n" + "PG" + )); + testTextResult(entry, 0, QString::fromLatin1( + "array([[ 6, 8],\n" + " [ 8, 10],\n" + " [10, 12]])" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "## Rotation\n" + "\n" + "A pure two-dimensional rotation of a coordinate system in relation to other coordinate system and the representation of a point in these two coordinate systems are illustrated in the figure below (remember that this is equivalent to describing a rotation between two rigid bodies). The rotation is around an axis orthogonal to this page, not shown in the figure (for a three-dimensional coordinate system the rotation would be around the $\\mathbf{Z}$ axis). \n" + "
        \n" + "
        rotation 2D
        Figure. A point in the two-dimensional space represented in two coordinate systems (Global and local), with one system rotated in relation to the other around an axis orthogonal to both coordinate systems.
        \n" + "\n" + "Consider we want to express the position of point $\\mathbf{P}$ in the Global coordinate system in terms of the local coordinate system knowing only the coordinates at the local coordinate system and the angle of rotation between the two coordinate systems. \n" + "\n" + "There are different ways of deducing that, we will see three of these methods next. " + )); + + testMarkdown(entry, QString::fromUtf8( + "### 1. Using trigonometry\n" + "\n" + "From figure below, the coordinates of point $\\mathbf{P}$ in the Global coordinate system can be determined finding the sides of the triangles marked in red. \n" + "
        \n" + "
        rotation 2D
        Figure. The coordinates of a point at the Global coordinate system in terms of the coordinates of this point at the local coordinate system.
        \n" + "\n" + "Then: \n" + "\n" + "$$ \\mathbf{P_X} = \\mathbf{P}_x \\cos \\alpha - \\mathbf{P}_y \\sin \\alpha $$\n" + "\n" + "$$ \\mathbf{P_Y} = \\mathbf{P}_x \\sin \\alpha + \\mathbf{P}_y \\cos \\alpha $$ \n" + "\n" + "The equations above can be expressed in matrix form:\n" + "\n" + "$$\n" + "\\begin{bmatrix} \n" + "\\mathbf{P_X} \\\\\n" + "\\mathbf{P_Y} \n" + "\\end{bmatrix} =\n" + "\\begin{bmatrix}\n" + "\\cos\\alpha & -\\sin\\alpha \\\\\n" + "\\sin\\alpha & \\cos\\alpha \n" + "\\end{bmatrix} \\begin{bmatrix}\n" + "\\mathbf{P}_x \\\\\n" + "\\mathbf{P}_y \n" + "\\end{bmatrix} $$\n" + "\n" + "Or simply:\n" + "\n" + "$$ \\mathbf{P_G} = \\mathbf{R_{Gl}}\\mathbf{P_l} $$\n" + "\n" + "Where $\\mathbf{R_{Gl}}$ is the rotation matrix that rotates the coordinates from the local to the Global coordinate system:\n" + "\n" + "$$ \\mathbf{R_{Gl}} = \\begin{bmatrix}\n" + "\\cos\\alpha & -\\sin\\alpha \\\\\n" + "\\sin\\alpha & \\cos\\alpha \n" + "\\end{bmatrix} $$\n" + "\n" + "So, given any position at the local coordinate system, with the rotation matrix above we are able to determine the position at the Global coordinate system. Let's check that before looking at other methods to obtain this matrix. \n" + "\n" + "For instance, consider a local coordinate system rotated by $45^o$ in relation to the Global coordinate system, a point in the local coordinate system with position $\\mathbf{P_l}=[1, 1]$ will have the following position at the Global coordinate system:" + )); + + qDebug() << "command entry 4"; + testCommandEntry(entry, 4, 1, QString::fromUtf8( + "RGl = np.array([[np.cos(np.pi/4), -np.sin(np.pi/4)], [np.sin(np.pi/4), np.cos(np.pi/4)]])\n" + "Pl = np.array([[1, 1]]).T # transpose the array for correct matrix multiplication\n" + "PG = np.dot(RGl, Pl) # the function dot() is used for matrix multiplication of arrays\n" + "np.around(PG, 4) # round the number due to floating-point arithmetic errors" + )); + testTextResult(entry, 0, QString::fromLatin1( + "array([[0. ],\n" + " [1.4142]])" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "We have rounded the number to 4 decimal places due to [floating-point arithmetic errors in the computation](http://floating-point-gui.de). \n" + "\n" + "And if we have the points [1,1], [0,1], [1,0] at the local coordinate system, their positions at the Global coordinate system are:" + )); + + qDebug() << "command entry 5"; + testCommandEntry(entry, 5, 1, QString::fromUtf8( + "Pl = np.array([[1, 1], [0, 1], [1, 0]]).T # transpose array for matrix multiplication\n" + "PG = np.dot(RGl, Pl) # the function dot() is used for matrix multiplication with arrays\n" + "np.around(PG, 4) # round the number due to floating point arithmetic errors" + )); + testTextResult(entry, 0, QString::fromLatin1( + "array([[ 0. , -0.7071, 0.7071],\n" + " [ 1.4142, 0.7071, 0.7071]])" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "We have done all the calculations using the array function in NumPy. A [NumPy array is different than a matrix](http://www.scipy.org/NumPy_for_Matlab_Users), if we want to use explicit matrices in NumPy, the calculation above will be:" + )); + + qDebug() << "command entry 6"; + testCommandEntry(entry, 6, 1, QString::fromUtf8( + "RGl = np.mat([[np.cos(np.pi/4), -np.sin(np.pi/4)], [np.sin(np.pi/4), np.cos(np.pi/4)]])\n" + "Pl = np.mat([[1, 1], [0,1], [1, 0]]).T # 2x3 matrix\n" + "PG = RGl*Pl # matrix multiplication in NumPy\n" + "np.around(PG, 4) # round the number due to floating point arithmetic errors" + )); + testTextResult(entry, 0, QString::fromLatin1( + "array([[ 0. , -0.7071, 0.7071],\n" + " [ 1.4142, 0.7071, 0.7071]])" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "Both array and matrix types work in NumPy, but you should choose only one type and not mix them; the array is preferred because it is [the standard vector/matrix/tensor type of NumPy](http://www.scipy.org/NumPy_for_Matlab_Users)." + )); + + testMarkdown(entry, QString::fromUtf8( + "### 2. Using direction cosines\n" + "\n" + "Another way to determine the rotation matrix is to use the concept of direction cosine. \n" + "\n" + "> Direction cosines are the cosines of the angles between any two vectors. \n" + "\n" + "For the present case with two coordinate systems, they are the cosines of the angles between each axis of one coordinate system and each axis of the other coordinate system. The figure below illustrates the directions angles between the two coordinate systems, expressing the local coordinate system in terms of the Global coordinate system. \n" + "
        \n" + "
        direction angles 2D
        Figure. Definition of direction angles at the two-dimensional space.
        \n" + "
        \n" + "$$ \\mathbf{R_{Gl}} = \\begin{bmatrix}\n" + "\\cos\\mathbf{X}x & \\cos\\mathbf{X}y \\\\\n" + "\\cos\\mathbf{Y}x & \\cos\\mathbf{Y}y \n" + "\\end{bmatrix} = \n" + "\\begin{bmatrix}\n" + "\\cos(\\alpha) & \\cos(90^o+\\alpha) \\\\\n" + "\\cos(90^o-\\alpha) & \\cos(\\alpha)\n" + "\\end{bmatrix} = \n" + "\\begin{bmatrix}\n" + "\\cos\\alpha & -\\sin\\alpha \\\\\n" + "\\sin\\alpha & \\cos\\alpha \n" + "\\end{bmatrix} $$ \n" + "\n" + "The same rotation matrix as obtained before.\n" + "\n" + "Note that the order of the direction cosines is because in our convention, the first row is for the $\\mathbf{X}$ coordinate and the second row for the $\\mathbf{Y}$ coordinate (the outputs). For the inputs, we followed the same order, first column for the $\\mathbf{x}$ coordinate, second column for the $\\mathbf{y}$ coordinate." + )); + + testMarkdown(entry, QString::fromUtf8( + "### 3. Using a basis\n" + "\n" + "Another way to deduce the rotation matrix is to view the axes of the rotated coordinate system as unit vectors, versors, of a basis as illustrated in the figure below.\n" + "\n" + "> A basis is a set of linearly independent vectors that can represent every vector in a given vector space, i.e., a basis defines a coordinate system.\n" + "\n" + "
        basis 2D
        Figure. Definition of the rotation matrix using a basis at the two-dimensional space.
        \n" + "\n" + "The coordinates of these two versors at the local coordinate system in terms of the Global coordinate system are:\n" + "\n" + "$$ \\begin{array}{l l}\n" + "\\mathbf{e}_x = \\cos\\alpha\\:\\mathbf{e_X} + \\sin\\alpha\\:\\mathbf{e_Y} \\\\\n" + "\\mathbf{e}_y = -\\sin\\alpha\\:\\mathbf{e_X} + \\cos\\alpha\\:\\mathbf{e_Y}\n" + "\\end{array}$$\n" + "\n" + "Note that as unit vectors, each of the versors above should have norm (length) equals to one, which indeed is the case.\n" + "\n" + "If we express each versor above as different columns of a matrix, we obtain the rotation matrix again: \n" + "\n" + "$$ \\mathbf{R_{Gl}} = \\begin{bmatrix}\n" + "\\cos\\alpha & -\\sin\\alpha \\\\\\\n" + "\\sin\\alpha & \\cos\\alpha \n" + "\\end{bmatrix} $$\n" + "\n" + "This means that the rotation matrix can be viewed as the basis of the rotated coordinate system defined by its versors. \n" + "\n" + "This third way to derive the rotation matrix is in fact the method most commonly used in motion analysis because the coordinates of markers (in the Global/laboratory coordinate system) are what we measure with cameras. " + )); + + testMarkdown(entry, QString::fromUtf8( + "### 4. Using the inner (dot or scalar) product between versors\n" + "\n" + "Yet another way to deduce the rotation matrix is to define it as the dot product between the versors of the bases related to the two coordinate systems:\n" + "\n" + "$$\n" + "\\mathbf{R_{Gl}} = \\begin{bmatrix}\n" + "\\mathbf{\\hat{e}_X}\\! \\cdot \\mathbf{\\hat{e}_x} & \\mathbf{\\hat{e}_X}\\! \\cdot \\mathbf{\\hat{e}_y} \\\\\n" + "\\mathbf{\\hat{e}_Y}\\! \\cdot \\mathbf{\\hat{e}_x} & \\mathbf{\\hat{e}_Y}\\! \\cdot \\mathbf{\\hat{e}_y} \n" + "\\end{bmatrix}\n" + "$$ \n" + "\n" + "By definition:\n" + "\n" + "$$ \\hat{\\mathbf{e}}_1\\! \\cdot \\hat{\\mathbf{e}}_2 = ||\\hat{\\mathbf{e}}_1|| \\times ||\\hat{\\mathbf{e}}_2||\\cos(e_1,e_2)=\\cos(e_1,e_2)$$\n" + "\n" + "And the rotation matrix will be equal to the matrix deduced based on the direction cosines." + )); + + testMarkdown(entry, QString::fromUtf8( + "### Local-to-Global and Global-to-local coordinate systems' rotations" + )); + + testMarkdown(entry, QString::fromUtf8( + "If we want the inverse operation, to express the position of point $\\mathbf{P}$ in the local coordinate system in terms of the Global coordinate system, the figure below illustrates that using trigonometry. \n" + "
        \n" + "
        rotation 2D
        Figure. The coordinates of a point at the local coordinate system in terms of the coordinates at the Global coordinate system.
        \n" + "\n" + "Then:\n" + "\n" + "$$ \\mathbf{P}_x = \\;\\;\\mathbf{P_X} \\cos \\alpha + \\mathbf{P_Y} \\sin \\alpha $$\n" + "\n" + "$$ \\mathbf{P}_y = -\\mathbf{P_X} \\sin \\alpha + \\mathbf{P_Y} \\cos \\alpha $$\n" + "\n" + "And in matrix form:\n" + "\n" + "$$\n" + "\\begin{bmatrix} \n" + "\\mathbf{P}_x \\\\\n" + "\\mathbf{P}_y \n" + "\\end{bmatrix} =\n" + "\\begin{bmatrix}\n" + "\\cos\\alpha & \\sin\\alpha \\\\\n" + "-\\sin\\alpha & \\cos\\alpha \n" + "\\end{bmatrix} \\begin{bmatrix}\n" + "\\mathbf{P_X} \\\\\n" + "\\mathbf{P_Y} \n" + "\\end{bmatrix} $$\n" + "\n" + "$$ \\mathbf{P_l} = \\mathbf{R_{lG}}\\mathbf{P_G} $$\n" + "\n" + "Where $\\mathbf{R_{lG}}$ is the rotation matrix that rotates the coordinates from the Global to the local coordinate system (note the inverse order of the subscripts):\n" + "\n" + "$$ \\mathbf{R_{lG}} = \\begin{bmatrix}\n" + "\\cos\\alpha & \\sin\\alpha \\\\\n" + "-\\sin\\alpha & \\cos\\alpha \n" + "\\end{bmatrix} $$\n" + "\n" + "If we use the direction cosines to calculate the rotation matrix, because the axes didn't change, the cosines are the same, only the order changes, now $\\mathbf{x, y}$ are the rows (outputs) and $\\mathbf{X, Y}$ are the columns (inputs):\n" + "\n" + "$$ \\mathbf{R_{lG}} = \\begin{bmatrix}\n" + "\\cos\\mathbf{X}x & \\cos\\mathbf{Y}x \\\\\n" + "\\cos\\mathbf{X}y & \\cos\\mathbf{Y}y \n" + "\\end{bmatrix} = \n" + "\\begin{bmatrix}\n" + "\\cos(\\alpha) & \\cos(90^o-\\alpha) \\\\\n" + "\\cos(90^o+\\alpha) & \\cos(\\alpha)\n" + "\\end{bmatrix} = \n" + "\\begin{bmatrix}\n" + "\\cos\\alpha & \\sin\\alpha \\\\\n" + "-\\sin\\alpha & \\cos\\alpha \n" + "\\end{bmatrix} $$\n" + "\n" + "And defining the versors of the axes in the Global coordinate system for a basis in terms of the local coordinate system would also produce this latter rotation matrix.\n" + "\n" + "The two sets of equations and matrices for the rotations from Global-to-local and local-to-Global coordinate systems are very similar, this is no coincidence. Each of the rotation matrices we deduced, $\\mathbf{R_{Gl}}$ and $\\mathbf{R_{lG}}$, perform the inverse operation in relation to the other. Each matrix is the inverse of the other. \n" + "\n" + "In other words, the relation between the two rotation matrices means it is equivalent to instead of rotating the local coordinate system by $\\alpha$ in relation to the Global coordinate system, to rotate the Global coordinate system by $-\\alpha$ in relation to the local coordinate system; remember that $\\cos(-\\alpha)=\\cos(\\alpha)$ and $\\sin(-\\alpha)=-\\sin(\\alpha)$." + )); + + testMarkdown(entry, QString::fromUtf8( + "### Rotation of a Vector\n" + "\n" + "We can also use the rotation matrix to rotate a vector by a given angle around an axis of the coordinate system as shown in the figure below. \n" + "
        \n" + "
        rotation 2D of a vector
        Figure. Rotation of a position vector $\\mathbf{P}$ by an angle $\\alpha$ in the two-dimensional space.
        \n" + "\n" + "We will not prove that we use the same rotation matrix, but think that in this case the vector position rotates by the same angle instead of the coordinate system. The new coordinates of the vector position $\\mathbf{P'}$ rotated by an angle $\\alpha$ is simply the rotation matrix (for the angle $\\alpha$) multiplied by the coordinates of the vector position $\\mathbf{P}$:\n" + "\n" + "$$ \\mathbf{P'} = \\mathbf{R}_\\alpha\\mathbf{P} $$\n" + "\n" + "Consider for example that $\\mathbf{P}=[2,1]$ and $\\alpha=30^o$; the coordinates of $\\mathbf{P'}$ are:" + )); + + qDebug() << "command entry 7"; + testCommandEntry(entry, 7, 1, QString::fromUtf8( + "a = np.pi/6\n" + "R = np.array([[np.cos(a), -np.sin(a)], [np.sin(a), np.cos(a)]])\n" + "P = np.array([[2, 1]]).T\n" + "Pl = np.dot(R, P)\n" + "print(\"P':\\n\", Pl)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "P':\n" + " [[1.23205081]\n" + " [1.8660254 ]]" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "### The rotation matrix\n" + "\n" + "**[See here for a review about matrix and its main properties](http://nbviewer.ipython.org/github/demotu/BMC/blob/master/notebooks/Matrix.ipynb)**.\n" + "\n" + "A nice property of the rotation matrix is that its inverse is the transpose of the matrix (because the columns/rows are mutually orthogonal and have norm equal to one). \n" + "This property can be shown with the rotation matrices we deduced:\n" + "\n" + "$$ \\begin{array}{l l}\n" + "\\mathbf{R}\\:\\mathbf{R^T} & = \n" + "\\begin{bmatrix}\n" + "\\cos\\alpha & -\\sin\\alpha \\\\\n" + "\\sin\\alpha & \\cos\\alpha \n" + "\\end{bmatrix} \n" + "\\begin{bmatrix}\n" + "\\cos\\alpha & \\sin\\alpha \\\\\n" + "-\\sin\\alpha & \\cos\\alpha \n" + "\\end{bmatrix} \\\\\n" + "& = \\begin{bmatrix}\n" + "\\cos^2\\alpha+\\sin^2\\alpha & \\cos\\alpha \\sin\\alpha-\\sin\\alpha \\cos\\alpha\\;\\; \\\\\n" + "\\sin\\alpha \\cos\\alpha-\\cos\\alpha \\sin\\alpha & \\sin^2\\alpha+\\cos^2\\alpha\\;\\;\n" + "\\end{bmatrix} \\\\\n" + "& = \\begin{bmatrix}\n" + "1 & 0 \\\\\n" + "0 & 1 \n" + "\\end{bmatrix} \\\\\n" + "& = \\mathbf{I} \\\\\n" + "\\mathbf{R^{-1}} = \\mathbf{R^T}\n" + "\\end{array} $$\n" + "\n" + "This means that if we have a rotation matrix, we know its inverse. \n" + "\n" + "The transpose and inverse operators in NumPy are methods of the array:" + )); + + qDebug() << "command entry 8"; + testCommandEntry(entry, 8, 1, QString::fromUtf8( + "RGl = np.mat([[np.cos(np.pi/4), -np.sin(np.pi/4)], [np.sin(np.pi/4), np.cos(np.pi/4)]])\n" + "\n" + "print('Orthogonal matrix (RGl):\\n', np.around(RGl, 4))\n" + "print('Transpose (RGl.T):\\n', np.around(RGl.T, 4))\n" + "print('Inverse (RGl.I):\\n', np.around(RGl.I, 4))" + )); + testTextResult(entry, 0, QString::fromUtf8( + "Orthogonal matrix (RGl):\n" + " [[ 0.7071 -0.7071]\n" + " [ 0.7071 0.7071]]\n" + "Transpose (RGl.T):\n" + " [[ 0.7071 0.7071]\n" + " [-0.7071 0.7071]]\n" + "Inverse (RGl.I):\n" + " [[ 0.7071 0.7071]\n" + " [-0.7071 0.7071]]" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "Using the inverse and the transpose mathematical operations, the coordinates at the local coordinate system given the coordinates at the Global coordinate system and the rotation matrix can be obtained by: \n" + "\n" + "$$ \\begin{array}{l l}\n" + "\\mathbf{P_G} = \\mathbf{R_{Gl}}\\mathbf{P_l} \\implies \\\\\n" + "\\\\\n" + "\\mathbf{R_{Gl}^{-1}}\\mathbf{P_G} = \\mathbf{R_{Gl}^{-1}}\\mathbf{R_{Gl}}\\mathbf{P_l} \\implies \\\\\n" + "\\\\\n" + "\\mathbf{R_{Gl}^{-1}}\\mathbf{P_G} = \\mathbf{I}\\:\\mathbf{P_l} \\implies \\\\\n" + "\\\\\n" + "\\mathbf{P_l} = \\mathbf{R_{Gl}^{-1}}\\mathbf{P_G} = \\mathbf{R_{Gl}^T}\\mathbf{P_G} \\quad \\text{or}\n" + "\\quad \\mathbf{P_l} = \\mathbf{R_{lG}}\\mathbf{P_G}\n" + "\\end{array} $$\n" + "\n" + "Where we referred the inverse of $\\mathbf{R_{Gl}}\\;(\\:\\mathbf{R_{Gl}^{-1}})$ as $\\mathbf{R_{lG}}$ (note the different order of the subscripts). \n" + "\n" + "Let's show this calculation in NumPy:" + )); + + qDebug() << "command entry 9"; + testCommandEntry(entry, 9, 1, QString::fromUtf8( + "RGl = np.array([[np.cos(np.pi/4), -np.sin(np.pi/4)], [np.sin(np.pi/4), np.cos(np.pi/4)]])\n" + "print('Rotation matrix (RGl):\\n', np.around(RGl, 4))\n" + "\n" + "Pl = np.array([[1, 1]]).T # transpose the array for correct matrix multiplication\n" + "print('Position at the local coordinate system (Pl):\\n', Pl)\n" + "\n" + "PG = np.dot(RGl, Pl) # the function dot() is used for matrix multiplication with arrays\n" + "print('Position at the Global coordinate system (PG=RGl*Pl):\\n', np.around(PG,2))\n" + "\n" + "Pl = np.dot(RGl.T, PG)\n" + "print('Position at the local coordinate system using the inverse of RGl (Pl=RlG*PG):\\n', Pl)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "Rotation matrix (RGl):\n" + " [[ 0.7071 -0.7071]\n" + " [ 0.7071 0.7071]]\n" + "Position at the local coordinate system (Pl):\n" + " [[1]\n" + " [1]]\n" + "Position at the Global coordinate system (PG=RGl*Pl):\n" + " [[0. ]\n" + " [1.41]]\n" + "Position at the local coordinate system using the inverse of RGl (Pl=RlG*PG):\n" + " [[1.]\n" + " [1.]]" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "**In summary, some of the properties of the rotation matrix are:** \n" + "1. The columns of the rotation matrix form a basis of (independent) unit vectors (versors) and the rows are also independent versors since the transpose of the rotation matrix is another rotation matrix. \n" + "2. The rotation matrix is orthogonal. There is no linear combination of one of the lines or columns of the matrix that would lead to the other row or column, i.e., the lines and columns of the rotation matrix are independent, orthogonal, to each other (this is property 1 rewritten). Because each row and column have norm equal to one, this matrix is also sometimes said to be orthonormal. \n" + "3. The determinant of the rotation matrix is equal to one (or equal to -1 if a left-hand coordinate system was used, but you should rarely use that). For instance, the determinant of the rotation matrix we deduced is $cos\\alpha cos\\alpha - sin\\alpha(-sin\\alpha)=1$.\n" + "4. The inverse of the rotation matrix is equals to its transpose.\n" + "\n" + "**On the different meanings of the rotation matrix:** \n" + "- It represents the coordinate transformation between the coordinates of a point expressed in two different coordinate systems. \n" + "- It describes the rotation between two coordinate systems. The columns are the direction cosines (versors) of the axes of the rotated coordinate system in relation to the other coordinate system and the rows are also direction cosines (versors) for the inverse rotation. \n" + "- It is an operator for the calculation of the rotation of a vector in a coordinate system.\n" + "- Rotation matrices provide a means of numerically representing rotations without appealing to angular specification.\n" + "\n" + "**Which matrix to use, from local to Global or Global to local?** \n" + "- A typical use of the transformation is in movement analysis, where there are the fixed Global (laboratory) coordinate system and the local (moving, e.g. anatomical) coordinate system attached to each body segment. Because the movement of the body segment is measured in the Global coordinate system, using cameras for example, and we want to reconstruct the coordinates of the markers at the anatomical coordinate system, we want the transformation leading from the Global coordinate system to the local coordinate system.\n" + "- Of course, if you have one matrix, it is simple to get the other; you just have to pay attention to use the right one." + )); + + testMarkdown(entry, QString::fromUtf8( + "## Translation and rotation\n" + "\n" + "Consider now the case where the local coordinate system is translated and rotated in relation to the Global coordinate system and a point is described in both coordinate systems as illustrated in the figure below (once again, remember that this is equivalent to describing a translation and a rotation between two rigid bodies). \n" + "
        \n" + "
        translation and rotation 2D
        Figure. A point in two-dimensional space represented in two coordinate systems, with one system translated and rotated.
        \n" + "\n" + "The position of point $\\mathbf{P}$ originally described in the local coordinate system, but now described in the Global coordinate system in vector form is:\n" + "\n" + "$$ \\mathbf{P_G} = \\mathbf{L_G} + \\mathbf{R_{Gl}}\\mathbf{P_l} $$\n" + "\n" + "And in matrix form:\n" + "\n" + "$$ \\begin{bmatrix}\n" + "\\mathbf{P_X} \\\\\n" + "\\mathbf{P_Y} \n" + "\\end{bmatrix} =\n" + "\\begin{bmatrix} \\mathbf{L_{X}} \\\\\\ \\mathbf{L_{Y}} \\end{bmatrix} + \n" + "\\begin{bmatrix}\n" + "\\cos\\alpha & -\\sin\\alpha \\\\\n" + "\\sin\\alpha & \\cos\\alpha \n" + "\\end{bmatrix} \\begin{bmatrix}\n" + "\\mathbf{P}_x \\\\\n" + "\\mathbf{P}_y \n" + "\\end{bmatrix} $$\n" + "\n" + "This means that we first *disrotate* the local coordinate system and then correct for the translation between the two coordinate systems. Note that we can't invert this order: the point position is expressed in the local coordinate system and we can't add this vector to another vector expressed in the Global coordinate system, first we have to convert the vectors to the same coordinate system.\n" + "\n" + "If now we want to find the position of a point at the local coordinate system given its position in the Global coordinate system, the rotation matrix and the translation vector, we have to invert the expression above:\n" + "\n" + "$$ \\begin{array}{l l}\n" + "\\mathbf{P_G} = \\mathbf{L_G} + \\mathbf{R_{Gl}}\\mathbf{P_l} \\implies \\\\\n" + "\\\\\n" + "\\mathbf{R_{Gl}^{-1}}(\\mathbf{P_G} - \\mathbf{L_G}) = \\mathbf{R_{Gl}^{-1}}\\mathbf{R_{Gl}}\\mathbf{P_l} \\implies \\\\\n" + "\\\\\n" + "\\mathbf{P_l} = \\mathbf{R_{Gl}^{-1}}\\left(\\mathbf{P_G}-\\mathbf{L_G}\\right) = \\mathbf{R_{Gl}^T}\\left(\\mathbf{P_G}-\\mathbf{L_G}\\right) \\quad \\text{or} \\quad \\mathbf{P_l} = \\mathbf{R_{lG}}\\left(\\mathbf{P_G}-\\mathbf{L_G}\\right) \n" + "\\end{array} $$\n" + "\n" + "The expression above indicates that to perform the inverse operation, to go from the Global to the local coordinate system, we first translate and then rotate the coordinate system." + )); + + testMarkdown(entry, QString::fromUtf8( + "### Transformation matrix\n" + "\n" + "It is possible to combine the translation and rotation operations in only one matrix, called the transformation matrix (also referred as homogeneous transformation matrix):\n" + "\n" + "$$ \\begin{bmatrix}\n" + "\\mathbf{P_X} \\\\\n" + "\\mathbf{P_Y} \\\\\n" + "1\n" + "\\end{bmatrix} =\n" + "\\begin{bmatrix}\n" + "\\cos\\alpha & -\\sin\\alpha & \\mathbf{L_{X}} \\\\\n" + "\\sin\\alpha & \\cos\\alpha & \\mathbf{L_{Y}} \\\\\n" + "0 & 0 & 1\n" + "\\end{bmatrix} \\begin{bmatrix}\n" + "\\mathbf{P}_x \\\\\n" + "\\mathbf{P}_y \\\\\n" + "1\n" + "\\end{bmatrix} $$\n" + "\n" + "Or simply:\n" + "\n" + "$$ \\mathbf{P_G} = \\mathbf{T_{Gl}}\\mathbf{P_l} $$\n" + "\n" + "The inverse operation, to express the position at the local coordinate system in terms of the Global coordinate system, is:\n" + "\n" + "$$ \\mathbf{P_l} = \\mathbf{T_{Gl}^{-1}}\\mathbf{P_G} $$\n" + "\n" + "However, because $\\mathbf{T_{Gl}}$ is not orthonormal when there is a translation, its inverse is not its transpose. Its inverse in matrix form is given by:\n" + "\n" + "$$ \\begin{bmatrix}\n" + "\\mathbf{P}_x \\\\\n" + "\\mathbf{P}_y \\\\\n" + "1\n" + "\\end{bmatrix} =\n" + "\\begin{bmatrix}\n" + "\\mathbf{R^{-1}_{Gl}} & \\cdot & - \\mathbf{R^{-1}_{Gl}}\\mathbf{L_{G}} \\\\\n" + "\\cdot & \\cdot & \\cdot \\\\\n" + "0 & 0 & 1\n" + "\\end{bmatrix} \\begin{bmatrix}\n" + "\\mathbf{P_X} \\\\\n" + "\\mathbf{P_Y} \\\\\n" + "1\n" + "\\end{bmatrix} $$" + )); + + testMarkdown(entry, QString::fromUtf8( + "### Calculation of a basis\n" + "\n" + "A typical scenario in motion analysis is to calculate the rotation matrix using the position of markers placed on the moving rigid body. With the markers' positions, we create a local basis, which by definition is the rotation matrix for the rigid body with respect to the Global (laboratory) coordinate system. To define a coordinate system using a basís, we also will need to define an origin. \n" + "\n" + "Let's see how to calculate a basis given the markers' positions. \n" + "Consider the markers at m1=[1,1]`, m2=[1,2] and m3=[-1,1] measured in the Global coordinate system as illustrated in the figure below: \n" + "
        \n" + "
        translation and rotation 2D
        Figure. Three points in the two-dimensional space, two possible vectors given these points, and the corresponding basis.
        \n" + "\n" + "A possible local coordinate system with origin at the position of m1 is also illustrated in the figure above. Intentionally, the three markers were chosen to form orthogonal vectors. \n" + "The translation vector between the two coordinate system is:\n" + "\n" + "$$\\mathbf{L_{Gl}} = m_1 - [0,0] = [1,1]$$\n" + "\n" + "The vectors expressing the axes of the local coordinate system are:\n" + "\n" + "$$ x = m_2 - m_1 = [1,2] - [1,1] = [0,1] $$\n" + "\n" + "$$ y = m_3 - m_1 = [-1,1] - [1,1] = [-2,0] $$\n" + "\n" + "Note that these two vectors do not form a basis yet because they are not unit vectors (in fact, only *y* is not a unit vector). Let's normalize these vectors:\n" + "\n" + "$$ \\begin{array}{}\n" + "e_x = \\frac{x}{||x||} = \\frac{[0,1]}{\\sqrt{0^2+1^2}} = [0,1] \\\\\n" + "\\\\\n" + "e_y = \\frac{y}{||y||} = \\frac{[-2,0]}{\\sqrt{2^2+0^2}} = [-1,0] \n" + "\\end{array} $$\n" + "\n" + "Beware that the versors above are not exactly the same as the ones shown in the right plot of the last figure, the versors above if plotted will start at the origin of the coordinate system, not at [1,1] as shown in the figure.\n" + "\n" + "We could have done this calculation in NumPy (we will need to do that when dealing with real data later):" + )); + + qDebug() << "command entry 10"; + testCommandEntry(entry, 10, 1, QString::fromUtf8( + "m1 = np.array([1.,1.]) # marker 1\n" + "m2 = np.array([1.,2.]) # marker 2\n" + "m3 = np.array([-1.,1.]) # marker 3\n" + "\n" + "x = m2 - m1 # vector x\n" + "y = m3 - m1 # vector y\n" + "\n" + "vx = x/np.linalg.norm(x) # versor x\n" + "vy = y/np.linalg.norm(y) # verson y\n" + "\n" + "print(\"x =\", x, \", y =\", y, \"\\nex=\", vx, \", ey=\", vy)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "x = [0. 1.] , y = [-2. 0.] \n" + "ex= [0. 1.] , ey= [-1. 0.]" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "Now, both $\\mathbf{e}_x$ and $\\mathbf{e}_y$ are unit vectors (versors) and they are orthogonal, a basis can be formed with these two versors, and we can represent the rotation matrix using this basis (just place the versors of this basis as columns of the rotation matrix):\n" + "\n" + "$$ \\mathbf{R_{Gl}} = \\begin{bmatrix}\n" + "0 & -1 \\\\\n" + "1 & 0 \n" + "\\end{bmatrix} $$\n" + "\n" + "This rotation matrix makes sense because from the figure above we see that the local coordinate system we defined is rotated by 90$^o$ in relation to the Global coordinate system and if we use the general form for the rotation matrix:\n" + "\n" + "$$ \\mathbf{R} = \\begin{bmatrix}\n" + "\\cos\\alpha & -\\sin\\alpha \\\\\n" + "\\sin\\alpha & \\cos\\alpha \n" + "\\end{bmatrix} = \n" + "\\begin{bmatrix}\n" + "\\cos90^o & -\\sin90^o \\\\\n" + "\\sin90^o & \\cos90^o \n" + "\\end{bmatrix} =\n" + "\\begin{bmatrix}\n" + "0 & -1 \\\\\n" + "1 & 0 \n" + "\\end{bmatrix} $$\n" + "\n" + "So, the position of any point in the local coordinate system can be represented in the Global coordinate system by:\n" + "\n" + "$$ \\begin{array}{l l}\n" + "\\mathbf{P_G} =& \\mathbf{L_{Gl}} + \\mathbf{R_{Gl}}\\mathbf{P_l} \\\\\n" + "\\\\\n" + "\\mathbf{P_G} =& \\begin{bmatrix} 1 \\\\ 1 \\end{bmatrix} + \\begin{bmatrix} 0 & -1 \\\\ 1 & 0 \\end{bmatrix} \\mathbf{P_l} \n" + "\\end{array} $$\n" + "\n" + "For example, the point $\\mathbf{P_l}=[1,1]$ has the following position at the Global coordinate system:" + )); + + qDebug() << "command entry 11"; + testCommandEntry(entry, 11, 1, QString::fromUtf8( + "LGl = np.array([[1, 1]]).T\n" + "print('Translation vector:\\n', LGl)\n" + "\n" + "RGl = np.array([[0, -1], [1, 0]])\n" + "print('Rotation matrix:\\n', RGl)\n" + "\n" + "Pl = np.array([[1, 1]]).T\n" + "print('Position at the local coordinate system:\\n', Pl)\n" + "\n" + "PG = LGl + np.dot(RGl, Pl)\n" + "print('Position at the Global coordinate system, PG = LGl + RGl*Pl:\\n', PG)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "Translation vector:\n" + " [[1]\n" + " [1]]\n" + "Rotation matrix:\n" + " [[ 0 -1]\n" + " [ 1 0]]\n" + "Position at the local coordinate system:\n" + " [[1]\n" + " [1]]\n" + "Position at the Global coordinate system, PG = LGl + RGl*Pl:\n" + " [[0]\n" + " [2]]" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "### Determination of the unknown angle of rotation\n" + "\n" + "If we didn't know the angle of rotation between the two coordinate systems, which is the typical situation in motion analysis, we simply would equate one of the terms of the two-dimensional rotation matrix in its algebraic form to its correspondent value in the numerical rotation matrix we calculated.\n" + "\n" + "For instance, taking the first term of the rotation matrices above: $\\cos\\alpha = 0$ implies that $\\theta$ is 90$^o$ or 270$^o$, but combining with another matrix term, $\\sin\\alpha = 1$, implies that $\\alpha=90^o$. We can solve this problem in one step using the tangent $(\\sin\\alpha/\\cos\\alpha)$ function with two terms of the rotation matrix and calculating the angle with the `arctan2(y, x)` function:" + )); + + qDebug() << "command entry 12"; + testCommandEntry(entry, 12, 1, QString::fromUtf8( + "ang = np.arctan2(RGl[1, 0], RGl[0, 0])*180/np.pi\n" + "print('The angle is:', ang)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "The angle is: 90.0" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "And this procedure would be repeated for each segment and for each instant of the analyzed movement to find the rotation of each segment." + )); + + testMarkdown(entry, QString::fromUtf8( + "#### Joint angle as a sequence of rotations of adjacent segments\n" + "\n" + "In the notebook about [two-dimensional angular kinematics](http://nbviewer.ipython.org/github/demotu/BMC/blob/master/notebooks/AngularKinematics2D.ipynb), we calculated segment and joint angles using simple trigonometric relations. We can also calculate these two-dimensional angles using what we learned here about the rotation matrix.\n" + "\n" + "The segment angle will be given by the matrix representing the rotation from the laboratory coordinate system (G) to a coordinate system attached to the segment and the joint angle will be given by the matrix representing the rotation from one segment coordinate system (l1) to the other segment coordinate system (l2). So, we have to calculate two basis now, one for each segment and the joint angle will be given by the product between the two rotation matrices. \n" + "\n" + "To define a two-dimensional basis, we need to calculate vectors perpendicular to each of these lines. Here is a way of doing that. First, let's find three non-collinear points for each basis:" + )); + + qDebug() << "command entry 13"; + testCommandEntry(entry, 13, QString::fromUtf8( + "x1, y1, x2, y2 = 0, 0, 1, 1 # points at segment 1\n" + "x3, y3, x4, y4 = 1.1, 1, 2.1, 0 # points at segment 2\n" + "\n" + "#The slope of the perpendicular line is minus the inverse of the slope of the line\n" + "xl1 = x1 - (y2-y1); yl1 = y1 + (x2-x1) # point at the perpendicular line 1\n" + "xl2 = x4 - (y3-y4); yl2 = y4 + (x3-x4) # point at the perpendicular line 2" + )); + + testMarkdown(entry, QString::fromUtf8( + "With these three points, we can create a basis and the corresponding rotation matrix:" + )); + + qDebug() << "command entry 14"; + testCommandEntry(entry, 14, QString::fromUtf8( + "b1x = np.array([x2-x1, y2-y1])\n" + "b1x = b1x/np.linalg.norm(b1x) # versor x of basis 1\n" + "b1y = np.array([xl1-x1, yl1-y1])\n" + "b1y = b1y/np.linalg.norm(b1y) # versor y of basis 1\n" + "b2x = np.array([x3-x4, y3-y4])\n" + "b2x = b2x/np.linalg.norm(b2x) # versor x of basis 2\n" + "b2y = np.array([xl2-x4, yl2-y4])\n" + "b2y = b2y/np.linalg.norm(b2y) # versor y of basis 2\n" + "\n" + "RGl1 = np.array([b1x, b1y]).T # rotation matrix from segment 1 to the laboratory\n" + "RGl2 = np.array([b2x, b2y]).T # rotation matrix from segment 2 to the laboratory" + )); + + testMarkdown(entry, QString::fromUtf8( + "Now, the segment and joint angles are simply matrix operations:" + )); + + qDebug() << "command entry 15"; + testCommandEntry(entry, 15, 1, QString::fromUtf8( + "print('Rotation matrix for segment 1:\\n', np.around(RGl1, 4))\n" + "print('\\nRotation angle of segment 1:', np.arctan2(RGl1[1,0], RGl1[0,0])*180/np.pi)\n" + "print('\\nRotation matrix for segment 2:\\n', np.around(RGl2, 4))\n" + "print('\\nRotation angle of segment 2:', np.arctan2(RGl1[1,0], RGl2[0,0])*180/np.pi)\n" + "\n" + "Rl1l2 = np.dot(RGl1.T, RGl2) # Rl1l2 = Rl1G*RGl2\n" + "\n" + "print('\\nJoint rotation matrix (Rl1l2 = Rl1G*RGl2):\\n', np.around(Rl1l2, 4))\n" + "print('\\nJoint angle:', np.arctan2(Rl1l2[1,0], Rl1l2[0,0])*180/np.pi)" + )); + testTextResult(entry, 0, QString::fromUtf8( + "Rotation matrix for segment 1:\n" + " [[ 0.7071 -0.7071]\n" + " [ 0.7071 0.7071]]\n" + "\n" + "Rotation angle of segment 1: 45.0\n" + "\n" + "Rotation matrix for segment 2:\n" + " [[-0.7071 -0.7071]\n" + " [ 0.7071 -0.7071]]\n" + "\n" + "Rotation angle of segment 2: 135.0\n" + "\n" + "Joint rotation matrix (Rl1l2 = Rl1G*RGl2):\n" + " [[ 0. -1.]\n" + " [ 1. -0.]]\n" + "\n" + "Joint angle: 90.0" + )); + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "Same result as obtained in [Angular kinematics in a plane (2D)](http://nbviewer.ipython.org/github/demotu/BMC/blob/master/notebooks/AngularKinematics2D.ipynb). " + )); + + testMarkdown(entry, QString::fromUtf8( + "### Kinematic chain in a plain (2D)\n" + "\n" + "The fact that we simply multiplied the rotation matrices to calculate the rotation matrix of one segment in relation to the other is powerful and can be generalized for any number of segments: given a serial kinematic chain with links 1, 2, ..., n and 0 is the base/laboratory, the rotation matrix between the base and last link is: $\\mathbf{R_{n,n-1}R_{n-1,n-2} \\dots R_{2,1}R_{1,0}}$, where each matrix in this product (calculated from right to left) is the rotation of one link with respect to the next one. \n" + "\n" + "For instance, consider a kinematic chain with two links, the link 1 is rotated by $\\alpha_1$ with respect to the base (0) and the link 2 is rotated by $\\alpha_2$ with respect to the link 1. \n" + "Using Sympy, the rotation matrices for link 2 w.r.t. link 1 $(R_{12})$ and for link 1 w.r.t. base 0 $(R_{01})$ are: " + )); + + qDebug() << "command entry 16"; + testCommandEntry(entry, 16, QString::fromUtf8( + "from IPython.display import display, Math\n" + "from sympy import sin, cos, Matrix, simplify, latex, symbols\n" + "from sympy.interactive import printing\n" + "printing.init_printing()" + )); + + qDebug() << "command entry 17"; + testCommandEntry(entry, 17, 2, QString::fromUtf8( + "a1, a2 = symbols('alpha1 alpha2')\n" + "\n" + "R12 = Matrix([[cos(a2), -sin(a2)], [sin(a2), cos(a2)]])\n" + "display(Math(latex(r'\\mathbf{R_{12}}=') + latex(R12)))\n" + "R01 = Matrix([[cos(a1), -sin(a1)], [sin(a1), cos(a1)]])\n" + "display(Math(latex(r'\\mathbf{R_{01}}=') + latex(R01)))" + )); + { + QCOMPARE(expression(entry)->results()[0]->type(), (int)Cantor::LatexResult::Type); + Cantor::LatexResult* result = static_cast(expression(entry)->results()[0]); + QCOMPARE(result->code(), QLatin1String( + "$$\\mathbf{R_{12}}=\\left[\\begin{matrix}\\cos{\\left(\\alpha_{2} \\right)} & - \\sin{\\left(\\alpha_{2} \\right)}\\\\\\sin{\\left(\\alpha_{2} \\right)} & \\cos{\\left(\\alpha_{2} \\right)}\\end{matrix}\\right]$$" + )); + QCOMPARE(result->plain(), QLatin1String( + "" + )); + QCOMPARE(result->mimeType(), QStringLiteral("image/x-eps")); + } + { + QCOMPARE(expression(entry)->results()[1]->type(), (int)Cantor::LatexResult::Type); + Cantor::LatexResult* result = static_cast(expression(entry)->results()[1]); + QCOMPARE(result->code(), QLatin1String( + "$$\\mathbf{R_{01}}=\\left[\\begin{matrix}\\cos{\\left(\\alpha_{1} \\right)} & - \\sin{\\left(\\alpha_{1} \\right)}\\\\\\sin{\\left(\\alpha_{1} \\right)} & \\cos{\\left(\\alpha_{1} \\right)}\\end{matrix}\\right]$$" + )); + QCOMPARE(result->plain(), QLatin1String( + "" + )); + QCOMPARE(result->mimeType(), QStringLiteral("image/x-eps")); + } + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "The rotation matrix of link 2 w.r.t. the base $(R_{02})$ is given simply by $R_{01}*R_{12}$:" + )); + + qDebug() << "command entry 18"; + testCommandEntry(entry, 18, 1, QString::fromUtf8( + "R02 = R01*R12\n" + "display(Math(latex(r'\\mathbf{R_{02}}=') + latex(R02)))" + )); + { + QCOMPARE(expression(entry)->results()[0]->type(), (int)Cantor::LatexResult::Type); + Cantor::LatexResult* result = static_cast(expression(entry)->results()[0]); + QCOMPARE(result->code(), QLatin1String( + "$$\\mathbf{R_{02}}=\\left[\\begin{matrix}- \\sin{\\left(\\alpha_{1} \\right)} \\sin{\\left(\\alpha_{2} \\right)} + \\cos{\\left(\\alpha_{1} \\right)} \\cos{\\left(\\alpha_{2} \\right)} & - \\sin{\\left(\\alpha_{1} \\right)} \\cos{\\left(\\alpha_{2} \\right)} - \\sin{\\left(\\alpha_{2} \\right)} \\cos{\\left(\\alpha_{1} \\right)}\\\\\\sin{\\left(\\alpha_{1} \\right)} \\cos{\\left(\\alpha_{2} \\right)} + \\sin{\\left(\\alpha_{2} \\right)} \\cos{\\left(\\alpha_{1} \\right)} & - \\sin{\\left(\\alpha_{1} \\right)} \\sin{\\left(\\alpha_{2} \\right)} + \\cos{\\left(\\alpha_{1} \\right)} \\cos{\\left(\\alpha_{2} \\right)}\\end{matrix}\\right]$$" + )); + QCOMPARE(result->plain(), QLatin1String( + "" + )); + QCOMPARE(result->mimeType(), QStringLiteral("image/x-eps")); + } + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "Which simplifies to:" + )); + + qDebug() << "command entry 19"; + testCommandEntry(entry, 19, 1, QString::fromUtf8( + "display(Math(latex(r'\\mathbf{R_{02}}=') + latex(simplify(R02))))" + )); + { + QCOMPARE(expression(entry)->results()[0]->type(), (int)Cantor::LatexResult::Type); + Cantor::LatexResult* result = static_cast(expression(entry)->results()[0]); + QCOMPARE(result->code(), QLatin1String( + "$$\\mathbf{R_{02}}=\\left[\\begin{matrix}\\cos{\\left(\\alpha_{1} + \\alpha_{2} \\right)} & - \\sin{\\left(\\alpha_{1} + \\alpha_{2} \\right)}\\\\\\sin{\\left(\\alpha_{1} + \\alpha_{2} \\right)} & \\cos{\\left(\\alpha_{1} + \\alpha_{2} \\right)}\\end{matrix}\\right]$$" + )); + QCOMPARE(result->plain(), QLatin1String( + "" + )); + QCOMPARE(result->mimeType(), QStringLiteral("image/x-eps")); + } + entry = entry->next(); + + testMarkdown(entry, QString::fromUtf8( + "As expected.\n" + "\n" + "The typical use of all these concepts is in the three-dimensional motion analysis where we will have to deal with angles in different planes, which needs a special manipulation as we will see next." + )); + + testMarkdown(entry, QString::fromUtf8( + "## Problems\n" + "\n" + "1. A local coordinate system is rotated 30$^o$ clockwise in relation to the Global reference system. \n" + " A. Determine the matrices for rotating one coordinate system to another (two-dimensional). \n" + " B. What are the coordinates of the point [1, 1] (local coordinate system) at the global coordinate system? \n" + " C. And if this point is at the Global coordinate system and we want the coordinates at the local coordinate system? \n" + " D. Consider that the local coordinate system, besides the rotation is also translated by [2, 2]. What are the matrices for rotation, translation, and transformation from one coordinate system to another (two-dimensional)? \n" + " E. Repeat B and C considering this translation.\n" + " \n" + "2. Consider a local coordinate system U rotated 45$^o$ clockwise in relation to the Global reference system and another local coordinate system V rotated 45$^o$ clockwise in relation to the local reference system U. \n" + " A. Determine the rotation matrices of all possible transformations between the coordinate systems. \n" + " B. For the point [1, 1] in the coordinate system U, what are its coordinates in coordinate system V and in the Global coordinate system? \n" + " \n" + "3. Using the rotation matrix, deduce the new coordinates of a square figure with coordinates [0, 0], [1, 0], [1, 1], and [0, 1] when rotated by 0$^o$, 45$^o$, 90$^o$, 135$^o$, and 180$^o$ (always clockwise).\n" + " \n" + "4. Solve the problem 2 of [Angular kinematics in a plane (2D)](http://nbviewer.ipython.org/github/demotu/BMC/blob/master/notebooks/AngularKinematics2D.ipynb) but now using the concept of two-dimensional transformations. " + )); + + testMarkdown(entry, QString::fromUtf8( + "## References\n" + "\n" + "- Robertson G, Caldwell G, Hamill J, Kamen G (2013) [Research Methods in Biomechanics](http://books.google.com.br/books?id=gRn8AAAAQBAJ). 2nd Edition. Human Kinetics. \n" + "- Ruina A, Rudra P (2013) [Introduction to Statics and Dynamics](http://ruina.tam.cornell.edu/Book/index.html). Oxford University Press. \n" + "- Winter DA (2009) [Biomechanics and motor control of human movement](http://books.google.com.br/books?id=_bFHL08IWfwC). 4 ed. Hoboken, EUA: Wiley. \n" + "- Zatsiorsky VM (1997) [Kinematics of Human Motion](http://books.google.com.br/books/about/Kinematics_of_Human_Motion.html?id=Pql_xXdbrMcC&redir_esc=y). Champaign, Human Kinetics." + )); + + QCOMPARE(entry, nullptr); +} + +void WorksheetTest::testMarkdownAttachment() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(loadWorksheet(QLatin1String("TestMarkdownAttachment.ipynb"))); + + QCOMPARE(w->isReadOnly(), false); + QCOMPARE(w->session()->backend()->id(), QLatin1String("python")); + + WorksheetEntry* entry = w->firstEntry(); + + testCommandEntry(entry, 1, 1, QString::fromUtf8( + "2+2" + )); + testTextResult(entry, 0, QString::fromLatin1( + "4" + )); + entry = entry->next(); + + // Tests attachments via toJupyterJson: ugly, but works + QVERIFY(entry); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QString::fromLatin1( + "![CantorLogo.png](attachment:CantorLogo.png)\n" + "![CantorLogo.png](attachment:CantorLogo.png)" + )); + QJsonValue value = entry->toJupyterJson(); + QVERIFY(value.isObject()); + QVERIFY(value.toObject().contains(QLatin1String("attachments"))); + entry = entry->next(); + + QVERIFY(entry); + QCOMPARE(entry->type(), (int)MarkdownEntry::Type); + QCOMPARE(plainMarkdown(entry), QString::fromLatin1( + "![CantorLogo.png](attachment:CantorLogo.png)" + )); + value = entry->toJupyterJson(); + QVERIFY(value.isObject()); + QVERIFY(value.toObject().contains(QLatin1String("attachments"))); + entry = entry->next(); + + testCommandEntry(entry, -1, QString::fromUtf8( + "" + )); + + QCOMPARE(entry, nullptr); +} + +void WorksheetTest::testEntryLoad1() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(loadWorksheet(QLatin1String("TestEntryLoad1.ipynb"))); + + QCOMPARE(w->isReadOnly(), false); + QCOMPARE(w->session()->backend()->id(), QLatin1String("python")); + + WorksheetEntry* entry = w->firstEntry(); + + testCommandEntry(entry, 2, 1, QString::fromUtf8( + "2+2" + )); + testTextResult(entry, 0, QString::fromLatin1( + "4" + )); + entry = entry->next(); + + testLatexEntry(entry, QString::fromLatin1( + "$$\\Gamma$$" + )); + + testMarkdown(entry, QString::fromLatin1( + "### Test Entry" + )); + + testMarkdown(entry, QString::fromLatin1( + "Text" + )); + + QCOMPARE(entry, nullptr); +} + +void WorksheetTest::testEntryLoad2() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(loadWorksheet(QLatin1String("TestEntryLoad2.ipynb"))); + + QCOMPARE(w->isReadOnly(), false); + QCOMPARE(w->session()->backend()->id(), QLatin1String("python")); + + WorksheetEntry* entry = w->firstEntry(); + + testCommandEntry(entry, 0, 1, QString::fromUtf8( + "2+2" + )); + testTextResult(entry, 0, QString::fromLatin1( + "ans = 4" + )); + entry = entry->next(); + + testTextEntry(entry, QString::fromLatin1( + "Text entry" + )); + + testMarkdown(entry, QString::fromLatin1( + "#### Markdown entry" + )); + + testLatexEntry(entry, QString::fromLatin1( + "\\LaTeX\\ entry" + )); + + QCOMPARE(entry, nullptr); +} + +void WorksheetTest::testResultsLoad() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("sage")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because sage backend don't available", SkipSingle); + + QScopedPointer w(loadWorksheet(QLatin1String("TestResultsLoad.ipynb"))); + + QCOMPARE(w->isReadOnly(), false); + QCOMPARE(w->session()->backend()->id(), QLatin1String("sage")); + + WorksheetEntry* entry = w->firstEntry(); + + testCommandEntry(entry, 9, QString::fromUtf8( + "from IPython.display import Latex" + )); + + testCommandEntry(entry, 16, 1, QString::fromUtf8( + "print(\"Hello world\")" + )); + testTextResult(entry, 0, QString::fromUtf8( + "Hello world" + )); + entry = entry->next(); + + testCommandEntry(entry, 17, 1, QString::fromUtf8( + "plot(x^2, (x,0,5))" + )); + testImageResult(entry, 0); + entry = entry->next(); + + testCommandEntry(entry, 6, 1, QString::fromUtf8( + "sines = [plot(c*sin(x), (-2*pi,2*pi), color=Color(c,0,0), ymin=-1, ymax=1) for c in sxrange(0,1,.05)]\n" + "a = animate(sines)\n" + "a.show()" + )); + QVERIFY(expression(entry)); + QCOMPARE(expression(entry)->results().at(0)->type(), (int)Cantor::AnimationResult::Type); + QVERIFY(static_cast(expression(entry)->results().at(0))->url().isValid()); + entry = entry->next(); + + testCommandEntry(entry, 15, 1, QString::fromUtf8( + "Latex(\"$$\\Gamma$$\")" + )); + QCOMPARE(expression(entry)->result()->type(), (int)Cantor::LatexResult::Type); + { + Cantor::LatexResult* result = static_cast(expression(entry)->result()); + QCOMPARE(result->code(), QLatin1String( + "$$\\Gamma$$" + )); + QCOMPARE(result->plain(), QLatin1String( + "" + )); + QCOMPARE(result->mimeType(), QStringLiteral("image/x-eps")); + } + entry = entry->next(); + + QCOMPARE(entry, nullptr); +} + +void WorksheetTest::testMimeResult() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(loadWorksheet(QLatin1String("TestNotebookWithJson.ipynb"))); + + QCOMPARE(w->session()->backend()->id(), QLatin1String("python")); + + WorksheetEntry* entry = w->firstEntry(); + + testCommandEntry(entry, 6, QString::fromUtf8( + "import json\n" + "import uuid\n" + "from IPython.display import display_javascript, display_html, display\n" + "\n" + "class RenderJSON(object):\n" + " def __init__(self, json_data):\n" + " if isinstance(json_data, dict) or isinstance(json_data, list):\n" + " self.json_str = json.dumps(json_data)\n" + " else:\n" + " self.json_str = json_data\n" + " self.uuid = str(uuid.uuid4())\n" + "\n" + " def _ipython_display_(self):\n" + " display_html('
        '.format(self.uuid), raw=True)\n" + " display_javascript(\"\"\"\n" + " require([\"https://rawgit.com/caldwell/renderjson/master/renderjson.js\"], function() {\n" + " renderjson.set_show_to_level(2);\n" + " document.getElementById('%s').appendChild(renderjson(%s))\n" + " });\n" + " \"\"\" % (self.uuid, self.json_str), raw=True)" + )); + + testCommandEntry(entry, 7, 2, QString::fromUtf8( + "RenderJSON([\n" + " {\n" + " \"a\": 1\n" + " }, \n" + " {\n" + " \"b\": 2,\n" + " \"in1\": {\n" + " \"key\": \"value\"\n" + " }\n" + " }\n" + "])" + )); + testHtmlResult(entry, 0, QString::fromLatin1( + "" + ), QString::fromLatin1( + "
        " + )); + { + QVERIFY(expression(entry)->results().size() > 1); + QCOMPARE(expression(entry)->results().at(1)->type(), (int)Cantor::MimeResult::Type); + Cantor::MimeResult* result = static_cast(expression(entry)->results().at(1)); + QJsonObject mimeData = result->data().value(); + QStringList mimeKeys = mimeData.keys(); + QCOMPARE(mimeKeys.size(), 1); + QVERIFY(mimeKeys.contains(QLatin1String("application/javascript"))); + QJsonArray value = QJsonArray::fromStringList(QStringList{ + QLatin1String("\n"), + QLatin1String(" require([\"https://rawgit.com/caldwell/renderjson/master/renderjson.js\"], function() {\n"), + QLatin1String(" renderjson.set_show_to_level(2);\n"), + QLatin1String(" document.getElementById('bb6d9031-c990-4aee-849e-6d697430777c').appendChild(renderjson([{\"a\": 1}, {\"b\": 2, \"in1\": {\"key\": \"value\"}}]))\n"), + QLatin1String(" });\n"), + QLatin1String(" ") + }); + QCOMPARE(mimeData[QLatin1String("application/javascript")].toArray(), value); + } + entry = entry->next(); + + testCommandEntry(entry, -1, QString::fromUtf8( + "" + )); + + QCOMPARE(entry, nullptr); +} + +void WorksheetTest::testMimeResultWithPlain() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(loadWorksheet(QLatin1String("TestNotebookWithModJson.ipynb"))); + + QCOMPARE(w->session()->backend()->id(), QLatin1String("python")); + + WorksheetEntry* entry = w->firstEntry(); + + testCommandEntry(entry, 6, QString::fromUtf8( + "import json\n" + "import uuid\n" + "from IPython.display import display_javascript, display_html, display\n" + "\n" + "class RenderJSON(object):\n" + " def __init__(self, json_data):\n" + " if isinstance(json_data, dict) or isinstance(json_data, list):\n" + " self.json_str = json.dumps(json_data)\n" + " else:\n" + " self.json_str = json_data\n" + " self.uuid = str(uuid.uuid4())\n" + "\n" + " def _ipython_display_(self):\n" + " display_html('
        '.format(self.uuid), raw=True)\n" + " display_javascript(\"\"\"\n" + " require([\"https://rawgit.com/caldwell/renderjson/master/renderjson.js\"], function() {\n" + " renderjson.set_show_to_level(2);\n" + " document.getElementById('%s').appendChild(renderjson(%s))\n" + " });\n" + " \"\"\" % (self.uuid, self.json_str), raw=True)" + )); + + testCommandEntry(entry, 7, 2, QString::fromUtf8( + "RenderJSON([\n" + " {\n" + " \"a\": 1\n" + " }, \n" + " {\n" + " \"b\": 2,\n" + " \"in1\": {\n" + " \"key\": \"value\"\n" + " }\n" + " }\n" + "])" + )); + testHtmlResult(entry, 0, QString::fromLatin1( + "" + ), QString::fromLatin1( + "
        " + )); + { + QVERIFY(expression(entry)->results().size() > 1); + QCOMPARE(expression(entry)->results().at(1)->type(), (int)Cantor::MimeResult::Type); + Cantor::MimeResult* result = static_cast(expression(entry)->results().at(1)); + QJsonObject mimeData = result->data().value(); + QStringList mimeKeys = mimeData.keys(); + QCOMPARE(mimeKeys.size(), 2); + QVERIFY(mimeKeys.contains(QLatin1String("application/javascript"))); + QVERIFY(mimeKeys.contains(QLatin1String("text/plain"))); + QCOMPARE(mimeData[QLatin1String("text/plain")].toString(), QLatin1String("")); + QJsonArray value = QJsonArray::fromStringList(QStringList{ + QLatin1String("\n"), + QLatin1String(" require([\"https://rawgit.com/caldwell/renderjson/master/renderjson.js\"], function() {\n"), + QLatin1String(" renderjson.set_show_to_level(2);\n"), + QLatin1String(" document.getElementById('bb6d9031-c990-4aee-849e-6d697430777c').appendChild(renderjson([{\"a\": 1}, {\"b\": 2, \"in1\": {\"key\": \"value\"}}]))\n"), + QLatin1String(" });\n"), + QLatin1String(" ") + }); + QCOMPARE(mimeData[QLatin1String("application/javascript")].toArray(), value); + } + entry = entry->next(); + + testCommandEntry(entry, -1, QString::fromUtf8( + "" + )); + + QCOMPARE(entry, nullptr); +} + +void WorksheetTest::testCommandEntryExecutionAction1() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(std::move(loadWorksheet(QLatin1String("EmptyPythonWorksheet.cws")))); + + QCOMPARE(w->session()->backend()->id(), QLatin1String("python")); + + CommandEntry* entry = static_cast(WorksheetEntry::create(CommandEntry::Type, w.data())); + entry->setContent(QLatin1String("2+2")); + entry->evaluate(); + waitForSignal(entry->expression(), SIGNAL(gotResult())); + QCOMPARE(entry->isExcludedFromExecution(), false); + + testCommandEntry(entry, 0, 1, QLatin1String("2+2")); + testTextResult(entry, 0, QLatin1String("4")); + + entry->setContent(QLatin1String("8**2")); + entry->excludeFromExecution(); + entry->evaluate(); + + testCommandEntry(entry, 0, 1, QLatin1String("8**2")); + testTextResult(entry, 0, QLatin1String("4")); + QCOMPARE(entry->isExcludedFromExecution(), true); + + entry->addToExecution(); + entry->evaluate(); + waitForSignal(entry->expression(), SIGNAL(gotResult())); + + testCommandEntry(entry, 1, 1, QLatin1String("8**2")); + testTextResult(entry, 0, QLatin1String("64")); + QCOMPARE(entry->isExcludedFromExecution(), false); +} + +void WorksheetTest::testCommandEntryExecutionAction2() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(std::move(loadWorksheet(QLatin1String("TestCommandEntryExecutionAction.cws")))); + + QCOMPARE(w->session()->backend()->id(), QLatin1String("python")); + + testCommandEntry(w->firstEntry(), -1, 1, QLatin1String("2+2")); + testTextResult(w->firstEntry(), 0, QLatin1String("4")); + + CommandEntry* entry = static_cast(w->firstEntry()); + QCOMPARE(entry->isExcludedFromExecution(), true); +} + +void WorksheetTest::testCollapsingAllResultsAction() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(std::move(loadWorksheet(QLatin1String("TwoCommandEntryWithResults.cws")))); + + QCOMPARE(w->session()->backend()->id(), QLatin1String("python")); + + WorksheetEntry* entry = w->firstEntry(); + + testCommandEntry(entry, -1, 1, QLatin1String("2**2")); + testTextResult(entry, 0, QLatin1String("4")); + entry = entry->next(); + + testCommandEntry(entry, -1, 1, QLatin1String("2**3")); + testTextResult(entry, 0, QLatin1String("8")); + entry = entry->next(); + + QCOMPARE(entry, nullptr); + + w->collapseAllResults(); + + CommandEntry* comEntry = static_cast(w->firstEntry()); + QCOMPARE(comEntry->isResultCollapsed(), true); + comEntry = static_cast(comEntry->next()); + QCOMPARE(comEntry->isResultCollapsed(), true); + comEntry = static_cast(comEntry->next()); + QCOMPARE(entry, nullptr); + + w->uncollapseAllResults(); + comEntry = static_cast(w->firstEntry()); + QCOMPARE(comEntry->isResultCollapsed(), false); + comEntry = static_cast(comEntry->next()); + QCOMPARE(comEntry->isResultCollapsed(), false); + comEntry = static_cast(comEntry->next()); + QCOMPARE(entry, nullptr); +} + +void WorksheetTest::testRemovingAllResultsAction() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + QScopedPointer w(std::move(loadWorksheet(QLatin1String("TwoCommandEntryWithResults.cws")))); + + QCOMPARE(w->session()->backend()->id(), QLatin1String("python")); + + WorksheetEntry* entry = w->firstEntry(); + + testCommandEntry(entry, -1, 1, QLatin1String("2**2")); + testTextResult(entry, 0, QLatin1String("4")); + entry = entry->next(); + + testCommandEntry(entry, -1, 1, QLatin1String("2**3")); + testTextResult(entry, 0, QLatin1String("8")); + entry = entry->next(); + + QCOMPARE(entry, nullptr); + + w->removeAllResults(); + + entry = w->firstEntry(); + + testCommandEntry(entry, -1, 0, QLatin1String("2**2")); + entry = entry->next(); + testCommandEntry(entry, -1, 0, QLatin1String("2**3")); + entry = entry->next(); + + QCOMPARE(entry, nullptr); +} + +void WorksheetTest::testMathRender() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + Worksheet* w = new Worksheet(Cantor::Backend::getBackend(QLatin1String("python")), nullptr); + WorksheetView v(w, nullptr); + v.setEnabled(false); + w->enableEmbeddedMath(true); + + if (!w->mathRenderer()->mathRenderAvailable()) + QSKIP("This test needs workable embedded math (pdflatex)", SkipSingle); + + MarkdownEntry* entry = static_cast(WorksheetEntry::create(MarkdownEntry::Type, w)); + entry->setContent(QLatin1String("$$12$$")); + entry->evaluate(WorksheetEntry::InternalEvaluation); + + // Give 1 second to math renderer + QTest::qWait(1000); + + QDomDocument doc; + QBuffer buffer; + KZip archive(&buffer); + QDomElement elem = entry->toXml(doc, &archive); + + QDomNodeList list = elem.elementsByTagName(QLatin1String("EmbeddedMath")); + QCOMPARE(list.count(), 1); + QDomElement mathNode = list.at(0).toElement(); + bool rendered = mathNode.attribute(QStringLiteral("rendered")).toInt(); + QCOMPARE(rendered, true); +} + +void WorksheetTest::testMathRender2() +{ + Cantor::Backend* backend = Cantor::Backend::getBackend(QLatin1String("python")); + if (backend && backend->isEnabled() == false) + QSKIP("Skip, because python backend don't available", SkipSingle); + + Worksheet* w = new Worksheet(Cantor::Backend::getBackend(QLatin1String("python")), nullptr); + WorksheetView v(w, nullptr); + v.setEnabled(false); + w->enableEmbeddedMath(true); + + if (!w->mathRenderer()->mathRenderAvailable()) + QSKIP("This test needs workable embedded math (pdflatex)", SkipSingle); + + MarkdownEntry* entry = static_cast(WorksheetEntry::create(MarkdownEntry::Type, w)); + entry->setContent(QLatin1String("2 $12$ 4")); + entry->evaluate(WorksheetEntry::InternalEvaluation); + + // Give 1 second to math renderer + QTest::qWait(1000); + + QDomDocument doc; + QBuffer buffer; + KZip archive(&buffer); + QDomElement elem = entry->toXml(doc, &archive); + + QDomNodeList list = elem.elementsByTagName(QLatin1String("EmbeddedMath")); + QCOMPARE(list.count(), 1); + QDomElement mathNode = list.at(0).toElement(); + bool rendered = mathNode.attribute(QStringLiteral("rendered")).toInt(); + QCOMPARE(rendered, true); + QCOMPARE(mathNode.text(), QLatin1String("$12$")); +} + +QTEST_MAIN( WorksheetTest ) diff --git a/src/test/worksheet_test.h b/src/test/worksheet_test.h new file mode 100644 index 0000000..13c9bf6 --- /dev/null +++ b/src/test/worksheet_test.h @@ -0,0 +1,63 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2019 Sirgienko Nikita +*/ + +#include + +class Worksheet; +class WorksheetEntry; +namespace Cantor { + class Expression; +} + +class WorksheetTest: public QObject +{ + Q_OBJECT + + private Q_SLOTS: + /* Jupyter load tests */ + void initTestCase(); + void testJupyter1(); + void testJupyter2(); + void testJupyter3(); + void testJupyter4(); + void testJupyter5(); + void testJupyter6(); + void testJupyter7(); + + void testMarkdownAttachment(); + void testEntryLoad1(); + void testEntryLoad2(); + void testResultsLoad(); + void testMimeResult(); + void testMimeResultWithPlain(); + + void testCommandEntryExecutionAction1(); + void testCommandEntryExecutionAction2(); + void testCollapsingAllResultsAction(); + void testRemovingAllResultsAction(); + + /* common features tests */ + void testMathRender(); + void testMathRender2(); + + private: + void waitForSignal( QObject* sender, const char* signal); + static Worksheet* loadWorksheet(const QString& name); + static int entriesCount(Worksheet* worksheet); + static Cantor::Expression* expression(WorksheetEntry* entry); + static QString plainMarkdown(WorksheetEntry* markdownEntry); + static QString plainText(WorksheetEntry* textEntry); + static QString plainCommand(WorksheetEntry* commandEntry); + static QString plainLatex(WorksheetEntry* latexEntry); + static void testMarkdown(WorksheetEntry* &entry, const QString& content); + static void testCommandEntry(WorksheetEntry* &entry, int id, const QString& content); + static void testCommandEntry(WorksheetEntry* entry, int id, int resultsCount, const QString& content); + static void testLatexEntry(WorksheetEntry* &entry, const QString& content); + static void testTextEntry(WorksheetEntry* &entry, const QString& content); + static void testImageResult(WorksheetEntry* entry, int index); + static void testTextResult(WorksheetEntry* entry, int index, const QString& content); + static void testHtmlResult(WorksheetEntry* entry, int index, const QString& content); + static void testHtmlResult(WorksheetEntry* entry, int index, const QString& plain, const QString& html); +}; diff --git a/src/textentry.cpp b/src/textentry.cpp new file mode 100644 index 0000000..e41affc --- /dev/null +++ b/src/textentry.cpp @@ -0,0 +1,577 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#include "textentry.h" +#include "lib/renderer.h" +#include "latexrenderer.h" +#include "lib/jupyterutils.h" +#include "mathrender.h" +#include "worksheetview.h" + +#include "settings.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QStringList standartRawCellTargetNames = {QLatin1String("None"), QLatin1String("LaTeX"), QLatin1String("reST"), QLatin1String("HTML"), QLatin1String("Markdown")}; +QStringList standartRawCellTargetMimes = {QString(), QLatin1String("text/latex"), QLatin1String("text/restructuredtext"), QLatin1String("text/html"), QLatin1String("text/markdown")}; + +TextEntry::TextEntry(Worksheet* worksheet) : WorksheetEntry(worksheet) + , m_rawCell(false) + , m_convertTarget() + , m_targetActionGroup(nullptr) + , m_ownTarget{nullptr} + , m_targetMenu(nullptr) + , m_textItem(new WorksheetTextItem(this, Qt::TextEditorInteraction)) +{ + m_textItem->enableRichText(true); + + connect(m_textItem, &WorksheetTextItem::moveToPrevious, this, &TextEntry::moveToPreviousEntry); + connect(m_textItem, &WorksheetTextItem::moveToNext, this, &TextEntry::moveToNextEntry); + // Modern syntax of signal/stots don't work on this connection (arguments don't match) + connect(m_textItem, SIGNAL(execute()), this, SLOT(evaluate())); + connect(m_textItem, &WorksheetTextItem::doubleClick, this, &TextEntry::resolveImagesAtCursor); + + // Init raw cell target menus + // This used only for raw cells, but removing and creating this on conversion more complex + // that just create them always + m_targetActionGroup= new QActionGroup(this); + m_targetActionGroup->setExclusive(true); + connect(m_targetActionGroup, &QActionGroup::triggered, this, &TextEntry::convertTargetChanged); + + m_targetMenu = new QMenu(i18n("Raw Cell Targets")); + for (const QString& key : standartRawCellTargetNames) + { + QAction* action = new QAction(key, m_targetActionGroup); + action->setCheckable(true); + m_targetMenu->addAction(action); + } + m_ownTarget = new QAction(i18n("Add custom target"), m_targetActionGroup); + m_ownTarget->setCheckable(true); + m_targetMenu->addAction(m_ownTarget); +} + +TextEntry::~TextEntry() +{ + m_targetMenu->deleteLater(); +} + +void TextEntry::populateMenu(QMenu* menu, QPointF pos) +{ + if (m_rawCell) + { + menu->addAction(i18n("Convert to Text Entry"), this, &TextEntry::convertToTextEntry); + menu->addMenu(m_targetMenu); + } + else + { + menu->addAction(i18n("Convert to Raw Cell"), this, &TextEntry::convertToRawCell); + + bool imageSelected = false; + QTextCursor cursor = m_textItem->textCursor(); + const QChar repl = QChar::ObjectReplacementCharacter; + if (cursor.hasSelection()) + { + QString selection = m_textItem->textCursor().selectedText(); + imageSelected = selection.contains(repl); + } + else + { + // we need to try both the current cursor and the one after the that + cursor = m_textItem->cursorForPosition(pos); + for (int i = 2; i; --i) + { + int p = cursor.position(); + if (m_textItem->document()->characterAt(p-1) == repl && + cursor.charFormat().hasProperty(Cantor::Renderer::CantorFormula)) + { + m_textItem->setTextCursor(cursor); + imageSelected = true; + break; + } + cursor.movePosition(QTextCursor::NextCharacter); + } + } + + if (imageSelected) + { + menu->addAction(i18n("Show LaTeX code"), this, SLOT(resolveImagesAtCursor())); + } + } + menu->addSeparator(); + WorksheetEntry::populateMenu(menu, pos); +} + +bool TextEntry::isEmpty() +{ + return m_textItem->document()->isEmpty(); +} + +int TextEntry::type() const +{ + return Type; +} + +bool TextEntry::acceptRichText() +{ + return true; +} + +bool TextEntry::focusEntry(int pos, qreal xCoord) +{ + if (aboutToBeRemoved()) + return false; + m_textItem->setFocusAt(pos, xCoord); + return true; +} + +void TextEntry::setContent(const QString& content) +{ + m_textItem->setPlainText(content); +} + +void TextEntry::setContent(const QDomElement& content, const KZip& file) +{ + Q_UNUSED(file); + if(content.firstChildElement(QLatin1String("body")).isNull()) + return; + + if (content.hasAttribute(QLatin1String("convertTarget"))) + { + convertToRawCell(); + m_convertTarget = content.attribute(QLatin1String("convertTarget")); + + // Set current action status + int idx = standartRawCellTargetMimes.indexOf(m_convertTarget); + if (idx != -1) + m_targetMenu->actions()[idx]->setChecked(true); + else + addNewTarget(m_convertTarget); + } + else + convertToTextEntry(); + + QDomDocument doc = QDomDocument(); + QDomNode n = doc.importNode(content.firstChildElement(QLatin1String("body")), true); + doc.appendChild(n); + QString html = doc.toString(); + m_textItem->setHtml(html); +} + +void TextEntry::setContentFromJupyter(const QJsonObject& cell) +{ + if (Cantor::JupyterUtils::isRawCell(cell)) + { + convertToRawCell(); + + const QJsonObject& metadata = Cantor::JupyterUtils::getMetadata(cell); + QJsonValue format = metadata.value(QLatin1String("format")); + // Also checks "raw_mimetype", because raw cell don't corresponds Jupyter Notebook specification + // See https://github.com/jupyter/notebook/issues/4730 + if (format.isUndefined()) + format = metadata.value(QLatin1String("raw_mimetype")); + m_convertTarget = format.toString(QString()); + + // Set current action status + int idx = standartRawCellTargetMimes.indexOf(m_convertTarget); + if (idx != -1) + m_targetMenu->actions()[idx]->setChecked(true); + else + addNewTarget(m_convertTarget); + + m_textItem->setPlainText(Cantor::JupyterUtils::getSource(cell)); + + setJupyterMetadata(metadata); + } + else if (Cantor::JupyterUtils::isMarkdownCell(cell)) + { + convertToTextEntry(); + + QJsonObject cantorMetadata = Cantor::JupyterUtils::getCantorMetadata(cell); + m_textItem->setHtml(cantorMetadata.value(QLatin1String("text_entry_content")).toString()); + } +} + +QJsonValue TextEntry::toJupyterJson() +{ + // Simple logic: + // If convertTarget is empty, it's user maded cell and we convert it to a markdown + // If convertTarget set, it's raw cell from Jupyter and we convert it to Jupyter cell + + QTextDocument* doc = m_textItem->document()->clone(); + QTextCursor cursor = doc->find(QString(QChar::ObjectReplacementCharacter)); + while(!cursor.isNull()) + { + QTextCharFormat format = cursor.charFormat(); + if (format.hasProperty(Cantor::Renderer::CantorFormula)) + { + showLatexCode(cursor); + } + + cursor = m_textItem->document()->find(QString(QChar::ObjectReplacementCharacter), cursor); + } + + QJsonObject metadata(jupyterMetadata()); + + QString entryData; + QString entryType; + + if (!m_rawCell) + { + entryType = QLatin1String("markdown"); + + // Add raw text of entry to metadata, for situation when + // Cantor opens .ipynb converted from our .cws format + QJsonObject cantorMetadata; + + if (Settings::storeTextEntryFormatting()) + { + entryData = doc->toHtml(); + + // Remove DOCTYPE from html + entryData.remove(QRegularExpression(QStringLiteral("]*>\\n"))); + + cantorMetadata.insert(QLatin1String("text_entry_content"), entryData); + } + else + entryData = doc->toPlainText(); + + metadata.insert(Cantor::JupyterUtils::cantorMetadataKey, cantorMetadata); + + // Replace our $$ formulas to $ + entryData.replace(QLatin1String("$$"), QLatin1String("$")); + } + else + { + entryType = QLatin1String("raw"); + metadata.insert(QLatin1String("format"), m_convertTarget); + entryData = doc->toPlainText(); + } + + QJsonObject entry; + entry.insert(QLatin1String("cell_type"), entryType); + entry.insert(QLatin1String("metadata"), metadata); + Cantor::JupyterUtils::setSource(entry, entryData); + + return entry; +} + +QDomElement TextEntry::toXml(QDomDocument& doc, KZip* archive) +{ + Q_UNUSED(archive); + + QScopedPointer document(m_textItem->document()->clone()); + + //make sure that the latex code is shown instead of the rendered formulas + QTextCursor cursor = document->find(QString(QChar::ObjectReplacementCharacter)); + while(!cursor.isNull()) + { + QTextCharFormat format = cursor.charFormat(); + if (format.hasProperty(Cantor::Renderer::CantorFormula)) + showLatexCode(cursor); + + cursor = document->find(QString(QChar::ObjectReplacementCharacter), cursor); + } + + const QString& html = document->toHtml(); + QDomElement el = doc.createElement(QLatin1String("Text")); + QDomDocument myDoc = QDomDocument(); + myDoc.setContent(html); + el.appendChild(myDoc.documentElement().firstChildElement(QLatin1String("body"))); + + if (m_rawCell) + el.setAttribute(QLatin1String("convertTarget"), m_convertTarget); + + return el; +} + +QString TextEntry::toPlain(const QString& commandSep, const QString& commentStartingSeq, const QString& commentEndingSeq) +{ + Q_UNUSED(commandSep); + + if (commentStartingSeq.isEmpty()) + return QString(); + /* + // would this be plain enough? + QTextCursor cursor = m_textItem->textCursor(); + cursor.movePosition(QTextCursor::Start); + cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); + + QString text = m_textItem->resolveImages(cursor); + text.replace(QChar::ParagraphSeparator, '\n'); + text.replace(QChar::LineSeparator, '\n'); + */ + QString text = m_textItem->toPlainText(); + if (!commentEndingSeq.isEmpty()) + return commentStartingSeq + text + commentEndingSeq + QLatin1String("\n"); + return commentStartingSeq + text.replace(QLatin1String("\n"), QLatin1String("\n") + commentStartingSeq) + QLatin1String("\n"); + +} + +bool TextEntry::evaluate(EvaluationOption evalOp) +{ + int i = 0; + if (worksheet()->embeddedMathEnabled() && !m_rawCell) + { + // Render math in $$...$$ via Latex + QTextCursor cursor = findLatexCode(); + while (!cursor.isNull()) + { + QString latexCode = cursor.selectedText(); + qDebug()<<"found latex: " << latexCode; + + latexCode.remove(0, 2); + latexCode.remove(latexCode.length() - 2, 2); + latexCode.replace(QChar::ParagraphSeparator, QLatin1Char('\n')); + latexCode.replace(QChar::LineSeparator, QLatin1Char('\n')); + + MathRenderer* renderer = worksheet()->mathRenderer(); + renderer->renderExpression(++i, latexCode, Cantor::LatexRenderer::InlineEquation, this, SLOT(handleMathRender(QSharedPointer))); + + cursor = findLatexCode(cursor); + } + } + + evaluateNext(evalOp); + + return true; +} + +void TextEntry::updateEntry() +{ + qDebug() << "update Entry"; + QTextCursor cursor = m_textItem->document()->find(QString(QChar::ObjectReplacementCharacter)); + while(!cursor.isNull()) + { + QTextImageFormat format=cursor.charFormat().toImageFormat(); + + if (format.hasProperty(Cantor::Renderer::CantorFormula)) + worksheet()->mathRenderer()->rerender(m_textItem->document(), format); + + cursor = m_textItem->document()->find(QString(QChar::ObjectReplacementCharacter), cursor); + } +} + +void TextEntry::resolveImagesAtCursor() +{ + QTextCursor cursor = m_textItem->textCursor(); + if (!cursor.hasSelection()) + cursor.movePosition(QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor); + cursor.insertText(m_textItem->resolveImages(cursor)); +} + +QTextCursor TextEntry::findLatexCode(const QTextCursor& cursor) const +{ + QTextDocument *doc = m_textItem->document(); + QTextCursor startCursor; + if (cursor.isNull()) + startCursor = doc->find(QLatin1String("$$")); + else + startCursor = doc->find(QLatin1String("$$"), cursor); + if (startCursor.isNull()) + return startCursor; + const QTextCursor endCursor = doc->find(QLatin1String("$$"), startCursor); + if (endCursor.isNull()) + return endCursor; + startCursor.setPosition(startCursor.selectionStart()); + startCursor.setPosition(endCursor.position(), QTextCursor::KeepAnchor); + return startCursor; +} + +QString TextEntry::showLatexCode(QTextCursor& cursor) +{ + QString latexCode = cursor.charFormat().property(Cantor::Renderer::Code).toString(); + cursor.deletePreviousChar(); + latexCode = QLatin1String("$$") + latexCode + QLatin1String("$$"); + cursor.insertText(latexCode); + return latexCode; +} + +int TextEntry::searchText(const QString& text, const QString& pattern, + QTextDocument::FindFlags qt_flags) +{ + Qt::CaseSensitivity caseSensitivity; + if (qt_flags & QTextDocument::FindCaseSensitively) + caseSensitivity = Qt::CaseSensitive; + else + caseSensitivity = Qt::CaseInsensitive; + + int position; + if (qt_flags & QTextDocument::FindBackward) + position = text.lastIndexOf(pattern, -1, caseSensitivity); + else + position = text.indexOf(pattern, 0, caseSensitivity); + + return position; +} + +WorksheetCursor TextEntry::search(const QString& pattern, unsigned flags, + QTextDocument::FindFlags qt_flags, + const WorksheetCursor& pos) +{ + if (!(flags & WorksheetEntry::SearchText) || + (pos.isValid() && pos.entry() != this)) + return WorksheetCursor(); + + QTextCursor textCursor = m_textItem->search(pattern, qt_flags, pos); + int position = 0; + QTextCursor latexCursor; + QString latex; + if (flags & WorksheetEntry::SearchLaTeX) { + const QString repl = QString(QChar::ObjectReplacementCharacter); + latexCursor = m_textItem->search(repl, qt_flags, pos); + while (!latexCursor.isNull()) { + latex = m_textItem->resolveImages(latexCursor); + position = searchText(latex, pattern, qt_flags); + if (position >= 0) { + break; + } + WorksheetCursor c(this, m_textItem, latexCursor); + latexCursor = m_textItem->search(repl, qt_flags, c); + } + } + + if (latexCursor.isNull()) { + if (textCursor.isNull()) + return WorksheetCursor(); + else + return WorksheetCursor(this, m_textItem, textCursor); + } else { + if (textCursor.isNull() || latexCursor < textCursor) { + int start = latexCursor.selectionStart(); + latexCursor.insertText(latex); + QTextCursor c = m_textItem->textCursor(); + c.setPosition(start + position); + c.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, + pattern.length()); + return WorksheetCursor(this, m_textItem, c); + } else { + return WorksheetCursor(this, m_textItem, textCursor); + } + } +} + + +void TextEntry::layOutForWidth(qreal entry_zone_x, qreal w, bool force) +{ + if (size().width() == w && m_textItem->pos().x() == entry_zone_x && !force) + return; + + const qreal margin = worksheet()->isPrinting() ? 0 : RightMargin; + + m_textItem->setGeometry(entry_zone_x, 0, w - margin - entry_zone_x); + setSize(QSizeF(m_textItem->width() + margin + entry_zone_x, m_textItem->height() + VerticalMargin)); +} + +bool TextEntry::wantToEvaluate() +{ + return !findLatexCode().isNull(); +} + +bool TextEntry::isConvertableToTextEntry(const QJsonObject& cell) +{ + if (!Cantor::JupyterUtils::isMarkdownCell(cell)) + return false; + + QJsonObject cantorMetadata = Cantor::JupyterUtils::getCantorMetadata(cell); + const QJsonValue& textContentValue = cantorMetadata.value(QLatin1String("text_entry_content")); + + if (!textContentValue.isString()) + return false; + + const QString& textContent = textContentValue.toString(); + const QString& source = Cantor::JupyterUtils::getSource(cell); + + return textContent == source; +} + +void TextEntry::handleMathRender(QSharedPointer result) +{ + if (!result->successful) + { + qDebug() << "TextEntry: math render failed with message" << result->errorMessage; + return; + } + + const QString& code = result->renderedMath.property(Cantor::Renderer::Code).toString(); + const QString& delimiter = QLatin1String("$$"); + QTextCursor cursor = m_textItem->document()->find(delimiter + code + delimiter); + if (!cursor.isNull()) + { + m_textItem->document()->addResource(QTextDocument::ImageResource, result->uniqueUrl, QVariant(result->image)); + result->renderedMath.setProperty(Cantor::Renderer::Delimiter, QLatin1String("$$")); + cursor.insertText(QString(QChar::ObjectReplacementCharacter), result->renderedMath); + } +} + +void TextEntry::convertToRawCell() +{ + m_rawCell = true; + m_targetMenu->actions().at(0)->setChecked(true); + + KColorScheme scheme = KColorScheme(QPalette::Normal, KColorScheme::View); + m_textItem->setBackgroundColor(scheme.background(KColorScheme::AlternateBackground).color()); + + // Resolve all latex inserts + QTextCursor cursor(m_textItem->document()); + cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); + cursor.insertText(m_textItem->resolveImages(cursor)); +} + +void TextEntry::convertToTextEntry() +{ + m_rawCell = false; + m_convertTarget.clear(); + + KColorScheme scheme = KColorScheme(QPalette::Normal, KColorScheme::View); + m_textItem->setBackgroundColor(scheme.background(KColorScheme::NormalBackground).color()); +} + +void TextEntry::convertTargetChanged(QAction* action) +{ + int index = standartRawCellTargetNames.indexOf(action->text()); + if (index != -1) + { + m_convertTarget = standartRawCellTargetMimes[index]; + } + else if (action == m_ownTarget) + { + bool ok; + const QString& target = QInputDialog::getText(worksheet()->worksheetView(), i18n("Cantor"), i18n("Target MIME type:"), QLineEdit::Normal, QString(), &ok); + if (ok && !target.isEmpty()) + { + addNewTarget(target); + m_convertTarget = target; + } + } + else + { + m_convertTarget = action->text(); + } +} + +void TextEntry::addNewTarget(const QString& target) +{ + QAction* action = new QAction(target, m_targetActionGroup); + action->setCheckable(true); + action->setChecked(true); + m_targetMenu->insertAction(m_targetMenu->actions().last(), action); +} + +QString TextEntry::text() const +{ + return m_textItem->toPlainText(); +} diff --git a/src/textentry.h b/src/textentry.h new file mode 100644 index 0000000..2e0b18f --- /dev/null +++ b/src/textentry.h @@ -0,0 +1,91 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#ifndef TEXTENTRY_H +#define TEXTENTRY_H + +#include +#include +#include +#include +#include +#include +#include + +#include "worksheetentry.h" +#include "worksheettextitem.h" +#include "mathrendertask.h" + +class TextEntry : public WorksheetEntry +{ + Q_OBJECT + public: + explicit TextEntry(Worksheet* worksheet); + ~TextEntry() override; + + enum {Type = UserType + 1}; + int type() const override; + + QString text() const; + + bool isEmpty() override; + + bool acceptRichText() override; + + bool focusEntry(int pos = WorksheetTextItem::TopLeft, qreal xCoord=0) override; + + // do we need/get this? + //bool worksheetContextMenuEvent(...); + //void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + + void setContent(const QString& content) override; + void setContent(const QDomElement& content, const KZip& file) override; + void setContentFromJupyter(const QJsonObject& cell) override; + static bool isConvertableToTextEntry(const QJsonObject& cell); + + QDomElement toXml(QDomDocument& doc, KZip* archive) override; + QJsonValue toJupyterJson() override; + QString toPlain(const QString& commandSep, const QString& commentStartingSeq, const QString& commentEndingSeq) override; + + void layOutForWidth(qreal entry_zone_x, qreal w, bool force = false) override; + + int searchText(const QString& text, const QString& pattern, + QTextDocument::FindFlags qt_flags); + WorksheetCursor search(const QString& pattern, unsigned flags, + QTextDocument::FindFlags qt_flags, + const WorksheetCursor& pos = WorksheetCursor()) override; + + public Q_SLOTS: + bool evaluate(WorksheetEntry::EvaluationOption evalOp = FocusNext) override; + void resolveImagesAtCursor(); + void updateEntry() override; + void populateMenu(QMenu* menu, QPointF pos) override; + void convertToRawCell(); + void convertToTextEntry(); + void convertTargetChanged(QAction* action); + + protected: + bool wantToEvaluate() override; + + protected Q_SLOTS: + void handleMathRender(QSharedPointer result); + + private: + QTextCursor findLatexCode(const QTextCursor& cursor = QTextCursor()) const; + QString showLatexCode(QTextCursor& cursor); + void addNewTarget(const QString& target); + + private: + bool m_rawCell; + QString m_convertTarget; + QActionGroup* m_targetActionGroup; + QAction* m_ownTarget; + QMenu* m_targetMenu; + + WorksheetTextItem* m_textItem; +}; + +#endif //TEXTENTRY_H diff --git a/src/textresultitem.cpp b/src/textresultitem.cpp new file mode 100644 index 0000000..827281c --- /dev/null +++ b/src/textresultitem.cpp @@ -0,0 +1,331 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#include "textresultitem.h" +#include "commandentry.h" +#include "lib/result.h" +#include "lib/textresult.h" +#include "lib/latexresult.h" +#include "lib/renderer.h" +#include "lib/mimeresult.h" +#include "lib/htmlresult.h" +#include "mathrendertask.h" +#include "config-cantor.h" +#include "settings.h" +#include "worksheetview.h" + +#include +#include +#include + +#include +#include + +TextResultItem::TextResultItem(WorksheetEntry* parent, Cantor::Result* result) + : WorksheetTextItem(parent), ResultItem(result) +{ + connect(this, SIGNAL(collapseActionSizeChanged()), parent, SLOT(recalculateSize())); + setTextInteractionFlags(Qt::TextSelectableByMouse); + update(); + + auto* textResult = dynamic_cast(result); + if (textResult && textResult->isWarning()) + setDefaultTextColor(qApp->palette().color(QPalette::Highlight)); + + // So useful behaviour: + // If we have HtmlResult, but after setting we have empty document + // So show Plain version - it more useful + // We do it here, because we need it one + if (document()->characterCount() && document()->characterAt(0) == QChar::ParagraphSeparator) + { + auto* hr = static_cast(m_result); + hr->setFormat(Cantor::HtmlResult::PlainAlternative); + setHtml(hr->toHtml()); + } +} + +double TextResultItem::setGeometry(double x, double y, double w) +{ + WorksheetTextItem::setGeometry(x, y, w); + collapseExtraLines(); + return height(); +} + +void TextResultItem::populateMenu(QMenu* menu, QPointF pos) +{ + auto* copy = KStandardAction::copy(this, SLOT(copy()), menu); + copy->setText(i18n("Copy result")); + menu->addAction(copy); + ResultItem::addCommonActions(this, menu); + + auto* res = result(); + if (res->type() == Cantor::LatexResult::Type) { + QAction* showCodeAction = nullptr; + Cantor::LatexResult* lres = static_cast(res); + if (lres->isCodeShown()) + showCodeAction = menu->addAction(i18n("Show Rendered")); + else + showCodeAction = menu->addAction(i18n("Show Code")); + + connect(showCodeAction, &QAction::triggered, this, &TextResultItem::toggleLatexCode); + } else if (res->type() == Cantor::HtmlResult::Type) { + Cantor::HtmlResult* hres = static_cast(res); + switch (hres->format()) + { + case Cantor::HtmlResult::Html: + connect(menu->addAction(i18n("Show HTML Code")), &QAction::triggered, this, &TextResultItem::showHtmlSource); + if (!hres->plain().isEmpty()) + connect(menu->addAction(i18n("Show Plain Alternative")), &QAction::triggered, this, &TextResultItem::showPlain); + break; + + case Cantor::HtmlResult::HtmlSource: + connect(menu->addAction(i18n("Show Html")), &QAction::triggered, this, &TextResultItem::showHtml); + if (!hres->plain().isEmpty()) + connect(menu->addAction(i18n("Show Plain Alternative")), &QAction::triggered, this, &TextResultItem::showPlain); + break; + + case Cantor::HtmlResult::PlainAlternative: + connect(menu->addAction(i18n("Show HTML")), &QAction::triggered, this, &TextResultItem::showHtml); + connect(menu->addAction(i18n("Show HTML Code")), &QAction::triggered, this, &TextResultItem::showHtmlSource); + break; + + } + } + + menu->addSeparator(); + qDebug() << "populate Menu"; + emit menuCreated(menu, mapToParent(pos)); +} + +void TextResultItem::update() +{ + Q_ASSERT( + m_result->type() == Cantor::TextResult::Type + || m_result->type() == Cantor::LatexResult::Type + || m_result->type() == Cantor::MimeResult::Type + || m_result->type() == Cantor::HtmlResult::Type + ); + switch(m_result->type()) { + case Cantor::TextResult::Type: + case Cantor::MimeResult::Type: + case Cantor::HtmlResult::Type: + setHtml(m_result->toHtml()); + break; + case Cantor::LatexResult::Type: + setLatex(static_cast(m_result)); + break; + default: + break; + } +} + +void TextResultItem::setLatex(Cantor::LatexResult* result) +{ + QTextCursor cursor = textCursor(); + cursor.movePosition(QTextCursor::Start); + cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); + QString latex = result->toLatex().trimmed(); + if (latex.startsWith(QLatin1String("\\begin{eqnarray*}")) && + latex.endsWith(QLatin1String("\\end{eqnarray*}"))) { + latex = latex.mid(17); + latex = latex.left(latex.size() - 15); + } + +#ifdef WITH_EPS + if (result->isCodeShown()) { + if (latex.isEmpty()) + cursor.removeSelectedText(); + else + cursor.insertText(latex); + } else { + QTextImageFormat format; + + if (!result->image().isNull() && worksheet()->renderer()->scale() == 1.0) + { + cursor.insertText(QString(QChar::ObjectReplacementCharacter), toFormat(result->image(), latex)); + } + else + { + QString uuid = Cantor::LatexRenderer::genUuid(); + auto* renderer = qobject_cast(scene())->renderer();; + format = renderer->render(cursor.document(), Cantor::Renderer::EPS, result->url(), uuid); + format.setProperty(Cantor::Renderer::CantorFormula, + Cantor::Renderer::LatexFormula); + format.setProperty(Cantor::Renderer::Code, latex); + format.setProperty(Cantor::Renderer::Delimiter, QLatin1String("$$")); + if(format.isValid()) + cursor.insertText(QString(QChar::ObjectReplacementCharacter), format); + else + cursor.insertText(i18n("Cannot render Eps file. You may need additional packages")); + } + } +#else + cursor.insertText(QString(QChar::ObjectReplacementCharacter), toFormat(result->image(), latex)); +#endif +} + +double TextResultItem::width() const +{ + return WorksheetTextItem::width(); +} + +double TextResultItem::height() const +{ + return WorksheetTextItem::height(); +} + +void TextResultItem::toggleLatexCode() +{ + auto* lr = static_cast(result()); + if(lr->isCodeShown()) + lr->showRendered(); + else + lr->showCode(); + + parentEntry()->updateEntry(); +} + +void TextResultItem::showHtml() +{ + auto* hr = static_cast(result()); + hr->setFormat(Cantor::HtmlResult::Html); + parentEntry()->updateEntry(); +} + +void TextResultItem::showHtmlSource() +{ + auto* hr = static_cast(result()); + hr->setFormat(Cantor::HtmlResult::HtmlSource); + parentEntry()->updateEntry(); +} + +void TextResultItem::showPlain() +{ + auto* hr = static_cast(result()); + hr->setFormat(Cantor::HtmlResult::PlainAlternative); + parentEntry()->updateEntry(); +} + +void TextResultItem::saveResult() +{ + const auto& fileName = QFileDialog::getSaveFileName(worksheet()->worksheetView(), i18n("Save text result"), QString(), i18n("Text Files (*.txt)")); + if (!fileName.isEmpty()) + result()->save(fileName); +} + +void TextResultItem::deleteLater() +{ + WorksheetTextItem::deleteLater(); +} + +QTextImageFormat TextResultItem::toFormat(const QImage& image, const QString& latex) +{ + QTextImageFormat format; + + QUrl internal; + internal.setScheme(QLatin1String("internal")); + internal.setPath(Cantor::LatexRenderer::genUuid()); + + document()->addResource(QTextDocument::ImageResource, internal, QVariant(image) ); + + format.setName(internal.url()); + format.setProperty(Cantor::Renderer::CantorFormula, Cantor::Renderer::LatexFormula); + //format.setProperty(Cantor::EpsRenderer::ImagePath, filename); + format.setProperty(Cantor::Renderer::Code, latex); + format.setProperty(Cantor::Renderer::Delimiter, QLatin1String("$$")); + + return format; +} + +void TextResultItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) +{ + if (!m_isCollapsed) + return; + + m_userCollapseOverride = !m_userCollapseOverride; + if (m_isCollapsed) + { + if (m_userCollapseOverride) + { + update(); + } + else + { + m_isCollapsed = false; + collapseExtraLines(); + } + emit collapseActionSizeChanged(); + } + QGraphicsTextItem::mouseDoubleClickEvent(event); +} + +int TextResultItem::visibleLineCount() +{ + int lineCounter = 0; + QTextCursor cursor(document()); + if(!cursor.isNull()) + { + cursor.movePosition(QTextCursor::Start); + bool isNotDone = true; + while( isNotDone ) + { + isNotDone = cursor.movePosition( QTextCursor::Down ); + lineCounter++; + } + } + + return lineCounter; +} + +void TextResultItem::collapseExtraLines() +{ + if (m_userCollapseOverride) + return; + + int limit = Settings::visibleLinesLimit(); + + // If limit disable (0 is for unlimited mode), then exit + if (limit == 0) + return; + + // for situation, when we have collapsed text result and resized Cantor window + if (m_isCollapsed && (int)width() != m_widthWhenCollapsed) + { + update(); + m_isCollapsed = false; + } + + if (visibleLineCount() > limit) + { + QTextCursor cursor(document()); + cursor.movePosition(QTextCursor::Start); + if (limit > 4) + { + for (int i = 0; i < limit-4; i++) + cursor.movePosition(QTextCursor::Down); + + cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); + cursor.movePosition(QTextCursor::Up, QTextCursor::KeepAnchor); + + cursor.insertText(QLatin1String("\n\n...\n\n")); + } + else + { + for (int i = 0; i < limit-1; i++) + cursor.movePosition(QTextCursor::Down); + cursor.movePosition(QTextCursor::EndOfLine); + + QString replacer = QLatin1String("..."); + for (int i = 0; i < replacer.length(); i++) + cursor.movePosition(QTextCursor::Left); + + cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); + cursor.insertText(replacer); + } + + m_isCollapsed = true; + m_widthWhenCollapsed = (int)width(); + } +} diff --git a/src/textresultitem.h b/src/textresultitem.h new file mode 100644 index 0000000..5d05e5d --- /dev/null +++ b/src/textresultitem.h @@ -0,0 +1,58 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#ifndef TEXTRESULTITEM_H +#define TEXTRESULTITEM_H + +#include "resultitem.h" +#include "worksheettextitem.h" + +namespace Cantor { + class LatexResult; +} + +class TextResultItem : public WorksheetTextItem, public ResultItem +{ + Q_OBJECT + public: + explicit TextResultItem(WorksheetEntry*, Cantor::Result*); + ~TextResultItem() override = default; + + using WorksheetTextItem::setGeometry; + double setGeometry(double x, double y, double w) override; + void populateMenu(QMenu*, QPointF) override; + + void update() override; + + void setLatex(Cantor::LatexResult*); + QTextImageFormat toFormat(const QImage&, const QString& latex); + + double width() const override; + double height() const override; + + void deleteLater() override; + + Q_SIGNALS: + void collapseActionSizeChanged(); + + protected Q_SLOTS: + void toggleLatexCode(); + void showHtml(); + void showHtmlSource(); + void showPlain(); + void saveResult(); + + protected: + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*) override; + int visibleLineCount(); + void collapseExtraLines(); + + protected: + bool m_isCollapsed{false}; + bool m_userCollapseOverride{false}; + int m_widthWhenCollapsed{0}; +}; + +#endif //TEXTRESULTITEM_H diff --git a/src/worksheet.cpp b/src/worksheet.cpp new file mode 100644 index 0000000..a56011f --- /dev/null +++ b/src/worksheet.cpp @@ -0,0 +1,2985 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2012 Martin Kuettler + SPDX-FileCopyrightText: 2018-2022 Alexander Semke +*/ + +#include "worksheet.h" +#include "commandentry.h" +#include "hierarchyentry.h" +#include "horizontalruleentry.h" +#include "imageentry.h" +#include "latexentry.h" +#include "markdownentry.h" +#include "pagebreakentry.h" +#include "placeholderentry.h" +#include "settings.h" +#include "textentry.h" +#include "worksheetview.h" +#include "lib/jupyterutils.h" +#include "lib/backend.h" +#include "lib/extension.h" +#include "lib/helpresult.h" +#include "lib/session.h" +#include "lib/defaulthighlighter.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +const double Worksheet::LeftMargin = 4; +const double Worksheet::RightMargin = 4; +const double Worksheet::TopMargin = 12; +const double Worksheet::EntryCursorLength = 30; +const double Worksheet::EntryCursorWidth = 2; + +Worksheet::Worksheet(Cantor::Backend* backend, QWidget* parent, bool useDefaultWorksheetParameters) + : QGraphicsScene(parent), + m_cursorItemTimer(new QTimer(this)), + m_useDefaultWorksheetParameters(useDefaultWorksheetParameters) +{ + m_entryCursorItem = addLine(0,0,0,0); + const QColor& color = (palette().color(QPalette::Base).lightness() < 128) ? Qt::white : Qt::black; + QPen pen(color); + pen.setWidth(EntryCursorWidth); + m_entryCursorItem->setPen(pen); + m_entryCursorItem->hide(); + + connect(m_cursorItemTimer, &QTimer::timeout, this, &Worksheet::animateEntryCursor); + m_cursorItemTimer->start(500); + + if (backend) + initSession(backend); +} + +void Worksheet::stopAnimations() +{ + m_cursorItemTimer->stop(); + m_entryCursorItem->hide(); +} + +void Worksheet::resumeAnimations() +{ + delete m_cursorItemTimer; + m_cursorItemTimer = new QTimer(this); + connect(m_cursorItemTimer, &QTimer::timeout, this, &Worksheet::animateEntryCursor); + m_cursorItemTimer->start(500); +} + +Worksheet::~Worksheet() +{ + m_isClosing = true; + + // This is necessary, because a SearchBar might access firstEntry() + // while the scene is deleted. Maybe there is a better solution to + // this problem, but I can't seem to find it. + m_firstEntry = nullptr; + + if (m_session) + { + disconnect(m_session, nullptr, nullptr, nullptr); + if (m_session->status() != Cantor::Session::Disable) + m_session->logout(); + m_session->deleteLater(); + } + + if (m_jupyterMetadata) + delete m_jupyterMetadata; +} + +void Worksheet::loginToSession() +{ + m_session->login(); +} + +void Worksheet::print(QPrinter* printer) +{ + m_epsRenderer.useHighResolution(true); + m_mathRenderer.useHighResolution(true); + m_isPrinting = true; + + QRect pageRect = printer->pageRect(); + qreal scale = 1; // todo: find good scale for page size + // todo: use epsRenderer()->scale() for printing ? + const qreal width = pageRect.width()/scale; + const qreal height = pageRect.height()/scale; + setViewSize(width, height, scale, true); + + QPainter painter(printer); + painter.scale(scale, scale); + painter.setRenderHint(QPainter::Antialiasing); + + WorksheetEntry* entry = firstEntry(); + qreal y = TopMargin; + + while (entry) { + qreal h = 0; + do { + if (entry->type() == PageBreakEntry::Type) { + entry = entry->next(); + break; + } + h += entry->size().height(); + entry = entry->next(); + } while (entry && h + entry->size().height() <= height); + + render(&painter, QRectF(0, 0, width, height), + QRectF(0, y, width, h)); + y += h; + if (entry) + printer->newPage(); + } + + //render(&painter); + + painter.end(); + m_isPrinting = false; + m_epsRenderer.useHighResolution(false); + m_mathRenderer.useHighResolution(false); + m_epsRenderer.setScale(-1); // force update in next call to setViewSize, + worksheetView()->updateSceneSize(); // ... which happens in here +} + +bool Worksheet::isPrinting() +{ + return m_isPrinting; +} + +void Worksheet::setViewSize(qreal w, qreal h, qreal s, bool forceUpdate) +{ + Q_UNUSED(h); + + m_viewWidth = w; + if (s != m_epsRenderer.scale() || forceUpdate) { + m_epsRenderer.setScale(s); + m_mathRenderer.setScale(s); + for (WorksheetEntry *entry = firstEntry(); entry; entry = entry->next()) + entry->updateEntry(); + } + updateLayout(); +} + +void Worksheet::updateLayout() +{ + bool cursorRectVisible = false; + bool atEnd = worksheetView()->isAtEnd(); + if (currentTextItem()) { + QRectF cursorRect = currentTextItem()->sceneCursorRect(); + cursorRectVisible = worksheetView()->isVisible(cursorRect); + } + + m_maxPromptWidth = 0; + if (Settings::useOldCantorEntriesIndent() == false) + { + for (WorksheetEntry *entry = firstEntry(); entry; entry = entry->next()) + if (entry->type() == CommandEntry::Type) + m_maxPromptWidth = std::max(static_cast(entry)->promptItemWidth(), m_maxPromptWidth); + else if (entry->type() == HierarchyEntry::Type) + m_maxPromptWidth = std::max(static_cast(entry)->hierarchyItemWidth(), m_maxPromptWidth); + } + + const qreal w = m_viewWidth - LeftMargin - RightMargin - (WorksheetEntry::ControlElementWidth + WorksheetEntry::ControlElementBorder) * m_hierarchyMaxDepth; + qreal y = TopMargin; + const qreal x = LeftMargin; + for (WorksheetEntry *entry = firstEntry(); entry; entry = entry->next()) + y += entry->setGeometry(x, x+m_maxPromptWidth, y, w); + + updateHierarchyControlsLayout(); + + setSceneRect(QRectF(0, 0, sceneRect().width(), y)); + if (cursorRectVisible) + makeVisible(worksheetCursor()); + else if (atEnd) + worksheetView()->scrollToEnd(); + drawEntryCursor(); +} + +void Worksheet::updateHierarchyLayout() +{ + QStringList names; + QStringList searchStrings; + QList depths; + + m_hierarchyMaxDepth = 0; + std::vector hierarchyNumbers; + for (WorksheetEntry *entry = firstEntry(); entry; entry = entry->next()) + { + if (entry->type() == HierarchyEntry::Type) + { + HierarchyEntry* hierarchEntry = static_cast(entry); + hierarchEntry->updateHierarchyLevel(hierarchyNumbers); + m_hierarchyMaxDepth = std::max(m_hierarchyMaxDepth, hierarchyNumbers.size()); + + names.append(hierarchEntry->text()); + searchStrings.append(hierarchEntry->hierarchyText()); + depths.append(hierarchyNumbers.size()-1); + } + } + + emit hierarchyChanged(names, searchStrings, depths); +} + +void Worksheet::updateHierarchyControlsLayout(WorksheetEntry* startEntry) +{ + if (startEntry == nullptr) + startEntry = firstEntry(); + + // Update sizes of control elements for hierarchy entries + std::vector levelsEntries; + int numerationBegin = (int)HierarchyEntry::HierarchyLevel::Chapter; + for (int i = numerationBegin; i < (int)HierarchyEntry::HierarchyLevel::EndValue; i++) + levelsEntries.push_back(nullptr); + + for (WorksheetEntry *entry = startEntry; entry; entry = entry->next()) + { + if (entry->type() == HierarchyEntry::Type) + { + HierarchyEntry* hierarchyEntry = static_cast(entry); + int idx = (int)hierarchyEntry->level() - numerationBegin; + if (levelsEntries[idx] == nullptr) + { + levelsEntries[idx] = hierarchyEntry; + } + else + { + for (int i = idx; i < (int)levelsEntries.size(); i++) + if (levelsEntries[i] != nullptr) + { + bool haveSubelements = levelsEntries[i]->next() ? levelsEntries[i]->next() != entry : false; + levelsEntries[i]->updateControlElementForHierarchy(hierarchyEntry->y() - WorksheetEntry::VerticalMargin, m_hierarchyMaxDepth, haveSubelements); + levelsEntries[i] = nullptr; + } + levelsEntries[idx] = hierarchyEntry; + } + } + } + + if (lastEntry()) + for (int i = 0; i < (int)levelsEntries.size(); i++) + if (levelsEntries[i] != nullptr) + { + bool haveSubelements = levelsEntries[i] != lastEntry(); + levelsEntries[i]->updateControlElementForHierarchy(lastEntry()->y() + lastEntry()->size().height() - WorksheetEntry::VerticalMargin, m_hierarchyMaxDepth, haveSubelements); + levelsEntries[i] = nullptr; + } +} + +std::vector Worksheet::hierarchySubelements(HierarchyEntry* hierarchyEntry) const +{ + std::vector subentries; + + Q_ASSERT(hierarchyEntry); + + bool subentriesEnd = false; + int level = (int)hierarchyEntry->level(); + for (WorksheetEntry *entry = hierarchyEntry->next(); entry && !subentriesEnd; entry = entry->next()) + { + if (entry->type() == HierarchyEntry::Type) + { + if ((int)(static_cast(entry)->level()) <= level) + subentriesEnd = true; + else + subentries.push_back(entry); + } + else + subentries.push_back(entry); + } + return subentries; +} + +void Worksheet::updateEntrySize(WorksheetEntry* entry) +{ + bool cursorRectVisible = false; + bool atEnd = worksheetView()->isAtEnd(); + if (currentTextItem()) { + QRectF cursorRect = currentTextItem()->sceneCursorRect(); + cursorRectVisible = worksheetView()->isVisible(cursorRect); + } + + if (Settings::useOldCantorEntriesIndent() == false) + { + qreal newMaxPromptWidth = m_maxPromptWidth; + if (entry->type() == CommandEntry::Type) + newMaxPromptWidth = static_cast(entry)->promptItemWidth(); + else if (entry->type() == HierarchyEntry::Type) + newMaxPromptWidth = static_cast(entry)->hierarchyItemWidth(); + + // If width of prompt (if precense) of the entry more, that currect maximum, + // then we need full layout update + if (newMaxPromptWidth > m_maxPromptWidth) + { + updateLayout(); + return; + } + } + + qreal y = entry->y() + entry->size().height(); + for (entry = entry->next(); entry; entry = entry->next()) { + entry->setY(y); + y += entry->size().height(); + } + + if (!m_isLoadingFromFile) + updateHierarchyControlsLayout(entry); + + setSceneRect(QRectF(0, 0, sceneRect().width(), y)); + if (cursorRectVisible) + makeVisible(worksheetCursor()); + else if (atEnd) + worksheetView()->scrollToEnd(); + drawEntryCursor(); +} + +void Worksheet::setRequestedWidth(QGraphicsObject* object, qreal width) +{ + qreal oldWidth = m_itemWidths[object]; + m_itemWidths[object] = width; + + if (width > m_maxWidth || oldWidth == m_maxWidth) + { + m_maxWidth = width; + qreal y = lastEntry() ? lastEntry()->size().height() + lastEntry()->y() : 0; + setSceneRect(QRectF(0, 0, m_maxWidth + LeftMargin + RightMargin, y)); + } +} + +void Worksheet::removeRequestedWidth(QGraphicsObject* object) +{ + if (!m_itemWidths.contains(object)) + return; + + qreal width = m_itemWidths[object]; + m_itemWidths.remove(object); + + if (width == m_maxWidth) + { + m_maxWidth = 0; + for (qreal width : m_itemWidths.values()) + if (width > m_maxWidth) + m_maxWidth = width; + qreal y = lastEntry() ? lastEntry()->size().height() + lastEntry()->y() : 0; + setSceneRect(QRectF(0, 0, m_maxWidth + LeftMargin + RightMargin, y)); + } +} + +bool Worksheet::isEmpty() +{ + return !m_firstEntry; +} + +bool Worksheet::isLoadingFromFile() +{ + return m_isLoadingFromFile; +} + +void Worksheet::makeVisible(WorksheetEntry* entry) +{ + QRectF r = entry->boundingRect(); + r = entry->mapRectToScene(r); + r.adjust(0, -10, 0, 10); + worksheetView()->makeVisible(r); +} + +void Worksheet::makeVisible(const WorksheetCursor& cursor) +{ + if (cursor.textCursor().isNull()) { + if (cursor.entry()) + makeVisible(cursor.entry()); + return; + } + QRectF r = cursor.textItem()->sceneCursorRect(cursor.textCursor()); + QRectF er = cursor.entry()->boundingRect(); + er = cursor.entry()->mapRectToScene(er); + er.adjust(0, -10, 0, 10); + r.adjust(0, qMax(qreal(-100.0), er.top() - r.top()), + 0, qMin(qreal(100.0), er.bottom() - r.bottom())); + worksheetView()->makeVisible(r); +} + +WorksheetView* Worksheet::worksheetView() +{ + return static_cast(views().first()); +} + +void Worksheet::setModified() +{ + if (!m_isClosing && !m_isLoadingFromFile) + emit modified(); +} + +WorksheetCursor Worksheet::worksheetCursor() +{ + WorksheetEntry* entry = currentEntry(); + WorksheetTextItem* item = currentTextItem(); + + if (!entry || !item) + return WorksheetCursor(); + return WorksheetCursor(entry, item, item->textCursor()); +} + +void Worksheet::setWorksheetCursor(const WorksheetCursor& cursor) +{ + if (!cursor.isValid()) + return; + + if (m_lastFocusedTextItem) + m_lastFocusedTextItem->clearSelection(); + + m_lastFocusedTextItem = cursor.textItem(); + + cursor.textItem()->setTextCursor(cursor.textCursor()); +} + +WorksheetEntry* Worksheet::currentEntry() +{ + // Entry cursor activate + if (m_choosenCursorEntry || m_isCursorEntryAfterLastEntry) + return nullptr; + + QGraphicsItem* item = focusItem(); + if (!item /*&& !hasFocus()*/) + item = m_lastFocusedTextItem; + /*else + m_focusItem = item;*/ + while (item && (item->type() < QGraphicsItem::UserType || + item->type() >= QGraphicsItem::UserType + 100)) + item = item->parentItem(); + if (item) { + WorksheetEntry* entry = qobject_cast(item->toGraphicsObject()); + if (entry && entry->aboutToBeRemoved()) { + if (entry->isAncestorOf(m_lastFocusedTextItem)) + m_lastFocusedTextItem = nullptr; + return nullptr; + } + return entry; + } + return nullptr; +} + +WorksheetEntry* Worksheet::firstEntry() +{ + return m_firstEntry; +} + +WorksheetEntry* Worksheet::lastEntry() +{ + return m_lastEntry; +} + +void Worksheet::setFirstEntry(WorksheetEntry* entry) +{ + if (m_firstEntry) + disconnect(m_firstEntry, &WorksheetEntry::aboutToBeDeleted, + this, &Worksheet::invalidateFirstEntry); + m_firstEntry = entry; + if (m_firstEntry) + connect(m_firstEntry, &WorksheetEntry::aboutToBeDeleted, + this, &Worksheet::invalidateFirstEntry, Qt::DirectConnection); +} + +void Worksheet::setLastEntry(WorksheetEntry* entry) +{ + if (m_lastEntry) + disconnect(m_lastEntry, &WorksheetEntry::aboutToBeDeleted, + this, &Worksheet::invalidateLastEntry); + m_lastEntry = entry; + if (m_lastEntry) + connect(m_lastEntry, &WorksheetEntry::aboutToBeDeleted, + this, &Worksheet::invalidateLastEntry, Qt::DirectConnection); +} + +void Worksheet::invalidateFirstEntry() +{ + if (m_firstEntry) + setFirstEntry(m_firstEntry->next()); +} + +void Worksheet::invalidateLastEntry() +{ + if (m_lastEntry) + setLastEntry(m_lastEntry->previous()); +} + +WorksheetEntry* Worksheet::entryAt(qreal x, qreal y) +{ + QGraphicsItem* item = itemAt(x, y, QTransform()); + while (item && (item->type() <= QGraphicsItem::UserType || + item->type() >= QGraphicsItem::UserType + 100)) + item = item->parentItem(); + if (item) + return qobject_cast(item->toGraphicsObject()); + return nullptr; +} + +WorksheetEntry* Worksheet::entryAt(QPointF p) +{ + return entryAt(p.x(), p.y()); +} + +void Worksheet::focusEntry(WorksheetEntry *entry) +{ + if (!entry) + return; + entry->focusEntry(); + resetEntryCursor(); + //bool rt = entry->acceptRichText(); + //setActionsEnabled(rt); + //setAcceptRichText(rt); + //ensureCursorVisible(); +} + +void Worksheet::startDrag(WorksheetEntry* entry, QDrag* drag) +{ + if (m_readOnly) + return; + + resetEntryCursor(); + m_dragEntry = entry; + WorksheetEntry* prev = entry->previous(); + WorksheetEntry* next = entry->next(); + m_placeholderEntry = new PlaceHolderEntry(this, entry->size()); + m_placeholderEntry->setPrevious(prev); + m_placeholderEntry->setNext(next); + if (prev) + prev->setNext(m_placeholderEntry); + else + setFirstEntry(m_placeholderEntry); + if (next) + next->setPrevious(m_placeholderEntry); + else + setLastEntry(m_placeholderEntry); + m_dragEntry->hide(); + Qt::DropAction action = drag->exec(); + + qDebug() << action; + if (action == Qt::MoveAction && m_placeholderEntry) { + qDebug() << "insert in new position"; + prev = m_placeholderEntry->previous(); + next = m_placeholderEntry->next(); + } + m_dragEntry->setPrevious(prev); + m_dragEntry->setNext(next); + if (prev) + prev->setNext(m_dragEntry); + else + setFirstEntry(m_dragEntry); + if (next) + next->setPrevious(m_dragEntry); + else + setLastEntry(m_dragEntry); + m_dragEntry->show(); + if (m_dragEntry->type() == HierarchyEntry::Type) + updateHierarchyLayout(); + m_dragEntry->focusEntry(); + const QPointF scenePos = worksheetView()->sceneCursorPos(); + if (entryAt(scenePos) != m_dragEntry) + m_dragEntry->hideActionBar(); + updateLayout(); + if (m_placeholderEntry) { + m_placeholderEntry->setPrevious(nullptr); + m_placeholderEntry->setNext(nullptr); + m_placeholderEntry->hide(); + m_placeholderEntry->deleteLater(); + m_placeholderEntry = nullptr; + } + m_dragEntry = nullptr; +} + +void Worksheet::startDragWithHierarchy(HierarchyEntry* entry, QDrag* drag, QSizeF responsibleZoneSize) +{ + if (m_readOnly) + return; + + resetEntryCursor(); + m_dragEntry = entry; + WorksheetEntry* prev = entry->previous(); + m_hierarchySubentriesDrag = hierarchySubelements(entry); + + WorksheetEntry* next; + if (m_hierarchySubentriesDrag.size() != 0) + next = m_hierarchySubentriesDrag.back()->next(); + else + next = entry->next(); + + m_placeholderEntry = new PlaceHolderEntry(this, responsibleZoneSize); + m_hierarchyDragSize = responsibleZoneSize; + m_placeholderEntry->setPrevious(prev); + m_placeholderEntry->setNext(next); + if (prev) + prev->setNext(m_placeholderEntry); + else + setFirstEntry(m_placeholderEntry); + if (next) + next->setPrevious(m_placeholderEntry); + else + setLastEntry(m_placeholderEntry); + + m_dragEntry->hide(); + for(WorksheetEntry* subEntry : m_hierarchySubentriesDrag) + subEntry->hide(); + + Qt::DropAction action = drag->exec(); + + qDebug() << action; + if (action == Qt::MoveAction && m_placeholderEntry) { + qDebug() << "insert in new position"; + prev = m_placeholderEntry->previous(); + next = m_placeholderEntry->next(); + } + m_dragEntry->setPrevious(prev); + + WorksheetEntry* lastDraggingEntry; + if (m_hierarchySubentriesDrag.size() != 0) + lastDraggingEntry = m_hierarchySubentriesDrag.back(); + else + lastDraggingEntry = entry; + + lastDraggingEntry->setNext(next); + + if (prev) + prev->setNext(m_dragEntry); + else + setFirstEntry(m_dragEntry); + + if (next) + next->setPrevious(lastDraggingEntry); + else + setLastEntry(lastDraggingEntry); + + m_dragEntry->show(); + for(WorksheetEntry* subEntry : m_hierarchySubentriesDrag) + subEntry->show(); + + updateHierarchyLayout(); + m_dragEntry->focusEntry(); + const QPointF scenePos = worksheetView()->sceneCursorPos(); + if (entryAt(scenePos) != m_dragEntry) + m_dragEntry->hideActionBar(); + updateLayout(); + + if (m_placeholderEntry) { + m_placeholderEntry->setPrevious(nullptr); + m_placeholderEntry->setNext(nullptr); + m_placeholderEntry->hide(); + m_placeholderEntry->deleteLater(); + m_placeholderEntry = nullptr; + } + m_dragEntry = nullptr; + m_hierarchySubentriesDrag.clear(); +} + +void Worksheet::evaluate() +{ + qDebug()<<"evaluate worksheet"; + if (!m_readOnly && m_session && m_session->status() == Cantor::Session::Disable) + loginToSession(); + + firstEntry()->evaluate(WorksheetEntry::EvaluateNext); + + setModified(); +} + +void Worksheet::evaluateCurrentEntry() +{ + if (!m_readOnly && m_session && m_session->status() == Cantor::Session::Disable) + loginToSession(); + + WorksheetEntry* entry = currentEntry(); + if(!entry) + return; + entry->evaluateCurrentItem(); +} + +bool Worksheet::completionEnabled() +{ + return m_completionEnabled; +} + +void Worksheet::showCompletion() +{ + WorksheetEntry* current = currentEntry(); + if (current) + current->showCompletion(); +} + +WorksheetEntry* Worksheet::appendEntry(const int type, bool focus) +{ + WorksheetEntry* entry = WorksheetEntry::create(type, this); + + if (entry) + { + qDebug() << "Entry Appended"; + entry->setPrevious(lastEntry()); + if (lastEntry()) + lastEntry()->setNext(entry); + if (!firstEntry()) + setFirstEntry(entry); + setLastEntry(entry); + if (!m_isLoadingFromFile) + { + if (type == HierarchyEntry::Type) + updateHierarchyLayout(); + updateLayout(); + if (focus) + { + makeVisible(entry); + focusEntry(entry); + } + setModified(); + } + } + return entry; +} + +WorksheetEntry* Worksheet::appendCommandEntry() +{ + return appendEntry(CommandEntry::Type); +} + +WorksheetEntry* Worksheet::appendTextEntry() +{ + return appendEntry(TextEntry::Type); +} + +WorksheetEntry* Worksheet::appendMarkdownEntry() +{ + return appendEntry(MarkdownEntry::Type); +} + +WorksheetEntry* Worksheet::appendPageBreakEntry() +{ + return appendEntry(PageBreakEntry::Type); +} + +WorksheetEntry* Worksheet::appendImageEntry() +{ + return appendEntry(ImageEntry::Type); +} + +WorksheetEntry* Worksheet::appendLatexEntry() +{ + return appendEntry(LatexEntry::Type); +} + +void Worksheet::appendCommandEntry(const QString& text) +{ + auto* entry = lastEntry(); + if(!entry->isEmpty()) + entry = appendCommandEntry(); + + if (entry) + { + focusEntry(entry); + entry->setContent(text); + evaluateCurrentEntry(); + } +} + +WorksheetEntry * Worksheet::appendHorizontalRuleEntry() +{ + return appendEntry(HorizontalRuleEntry::Type); +} + +WorksheetEntry * Worksheet::appendHierarchyEntry() +{ + return appendEntry(HierarchyEntry::Type); +} + +WorksheetEntry* Worksheet::insertEntry(const int type, WorksheetEntry* current) +{ + if (!current) + current = currentEntry(); + + if (!current) + return appendEntry(type); + + auto* next = current->next(); + WorksheetEntry* entry = nullptr; + + if (!next || next->type() != type || !next->isEmpty()) + { + entry = WorksheetEntry::create(type, this); + entry->setPrevious(current); + entry->setNext(next); + current->setNext(entry); + if (next) + next->setPrevious(entry); + else + setLastEntry(entry); + if (type == HierarchyEntry::Type) + updateHierarchyLayout(); + updateLayout(); + setModified(); + } else { + entry = next; + } + + focusEntry(entry); + makeVisible(entry); + + return entry; +} + +WorksheetEntry* Worksheet::insertTextEntry(WorksheetEntry* current) +{ + return insertEntry(TextEntry::Type, current); +} + +WorksheetEntry* Worksheet::insertMarkdownEntry(WorksheetEntry* current) +{ + return insertEntry(MarkdownEntry::Type, current); +} + +WorksheetEntry* Worksheet::insertCommandEntry(WorksheetEntry* current) +{ + return insertEntry(CommandEntry::Type, current); +} + +WorksheetEntry* Worksheet::insertImageEntry(WorksheetEntry* current) +{ + auto* entry = insertEntry(ImageEntry::Type, current); + auto* imageEntry = static_cast(entry); + QTimer::singleShot(0, this, [=] () {imageEntry->startConfigDialog();}); + return entry; +} + +WorksheetEntry* Worksheet::insertPageBreakEntry(WorksheetEntry* current) +{ + return insertEntry(PageBreakEntry::Type, current); +} + +WorksheetEntry* Worksheet::insertLatexEntry(WorksheetEntry* current) +{ + return insertEntry(LatexEntry::Type, current); +} + +WorksheetEntry * Worksheet::insertHorizontalRuleEntry(WorksheetEntry* current) +{ + return insertEntry(HorizontalRuleEntry::Type, current); +} + +WorksheetEntry * Worksheet::insertHierarchyEntry(WorksheetEntry* current) +{ + return insertEntry(HierarchyEntry::Type, current); +} + +WorksheetEntry* Worksheet::insertEntryBefore(int type, WorksheetEntry* current) +{ + if (!current) + current = currentEntry(); + + if (!current) + return nullptr; + + auto* prev = current->previous(); + WorksheetEntry *entry = nullptr; + + if(!prev || prev->type() != type || !prev->isEmpty()) + { + entry = WorksheetEntry::create(type, this); + entry->setNext(current); + entry->setPrevious(prev); + current->setPrevious(entry); + if (prev) + prev->setNext(entry); + else + setFirstEntry(entry); + if (type == HierarchyEntry::Type) + updateHierarchyLayout(); + updateLayout(); + setModified(); + } + else + entry = prev; + + focusEntry(entry); + return entry; +} + +WorksheetEntry* Worksheet::insertTextEntryBefore(WorksheetEntry* current) +{ + return insertEntryBefore(TextEntry::Type, current); +} + +WorksheetEntry* Worksheet::insertMarkdownEntryBefore(WorksheetEntry* current) +{ + return insertEntryBefore(MarkdownEntry::Type, current); +} + +WorksheetEntry* Worksheet::insertCommandEntryBefore(WorksheetEntry* current) +{ + return insertEntryBefore(CommandEntry::Type, current); +} + +WorksheetEntry* Worksheet::insertPageBreakEntryBefore(WorksheetEntry* current) +{ + return insertEntryBefore(PageBreakEntry::Type, current); +} + +WorksheetEntry* Worksheet::insertImageEntryBefore(WorksheetEntry* current) +{ + auto* entry = insertEntryBefore(ImageEntry::Type, current); + auto* imageEntry = static_cast(entry); + QTimer::singleShot(0, this, [=] () {imageEntry->startConfigDialog();}); + return entry; +} + +WorksheetEntry* Worksheet::insertLatexEntryBefore(WorksheetEntry* current) +{ + return insertEntryBefore(LatexEntry::Type, current); +} + +WorksheetEntry* Worksheet::insertHorizontalRuleEntryBefore(WorksheetEntry* current) +{ + return insertEntryBefore(HorizontalRuleEntry::Type, current); +} + +WorksheetEntry* Worksheet::insertHierarchyEntryBefore(WorksheetEntry* current) +{ + return insertEntryBefore(HierarchyEntry::Type, current); +} + +void Worksheet::interrupt() +{ + if (m_session->status() == Cantor::Session::Running) + { + m_session->interrupt(); + emit updatePrompt(); + } +} + +void Worksheet::interruptCurrentEntryEvaluation() +{ + currentEntry()->interruptEvaluation(); +} + +void Worksheet::highlightItem(WorksheetTextItem* item) +{ + if (!m_highlighter) + return; + + auto* oldDocument = m_highlighter->document(); + QList > formats; + + if (oldDocument) + { + for (QTextBlock b = oldDocument->firstBlock(); + b.isValid(); b = b.next()) + { + formats.append(b.layout()->formats()); + } + } + + // Not every highlighter is a Cantor::DefaultHighligther (e.g. the + // highlighter for KAlgebra) + auto* hl = qobject_cast(m_highlighter); + if (hl) + hl->setTextItem(item); + else + m_highlighter->setDocument(item->document()); + + if (oldDocument) + { + QTextCursor cursor(oldDocument); + cursor.beginEditBlock(); + for (QTextBlock b = oldDocument->firstBlock(); + b.isValid(); b = b.next()) + { + b.layout()->setFormats(formats.first()); + formats.pop_front(); + } + cursor.endEditBlock(); + } +} + +void Worksheet::rehighlight() +{ + if(m_highlighter) + { + // highlight every entry + WorksheetEntry* entry; + for (entry = firstEntry(); entry; entry = entry->next()) { + auto* item = entry->highlightItem(); + if (!item) + continue; + + highlightItem(item); + m_highlighter->rehighlight(); + } + + entry = currentEntry(); + auto* textitem = entry ? entry->highlightItem() : nullptr; + if (textitem && textitem->hasFocus()) + highlightItem(textitem); + } + else + { + // remove highlighting from entries + WorksheetEntry* entry; + for (entry = firstEntry(); entry; entry = entry->next()) { + auto* item = entry->highlightItem(); + if (!item) + continue; + + QTextCursor cursor(item->document()); + cursor.beginEditBlock(); + for (auto b = item->document()->firstBlock(); b.isValid(); b = b.next()) + b.layout()->clearFormats(); + + cursor.endEditBlock(); + } + update(); + } +} + +void Worksheet::enableHighlighting(bool highlight) +{ + if(highlight) + { + if(m_highlighter) + m_highlighter->deleteLater(); + + if (!m_readOnly) + m_highlighter=session()->syntaxHighlighter(this); + else + m_highlighter=nullptr; + + if(!m_highlighter) + m_highlighter=new Cantor::DefaultHighlighter(this); + + //TODO: new syntax + connect(m_highlighter, SIGNAL(rulesChanged()), this, SLOT(rehighlight())); + }else + { + if(m_highlighter) + m_highlighter->deleteLater(); + m_highlighter=nullptr; + } + + rehighlight(); +} + +void Worksheet::enableCompletion(bool enable) +{ + m_completionEnabled=enable; +} + +Cantor::Session* Worksheet::session() +{ + return m_session; +} + +bool Worksheet::isRunning() +{ + return m_session && m_session->status()==Cantor::Session::Running; +} + +bool Worksheet::isReadOnly() +{ + return m_readOnly; +} + +bool Worksheet::showExpressionIds() +{ + return m_showExpressionIds; +} + +bool Worksheet::animationsEnabled() +{ + return m_animationsEnabled; +} + +void Worksheet::enableAnimations(bool enable) +{ + m_animationsEnabled = enable; +} + +bool Worksheet::embeddedMathEnabled() +{ + return m_embeddedMathEnabled && m_mathRenderer.mathRenderAvailable(); +} + +void Worksheet::enableEmbeddedMath(bool enable) +{ + m_embeddedMathEnabled = enable; +} + +void Worksheet::enableExpressionNumbering(bool enable) +{ + m_showExpressionIds=enable; + emit updatePrompt(); + if (views().size() != 0) + updateLayout(); +} + +QDomDocument Worksheet::toXML(KZip* archive) +{ + QDomDocument doc( QLatin1String("CantorWorksheet") ); + QDomElement root=doc.createElement( QLatin1String("Worksheet") ); + root.setAttribute(QLatin1String("backend"), (m_session ? m_session->backend()->name(): m_backendName)); + doc.appendChild(root); + + for( WorksheetEntry* entry = firstEntry(); entry; entry = entry->next()) + { + QDomElement el = entry->toXml(doc, archive); + root.appendChild( el ); + } + return doc; +} + +QJsonDocument Worksheet::toJupyterJson() +{ + QJsonDocument doc; + QJsonObject root; + + QJsonObject metadata(m_jupyterMetadata ? *m_jupyterMetadata : QJsonObject()); + + QJsonObject kernalInfo; + if (m_session && m_session->backend()) + kernalInfo = Cantor::JupyterUtils::getKernelspec(m_session->backend()); + else + kernalInfo.insert(QLatin1String("name"), m_backendName); + metadata.insert(QLatin1String("kernelspec"), kernalInfo); + + root.insert(QLatin1String("metadata"), metadata); + + // Not sure, but it looks like we support nbformat version 4.5 + root.insert(QLatin1String("nbformat"), 4); + root.insert(QLatin1String("nbformat_minor"), 5); + + QJsonArray cells; + for( WorksheetEntry* entry = firstEntry(); entry; entry = entry->next()) + { + const QJsonValue entryJson = entry->toJupyterJson(); + + if (!entryJson.isNull()) + cells.append(entryJson); + } + root.insert(QLatin1String("cells"), cells); + + doc.setObject(root); + return doc; +} + +void Worksheet::save( const QString& filename ) +{ + QFile file(filename); + if ( !file.open(QIODevice::WriteOnly) ) + { + KMessageBox::error( worksheetView(), + i18n( "Cannot write file %1." , filename ), + i18n( "Error - Cantor" )); + return; + } + + save(&file); +} + +QByteArray Worksheet::saveToByteArray() +{ + QBuffer buffer; + save(&buffer); + + return buffer.buffer(); +} + +void Worksheet::save( QIODevice* device) +{ + qDebug()<<"saving to filename"; + switch (m_type) + { + case CantorWorksheet: + { + KZip zipFile( device ); + + if ( !zipFile.open(QIODevice::WriteOnly) ) + { + KMessageBox::error( worksheetView(), + i18n( "Cannot write file." ), + i18n( "Error - Cantor" )); + return; + } + + QByteArray content = toXML(&zipFile).toByteArray(); + zipFile.writeFile( QLatin1String("content.xml"), content.data()); + break; + } + + case JupyterNotebook: + { + if (!device->isWritable()) + { + KMessageBox::error( worksheetView(), + i18n( "Cannot write file." ), + i18n( "Error - Cantor" )); + return; + } + + const QJsonDocument& doc = toJupyterJson(); + device->write(doc.toJson(QJsonDocument::Indented)); + break; + } + } +} + +void Worksheet::savePlain(const QString& filename) +{ + QFile file(filename); + if(!file.open(QIODevice::WriteOnly)) + { + KMessageBox::error(worksheetView(), i18n("Error saving file %1", filename), i18n("Error - Cantor")); + return; + } + + QString cmdSep=QLatin1String(";\n"); + QString commentStartingSeq = QLatin1String(""); + QString commentEndingSeq = QLatin1String(""); + + if (!m_readOnly) + { + Cantor::Backend * const backend=session()->backend(); + if (backend->extensions().contains(QLatin1String("ScriptExtension"))) + { + Cantor::ScriptExtension* e=dynamic_cast(backend->extension(QLatin1String(("ScriptExtension")))); + if (e) + { + cmdSep=e->commandSeparator(); + commentStartingSeq = e->commentStartingSequence(); + commentEndingSeq = e->commentEndingSequence(); + } + } + } + else + KMessageBox::information(worksheetView(), i18n("In read-only mode Cantor couldn't guarantee, that the export will be valid for %1", m_backendName), i18n("Cantor")); + + QTextStream stream(&file); + + for(WorksheetEntry * entry = firstEntry(); entry; entry = entry->next()) + { + const QString& str=entry->toPlain(cmdSep, commentStartingSeq, commentEndingSeq); + if(!str.isEmpty()) + stream << str + QLatin1Char('\n'); + } + + file.close(); +} + +void Worksheet::saveLatex(const QString& filename) +{ + qDebug()<<"exporting to Latex: " <) + stream << out.replace(QLatin1String("&"), QLatin1String("&")) + .replace(QLatin1String(">"), QLatin1String(">")) + .replace(QLatin1String("<"), QLatin1String("<")); + file.close(); +} + +bool Worksheet::load(const QString& filename ) +{ + qDebug() << "loading worksheet" << filename; + QFile file(filename); + if (!file.open(QIODevice::ReadOnly)) { + KMessageBox::error(worksheetView(), i18n("Couldn't open the file %1.", filename), i18n("Open File")); + return false; + } + + bool rc = load(&file); + if (rc && !m_readOnly) + m_session->setWorksheetPath(filename); + + return rc; +} + +void Worksheet::load(QByteArray* data) +{ + QBuffer buf(data); + buf.open(QIODevice::ReadOnly); + load(&buf); +} + +bool Worksheet::load(QIODevice* device) +{ + if (!device->isReadable()) + { + QApplication::restoreOverrideCursor(); + KMessageBox::error(worksheetView(), i18n("Couldn't open the selected file for reading."), i18n("Open File")); + return false; + } + + KZip archive(device); + + if (archive.open(QIODevice::ReadOnly)) + return loadCantorWorksheet(archive); + else + { + qDebug() <<"not a zip file"; + // Go to begin of data, we need read all data in second time + device->seek(0); + + QJsonParseError error; + const QJsonDocument& doc = QJsonDocument::fromJson(device->readAll(), &error); + if (error.error != QJsonParseError::NoError) + { + qDebug()<<"not a json file, parsing failed with error: " << error.errorString(); + QApplication::restoreOverrideCursor(); + KMessageBox::error(worksheetView(), i18n("The selected file is not a valid Cantor or Jupyter project file."), i18n("Open File")); + return false; + } + else + return loadJupyterNotebook(doc); + } +} + +bool Worksheet::loadCantorWorksheet(const KZip& archive) +{ + m_type = Type::CantorWorksheet; + + const KArchiveEntry* contentEntry=archive.directory()->entry(QLatin1String("content.xml")); + if (!contentEntry->isFile()) + { + qDebug()<<"content.xml file not found in the zip archive"; + QApplication::restoreOverrideCursor(); + KMessageBox::error(worksheetView(), i18n("The selected file is not a valid Cantor project file."), i18n("Open File")); + return false; + } + + const KArchiveFile* content = static_cast(contentEntry); + QByteArray data = content->data(); + + QDomDocument doc; + doc.setContent(data); + QDomElement root = doc.documentElement(); + + m_backendName = root.attribute(QLatin1String("backend")); + + //There is "Python" only now, replace "Python 3" by "Python" + if (m_backendName == QLatin1String("Python 3")) + m_backendName = QLatin1String("Python"); + + //"Python 2" in older projects not supported anymore, switch to Python (=Python3) + if (m_backendName == QLatin1String("Python 2")) + { + QApplication::restoreOverrideCursor(); + KMessageBox::information(worksheetView(), + i18n("This worksheet was created using Python2 which is not supported anymore. Python3 will be used."), + i18n("Python2 not supported anymore")); + QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); + m_backendName = QLatin1String("Python"); + } + + auto* b = Cantor::Backend::getBackend(m_backendName); + if (!b) + { + QApplication::restoreOverrideCursor(); + KMessageBox::information(worksheetView(), i18n("%1 backend was not found. Editing and executing entries is not possible.", m_backendName), i18n("Open File")); + m_readOnly = true; + } + else + m_readOnly = false; + + if(!m_readOnly && !b->isEnabled()) + { + QApplication::restoreOverrideCursor(); + KMessageBox::information(worksheetView(), i18n("There are some problems with the %1 backend,\n"\ + "please check your configuration or install the needed packages.\n" + "You will only be able to view this worksheet.", m_backendName), i18n("Open File")); + m_readOnly = true; + } + + m_isLoadingFromFile = true; + + //cleanup the worksheet and all it contains + delete m_session; + m_session = nullptr; + + //file can only be loaded in a worksheet that was not edited/modified yet (s.a. CantorShell::load()) + //in this case on the default "first entry" is available -> delete it. + if (m_firstEntry) { + delete m_firstEntry; + m_firstEntry = nullptr; + } + + resetEntryCursor(); + m_itemWidths.clear(); + m_maxWidth = 0; + + if (!m_readOnly) + initSession(b); + + qDebug()<<"loading entries"; + QDomElement expressionChild = root.firstChildElement(); + while (!expressionChild.isNull()) { + QString tag = expressionChild.tagName(); + // Don't add focus on load + auto* entry = appendEntry(typeForTagName(tag), false); + if (entry) + { + entry->setContent(expressionChild, archive); + if (m_readOnly) + entry->setAcceptHoverEvents(false); + } + + expressionChild = expressionChild.nextSiblingElement(); + } + + if (m_readOnly) + clearFocus(); + + m_isLoadingFromFile = false; + updateHierarchyLayout(); + updateLayout(); + + //Set the Highlighting, depending on the current state + //If the session isn't logged in, use the default + enableHighlighting( m_highlighter!=nullptr || Settings::highlightDefault() ); + + emit loaded(); + return true; +} + +int Worksheet::typeForTagName(const QString& tag) +{ + if (tag == QLatin1String("Expression")) + return CommandEntry::Type; + else if (tag == QLatin1String("Text")) + return TextEntry::Type; + else if (tag == QLatin1String("Markdown")) + return MarkdownEntry::Type; + else if (tag == QLatin1String("Latex")) + return LatexEntry::Type; + else if (tag == QLatin1String("PageBreak")) + return PageBreakEntry::Type; + else if (tag == QLatin1String("Image")) + return ImageEntry::Type; + else if (tag == QLatin1String("HorizontalRule")) + return HorizontalRuleEntry::Type; + else if (tag == QLatin1String("Hierarchy")) + return HierarchyEntry::Type; + + return 0; +} + + +void Worksheet::initSession(Cantor::Backend* backend) +{ + m_session = backend->createSession(); + if (m_useDefaultWorksheetParameters) + { + enableHighlighting(Settings::self()->highlightDefault()); + enableCompletion(Settings::self()->completionDefault()); + enableExpressionNumbering(Settings::self()->expressionNumberingDefault()); + enableAnimations(Settings::self()->animationDefault()); + enableEmbeddedMath(Settings::self()->embeddedMathDefault()); + } +} + +bool Worksheet::loadJupyterNotebook(const QJsonDocument& doc) +{ + m_type = Type::JupyterNotebook; + + int nbformatMajor, nbformatMinor; + if (!Cantor::JupyterUtils::isJupyterNotebook(doc)) + { + // Two possibilities: old jupyter notebook (version <= 4.0.0 and a another scheme) or just not a notebook at all + std::tie(nbformatMajor, nbformatMinor) = Cantor::JupyterUtils::getNbformatVersion(doc.object()); + if (nbformatMajor == 0 && nbformatMinor == 0) + { + QApplication::restoreOverrideCursor(); + showInvalidNotebookSchemeError(); + } + else + { + KMessageBox::error(worksheetView(), + i18n("Jupyter notebooks with versions lower than 4.5 (detected version %1.%2) are not supported.", nbformatMajor, nbformatMinor ), + i18n("Open File")); + } + + return false; + } + + QJsonObject notebookObject = doc.object(); + std::tie(nbformatMajor, nbformatMinor) = Cantor::JupyterUtils::getNbformatVersion(notebookObject); + + if (QT_VERSION_CHECK(nbformatMajor, nbformatMinor, 0) > QT_VERSION_CHECK(4,5,0)) + { + QApplication::restoreOverrideCursor(); + KMessageBox::error( + worksheetView(), + i18n("Jupyter notebooks with versions higher than 4.5 (detected version %1.%2) are not supported.", nbformatMajor, nbformatMinor), + i18n("Open File") + ); + return false; + } + + const QJsonArray& cells = Cantor::JupyterUtils::getCells(notebookObject); + const QJsonObject& metadata = Cantor::JupyterUtils::getMetadata(notebookObject); + if (m_jupyterMetadata) + delete m_jupyterMetadata; + m_jupyterMetadata = new QJsonObject(metadata); + + const QJsonObject& kernalspec = metadata.value(QLatin1String("kernelspec")).toObject(); + m_backendName = Cantor::JupyterUtils::getKernelName(kernalspec); + + //There is "Python" only now, replace "python3" by "Python" + if (m_backendName == QLatin1String("python3")) + m_backendName = QLatin1String("Python"); + + //"python 2" in older projects not supported anymore, switch to Python (=Python3) + if (m_backendName == QLatin1String("python2")) + { + QApplication::restoreOverrideCursor(); + KMessageBox::information(worksheetView(), + i18n("This notebook was created using Python2 which is not supported anymore. Python3 will be used."), + i18n("Python2 not supported anymore")); + QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); + m_backendName = QLatin1String("Python"); + } + + if (kernalspec.isEmpty() || m_backendName.isEmpty()) + { + QApplication::restoreOverrideCursor(); + showInvalidNotebookSchemeError(); + return false; + } + + Cantor::Backend* backend = Cantor::Backend::getBackend(m_backendName); + if (!backend) + { + QApplication::restoreOverrideCursor(); + KMessageBox::information(worksheetView(), + i18n("%1 backend was not found. Editing and executing entries is not possible.", m_backendName), + i18n("Open File")); + m_readOnly = true; + } + else + m_readOnly = false; + + if(!m_readOnly && !backend->isEnabled()) + { + QApplication::restoreOverrideCursor(); + KMessageBox::information(worksheetView(), i18n("There are some problems with the %1 backend,\n"\ + "please check your configuration or install the needed packages.\n" + "You will only be able to view this worksheet.", m_backendName), i18n("Open File")); + m_readOnly = true; + } + + if (m_readOnly) + { + for (QAction* action : m_richTextActionList) + action->setEnabled(false); + } + + + m_isLoadingFromFile = true; + + if (m_session) + delete m_session; + m_session = nullptr; + + if (m_firstEntry) { + delete m_firstEntry; + m_firstEntry = nullptr; + } + + resetEntryCursor(); + m_itemWidths.clear(); + m_maxWidth = 0; + + if (!m_readOnly) + initSession(backend); + + qDebug() << "loading jupyter entries"; + + WorksheetEntry* entry = nullptr; + for (QJsonArray::const_iterator iter = cells.begin(); iter != cells.end(); ++iter) { + if (!Cantor::JupyterUtils::isJupyterCell(*iter)) + { + QApplication::restoreOverrideCursor(); + QString explanation; + if (iter->isObject()) + explanation = i18n("an object with keys: %1", iter->toObject().keys().join(QLatin1String(", "))); + else + explanation = i18n("non object JSON value"); + + m_isLoadingFromFile = false; + showInvalidNotebookSchemeError(i18n("found incorrect data (%1) that is not Jupyter cell", explanation)); + return false; + } + + const QJsonObject& cell = iter->toObject(); + QString cellType = Cantor::JupyterUtils::getCellType(cell); + + if (cellType == QLatin1String("code")) + { + if (LatexEntry::isConvertableToLatexEntry(cell)) + { + entry = appendEntry(LatexEntry::Type, false); + entry->setContentFromJupyter(cell); + entry->evaluate(WorksheetEntry::InternalEvaluation); + } + else + { + entry = appendEntry(CommandEntry::Type, false); + entry->setContentFromJupyter(cell); + } + } + else if (cellType == QLatin1String("markdown")) + { + if (TextEntry::isConvertableToTextEntry(cell)) + { + entry = appendEntry(TextEntry::Type, false); + entry->setContentFromJupyter(cell); + } + else if (HorizontalRuleEntry::isConvertableToHorizontalRuleEntry(cell)) + { + entry = appendEntry(HorizontalRuleEntry::Type, false); + entry->setContentFromJupyter(cell); + } + else if (HierarchyEntry::isConvertableToHierarchyEntry(cell)) + { + entry = appendEntry(HierarchyEntry::Type, false); + entry->setContentFromJupyter(cell); + } + else + { + entry = appendEntry(MarkdownEntry::Type, false); + entry->setContentFromJupyter(cell); + entry->evaluate(WorksheetEntry::InternalEvaluation); + } + } + else if (cellType == QLatin1String("raw")) + { + if (PageBreakEntry::isConvertableToPageBreakEntry(cell)) + entry = appendEntry(PageBreakEntry::Type, false); + else + entry = appendEntry(TextEntry::Type, false); + entry->setContentFromJupyter(cell); + } + + if (m_readOnly && entry) + { + entry->setAcceptHoverEvents(false); + entry = nullptr; + } + } + + if (m_readOnly) + clearFocus(); + + m_isLoadingFromFile = false; + updateHierarchyLayout(); + updateLayout(); + + enableHighlighting( m_highlighter!=nullptr || Settings::highlightDefault() ); + + emit loaded(); + return true; +} + +void Worksheet::showInvalidNotebookSchemeError(QString additionalInfo) +{ + if (additionalInfo.isEmpty()) + KMessageBox::error(worksheetView(), i18n("The file is not valid Jupyter notebook"), i18n("Open File")); + else + KMessageBox::error(worksheetView(), i18n("Invalid Jupyter notebook scheme: %1", additionalInfo), i18n("Open File")); +} + +void Worksheet::gotResult(Cantor::Expression* expr) +{ + if(expr==nullptr) + expr=qobject_cast(sender()); + + if(expr==nullptr) + return; + + //We're only interested in help results, others are handled by the WorksheetEntry + for (auto* result : expr->results()) + { + if(result && result->type()==Cantor::HelpResult::Type) + { + QString help = result->toHtml(); + //Do some basic LaTeX replacing + help.replace(QRegularExpression(QStringLiteral("\\\\code\\{([^\\}]*)\\}")), QStringLiteral("\\1")); + help.replace(QRegularExpression(QStringLiteral("\\$([^\\$])\\$")), QStringLiteral("\\1")); + + emit showHelp(help); + + //TODO: break after the first help result found, not clear yet how to handle multiple requests for help within one single command (e.g. ??ev;??int). + break; + } + } +} + +void Worksheet::removeCurrentEntry() +{ + qDebug()<<"removing current entry"; + WorksheetEntry* entry=currentEntry(); + if(!entry) + return; + + // In case we just removed this + if (entry->isAncestorOf(m_lastFocusedTextItem)) + m_lastFocusedTextItem = nullptr; + entry->startRemoving(); +} + +Cantor::Renderer* Worksheet::renderer() +{ + return &m_epsRenderer; +} + +MathRenderer* Worksheet::mathRenderer() +{ + return &m_mathRenderer; +} + +QMenu* Worksheet::createContextMenu() +{ + QMenu *menu = new QMenu(worksheetView()); + connect(menu, SIGNAL(aboutToHide()), menu, SLOT(deleteLater())); + + return menu; +} + +void Worksheet::populateMenu(QMenu *menu, QPointF pos) +{ + // Two menu: for particular entry and for selection (multiple entry) + if (m_selectedEntries.isEmpty()) + { + WorksheetEntry* entry = entryAt(pos); + if (entry && !entry->isAncestorOf(m_lastFocusedTextItem)) { + WorksheetTextItem* item = + qgraphicsitem_cast(itemAt(pos, QTransform())); + if (item && item->isEditable()) + m_lastFocusedTextItem = item; + } + + if (entry) { + //"Convert To" menu + QMenu* convertTo = new QMenu(i18n("Convert To")); + convertTo->setIcon(QIcon::fromTheme(QLatin1String("gtk-convert"))); + menu->addMenu(convertTo); + + if (entry->type() != CommandEntry::Type) + convertTo->addAction(QIcon::fromTheme(QLatin1String("run-build")), i18n("Command"), entry, &WorksheetEntry::convertToCommandEntry); + + if (entry->type() != TextEntry::Type) + convertTo->addAction(QIcon::fromTheme(QLatin1String("draw-text")), i18n("Text"), entry, &WorksheetEntry::convertToTextEntry); + + #ifdef Discount_FOUND + if (entry->type() != MarkdownEntry::Type) + convertTo->addAction(QIcon::fromTheme(QLatin1String("text-x-markdown")), i18n("Markdown"), entry, &WorksheetEntry::convertToMarkdownEntry); + #endif + #ifdef WITH_EPS + if (entry->type() != LatexEntry::Type) + convertTo->addAction(QIcon::fromTheme(QLatin1String("text-x-tex")), i18n("LaTeX"), entry, &WorksheetEntry::convertToLatexEntry); + #endif + if (entry->type() != ImageEntry::Type) + convertTo->addAction(QIcon::fromTheme(QLatin1String("image-x-generic")), i18n("Image"), entry, &WorksheetEntry::convertToImageEntry); + + if (entry->type() != PageBreakEntry::Type) + convertTo->addAction(QIcon::fromTheme(QLatin1String("insert-page-break")), i18n("Page Break"), entry, &WorksheetEntry::converToPageBreakEntry); + + if (entry->type() != HorizontalRuleEntry::Type) + convertTo->addAction(QIcon::fromTheme(QLatin1String("newline")), i18n("Horizontal Line"), entry, &WorksheetEntry::convertToHorizontalRuleEntry); + + if (entry->type() != HierarchyEntry::Type) + convertTo->addAction(QIcon::fromTheme(QLatin1String("view-list-tree")), i18n("Hierarchy Entry"), entry, &WorksheetEntry::convertToHierarchyEntry); + + //"Insert After" menu + QMenu* insert = new QMenu(i18n("Insert After"), menu); + insert->setIcon(QIcon::fromTheme(QLatin1String("edit-table-insert-row-below"))); + menu->addSeparator(); + menu->addMenu(insert); + + insert->addAction(QIcon::fromTheme(QLatin1String("run-build")), i18n("Command"), entry, SLOT(insertCommandEntry())); + insert->addAction(QIcon::fromTheme(QLatin1String("draw-text")), i18n("Text"), entry, SLOT(insertTextEntry())); + #ifdef Discount_FOUND + insert->addAction(QIcon::fromTheme(QLatin1String("text-x-markdown")), i18n("Markdown"), entry, SLOT(insertMarkdownEntry())); + #endif + #ifdef WITH_EPS + insert->addAction(QIcon::fromTheme(QLatin1String("text-x-tex")), i18n("LaTeX"), entry, SLOT(insertLatexEntry())); + #endif + insert->addAction(QIcon::fromTheme(QLatin1String("image-x-generic")), i18n("Image"), entry, SLOT(insertImageEntry())); + insert->addSeparator(); + insert->addAction(QIcon::fromTheme(QLatin1String("newline")), i18n("Horizontal Line"), entry, SLOT(insertHorizontalRuleEntry())); + insert->addAction(QIcon::fromTheme(QLatin1String("insert-page-break")), i18n("Page Break"), entry, SLOT(insertPageBreakEntry())); + insert->addSeparator(); + insert->addAction(QIcon::fromTheme(QLatin1String("view-list-tree")), i18n("Hierarchy Entry"), entry, SLOT(insertHierarchyEntry())); + + //"Insert Before" menu + QMenu* insertBefore = new QMenu(i18n("Insert Before"), menu); + insertBefore->setIcon(QIcon::fromTheme(QLatin1String("edit-table-insert-row-above"))); + menu->addMenu(insertBefore); + + insertBefore->addAction(QIcon::fromTheme(QLatin1String("run-build")), i18n("Command"), entry, SLOT(insertCommandEntryBefore())); + insertBefore->addAction(QIcon::fromTheme(QLatin1String("draw-text")), i18n("Text"), entry, SLOT(insertTextEntryBefore())); + #ifdef Discount_FOUND + insertBefore->addAction(QIcon::fromTheme(QLatin1String("text-x-markdown")), i18n("Markdown"), entry, SLOT(insertMarkdownEntryBefore())); + #endif + #ifdef WITH_EPS + insertBefore->addAction(QIcon::fromTheme(QLatin1String("text-x-tex")), i18n("LaTeX"), entry, SLOT(insertLatexEntryBefore())); + #endif + insertBefore->addAction(QIcon::fromTheme(QLatin1String("image-x-generic")), i18n("Image"), entry, SLOT(insertImageEntryBefore())); + insertBefore->addSeparator(); + insertBefore->addAction(QIcon::fromTheme(QLatin1String("newline")), i18n("Horizontal Line"), entry, SLOT(insertHorizontalRuleEntryBefore())); + insertBefore->addAction(QIcon::fromTheme(QLatin1String("insert-page-break")), i18n("Page Break"), entry, SLOT(insertPageBreakEntryBefore())); + insertBefore->addSeparator(); + insertBefore->addAction(QIcon::fromTheme(QLatin1String("view-list-tree")), i18n("Hierarchy Entry"), entry, SLOT(insertHierarchyEntryBefore())); + } else { + QMenu* insertMenu = new QMenu(i18n("Insert")); + insertMenu->setIcon(QIcon::fromTheme(QLatin1String("insert-table-row"))); + + insertMenu->addAction(QIcon::fromTheme(QLatin1String("run-build")), i18n("Command"), this, SLOT(appendCommandEntry())); + insertMenu->addAction(QIcon::fromTheme(QLatin1String("draw-text")), i18n("Text"), this, &Worksheet::appendTextEntry); + #ifdef Discount_FOUND + insertMenu->addAction(QIcon::fromTheme(QLatin1String("text-x-markdown")), i18n("Markdown"), this, &Worksheet::appendMarkdownEntry); + #endif + #ifdef WITH_EPS + insertMenu->addAction(QIcon::fromTheme(QLatin1String("text-x-tex")), i18n("LaTeX"), this, &Worksheet::appendLatexEntry); + #endif + insertMenu->addAction(QIcon::fromTheme(QLatin1String("image-x-generic")), i18n("Image"), this, &Worksheet::appendImageEntry); + insertMenu->addSeparator(); + insertMenu->addAction(QIcon::fromTheme(QLatin1String("newline")), i18n("Horizontal Line"), this, &Worksheet::appendHorizontalRuleEntry); + insertMenu->addAction(QIcon::fromTheme(QLatin1String("insert-page-break")), i18n("Page Break"), this, &Worksheet::appendPageBreakEntry); + insertMenu->addSeparator(); + insertMenu->addAction(QIcon::fromTheme(QLatin1String("view-list-tree")), i18n("Hierarchy Entry"), this, &Worksheet::appendHierarchyEntry); + + menu->addMenu(insertMenu); + + //"Show help" for backend's documentation + menu->addSeparator(); + menu->addAction(QIcon::fromTheme(QLatin1String("help-hint")), i18n("Show Help"), this, + [=] () { requestDocumentation(QString()); }); + } + + //evaluate the whole worksheet or interrupt the current calculation + menu->addSeparator(); + if (!isRunning()) + menu->addAction(QIcon::fromTheme(QLatin1String("system-run")), i18n("Evaluate Worksheet"), + this, &Worksheet::evaluate); + else + menu->addAction(QIcon::fromTheme(QLatin1String("process-stop")), i18n("Interrupt"), this, + &Worksheet::interrupt); + + //zooming + menu->addSeparator(); + auto* zoomMenu = new QMenu(i18n("Zoom")); + zoomMenu->setIcon(QIcon::fromTheme(QLatin1String("zoom-draw"))); + auto* view = worksheetView(); + + auto* action = zoomMenu->addAction(QIcon::fromTheme(QLatin1String("zoom-in")), i18n("Zoom In"), view, &WorksheetView::zoomIn); + action->setShortcut(Qt::CTRL+Qt::Key_Plus); + + action = zoomMenu->addAction(QIcon::fromTheme(QLatin1String("zoom-out")), i18n("Zoom Out"), view, &WorksheetView::zoomOut); + action->setShortcut(Qt::CTRL+Qt::Key_Minus); + zoomMenu->addSeparator(); + + action = zoomMenu->addAction(QIcon::fromTheme(QLatin1String("zoom-original")), i18n("Original Size"), view, &WorksheetView::actualSize); + action->setShortcut(Qt::CTRL+Qt::Key_1); + + menu->addMenu(zoomMenu); + } + else + { + menu->clear(); + menu->addAction(QIcon::fromTheme(QLatin1String("go-up")), i18n("Move Entries Up"), this, &Worksheet::selectionMoveUp); + menu->addAction(QIcon::fromTheme(QLatin1String("go-down")), i18n("Move Entries Down"), this, &Worksheet::selectionMoveDown); + menu->addAction(QIcon::fromTheme(QLatin1String("media-playback-start")), i18n("Evaluate Entries"), this, &Worksheet::selectionEvaluate); + menu->addAction(QIcon::fromTheme(QLatin1String("edit-delete")), i18n("Remove Entries"), this, &Worksheet::selectionRemove); + + bool isAnyCommandEntryInSelection = false; + for (WorksheetEntry* entry : m_selectedEntries) + if (entry->type() == CommandEntry::Type) + { + isAnyCommandEntryInSelection = true; + break; + } + + if (isAnyCommandEntryInSelection) + { + menu->addSeparator(); + menu->addAction(QIcon(), i18n("Collapse Command Entry Results"), this, &Worksheet::collapseSelectionResults); + menu->addAction(QIcon(), i18n("Expand Command Entry Results"), this, &Worksheet::uncollapseSelectionResults); + menu->addAction(QIcon(), i18n("Remove Command Entry Results"), this, &Worksheet::removeSelectionResults); + menu->addAction(QIcon(), i18n("Exclude Command Entry From Execution"), this, &Worksheet::excludeFromExecutionSelection); + menu->addAction(QIcon(), i18n("Add Command Entry To Execution"), this, &Worksheet::addToExectuionSelection); + } + } +} + +void Worksheet::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +{ + if (m_readOnly) + return; + + // forward the event to the items + QGraphicsScene::contextMenuEvent(event); + + if (!event->isAccepted()) { + event->accept(); + QMenu *menu = createContextMenu(); + populateMenu(menu, event->scenePos()); + + menu->popup(event->screenPos()); + } +} + +void Worksheet::mousePressEvent(QGraphicsSceneMouseEvent* event) +{ + /* + if (event->button() == Qt::LeftButton && !focusItem() && lastEntry() && + event->scenePos().y() > lastEntry()->y() + lastEntry()->size().height()) + lastEntry()->focusEntry(WorksheetTextItem::BottomRight); + */ + QGraphicsScene::mousePressEvent(event); + + if (!m_readOnly && event->buttons() & Qt::LeftButton) + { + WorksheetEntry* selectedEntry = entryAt(event->scenePos()); + if (event->modifiers() & Qt::ControlModifier) + { + clearFocus(); + resetEntryCursor(); + + if (selectedEntry) + { + selectedEntry->setCellSelected(!selectedEntry->isCellSelected()); + selectedEntry->update(); + + WorksheetEntry* lastSelectedEntry = m_circularFocusBuffer.size() > 0 ? m_circularFocusBuffer.last() : nullptr; + if (lastSelectedEntry) + { + lastSelectedEntry->setCellSelected(!lastSelectedEntry->isCellSelected()); + lastSelectedEntry->update(); + m_circularFocusBuffer.clear(); + } + + for (WorksheetEntry* entry : {selectedEntry, lastSelectedEntry}) + if (entry) + { + if (entry->isCellSelected()) + m_selectedEntries.append(entry); + else if (!entry->isCellSelected()) + m_selectedEntries.removeOne(entry); + } + } + } + else + { + for (WorksheetEntry* entry : m_selectedEntries) + { + if(isValidEntry(entry)) + { + entry->setCellSelected(false); + entry->update(); + } + } + m_selectedEntries.clear(); + + if (selectedEntry) + notifyEntryFocus(selectedEntry); + + updateEntryCursor(event); + } + } +} + +void Worksheet::keyPressEvent(QKeyEvent* event) +{ + if (m_readOnly) + return; + + if ((event->modifiers() & Qt::ControlModifier) && (event->key() == Qt::Key_1)) + worksheetView()->actualSize(); + else if ((m_choosenCursorEntry || m_isCursorEntryAfterLastEntry) && !event->text().isEmpty()) + addEntryFromEntryCursor(); //add new enty when the entry cursor is activa the user starts typing the text + + QGraphicsScene::keyPressEvent(event); +} + +void Worksheet::setActionCollection(KActionCollection* collection) +{ + m_collection = collection; +} + +void Worksheet::initActions() +{ + // Mostly copied from KRichTextWidget::createActions(KActionCollection*) + // It would be great if this wasn't necessary. + + // Text color + /* This is "format-stroke-color" in KRichTextWidget */ + auto* action = new QAction(QIcon::fromTheme(QLatin1String("format-text-color")), + i18nc("@action", "Text &Color..."), m_collection); + action->setIconText(i18nc("@label text color", "Color")); + action->setPriority(QAction::LowPriority); + m_richTextActionList.append(action); + connect(action, &QAction::triggered, this, &Worksheet::setTextForegroundColor); + + // Text color + action = new QAction(QIcon::fromTheme(QLatin1String("format-fill-color")), + i18nc("@action", "Text &Highlight..."), m_collection); + action->setPriority(QAction::LowPriority); + m_richTextActionList.append(action); + connect(action, &QAction::triggered, this, &Worksheet::setTextBackgroundColor); + + // Font Family + m_fontAction = new KFontAction(i18nc("@action", "&Font"), m_collection); + m_richTextActionList.append(m_fontAction); +#if KCOREADDONS_VERSION >= QT_VERSION_CHECK(5, 78, 0) + connect(m_fontAction, &KFontAction::textTriggered, this, &Worksheet::setFontFamily); +#else + connect(m_fontAction, QOverload::of(&KFontAction::triggered), this, &Worksheet::setFontFamily); +#endif + + // Font Size + m_fontSizeAction = new KFontSizeAction(i18nc("@action", "Font &Size"), m_collection); + m_richTextActionList.append(m_fontSizeAction); + connect(m_fontSizeAction, &KFontSizeAction::fontSizeChanged, this, &Worksheet::setFontSize); + + // Bold + m_boldAction = new KToggleAction(QIcon::fromTheme(QLatin1String("format-text-bold")), + i18nc("@action boldify selected text", "&Bold"), + m_collection); + m_boldAction->setPriority(QAction::LowPriority); + QFont bold; + bold.setBold(true); + m_boldAction->setFont(bold); + m_richTextActionList.append(m_boldAction); + connect(m_boldAction, &QAction::triggered, this, &Worksheet::setTextBold); + + // Italic + m_italicAction = new KToggleAction(QIcon::fromTheme(QLatin1String("format-text-italic")), + i18nc("@action italicize selected text", "&Italic"), + m_collection); + m_italicAction->setPriority(QAction::LowPriority); + QFont italic; + italic.setItalic(true); + m_italicAction->setFont(italic); + m_richTextActionList.append(m_italicAction); + connect(m_italicAction, &QAction::triggered, this, &Worksheet::setTextItalic); + + // Underline + m_underlineAction = new KToggleAction(QIcon::fromTheme(QLatin1String("format-text-underline")), + i18nc("@action underline selected text", + "&Underline"), + m_collection); + m_underlineAction->setPriority(QAction::LowPriority); + QFont underline; + underline.setUnderline(true); + m_underlineAction->setFont(underline); + m_richTextActionList.append(m_underlineAction); + connect(m_underlineAction, &QAction::triggered, this, &Worksheet::setTextUnderline); + + // Strike + m_strikeOutAction = new KToggleAction(QIcon::fromTheme(QLatin1String("format-text-strikethrough")), + i18nc("@action", "&Strike Out"), + m_collection); + m_strikeOutAction->setPriority(QAction::LowPriority); + m_richTextActionList.append(m_strikeOutAction); + connect(m_strikeOutAction, &QAction::triggered, this, &Worksheet::setTextStrikeOut); + + // Alignment + auto* alignmentGroup = new QActionGroup(this); + + // Align left + m_alignLeftAction = new KToggleAction(QIcon::fromTheme(QLatin1String("format-justify-left")), + i18nc("@action", "Align &Left"), + m_collection); + m_alignLeftAction->setPriority(QAction::LowPriority); + m_alignLeftAction->setIconText(i18nc("@label left justify", "Left")); + m_richTextActionList.append(m_alignLeftAction); + connect(m_alignLeftAction, &QAction::triggered, this, &Worksheet::setAlignLeft); + alignmentGroup->addAction(m_alignLeftAction); + + // Align center + m_alignCenterAction = new KToggleAction(QIcon::fromTheme(QLatin1String("format-justify-center")), + i18nc("@action", "Align &Center"), + m_collection); + m_alignCenterAction->setPriority(QAction::LowPriority); + m_alignCenterAction->setIconText(i18nc("@label center justify", "Center")); + m_richTextActionList.append(m_alignCenterAction); + connect(m_alignCenterAction, &QAction::triggered, this, &Worksheet::setAlignCenter); + alignmentGroup->addAction(m_alignCenterAction); + + // Align right + m_alignRightAction = new KToggleAction(QIcon::fromTheme(QLatin1String("format-justify-right")), + i18nc("@action", "Align &Right"), + m_collection); + m_alignRightAction->setPriority(QAction::LowPriority); + m_alignRightAction->setIconText(i18nc("@label right justify", "Right")); + m_richTextActionList.append(m_alignRightAction); + connect(m_alignRightAction, &QAction::triggered, this, &Worksheet::setAlignRight); + alignmentGroup->addAction(m_alignRightAction); + + // Align justify + m_alignJustifyAction = new KToggleAction(QIcon::fromTheme(QLatin1String("format-justify-fill")), + i18nc("@action", "&Justify"), + m_collection); + m_alignJustifyAction->setPriority(QAction::LowPriority); + m_alignJustifyAction->setIconText(i18nc("@label justify fill", "Justify")); + m_richTextActionList.append(m_alignJustifyAction); + connect(m_alignJustifyAction, &QAction::triggered, this, &Worksheet::setAlignJustify); + alignmentGroup->addAction(m_alignJustifyAction); + + if (m_collection) + { + m_collection->addAction(QLatin1String("format_text_foreground_color"), action); + m_collection->addAction(QLatin1String("format_text_background_color"), action); + m_collection->addAction(QLatin1String("format_font_family"), m_fontAction); + m_collection->addAction(QLatin1String("format_font_size"), m_fontSizeAction); + m_collection->addAction(QLatin1String("format_text_bold"), m_boldAction); + m_collection->setDefaultShortcut(m_boldAction, Qt::CTRL + Qt::Key_B); + m_collection->addAction(QLatin1String("format_text_italic"), m_italicAction); + m_collection->setDefaultShortcut(m_italicAction, Qt::CTRL + Qt::Key_I); + m_collection->addAction(QLatin1String("format_text_underline"), m_underlineAction); + m_collection->setDefaultShortcut(m_underlineAction, Qt::CTRL + Qt::Key_U); + m_collection->addAction(QLatin1String("format_text_strikeout"), m_strikeOutAction); + m_collection->setDefaultShortcut(m_strikeOutAction, Qt::CTRL + Qt::Key_L); + m_collection->addAction(QLatin1String("format_align_left"), m_alignLeftAction); + m_collection->addAction(QLatin1String("format_align_center"), m_alignCenterAction); + m_collection->addAction(QLatin1String("format_align_right"), m_alignRightAction); + m_collection->addAction(QLatin1String("format_align_justify"), m_alignJustifyAction); + } + + /* + // List style + KSelectAction* selAction; + selAction = new KSelectAction(QIcon::fromTheme("format-list-unordered"), + i18nc("@title:menu", "List Style"), + collection); + QStringList listStyles; + listStyles << i18nc("@item:inmenu no list style", "None") + << i18nc("@item:inmenu disc list style", "Disc") + << i18nc("@item:inmenu circle list style", "Circle") + << i18nc("@item:inmenu square list style", "Square") + << i18nc("@item:inmenu numbered lists", "123") + << i18nc("@item:inmenu lowercase abc lists", "abc") + << i18nc("@item:inmenu uppercase abc lists", "ABC"); + selAction->setItems(listStyles); + selAction->setCurrentItem(0); + action = selAction; + m_richTextActionList.append(action); + collection->addAction("format_list_style", action); + connect(action, SIGNAL(triggered(int)), + this, &Worksheet::_k_setListStyle(int))); + connect(action, &QAction::triggered, + this, &Worksheet::_k_updateMiscActions())); + + // Indent + action = new QAction(QIcon::fromTheme("format-indent-more"), + i18nc("@action", "Increase Indent"), collection); + action->setPriority(QAction::LowPriority); + m_richTextActionList.append(action); + collection->addAction("format_list_indent_more", action); + connect(action, &QAction::triggered, + this, &Worksheet::indentListMore())); + connect(action, &QAction::triggered, + this, &Worksheet::_k_updateMiscActions())); + + // Dedent + action = new QAction(QIcon::fromTheme("format-indent-less"), + i18nc("@action", "Decrease Indent"), collection); + action->setPriority(QAction::LowPriority); + m_richTextActionList.append(action); + collection->addAction("format_list_indent_less", action); + connect(action, &QAction::triggered, this, &Worksheet::indentListLess())); + connect(action, &QAction::triggered, this, &Worksheet::_k_updateMiscActions())); + */ +} + +WorksheetTextItem* Worksheet::lastFocusedTextItem() +{ + return m_lastFocusedTextItem; +} + +void Worksheet::updateFocusedTextItem(WorksheetTextItem* newItem) +{ + // No need update and emit signals about editing actions in readonly + // So support only copy action and reset selection + if (m_readOnly) + { + if (m_lastFocusedTextItem && m_lastFocusedTextItem != newItem) + { + disconnect(this, SIGNAL(copy()), m_lastFocusedTextItem, SLOT(copy())); + m_lastFocusedTextItem->clearSelection(); + } + + if (newItem && m_lastFocusedTextItem != newItem) + { + connect(this, SIGNAL(copy()), newItem, SLOT(copy())); + emit copyAvailable(newItem->isCopyAvailable()); + } + else if (!newItem) + { + emit copyAvailable(false); + } + + m_lastFocusedTextItem = newItem; + return; + } + + if (m_lastFocusedTextItem && m_lastFocusedTextItem != newItem) { + disconnect(m_lastFocusedTextItem, SIGNAL(undoAvailable(bool)), + this, SIGNAL(undoAvailable(bool))); + disconnect(m_lastFocusedTextItem, SIGNAL(redoAvailable(bool)), + this, SIGNAL(redoAvailable(bool))); + disconnect(this, SIGNAL(undo()), m_lastFocusedTextItem, SLOT(undo())); + disconnect(this, SIGNAL(redo()), m_lastFocusedTextItem, SLOT(redo())); + disconnect(m_lastFocusedTextItem, SIGNAL(cutAvailable(bool)), + this, SIGNAL(cutAvailable(bool))); + disconnect(m_lastFocusedTextItem, SIGNAL(copyAvailable(bool)), + this, SIGNAL(copyAvailable(bool))); + disconnect(m_lastFocusedTextItem, SIGNAL(pasteAvailable(bool)), + this, SIGNAL(pasteAvailable(bool))); + disconnect(this, SIGNAL(cut()), m_lastFocusedTextItem, SLOT(cut())); + disconnect(this, SIGNAL(copy()), m_lastFocusedTextItem, SLOT(copy())); + + m_lastFocusedTextItem->clearSelection(); + } + + if (newItem && m_lastFocusedTextItem != newItem) { + setAcceptRichText(newItem->richTextEnabled()); + emit undoAvailable(newItem->isUndoAvailable()); + emit redoAvailable(newItem->isRedoAvailable()); + connect(newItem, SIGNAL(undoAvailable(bool)), + this, SIGNAL(undoAvailable(bool))); + connect(newItem, SIGNAL(redoAvailable(bool)), + this, SIGNAL(redoAvailable(bool))); + connect(this, SIGNAL(undo()), newItem, SLOT(undo())); + connect(this, SIGNAL(redo()), newItem, SLOT(redo())); + emit cutAvailable(newItem->isCutAvailable()); + emit copyAvailable(newItem->isCopyAvailable()); + emit pasteAvailable(newItem->isPasteAvailable()); + connect(newItem, SIGNAL(cutAvailable(bool)), + this, SIGNAL(cutAvailable(bool))); + connect(newItem, SIGNAL(copyAvailable(bool)), + this, SIGNAL(copyAvailable(bool))); + connect(newItem, SIGNAL(pasteAvailable(bool)), + this, SIGNAL(pasteAvailable(bool))); + connect(this, SIGNAL(cut()), newItem, SLOT(cut())); + connect(this, SIGNAL(copy()), newItem, SLOT(copy())); + } else if (!newItem) { + emit undoAvailable(false); + emit redoAvailable(false); + emit cutAvailable(false); + emit copyAvailable(false); + emit pasteAvailable(false); + } + m_lastFocusedTextItem = newItem; +} + +/*! + * handles the paste action triggered in cantor_part. + * Pastes into the last focused text item. + * In case the "new entry"-cursor is currently shown, + * a new entry is created first which the content will be pasted into. + */ +void Worksheet::paste() { + if (m_choosenCursorEntry || m_isCursorEntryAfterLastEntry) + addEntryFromEntryCursor(); + + m_lastFocusedTextItem->paste(); +} + +void Worksheet::setRichTextInformation(const RichTextInfo& info) +{ + if (!m_boldAction) + initActions(); + + m_boldAction->setChecked(info.bold); + m_italicAction->setChecked(info.italic); + m_underlineAction->setChecked(info.underline); + m_strikeOutAction->setChecked(info.strikeOut); + m_fontAction->setFont(info.font); + if (info.fontSize > 0) + m_fontSizeAction->setFontSize(info.fontSize); + + if (info.align & Qt::AlignLeft) + m_alignLeftAction->setChecked(true); + else if (info.align & Qt::AlignCenter) + m_alignCenterAction->setChecked(true); + else if (info.align & Qt::AlignRight) + m_alignRightAction->setChecked(true); + else if (info.align & Qt::AlignJustify) + m_alignJustifyAction->setChecked(true); +} + +void Worksheet::setAcceptRichText(bool b) +{ + if (!m_readOnly) + for(auto* action : m_richTextActionList) + action->setVisible(b); +} + +WorksheetTextItem* Worksheet::currentTextItem() +{ + QGraphicsItem* item = focusItem(); + if (!item) + item = m_lastFocusedTextItem; + while (item && item->type() != WorksheetTextItem::Type) + item = item->parentItem(); + + return qgraphicsitem_cast(item); +} + +void Worksheet::setTextForegroundColor() +{ + WorksheetTextItem* item = currentTextItem(); + if (item) + item->setTextForegroundColor(); +} + +void Worksheet::setTextBackgroundColor() +{ + WorksheetTextItem* item = currentTextItem(); + if (item) + item->setTextBackgroundColor(); +} + +void Worksheet::setTextBold(bool b) +{ + WorksheetTextItem* item = currentTextItem(); + if (item) + item->setTextBold(b); +} + +void Worksheet::setTextItalic(bool b) +{ + WorksheetTextItem* item = currentTextItem(); + if (item) + item->setTextItalic(b); +} + +void Worksheet::setTextUnderline(bool b) +{ + WorksheetTextItem* item = currentTextItem(); + if (item) + item->setTextUnderline(b); +} + +void Worksheet::setTextStrikeOut(bool b) +{ + WorksheetTextItem* item = currentTextItem(); + if (item) + item->setTextStrikeOut(b); +} + +void Worksheet::setAlignLeft() +{ + WorksheetTextItem* item = currentTextItem(); + if (item) + item->setAlignment(Qt::AlignLeft); +} + +void Worksheet::setAlignRight() +{ + WorksheetTextItem* item = currentTextItem(); + if (item) + item->setAlignment(Qt::AlignRight); +} + +void Worksheet::setAlignCenter() +{ + WorksheetTextItem* item = currentTextItem(); + if (item) + item->setAlignment(Qt::AlignCenter); +} + +void Worksheet::setAlignJustify() +{ + WorksheetTextItem* item = currentTextItem(); + if (item) + item->setAlignment(Qt::AlignJustify); +} + +void Worksheet::setFontFamily(const QString& font) +{ + WorksheetTextItem* item = currentTextItem(); + if (item) + item->setFontFamily(font); +} + +void Worksheet::setFontSize(int size) +{ + WorksheetTextItem* item = currentTextItem(); + if (item) + item->setFontSize(size); +} + +bool Worksheet::isShortcut(const QKeySequence& sequence) +{ + return m_shortcuts.contains(sequence); +} + +void Worksheet::registerShortcut(QAction* action) +{ + for (auto& shortcut : action->shortcuts()) + m_shortcuts.insert(shortcut, action); + + connect(action, &QAction::changed, this, &Worksheet::updateShortcut); +} + +void Worksheet::updateShortcut() +{ + QAction* action = qobject_cast(sender()); + if (!action) + return; + + // delete the old shortcuts of this action + QList shortcuts = m_shortcuts.keys(action); + for (auto& shortcut : shortcuts) + m_shortcuts.remove(shortcut); + + // add the new shortcuts + for (auto& shortcut : action->shortcuts()) + m_shortcuts.insert(shortcut, action); +} + +void Worksheet::dragEnterEvent(QGraphicsSceneDragDropEvent* event) +{ + if (m_dragEntry) + event->accept(); + else + QGraphicsScene::dragEnterEvent(event); +} + +void Worksheet::dragLeaveEvent(QGraphicsSceneDragDropEvent* event) +{ + if (!m_dragEntry) { + QGraphicsScene::dragLeaveEvent(event); + return; + } + + event->accept(); + if (m_placeholderEntry) { + m_placeholderEntry->startRemoving(); + m_placeholderEntry = nullptr; + } +} + +void Worksheet::dragMoveEvent(QGraphicsSceneDragDropEvent* event) +{ + if (!m_dragEntry) { + QGraphicsScene::dragMoveEvent(event); + return; + } + + QPointF pos = event->scenePos(); + WorksheetEntry* entry = entryAt(pos); + WorksheetEntry* prev = nullptr; + WorksheetEntry* next = nullptr; + if (entry) { + if (pos.y() < entry->y() + entry->size().height()/2) { + prev = entry->previous(); + next = entry; + } else if (pos.y() >= entry->y() + entry->size().height()/2) { + prev = entry; + next = entry->next(); + } + } else { + WorksheetEntry* last = lastEntry(); + if (last && pos.y() > last->y() + last->size().height()) { + prev = last; + next = nullptr; + } + } + + bool dragWithHierarchy = m_hierarchySubentriesDrag.size() != 0; + + if (prev || next) { + PlaceHolderEntry* oldPlaceHolder = m_placeholderEntry; + if (prev && prev->type() == PlaceHolderEntry::Type && + (!prev->aboutToBeRemoved() || prev->stopRemoving())) { + m_placeholderEntry = qgraphicsitem_cast(prev); + if (dragWithHierarchy) + m_placeholderEntry->changeSize(m_hierarchyDragSize); + else + m_placeholderEntry->changeSize(m_dragEntry->size()); + } else if (next && next->type() == PlaceHolderEntry::Type && + (!next->aboutToBeRemoved() || next->stopRemoving())) { + m_placeholderEntry = qgraphicsitem_cast(next); + if (dragWithHierarchy) + m_placeholderEntry->changeSize(m_hierarchyDragSize); + else + m_placeholderEntry->changeSize(m_dragEntry->size()); + } else { + m_placeholderEntry = new PlaceHolderEntry(this, QSizeF(0,0)); + m_placeholderEntry->setPrevious(prev); + m_placeholderEntry->setNext(next); + if (prev) + prev->setNext(m_placeholderEntry); + else + setFirstEntry(m_placeholderEntry); + if (next) + next->setPrevious(m_placeholderEntry); + else + setLastEntry(m_placeholderEntry); + if (dragWithHierarchy) + m_placeholderEntry->changeSize(m_hierarchyDragSize); + else + m_placeholderEntry->changeSize(m_dragEntry->size()); + } + if (oldPlaceHolder && oldPlaceHolder != m_placeholderEntry) + oldPlaceHolder->startRemoving(); + updateLayout(); + } + + const QPoint viewPos = worksheetView()->mapFromScene(pos); + const int viewHeight = worksheetView()->viewport()->height(); + if ((viewPos.y() < 10 || viewPos.y() > viewHeight - 10) && + !m_dragScrollTimer) { + m_dragScrollTimer = new QTimer(this); + m_dragScrollTimer->setSingleShot(true); + m_dragScrollTimer->setInterval(100); + connect(m_dragScrollTimer, SIGNAL(timeout()), this, + SLOT(updateDragScrollTimer())); + m_dragScrollTimer->start(); + } + + event->accept(); +} + +void Worksheet::dropEvent(QGraphicsSceneDragDropEvent* event) +{ + if (!m_dragEntry) + QGraphicsScene::dropEvent(event); + event->accept(); +} + +void Worksheet::updateDragScrollTimer() +{ + if (!m_dragScrollTimer) + return; + + const QPoint viewPos = worksheetView()->viewCursorPos(); + const QWidget* viewport = worksheetView()->viewport(); + const int viewHeight = viewport->height(); + if (!m_dragEntry || !(viewport->rect().contains(viewPos)) || + (viewPos.y() >= 10 && viewPos.y() <= viewHeight - 10)) { + delete m_dragScrollTimer; + m_dragScrollTimer = nullptr; + return; + } + + if (viewPos.y() < 10) + worksheetView()->scrollBy(-10*(10 - viewPos.y())); + else + worksheetView()->scrollBy(10*(viewHeight - viewPos.y())); + + m_dragScrollTimer->start(); +} + +void Worksheet::updateEntryCursor(QGraphicsSceneMouseEvent* event) +{ + // determine the worksheet entry near which the entry cursor will be shown + resetEntryCursor(); + if (event->button() == Qt::LeftButton && !focusItem()) + { + const qreal y = event->scenePos().y(); + for (WorksheetEntry* entry = firstEntry(); entry; entry = entry->next()) + { + if (entry == firstEntry() && y < entry->y() ) + { + m_choosenCursorEntry = firstEntry(); + break; + } + else if (entry->y() < y && (entry->next() && y < entry->next()->y())) + { + m_choosenCursorEntry = entry->next(); + break; + } + else if (entry->y() < y && entry == lastEntry()) + { + m_isCursorEntryAfterLastEntry = true; + break; + } + } + } + + if (m_choosenCursorEntry || m_isCursorEntryAfterLastEntry) + drawEntryCursor(); +} + +void Worksheet::addEntryFromEntryCursor() +{ + qDebug() << "Add new entry from entry cursor"; + if (m_isCursorEntryAfterLastEntry) + insertCommandEntry(lastEntry()); + else + insertCommandEntryBefore(m_choosenCursorEntry); + resetEntryCursor(); +} + +void Worksheet::animateEntryCursor() +{ + if ((m_choosenCursorEntry || m_isCursorEntryAfterLastEntry) && m_entryCursorItem) + m_entryCursorItem->setVisible(!m_entryCursorItem->isVisible()); +} + +void Worksheet::resetEntryCursor() +{ + m_choosenCursorEntry = nullptr; + m_isCursorEntryAfterLastEntry = false; + m_entryCursorItem->hide(); +} + +void Worksheet::drawEntryCursor() +{ + if (m_entryCursorItem && (m_choosenCursorEntry || (m_isCursorEntryAfterLastEntry && lastEntry()))) + { + qreal x; + qreal y; + if (m_isCursorEntryAfterLastEntry) + { + x = lastEntry()->x(); + y = lastEntry()->y() + lastEntry()->size().height() - (EntryCursorWidth - 1); + } + else + { + x = m_choosenCursorEntry->x(); + y = m_choosenCursorEntry->y(); + } + m_entryCursorItem->setLine(x,y,x+EntryCursorLength,y); + m_entryCursorItem->show(); + } +} + +void Worksheet::setType(Worksheet::Type type) +{ + m_type = type; +} + +Worksheet::Type Worksheet::type() const +{ + return m_type; +} + +void Worksheet::changeEntryType(WorksheetEntry* target, int newType) +{ + if (target && target->type() != newType) + { + bool animation_state = m_animationsEnabled; + m_animationsEnabled = false; + + QString content; + + int targetEntryType = target->type(); + switch(targetEntryType) + { + case CommandEntry::Type: + content = static_cast(target)->command(); + break; + case MarkdownEntry::Type: + content = static_cast(target)->plainText(); + break; + case TextEntry::Type: + content = static_cast(target)->text(); + break; + case LatexEntry::Type: + content = static_cast(target)->plain(); + } + + auto* newEntry = WorksheetEntry::create(newType, this); + if (newEntry) + { + newEntry->setContent(content); + WorksheetEntry* tmp = target; + + newEntry->setPrevious(tmp->previous()); + newEntry->setNext(tmp->next()); + + tmp->setPrevious(nullptr); + tmp->setNext(nullptr); + tmp->clearFocus(); + tmp->forceRemove(); + + if (newEntry->previous()) + newEntry->previous()->setNext(newEntry); + else + setFirstEntry(newEntry); + + if (newEntry->next()) + newEntry->next()->setPrevious(newEntry); + else + setLastEntry(newEntry); + + if (newType == HierarchyEntry::Type || targetEntryType == HierarchyEntry::Type) + updateHierarchyLayout(); + updateLayout(); + makeVisible(newEntry); + focusEntry(newEntry); + setModified(); + newEntry->focusEntry(); + } + m_animationsEnabled = animation_state; + } +} + +bool Worksheet::isValidEntry(WorksheetEntry* entry) +{ + for (auto* iter = firstEntry(); iter; iter = iter->next()) + if (entry == iter) + return true; + + return false; +} + +void Worksheet::selectionRemove() +{ + for (auto* entry : m_selectedEntries) + if (isValidEntry(entry)) + entry->startRemoving(); + + m_selectedEntries.clear(); +} + +void Worksheet::selectionEvaluate() +{ + // run entries in worksheet order: from top to down + for (WorksheetEntry* entry = firstEntry(); entry; entry = entry->next()) + if (m_selectedEntries.indexOf(entry) != -1) + entry->evaluate(); +} + +void Worksheet::selectionMoveUp() +{ + bool moveHierarchyEntry = false; + // movement up should have an order from top to down. + for(WorksheetEntry* entry = firstEntry(); entry; entry = entry->next()) + if(m_selectedEntries.indexOf(entry) != -1) + if (entry->previous() && m_selectedEntries.indexOf(entry->previous()) == -1) + { + entry->moveToPrevious(false); + if (entry->type() == HierarchyEntry::Type) + moveHierarchyEntry = true; + } + if (moveHierarchyEntry) + updateHierarchyLayout(); + updateLayout(); +} + +void Worksheet::selectionMoveDown() +{ + bool moveHierarchyEntry = false; + // movement up should have an order from down to top. + for(WorksheetEntry* entry = lastEntry(); entry; entry = entry->previous()) + if(m_selectedEntries.indexOf(entry) != -1) + if (entry->next() && m_selectedEntries.indexOf(entry->next()) == -1) + { + entry->moveToNext(false); + if (entry->type() == HierarchyEntry::Type) + moveHierarchyEntry = true; + } + if (moveHierarchyEntry) + updateHierarchyLayout(); + updateLayout(); +} + +void Worksheet::notifyEntryFocus(WorksheetEntry* entry) +{ + if (entry) + { + m_circularFocusBuffer.enqueue(entry); + + if (m_circularFocusBuffer.size() > 2) + m_circularFocusBuffer.dequeue(); + } + else + m_circularFocusBuffer.clear(); +} + +void Worksheet::collapseAllResults() +{ + for (WorksheetEntry *entry = firstEntry(); entry; entry = entry->next()) + if (entry->type() == CommandEntry::Type) + static_cast(entry)->collapseResults(); +} + +void Worksheet::uncollapseAllResults() +{ + for (WorksheetEntry *entry = firstEntry(); entry; entry = entry->next()) + if (entry->type() == CommandEntry::Type) + static_cast(entry)->expandResults(); +} + +void Worksheet::removeAllResults() +{ + bool remove = false; + + if (KMessageBox::shouldBeShownContinue(QLatin1String("WarnAboutAllResultsRemoving"))) + { + KMessageBox::ButtonCode btn = KMessageBox::warningContinueCancel( + views().first(), + i18n("This action will remove all results without the possibility of cancellation. Are you sure?"), + i18n("Remove all results"), + KStandardGuiItem::cont(), + KStandardGuiItem::cancel(), + QLatin1String("WarnAboutAllResultsRemoving") + ); + remove = (btn == KMessageBox::Continue); + } + else + remove = true; + + if (remove) + { + for (WorksheetEntry *entry = firstEntry(); entry; entry = entry->next()) + if (entry->type() == CommandEntry::Type) + static_cast(entry)->removeResults(); + } +} + +void Worksheet::addToExectuionSelection() +{ + for (WorksheetEntry* entry : m_selectedEntries) + if (entry->type() == CommandEntry::Type) + static_cast(entry)->addToExecution(); +} + +void Worksheet::excludeFromExecutionSelection() +{ + for (WorksheetEntry* entry : m_selectedEntries) + if (entry->type() == CommandEntry::Type) + static_cast(entry)->excludeFromExecution(); +} + +void Worksheet::collapseSelectionResults() +{ + for (WorksheetEntry* entry : m_selectedEntries) + if (entry->type() == CommandEntry::Type) + static_cast(entry)->collapseResults(); +} + +void Worksheet::uncollapseSelectionResults() +{ + for (WorksheetEntry* entry : m_selectedEntries) + if (entry->type() == CommandEntry::Type) + static_cast(entry)->expandResults(); +} + +void Worksheet::removeSelectionResults() +{ + for (WorksheetEntry* entry : m_selectedEntries) + if (entry->type() == CommandEntry::Type) + static_cast(entry)->removeResults(); +} + +void Worksheet::requestScrollToHierarchyEntry(QString hierarchyText) +{ + for (WorksheetEntry *entry = firstEntry(); entry; entry = entry->next()) + { + if (entry->type() == HierarchyEntry::Type) + { + HierarchyEntry* hierarchEntry = static_cast(entry); + if (hierarchEntry->hierarchyText() == hierarchyText) + worksheetView()->scrollTo(hierarchEntry->y()); + } + } +} + +WorksheetEntry * Worksheet::cutSubentriesForHierarchy(HierarchyEntry* hierarchyEntry) +{ + Q_ASSERT(hierarchyEntry->next()); + WorksheetEntry* cutBegin = hierarchyEntry->next(); + WorksheetEntry* cutEnd = cutBegin; + + bool isCutEnd = false; + int level = (int)hierarchyEntry->level(); + while (!isCutEnd && cutEnd && cutEnd->next()) + { + WorksheetEntry* next = cutEnd->next(); + if (next->type() == HierarchyEntry::Type && (int)static_cast(next)->level() <= level) + isCutEnd = true; + else + cutEnd = next; + } + + //cutEnd not an end of all entries + if (cutEnd->next()) + { + hierarchyEntry->setNext(cutEnd->next()); + cutEnd->setNext(nullptr); + } + else + { + hierarchyEntry->setNext(nullptr); + setLastEntry(hierarchyEntry); + } + + cutBegin->setPrevious(nullptr); + + for(WorksheetEntry* entry = cutBegin; entry; entry = entry->next()) + entry->hide(); + + return cutBegin; +} + +void Worksheet::insertSubentriesForHierarchy(HierarchyEntry* hierarchyEntry, WorksheetEntry* storedSubentriesBegin) +{ + WorksheetEntry* previousNext = hierarchyEntry->next(); + hierarchyEntry->setNext(storedSubentriesBegin); + storedSubentriesBegin->show(); + + WorksheetEntry* storedEnd = storedSubentriesBegin; + while(storedEnd->next()) + { + storedEnd = storedEnd->next(); + storedEnd->show(); + } + storedEnd->setNext(previousNext); + if (!previousNext) + setLastEntry(storedEnd); +} + +void Worksheet::handleSettingsChanges() +{ + for (WorksheetEntry *entry = firstEntry(); entry; entry = entry->next()) + entry->updateAfterSettingsChanges(); +} diff --git a/src/worksheet.h b/src/worksheet.h new file mode 100644 index 0000000..6d3f0da --- /dev/null +++ b/src/worksheet.h @@ -0,0 +1,381 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2009 Alexander Rieder + SPDX-FileCopyrightText: 2012 Martin Kuettler + SPDX-FileCopyrightText: 2017-2021 Alexander Semke +*/ + +#ifndef WORKSHEET_H +#define WORKSHEET_H + +#include +#include +#include + +#include "lib/renderer.h" +#include "mathrender.h" +#include "worksheetcursor.h" + +namespace Cantor { + class Backend; + class Session; + class Expression; +} + +class WorksheetEntry; +class WorksheetView; +class HierarchyEntry; +class PlaceHolderEntry; +class WorksheetTextItem; + +class QAction; +class QDrag; +class QGraphicsObject; +class QMenu; +class QPrinter; +class QSyntaxHighlighter; +class KActionCollection; +class KToggleAction; +class KFontAction; +class KFontSizeAction; +class KZip; + +class Worksheet : public QGraphicsScene +{ + Q_OBJECT + public: + enum Type { + CantorWorksheet, + JupyterNotebook + }; + + Worksheet(Cantor::Backend*, QWidget*, bool useDeafultWorksheetParameters = true); + ~Worksheet() override; + + Cantor::Session* session(); + + void loginToSession(); + + bool isRunning(); + bool isReadOnly(); + bool showExpressionIds(); + bool animationsEnabled(); + bool embeddedMathEnabled(); + + bool isPrinting(); + + WorksheetView* worksheetView(); + + void stopAnimations(); + void resumeAnimations(); + + void makeVisible(WorksheetEntry*); + void makeVisible(const WorksheetCursor&); + + void setModified(); + + void startDrag(WorksheetEntry*, QDrag*); + void startDragWithHierarchy(HierarchyEntry*, QDrag*, QSizeF responsibleZoneSize); + + void setActionCollection(KActionCollection*); + QMenu* createContextMenu(); + void populateMenu(QMenu*, QPointF); + Cantor::Renderer* renderer(); + MathRenderer* mathRenderer(); + bool isEmpty(); + bool isLoadingFromFile(); + + WorksheetEntry* currentEntry(); + WorksheetEntry* firstEntry(); + WorksheetEntry* lastEntry(); + WorksheetTextItem* currentTextItem(); + WorksheetTextItem* lastFocusedTextItem(); + + WorksheetEntry* cutSubentriesForHierarchy(HierarchyEntry*); + void insertSubentriesForHierarchy(HierarchyEntry*, WorksheetEntry*); + + WorksheetCursor worksheetCursor(); + void setWorksheetCursor(const WorksheetCursor&); + + // For WorksheetEntry::startDrag + void resetEntryCursor(); + + /** + * How it works: + * There are two information streams + * 1. WorksheetView -> Worksheet -> subelemenets (ex. entries) about view width + * View width used by some sub elements for better visual appearance (for example, entries with text often are fitted to width of view). + * 2. Subelements -> Worksheet + * Sub elements notify Worksheet about their needed widths and worksheet, used this information, set proper scene size. + */ + /// First information stream + void setViewSize(qreal w, qreal h, qreal s, bool forceUpdate = false); + + /// Second information stream + void setRequestedWidth(QGraphicsObject*, qreal width); + void removeRequestedWidth(QGraphicsObject*); + + bool isShortcut(const QKeySequence&); + + void setType(Worksheet::Type); + Worksheet::Type type() const; + + void notifyEntryFocus(WorksheetEntry*); + + // richtext + struct RichTextInfo { + bool bold; + bool italic; + bool underline; + bool strikeOut; + QString font; + qreal fontSize; + Qt::Alignment align; + }; + + public: + static int typeForTagName(const QString&); + + public Q_SLOTS: + WorksheetEntry* appendCommandEntry(); + void appendCommandEntry(const QString&); + WorksheetEntry* appendTextEntry(); + WorksheetEntry* appendMarkdownEntry(); + WorksheetEntry* appendImageEntry(); + WorksheetEntry* appendPageBreakEntry(); + WorksheetEntry* appendLatexEntry(); + WorksheetEntry* appendHorizontalRuleEntry(); + WorksheetEntry* appendHierarchyEntry(); + + WorksheetEntry* insertCommandEntry(WorksheetEntry* current = nullptr); + WorksheetEntry* insertTextEntry(WorksheetEntry* current = nullptr); + WorksheetEntry* insertMarkdownEntry(WorksheetEntry* current = nullptr); + WorksheetEntry* insertImageEntry(WorksheetEntry* current = nullptr); + WorksheetEntry* insertPageBreakEntry(WorksheetEntry* current = nullptr); + WorksheetEntry* insertLatexEntry(WorksheetEntry* current = nullptr); + WorksheetEntry* insertHorizontalRuleEntry(WorksheetEntry* current = nullptr); + WorksheetEntry* insertHierarchyEntry(WorksheetEntry* current = nullptr); + + WorksheetEntry* insertCommandEntryBefore(WorksheetEntry* current = nullptr); + WorksheetEntry* insertTextEntryBefore(WorksheetEntry* current = nullptr); + WorksheetEntry* insertMarkdownEntryBefore(WorksheetEntry* current = nullptr); + WorksheetEntry* insertImageEntryBefore(WorksheetEntry* current = nullptr); + WorksheetEntry* insertPageBreakEntryBefore(WorksheetEntry* current = nullptr); + WorksheetEntry* insertLatexEntryBefore(WorksheetEntry* current = nullptr); + WorksheetEntry* insertHorizontalRuleEntryBefore(WorksheetEntry* current = nullptr); + WorksheetEntry* insertHierarchyEntryBefore(WorksheetEntry* current = nullptr); + + void updateLayout(); + void updateHierarchyLayout(); + void updateHierarchyControlsLayout(WorksheetEntry* startEntry = nullptr); + void updateEntrySize(WorksheetEntry*); + + void print(QPrinter*); + void paste(); + void focusEntry(WorksheetEntry*); + + void evaluate(); + void evaluateCurrentEntry(); + void interrupt(); + void interruptCurrentEntryEvaluation(); + + bool completionEnabled(); + void showCompletion(); + + void highlightItem(WorksheetTextItem*); + void rehighlight(); + + void enableHighlighting(bool); + void enableCompletion(bool); + void enableExpressionNumbering(bool); + void enableAnimations(bool); + void enableEmbeddedMath(bool); + + QDomDocument toXML(KZip* archive = nullptr); + + void save(const QString&); + void save(QIODevice*); + QByteArray saveToByteArray(); + void savePlain(const QString&); + void saveLatex(const QString&); + bool load(QIODevice*); + void load(QByteArray*); + bool load(const QString&); + + void gotResult(Cantor::Expression* expr = nullptr); + + void removeCurrentEntry(); + + void setFirstEntry(WorksheetEntry*); + void setLastEntry(WorksheetEntry*); + void invalidateFirstEntry(); + void invalidateLastEntry(); + + void updateFocusedTextItem(WorksheetTextItem*); + + void updateDragScrollTimer(); + + void registerShortcut(QAction*); + void updateShortcut(); + + // richtext + void setRichTextInformation(const Worksheet::RichTextInfo&); + void setAcceptRichText(bool b); + + void setTextForegroundColor(); + void setTextBackgroundColor(); + void setTextBold(bool b); + void setTextItalic(bool b); + void setTextUnderline(bool b); + void setTextStrikeOut(bool b); + void setAlignLeft(); + void setAlignRight(); + void setAlignCenter(); + void setAlignJustify(); + void setFontFamily(const QString&); + void setFontSize(int size); + + void changeEntryType(WorksheetEntry* target, int newType); + + void collapseSelectionResults(); + void collapseAllResults(); + void uncollapseSelectionResults(); + void uncollapseAllResults(); + void removeSelectionResults(); + void removeAllResults(); + void addToExectuionSelection(); + void excludeFromExecutionSelection(); + + void requestScrollToHierarchyEntry(QString); + void handleSettingsChanges(); + + Q_SIGNALS: + void modified(); + void loaded(); + void showHelp(const QString&); + void hierarchyChanged(QStringList, QStringList, QList); + void hierarhyEntryNameChange(QString name, QString searchName, int depth); + void updatePrompt(); + void undoAvailable(bool); + void redoAvailable(bool); + void undo(); + void redo(); + void cutAvailable(bool); + void copyAvailable(bool); + void pasteAvailable(bool); + void cut(); + void copy(); + void requestDocumentation(const QString&); + + protected: + void contextMenuEvent(QGraphicsSceneContextMenuEvent*) override; + void mousePressEvent(QGraphicsSceneMouseEvent*) override; + + void dragEnterEvent(QGraphicsSceneDragDropEvent*) override; + void dragLeaveEvent(QGraphicsSceneDragDropEvent*) override; + void dragMoveEvent(QGraphicsSceneDragDropEvent*) override; + void dropEvent(QGraphicsSceneDragDropEvent*) override; + + void keyPressEvent(QKeyEvent*) override; + + QJsonDocument toJupyterJson(); + + bool isValidEntry(WorksheetEntry*); + + private Q_SLOTS: + //void checkEntriesForSanity(); + + WorksheetEntry* appendEntry(int type, bool focus = true); + WorksheetEntry* insertEntry(int type, WorksheetEntry* current = nullptr); + WorksheetEntry* insertEntryBefore(int type, WorksheetEntry* current = nullptr); + + //Actions for selection + void selectionRemove(); + void selectionEvaluate(); + void selectionMoveUp(); + void selectionMoveDown(); + + void animateEntryCursor(); + + private: + WorksheetEntry* entryAt(qreal x, qreal y); + WorksheetEntry* entryAt(QPointF); + WorksheetEntry* entryAt(int row); + void updateEntryCursor(QGraphicsSceneMouseEvent*); + void addEntryFromEntryCursor(); + void drawEntryCursor(); + int entryCount(); + bool loadCantorWorksheet(const KZip& archive); + bool loadJupyterNotebook(const QJsonDocument& doc); + void showInvalidNotebookSchemeError(QString additionalInfo = QString()); + void initSession(Cantor::Backend*); + void initActions(); + std::vector hierarchySubelements(HierarchyEntry*) const; + + static const double LeftMargin; + static const double RightMargin; + static const double TopMargin; + static const double EntryCursorLength; + static const double EntryCursorWidth; + + Cantor::Session* m_session{nullptr}; + QSyntaxHighlighter* m_highlighter{nullptr}; + Cantor::Renderer m_epsRenderer; + MathRenderer m_mathRenderer; + WorksheetEntry* m_firstEntry{nullptr}; + WorksheetEntry* m_lastEntry{nullptr}; + WorksheetEntry* m_dragEntry{nullptr}; + std::vector m_hierarchySubentriesDrag; + QSizeF m_hierarchyDragSize; + WorksheetEntry* m_choosenCursorEntry{nullptr}; + bool m_isCursorEntryAfterLastEntry{false}; + QTimer* m_cursorItemTimer; + QGraphicsLineItem* m_entryCursorItem{nullptr}; + PlaceHolderEntry* m_placeholderEntry{nullptr}; + WorksheetTextItem* m_lastFocusedTextItem{nullptr}; + QTimer* m_dragScrollTimer{nullptr}; + + qreal m_viewWidth{0}; + QMap m_itemWidths; + qreal m_maxWidth{0}; + qreal m_maxPromptWidth{0}; + + QMap m_shortcuts; + + KActionCollection* m_collection{nullptr}; + QList m_richTextActionList; + KToggleAction* m_boldAction{nullptr}; + KToggleAction* m_italicAction{nullptr}; + KToggleAction* m_underlineAction{nullptr}; + KToggleAction* m_strikeOutAction{nullptr}; + KFontAction* m_fontAction{nullptr}; + KFontSizeAction* m_fontSizeAction{nullptr}; + KToggleAction* m_alignLeftAction{nullptr}; + KToggleAction* m_alignCenterAction{nullptr}; + KToggleAction* m_alignRightAction{nullptr}; + KToggleAction* m_alignJustifyAction{nullptr}; + + bool m_useDefaultWorksheetParameters{true}; + + bool m_completionEnabled{false}; + bool m_embeddedMathEnabled{false}; + bool m_showExpressionIds{false}; + bool m_animationsEnabled{false}; + + bool m_isPrinting{false}; + bool m_isLoadingFromFile{false}; + bool m_isClosing{false}; + bool m_readOnly{false}; + + Type m_type = CantorWorksheet; + + QString m_backendName; + QJsonObject* m_jupyterMetadata{nullptr}; + + QVector m_selectedEntries; + QQueue m_circularFocusBuffer; + + size_t m_hierarchyMaxDepth{0}; +}; + +#endif // WORKSHEET_H diff --git a/src/worksheetcontrolitem.cpp b/src/worksheetcontrolitem.cpp new file mode 100644 index 0000000..e3be5a4 --- /dev/null +++ b/src/worksheetcontrolitem.cpp @@ -0,0 +1,109 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Sirgienko Nikita +*/ + +#include "worksheetcontrolitem.h" +#include "worksheet.h" +#include "worksheetentry.h" + +#include +#include +#include + +#include + +WorksheetControlItem::WorksheetControlItem(Worksheet* worksheet, WorksheetEntry* parent) : QGraphicsRectItem(parent), + m_worksheet(worksheet) +{ + setAcceptDrops(true); + setAcceptHoverEvents(true); + setFlags(flags() | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsFocusable); +} + +void WorksheetControlItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + Q_UNUSED(option); + Q_UNUSED(widget); + + if (m_worksheet->isPrinting()) + return; + + painter->setViewTransformEnabled(true); + + if (m_isHovered) + painter->setPen(QPen(QApplication::palette().color(QPalette::Text), 2)); + else + painter->setPen(QPen(QApplication::palette().color(QPalette::Text), 1)); + + qreal x = rect().x(); + qreal y = rect().y(); + qreal w = rect().width(); + qreal h = rect().height(); + + painter->drawLine(x, y, x+w, y); + painter->drawLine(x+w, y, x+w, y+h); + painter->drawLine(x, y+h, x+w, y+h); + + //For collabsable entries draw "collapsing triangle" (form will depends from collapse's state) + if (isCollapsable) + { + if (isCollapsed) + { + QBrush brush = painter->brush(); + brush.setStyle(Qt::SolidPattern); + brush.setColor(QApplication::palette().color(QPalette::Text)); + painter->setBrush(brush); + + QPolygon triangle; + triangle << QPoint(x, y) << QPoint(x+w, y) << QPoint(x+w, y+w); + + painter->drawPolygon(triangle); + } + else + painter->drawLine(x, y, x+w, y+w); + } + + if (isSelected) + { + //Use theme colour for selection, but with transparent + QColor color = QApplication::palette().color(QPalette::Highlight); + color.setAlpha(192); + + painter->fillRect(rect(), color); + } +} + +void WorksheetControlItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) +{ + emit doubleClick(); + QGraphicsItem::mouseDoubleClickEvent(event); +} + +void WorksheetControlItem::mouseMoveEvent(QGraphicsSceneMouseEvent* event) +{ + if (event->buttons() != Qt::LeftButton) + return; + + const QPointF buttonDownPos = event->buttonDownPos(Qt::LeftButton); + if (contains(buttonDownPos) && (event->pos() - buttonDownPos).manhattanLength() >= QApplication::startDragDistance()) + { + ungrabMouse(); + emit drag(mapToParent(buttonDownPos), mapToParent(event->pos())); + event->accept(); + } +} + +void WorksheetControlItem::hoverEnterEvent(QGraphicsSceneHoverEvent* event) +{ + Q_UNUSED(event); + m_isHovered = true; + update(); +} + +void WorksheetControlItem::hoverLeaveEvent(QGraphicsSceneHoverEvent* event) +{ + Q_UNUSED(event); + m_isHovered = false; + update(); +} diff --git a/src/worksheetcontrolitem.h b/src/worksheetcontrolitem.h new file mode 100644 index 0000000..d7fb618 --- /dev/null +++ b/src/worksheetcontrolitem.h @@ -0,0 +1,41 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Sirgienko Nikita +*/ +#ifndef WORKSHEETCONTROLITEM_H +#define WORKSHEETCONTROLITEM_H + +#include +#include + +class WorksheetEntry; +class Worksheet; + +class WorksheetControlItem: public QObject, public QGraphicsRectItem +{ + Q_OBJECT + public: + WorksheetControlItem(Worksheet* worksheet, WorksheetEntry* parent); + + Q_SIGNALS: + void doubleClick(); + void drag(const QPointF, const QPointF); + + private: + void hoverEnterEvent(QGraphicsSceneHoverEvent * event) override; + void hoverLeaveEvent(QGraphicsSceneHoverEvent * event) override; + void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override; + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent * event) override; + void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = nullptr) override; + + public: + bool isSelected{false}; + bool isCollapsable{false}; + bool isCollapsed{false}; + + private: + Worksheet* m_worksheet{nullptr}; + bool m_isHovered{false}; +}; + +#endif // WORKSHEETCONTROLITEM_H diff --git a/src/worksheetcursor.cpp b/src/worksheetcursor.cpp new file mode 100644 index 0000000..508e257 --- /dev/null +++ b/src/worksheetcursor.cpp @@ -0,0 +1,42 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#include "worksheetcursor.h" + +WorksheetCursor::WorksheetCursor() +{ + m_entry = nullptr; + m_textItem = nullptr; + m_textCursor = QTextCursor(); +} + +WorksheetCursor::WorksheetCursor(WorksheetEntry* entry, WorksheetTextItem* item, + const QTextCursor& cursor) +{ + m_entry = entry; + m_textItem = item; + m_textCursor = cursor; +} + +WorksheetEntry* WorksheetCursor::entry() const +{ + return m_entry; +} + +WorksheetTextItem* WorksheetCursor::textItem() const +{ + return m_textItem; +} + +QTextCursor WorksheetCursor::textCursor() const +{ + return m_textCursor; +} + +bool WorksheetCursor::isValid() const +{ + return m_entry && m_textItem; +} + diff --git a/src/worksheetcursor.h b/src/worksheetcursor.h new file mode 100644 index 0000000..48a0e77 --- /dev/null +++ b/src/worksheetcursor.h @@ -0,0 +1,33 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#ifndef WORKSHEETCURSOR_H +#define WORKSHEETCURSOR_H + +#include + +class WorksheetEntry; +class WorksheetTextItem; + +class WorksheetCursor +{ + public: + WorksheetCursor(); + WorksheetCursor(WorksheetEntry*, WorksheetTextItem*, const QTextCursor&); + ~WorksheetCursor() = default; + + WorksheetEntry* entry() const; + WorksheetTextItem* textItem() const; + QTextCursor textCursor() const; + + bool isValid() const; + + private: + WorksheetEntry* m_entry; + WorksheetTextItem* m_textItem; + QTextCursor m_textCursor; +}; + +#endif // WORKSHEETCURSOR_H diff --git a/src/worksheetentry.cpp b/src/worksheetentry.cpp new file mode 100644 index 0000000..aea2a74 --- /dev/null +++ b/src/worksheetentry.cpp @@ -0,0 +1,1053 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler + SPDX-FileCopyrightText: 2016-2021 Alexander Semke +*/ + +#include "worksheetentry.h" +#include "commandentry.h" +#include "textentry.h" +#include "markdownentry.h" +#include "latexentry.h" +#include "placeholderentry.h" +#include "imageentry.h" +#include "pagebreakentry.h" +#include "horizontalruleentry.h" +#include "hierarchyentry.h" +#include "settings.h" +#include "actionbar.h" +#include "worksheettoolbutton.h" +#include "worksheetview.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +struct AnimationData +{ + QAnimationGroup* animation; + QPropertyAnimation* sizeAnimation; + QPropertyAnimation* opacAnimation; + QPropertyAnimation* posAnimation; + const char* slot; + QGraphicsObject* item; +}; + +const qreal WorksheetEntry::VerticalMargin = 4; +const qreal WorksheetEntry::ControlElementWidth = 12; +const qreal WorksheetEntry::ControlElementBorder = 4; +const qreal WorksheetEntry::RightMargin = ControlElementWidth + 2*ControlElementBorder; +const qreal WorksheetEntry::HorizontalSpacing = 4; + +QColor WorksheetEntry::colors[] = {QColor(255,255,255), QColor(0,0,0), + QColor(192,0,0), QColor(255,0,0), QColor(255,192,192), //red + QColor(0,192,0), QColor(0,255,0), QColor(192,255,192), //green + QColor(0,0,192), QColor(0,0,255), QColor(192,192,255), //blue + QColor(192,192,0), QColor(255,255,0), QColor(255,255,192), //yellow + QColor(0,192,192), QColor(0,255,255), QColor(192,255,255), //cyan + QColor(192,0,192), QColor(255,0,255), QColor(255,192,255), //magenta + QColor(192,88,0), QColor(255,128,0), QColor(255,168,88), //orange + QColor(128,128,128), QColor(160,160,160), QColor(195,195,195) //grey + }; + +QString WorksheetEntry::colorNames[] = {i18n("White"), i18n("Black"), + i18n("Dark Red"), i18n("Red"), i18n("Light Red"), + i18n("Dark Green"), i18n("Green"), i18n("Light Green"), + i18n("Dark Blue"), i18n("Blue"), i18n("Light Blue"), + i18n("Dark Yellow"), i18n("Yellow"), i18n("Light Yellow"), + i18n("Dark Cyan"), i18n("Cyan"), i18n("Light Cyan"), + i18n("Dark Magenta"), i18n("Magenta"), i18n("Light Magenta"), + i18n("Dark Orange"), i18n("Orange"), i18n("Light Orange"), + i18n("Dark Grey"), i18n("Grey"), i18n("Light Grey") + }; + +WorksheetEntry::WorksheetEntry(Worksheet* worksheet) : QGraphicsObject(), m_controlElement(worksheet, this) +{ + worksheet->addItem(this); + setAcceptHoverEvents(true); + connect(&m_controlElement, &WorksheetControlItem::drag, this, &WorksheetEntry::startDrag); +} + +WorksheetEntry::~WorksheetEntry() +{ + emit aboutToBeDeleted(); + if (next()) + next()->setPrevious(previous()); + if (previous()) + previous()->setNext(next()); + if (m_animation) { + m_animation->animation->deleteLater(); + delete m_animation; + } + if (m_jupyterMetadata) + delete m_jupyterMetadata; + if (type() == HierarchyEntry::Type) + worksheet()->updateHierarchyLayout(); +} + +int WorksheetEntry::type() const +{ + return Type; +} + +WorksheetEntry* WorksheetEntry::create(int t, Worksheet* worksheet) +{ + switch(t) + { + case TextEntry::Type: + return new TextEntry(worksheet); + case MarkdownEntry::Type: + return new MarkdownEntry(worksheet); + case CommandEntry::Type: + return new CommandEntry(worksheet); + case ImageEntry::Type: + return new ImageEntry(worksheet); + case PageBreakEntry::Type: + return new PageBreakEntry(worksheet); + case LatexEntry::Type: + return new LatexEntry(worksheet); + case HorizontalRuleEntry::Type: + return new HorizontalRuleEntry(worksheet); + case HierarchyEntry::Type: + return new HierarchyEntry(worksheet); + default: + return nullptr; + } +} + +void WorksheetEntry::insertCommandEntry() +{ + worksheet()->insertCommandEntry(this); +} + +void WorksheetEntry::insertTextEntry() +{ + worksheet()->insertTextEntry(this); +} + +void WorksheetEntry::insertMarkdownEntry() +{ + worksheet()->insertMarkdownEntry(this); +} + +void WorksheetEntry::insertLatexEntry() +{ + worksheet()->insertLatexEntry(this); +} + +void WorksheetEntry::insertImageEntry() +{ + worksheet()->insertImageEntry(this); +} + +void WorksheetEntry::insertPageBreakEntry() +{ + worksheet()->insertPageBreakEntry(this); +} + +void WorksheetEntry::insertHorizontalRuleEntry() +{ + worksheet()->insertHorizontalRuleEntry(this); +} + +void WorksheetEntry::insertHierarchyEntry() +{ + worksheet()->insertHierarchyEntry(this); +} + +void WorksheetEntry::insertCommandEntryBefore() +{ + worksheet()->insertCommandEntryBefore(this); +} + +void WorksheetEntry::insertTextEntryBefore() +{ + worksheet()->insertTextEntryBefore(this); +} + +void WorksheetEntry::insertMarkdownEntryBefore() +{ + worksheet()->insertMarkdownEntryBefore(this); +} + +void WorksheetEntry::insertLatexEntryBefore() +{ + worksheet()->insertLatexEntryBefore(this); +} + +void WorksheetEntry::insertImageEntryBefore() +{ + worksheet()->insertImageEntryBefore(this); +} + +void WorksheetEntry::insertPageBreakEntryBefore() +{ + worksheet()->insertPageBreakEntryBefore(this); +} + +void WorksheetEntry::insertHorizontalRuleEntryBefore() +{ + worksheet()->insertHorizontalRuleEntryBefore(this); +} + +void WorksheetEntry::insertHierarchyEntryBefore() +{ + worksheet()->insertHierarchyEntryBefore(this); +} + +void WorksheetEntry::convertToCommandEntry() +{ + worksheet()->changeEntryType(this, CommandEntry::Type); +} + +void WorksheetEntry::convertToTextEntry() +{ + worksheet()->changeEntryType(this, TextEntry::Type); +} + +void WorksheetEntry::convertToMarkdownEntry() +{ + worksheet()->changeEntryType(this, MarkdownEntry::Type); +} + +void WorksheetEntry::convertToLatexEntry() +{ + worksheet()->changeEntryType(this, LatexEntry::Type); +} + +void WorksheetEntry::convertToImageEntry() +{ + worksheet()->changeEntryType(this, ImageEntry::Type); +} + +void WorksheetEntry::converToPageBreakEntry() +{ + worksheet()->changeEntryType(this, PageBreakEntry::Type); +} + +void WorksheetEntry::convertToHorizontalRuleEntry() +{ + worksheet()->changeEntryType(this, HorizontalRuleEntry::Type); +} + +void WorksheetEntry::convertToHierarchyEntry() +{ + worksheet()->changeEntryType(this, HierarchyEntry::Type); +} + +void WorksheetEntry::showCompletion() +{ +} + +WorksheetEntry* WorksheetEntry::next() const +{ + return m_next; +} + +WorksheetEntry* WorksheetEntry::previous() const +{ + return m_prev; +} + +void WorksheetEntry::setNext(WorksheetEntry* n) +{ + m_next = n; +} + +void WorksheetEntry::setPrevious(WorksheetEntry* p) +{ + m_prev = p; +} + +void WorksheetEntry::startDrag(QPointF grabPos) +{ + // We need reset entry cursor manually, because otherwise the entry cursor will be visible on dragable item + worksheet()->resetEntryCursor(); + + QDrag* drag = new QDrag(worksheetView()); + qDebug() << size(); + const qreal scale = worksheet()->renderer()->scale(); + QPixmap pixmap((size()*scale).toSize()); + pixmap.fill(QColor(255, 255, 255, 0)); + QPainter painter(&pixmap); + const QRectF sceneRect = mapRectToScene(boundingRect()); + worksheet()->render(&painter, pixmap.rect(), sceneRect); + painter.end(); + QBitmap mask = pixmap.createMaskFromColor(QColor(255, 255, 255), + Qt::MaskInColor); + pixmap.setMask(mask); + + drag->setPixmap(pixmap); + if (grabPos.isNull()) { + const QPointF scenePos = worksheetView()->sceneCursorPos(); + drag->setHotSpot((mapFromScene(scenePos) * scale).toPoint()); + } else { + drag->setHotSpot((grabPos * scale).toPoint()); + } + drag->setMimeData(new QMimeData()); + + worksheet()->startDrag(this, drag); +} + + +QRectF WorksheetEntry::boundingRect() const +{ + return QRectF(QPointF(0,0), m_size); +} + +void WorksheetEntry::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +{ + Q_UNUSED(painter); + Q_UNUSED(option); + Q_UNUSED(widget); +} + +bool WorksheetEntry::focusEntry(int pos, qreal xCoord) +{ + Q_UNUSED(pos); + Q_UNUSED(xCoord); + + if (flags() & QGraphicsItem::ItemIsFocusable) { + setFocus(); + return true; + } + return false; +} + +void WorksheetEntry::moveToPreviousEntry(int pos, qreal x) +{ + WorksheetEntry* entry = previous(); + while (entry && !(entry->wantFocus() && entry->focusEntry(pos, x))) + entry = entry->previous(); +} + +void WorksheetEntry::moveToNextEntry(int pos, qreal x) +{ + WorksheetEntry* entry = next(); + while (entry && !(entry->wantFocus() && entry->focusEntry(pos, x))) + entry = entry->next(); +} + +Worksheet* WorksheetEntry::worksheet() +{ + return qobject_cast(scene()); +} + +WorksheetView* WorksheetEntry::worksheetView() +{ + return worksheet()->worksheetView(); +} + +WorksheetCursor WorksheetEntry::search(const QString& pattern, unsigned flags, + QTextDocument::FindFlags qt_flags, + const WorksheetCursor& pos) +{ + Q_UNUSED(pattern); + Q_UNUSED(flags); + Q_UNUSED(qt_flags); + Q_UNUSED(pos); + + return WorksheetCursor(); +} + +void WorksheetEntry::keyPressEvent(QKeyEvent* event) +{ + // This event is used in Entries that set the ItemIsFocusable flag + switch(event->key()) { + case Qt::Key_Left: + case Qt::Key_Up: + if (event->modifiers() == Qt::NoModifier) + moveToPreviousEntry(WorksheetTextItem::BottomRight, 0); + else if (event->modifiers() == Qt::CTRL) + moveToPrevious(); + break; + case Qt::Key_Right: + case Qt::Key_Down: + if (event->modifiers() == Qt::NoModifier) + moveToNextEntry(WorksheetTextItem::TopLeft, 0); + else if (event->modifiers() == Qt::CTRL) + moveToNext(); + break; + /*case Qt::Key_Enter: + case Qt::Key_Return: + if (event->modifiers() == Qt::ShiftModifier) + evaluate(); + else if (event->modifiers() == Qt::ControlModifier) + worksheet()->insertCommandEntry(); + break;*/ + default: + event->ignore(); + } +} + +void WorksheetEntry::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +{ + QMenu *menu = worksheet()->createContextMenu(); + populateMenu(menu, event->pos()); + + menu->popup(event->screenPos()); +} + +void WorksheetEntry::populateMenu(QMenu* menu, QPointF pos) +{ + QAction* firstAction = nullptr; + if (!menu->actions().isEmpty()) //action() can be empty, s.a. WorksheetTextItem::populateMenu() where this function is called + firstAction = menu->actions().first(); + + QAction* action; + if (!worksheet()->isRunning() && wantToEvaluate()) + { + action = new QAction(QIcon::fromTheme(QLatin1String("media-playback-start")), i18n("Evaluate")); + connect(action, SIGNAL(triggered()), this, SLOT(evaluate())); + menu->insertAction(firstAction, action); + menu->insertSeparator(firstAction); + } + + if (m_prev) { + action = new QAction(QIcon::fromTheme(QLatin1String("go-up")), i18n("Move Up")); + // connect(action, &QAction::triggered, this, &WorksheetEntry::moveToPrevious); //TODO: doesn't work + connect(action, SIGNAL(triggered()), this, SLOT(moveToPrevious())); + action->setShortcut(Qt::CTRL + Qt::Key_Up); + menu->insertAction(firstAction, action); + } + + if (m_next) { + action = new QAction(QIcon::fromTheme(QLatin1String("go-down")), i18n("Move Down")); + // connect(action, &QAction::triggered, this, &WorksheetEntry::moveToNext); //TODO: doesn't work + connect(action, SIGNAL(triggered()), this, SLOT(moveToNext())); + action->setShortcut(Qt::CTRL + Qt::Key_Down); + menu->insertAction(firstAction, action); + menu->insertSeparator(firstAction); + } + + action = new QAction(QIcon::fromTheme(QLatin1String("edit-delete")), i18n("Remove")); + connect(action, &QAction::triggered, this, &WorksheetEntry::startRemoving); + action->setShortcut(Qt::ShiftModifier + Qt::Key_Delete); + menu->insertAction(firstAction, action); + menu->insertSeparator(firstAction); + + worksheet()->populateMenu(menu, mapToScene(pos)); +} + +bool WorksheetEntry::evaluateCurrentItem() +{ + // A default implementation that works well for most entries, + // because they have only one item. + return evaluate(); +} + +void WorksheetEntry::evaluateNext(EvaluationOption opt) +{ + // For cases, when code want *just* evaluate + // the entry, for example, on load stage. + // This internal evaluation shouldn't marked as + // modifying change. + if (opt == InternalEvaluation) + return; + + WorksheetEntry* entry = next(); + + while (entry && !entry->wantFocus()) + entry = entry->next(); + + if (entry) { + if (opt == EvaluateNext || Settings::self()->autoEval()) { + entry->evaluate(EvaluateNext); + } else if (opt == FocusNext) { + worksheet()->setModified(); + entry->focusEntry(WorksheetTextItem::BottomRight); + } else { + worksheet()->setModified(); + } + } else if (opt != DoNothing) { + if (!worksheet()->isLoadingFromFile() && (!isEmpty() || type() != CommandEntry::Type)) + worksheet()->appendCommandEntry(); + else + focusEntry(); + worksheet()->setModified(); + } +} + +qreal WorksheetEntry::setGeometry(qreal x, qreal x1, qreal y, qreal w) +{ + setPos(x, y); + m_entry_zone_x = x1; + layOutForWidth(x1, w); + + recalculateControlGeometry(); + + return size().height(); +} + +void WorksheetEntry::recalculateSize() +{ + qreal height = size().height(); + layOutForWidth(m_entry_zone_x, size().width(), true); + if (height != size().height()) + { + recalculateControlGeometry(); + worksheet()->updateEntrySize(this); + } +} + +QPropertyAnimation* WorksheetEntry::sizeChangeAnimation(QSizeF s) +{ + QSizeF oldSize; + QSizeF newSize; + if (s.isValid()) { + oldSize = size(); + newSize = s; + } else { + oldSize = size(); + layOutForWidth(m_entry_zone_x, size().width(), true); + newSize = size(); + } + + QPropertyAnimation* sizeAn = new QPropertyAnimation(this, "size", this); + sizeAn->setDuration(200); + sizeAn->setStartValue(oldSize); + sizeAn->setEndValue(newSize); + sizeAn->setEasingCurve(QEasingCurve::InOutQuad); + connect(sizeAn, &QPropertyAnimation::valueChanged, this, &WorksheetEntry::sizeAnimated); + return sizeAn; +} + +void WorksheetEntry::sizeAnimated() +{ + recalculateControlGeometry(); + worksheet()->updateEntrySize(this); +} + +void WorksheetEntry::animateSizeChange() +{ + if (!worksheet()->animationsEnabled()) { + recalculateSize(); + return; + } + if (m_animation) { + layOutForWidth(m_entry_zone_x, size().width(), true); + return; + } + QPropertyAnimation* sizeAn = sizeChangeAnimation(); + m_animation = new AnimationData; + m_animation->item = nullptr; + m_animation->slot = nullptr; + m_animation->opacAnimation = nullptr; + m_animation->posAnimation = nullptr; + m_animation->sizeAnimation = sizeAn; + m_animation->sizeAnimation->setEasingCurve(QEasingCurve::OutCubic); + m_animation->animation = new QParallelAnimationGroup(this); + m_animation->animation->addAnimation(m_animation->sizeAnimation); + connect(m_animation->animation, &QAnimationGroup::finished, this, &WorksheetEntry::endAnimation); + m_animation->animation->start(); +} + +void WorksheetEntry::fadeInItem(QGraphicsObject* item, const char* slot) +{ + if (!worksheet()->animationsEnabled()) { + recalculateSize(); + if (slot) + invokeSlotOnObject(slot, item); + return; + } + if (m_animation) { + // this calculates the new size and calls updateSizeAnimation + layOutForWidth(m_entry_zone_x, size().width(), true); + if (slot) + invokeSlotOnObject(slot, item); + return; + } + QPropertyAnimation* sizeAn = sizeChangeAnimation(); + m_animation = new AnimationData; + m_animation->sizeAnimation = sizeAn; + m_animation->sizeAnimation->setEasingCurve(QEasingCurve::OutCubic); + m_animation->opacAnimation = new QPropertyAnimation(item, "opacity", this); + m_animation->opacAnimation->setDuration(200); + m_animation->opacAnimation->setStartValue(0); + m_animation->opacAnimation->setEndValue(1); + m_animation->opacAnimation->setEasingCurve(QEasingCurve::OutCubic); + m_animation->posAnimation = nullptr; + + m_animation->animation = new QParallelAnimationGroup(this); + m_animation->item = item; + m_animation->slot = slot; + + m_animation->animation->addAnimation(m_animation->sizeAnimation); + m_animation->animation->addAnimation(m_animation->opacAnimation); + + connect(m_animation->animation, &QAnimationGroup::finished, this, &WorksheetEntry::endAnimation); + + m_animation->animation->start(); +} + +void WorksheetEntry::fadeOutItem(QGraphicsObject* item, const char* slot) +{ + // Note: The default value for slot is SLOT(deleteLater()), so item + // will be deleted after the animation. + if (!worksheet()->animationsEnabled()) { + recalculateSize(); + if (slot) + invokeSlotOnObject(slot, item); + return; + } + if (m_animation) { + // this calculates the new size and calls updateSizeAnimation + layOutForWidth(m_entry_zone_x, size().width(), true); + if (slot) + invokeSlotOnObject(slot, item); + return; + } + QPropertyAnimation* sizeAn = sizeChangeAnimation(); + m_animation = new AnimationData; + m_animation->sizeAnimation = sizeAn; + m_animation->opacAnimation = new QPropertyAnimation(item, "opacity", this); + m_animation->opacAnimation->setDuration(200); + m_animation->opacAnimation->setStartValue(1); + m_animation->opacAnimation->setEndValue(0); + m_animation->opacAnimation->setEasingCurve(QEasingCurve::OutCubic); + m_animation->posAnimation = nullptr; + + m_animation->animation = new QParallelAnimationGroup(this); + m_animation->item = item; + m_animation->slot = slot; + + m_animation->animation->addAnimation(m_animation->sizeAnimation); + m_animation->animation->addAnimation(m_animation->opacAnimation); + + connect(m_animation->animation, &QAnimationGroup::finished, this, &WorksheetEntry::endAnimation); + + m_animation->animation->start(); +} + +void WorksheetEntry::endAnimation() +{ + if (!m_animation) + return; + QAnimationGroup* anim = m_animation->animation; + if (anim->state() == QAbstractAnimation::Running) { + anim->stop(); + if (m_animation->sizeAnimation) + setSize(m_animation->sizeAnimation->endValue().toSizeF()); + if (m_animation->opacAnimation) { + qreal opac = m_animation->opacAnimation->endValue().value(); + m_animation->item->setOpacity(opac); + } + if (m_animation->posAnimation) { + const QPointF& pos = m_animation->posAnimation->endValue().toPointF(); + m_animation->item->setPos(pos); + } + + // If the animation was connected to a slot, call it + if (m_animation->slot) + invokeSlotOnObject(m_animation->slot, m_animation->item); + } + m_animation->animation->deleteLater(); + delete m_animation; + m_animation = nullptr; +} + +bool WorksheetEntry::animationActive() +{ + return m_animation; +} + +void WorksheetEntry::updateSizeAnimation(QSizeF size) +{ + // Update the current animation, so that the new ending will be size + + if (!m_animation) + return; + + if (m_aboutToBeRemoved) + // do not modify the remove-animation + return; + if (m_animation->sizeAnimation) { + QPropertyAnimation* sizeAn = m_animation->sizeAnimation; + qreal progress = static_cast(sizeAn->currentTime()) / + sizeAn->totalDuration(); + QEasingCurve curve = sizeAn->easingCurve(); + qreal value = curve.valueForProgress(progress); + sizeAn->setEndValue(size); + QSizeF newStart = 1/(1-value)*(sizeAn->currentValue().toSizeF() - value*size); + sizeAn->setStartValue(newStart); + } else { + m_animation->sizeAnimation = sizeChangeAnimation(size); + int d = m_animation->animation->duration() - + m_animation->animation->currentTime(); + m_animation->sizeAnimation->setDuration(d); + m_animation->animation->addAnimation(m_animation->sizeAnimation); + } +} + +void WorksheetEntry::invokeSlotOnObject(const char* slot, QObject* obj) +{ + const QMetaObject* metaObj = obj->metaObject(); + const QByteArray normSlot = QMetaObject::normalizedSignature(slot); + const int slotIndex = metaObj->indexOfSlot(normSlot.constData()); + if (slotIndex == -1) + qDebug() << "Warning: Tried to invoke an invalid slot:" << slot; + const QMetaMethod method = metaObj->method(slotIndex); + method.invoke(obj, Qt::DirectConnection); +} + +bool WorksheetEntry::aboutToBeRemoved() +{ + return m_aboutToBeRemoved; +} + +void WorksheetEntry::startRemoving() +{ + if (type() == PlaceHolderEntry::Type) //don't do anything if a PlaceholderEntry is being removed in Worksheet::drageMoveEvent() + return; + + int rc = KMessageBox::warningYesNo(nullptr, i18n("Do you really want to remove this entry?"), i18n("Remove Entry")); + if (rc == KMessageBox::No) + return; + + if (!worksheet()->animationsEnabled()) { + m_aboutToBeRemoved = true; + remove(); + return; + } + if (m_aboutToBeRemoved) + return; + + if (focusItem()) { + if (!next()) { + if (previous() && previous()->isEmpty() && + !previous()->aboutToBeRemoved()) { + previous()->focusEntry(); + } else { + WorksheetEntry* next = worksheet()->appendCommandEntry(); + setNext(next); + next->focusEntry(); + } + } else { + next()->focusEntry(); + } + } + + if (m_animation) { + endAnimation(); + } + + m_aboutToBeRemoved = true; + m_animation = new AnimationData; + m_animation->sizeAnimation = new QPropertyAnimation(this, "size", this); + m_animation->sizeAnimation->setDuration(300); + m_animation->sizeAnimation->setEndValue(QSizeF(size().width(), 0)); + m_animation->sizeAnimation->setEasingCurve(QEasingCurve::InOutQuad); + + connect(m_animation->sizeAnimation, &QPropertyAnimation::valueChanged, this, &WorksheetEntry::sizeAnimated); + connect(m_animation->sizeAnimation, &QPropertyAnimation::finished, this, &WorksheetEntry::remove); + + m_animation->opacAnimation = new QPropertyAnimation(this, "opacity", this); + m_animation->opacAnimation->setDuration(300); + m_animation->opacAnimation->setEndValue(0); + m_animation->opacAnimation->setEasingCurve(QEasingCurve::OutCubic); + m_animation->posAnimation = nullptr; + + m_animation->animation = new QParallelAnimationGroup(this); + m_animation->animation->addAnimation(m_animation->sizeAnimation); + m_animation->animation->addAnimation(m_animation->opacAnimation); + + m_animation->animation->start(); +} + +bool WorksheetEntry::stopRemoving() +{ + if (!m_aboutToBeRemoved) + return true; + + if (m_animation->animation->state() == QAbstractAnimation::Stopped) + // we are too late to stop the deletion + return false; + + m_aboutToBeRemoved = false; + m_animation->animation->stop(); + m_animation->animation->deleteLater(); + delete m_animation; + m_animation = nullptr; + return true; +} + +void WorksheetEntry::remove() +{ + if (!m_aboutToBeRemoved) + return; + + if (previous() && previous()->next() == this) + previous()->setNext(next()); + else + worksheet()->setFirstEntry(next()); + if (next() && next()->previous() == this) + next()->setPrevious(previous()); + else + worksheet()->setLastEntry(previous()); + + if (type() == HierarchyEntry::Type) + worksheet()->updateHierarchyLayout(); + + // make the entry invisible to QGraphicsScene's itemAt() function + forceRemove(); + + worksheet()->setModified(); +} + +void WorksheetEntry::setSize(QSizeF size) +{ + prepareGeometryChange(); + if (m_actionBar && size != m_size) + m_actionBar->updatePosition(); + m_size = size; +} + +QSizeF WorksheetEntry::size() +{ + return m_size; +} + +bool WorksheetEntry::hasActionBar() +{ + return m_actionBar; +} + +void WorksheetEntry::showActionBar() +{ + if (m_actionBar && !m_actionBarAnimation) + return; + + if (m_actionBarAnimation) { + if (m_actionBarAnimation->endValue().toReal() == 1) + return; + m_actionBarAnimation->stop(); + delete m_actionBarAnimation; + m_actionBarAnimation = nullptr; + } + + if (!m_actionBar) { + m_actionBar = new ActionBar(this); + + m_actionBar->addButton(QIcon::fromTheme(QLatin1String("edit-delete")), i18n("Remove Entry"), + this, SLOT(startRemoving())); + + WorksheetToolButton* dragButton; + dragButton = m_actionBar->addButton(QIcon::fromTheme(QLatin1String("transform-move")), + i18n("Drag Entry")); + connect(dragButton, SIGNAL(pressed()), this, SLOT(startDrag())); + + if (wantToEvaluate()) { + QString toolTip = i18n("Evaluate Entry"); + m_actionBar->addButton(QIcon::fromTheme(QLatin1String("media-playback-start")), toolTip, + this, SLOT(evaluate())); + } + + m_actionBar->addSpace(); + + addActionsToBar(m_actionBar); + } + + if (worksheet()->animationsEnabled()) { + m_actionBarAnimation = new QPropertyAnimation(m_actionBar, "opacity", + this); + m_actionBarAnimation->setStartValue(0); + m_actionBarAnimation->setKeyValueAt(0.666, 0); + m_actionBarAnimation->setEndValue(1); + m_actionBarAnimation->setDuration(600); + connect(m_actionBarAnimation, &QPropertyAnimation::finished, this, &WorksheetEntry::deleteActionBarAnimation); + + m_actionBarAnimation->start(); + } +} + +void WorksheetEntry::hideActionBar() +{ + if (!m_actionBar) + return; + + if (m_actionBarAnimation) { + if (m_actionBarAnimation->endValue().toReal() == 0) + return; + m_actionBarAnimation->stop(); + delete m_actionBarAnimation; + m_actionBarAnimation = nullptr; + } + + if (worksheet()->animationsEnabled()) { + m_actionBarAnimation = new QPropertyAnimation(m_actionBar, "opacity", + this); + m_actionBarAnimation->setEndValue(0); + m_actionBarAnimation->setEasingCurve(QEasingCurve::Linear); + m_actionBarAnimation->setDuration(200); + connect(m_actionBarAnimation, &QPropertyAnimation::finished, this, &WorksheetEntry::deleteActionBar); + + m_actionBarAnimation->start(); + } else { + deleteActionBar(); + } +} + +void WorksheetEntry::deleteActionBarAnimation() +{ + if (m_actionBarAnimation) { + delete m_actionBarAnimation; + m_actionBarAnimation = nullptr; + } +} + +void WorksheetEntry::deleteActionBar() +{ + if (m_actionBar) { + delete m_actionBar; + m_actionBar = nullptr; + } + + deleteActionBarAnimation(); +} + +void WorksheetEntry::addActionsToBar(ActionBar*) +{ +} + +void WorksheetEntry::hoverEnterEvent(QGraphicsSceneHoverEvent* event) +{ + Q_UNUSED(event); + showActionBar(); +} + +void WorksheetEntry::hoverLeaveEvent(QGraphicsSceneHoverEvent* event) +{ + Q_UNUSED(event); + hideActionBar(); +} + +WorksheetTextItem* WorksheetEntry::highlightItem() +{ + return nullptr; +} + +bool WorksheetEntry::wantFocus() +{ + return true; +} + +QJsonObject WorksheetEntry::jupyterMetadata() const +{ + return m_jupyterMetadata ? *m_jupyterMetadata : QJsonObject(); +} + +void WorksheetEntry::setJupyterMetadata(QJsonObject metadata) +{ + if (m_jupyterMetadata == nullptr) + m_jupyterMetadata = new QJsonObject(); + *m_jupyterMetadata = metadata; +} + +void WorksheetEntry::forceRemove() +{ + hide(); + worksheet()->updateLayout(); + deleteLater(); +} + +bool WorksheetEntry::isCellSelected() +{ + return m_controlElement.isSelected; +} + +void WorksheetEntry::setCellSelected(bool val) +{ + m_controlElement.isSelected = val; +} + +void WorksheetEntry::moveToNext(bool updateLayout) +{ + WorksheetEntry* next = this->next(); + if (next) + { + if (next->next()) + { + next->next()->setPrevious(this); + this->setNext(next->next()); + } + else + { + worksheet()->setLastEntry(this); + this->setNext(nullptr); + } + + next->setPrevious(this->previous()); + next->setNext(this); + + this->setPrevious(next); + if (next->previous()) + next->previous()->setNext(next); + else + worksheet()->setFirstEntry(next); + + if (updateLayout) + worksheet()->updateLayout(); + + worksheet()->setModified(); + } +} + +void WorksheetEntry::moveToPrevious(bool updateLayout) +{ + WorksheetEntry* previous = this->previous(); + if (previous) + { + if (previous->previous()) + { + previous->previous()->setNext(this); + this->setPrevious(previous->previous()); + } + else + { + worksheet()->setFirstEntry(this); + this->setPrevious(nullptr); + } + + previous->setNext(this->next()); + previous->setPrevious(this); + + this->setNext(previous); + if (previous->next()) + previous->next()->setPrevious(previous); + else + worksheet()->setLastEntry(previous); + + if (updateLayout) + worksheet()->updateLayout(); + + worksheet()->setModified(); + } +} + +void WorksheetEntry::recalculateControlGeometry() +{ + m_controlElement.setRect( + size().width() - ControlElementWidth - ControlElementBorder, 0, // x,y + ControlElementWidth, size().height() - VerticalMargin // w,h + ); + m_controlElement.update(); +} + +void WorksheetEntry::updateAfterSettingsChanges() +{ + // do nothing; +} diff --git a/src/worksheetentry.h b/src/worksheetentry.h new file mode 100644 index 0000000..c6b76e0 --- /dev/null +++ b/src/worksheetentry.h @@ -0,0 +1,221 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler + SPDX-FileCopyrightText: 2018-2021 Alexander Semke +*/ + +#ifndef WORKSHEETENTRY_H +#define WORKSHEETENTRY_H + +#include + +#include "worksheet.h" +#include "worksheettextitem.h" +#include "worksheetcursor.h" +#include "worksheetcontrolitem.h" + +class TextEntry; +class MarkdownEntry; +class CommandEntry; +class ImageEntry; +class PageBreakEntry; +class LaTeXEntry; + +class WorksheetTextItem; +class ActionBar; + +class QGraphicsSceneContextMenuEvent; +class QJsonObject; +class QPainter; +class QPropertyAnimation; +class QWidget; + +struct AnimationData; + +class WorksheetEntry : public QGraphicsObject +{ + Q_OBJECT + public: + explicit WorksheetEntry(Worksheet*); + ~WorksheetEntry() override; + + enum {Type = UserType}; + + int type() const override; + + virtual bool isEmpty()=0; + + static WorksheetEntry* create(int t, Worksheet*); + + WorksheetEntry* next() const; + WorksheetEntry* previous() const; + + void forceRemove(); + + void setNext(WorksheetEntry*); + void setPrevious(WorksheetEntry*); + + QRectF boundingRect() const override; + void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget* widget = nullptr) override; + + virtual bool acceptRichText() = 0; + + virtual void setContent(const QString&)=0; + virtual void setContent(const QDomElement&, const KZip&)=0; + virtual void setContentFromJupyter(const QJsonObject&)=0; + + virtual QDomElement toXml(QDomDocument&, KZip*)=0; + virtual QJsonValue toJupyterJson()=0; + virtual QString toPlain(const QString& commandSep, const QString& commentStartingSeq, const QString& commentEndingSeq)=0; + + virtual void interruptEvaluation() {}; + + virtual void showCompletion(); + + virtual bool focusEntry(int pos = WorksheetTextItem::TopLeft, qreal xCoord = 0); + + virtual qreal setGeometry(qreal x, qreal entry_zone_x, qreal y, qreal w); + virtual void layOutForWidth(qreal entry_zone_x, qreal w, bool force = false) = 0; + QPropertyAnimation* sizeChangeAnimation(QSizeF s = QSizeF()); + + virtual void populateMenu(QMenu*, QPointF); + + bool aboutToBeRemoved(); + QSizeF size(); + + enum EvaluationOption { + InternalEvaluation, DoNothing, FocusNext, EvaluateNext + }; + + virtual WorksheetTextItem* highlightItem(); + + bool hasActionBar(); + + enum SearchFlag {SearchCommand=1, SearchResult=2, SearchError=4, + SearchText=8, SearchLaTeX=16, SearchAll=31}; + + virtual WorksheetCursor search(const QString& pattern, unsigned flags, + QTextDocument::FindFlags qt_flags, + const WorksheetCursor& pos = WorksheetCursor()); + + bool isCellSelected(); + void setCellSelected(bool); + + // Colors for colors menus; + static constexpr int colorsCount = 26; + static QColor colors[colorsCount]; + static QString colorNames[colorsCount]; + + static const qreal VerticalMargin; + static const qreal ControlElementWidth; + static const qreal ControlElementBorder; + static const qreal RightMargin; + static const qreal HorizontalSpacing; + + public Q_SLOTS: + virtual bool evaluate(WorksheetEntry::EvaluationOption evalOp = FocusNext) = 0; + virtual bool evaluateCurrentItem(); + virtual void updateEntry() = 0; + virtual void updateAfterSettingsChanges(); + + void insertCommandEntry(); + void insertTextEntry(); + void insertMarkdownEntry(); + void insertLatexEntry(); + void insertImageEntry(); + void insertPageBreakEntry(); + void insertHorizontalRuleEntry(); + void insertHierarchyEntry(); + + void insertCommandEntryBefore(); + void insertTextEntryBefore(); + void insertMarkdownEntryBefore(); + void insertLatexEntryBefore(); + void insertImageEntryBefore(); + void insertPageBreakEntryBefore(); + void insertHorizontalRuleEntryBefore(); + void insertHierarchyEntryBefore(); + + void convertToCommandEntry(); + void convertToTextEntry(); + void convertToMarkdownEntry(); + void convertToLatexEntry(); + void convertToImageEntry(); + void converToPageBreakEntry(); + void convertToHorizontalRuleEntry(); + void convertToHierarchyEntry(); + + virtual void sizeAnimated(); + virtual void startRemoving(); + bool stopRemoving(); + void moveToPreviousEntry(int pos = WorksheetTextItem::BottomRight, qreal x = 0); + void moveToNextEntry(int pos = WorksheetTextItem::TopLeft, qreal x = 0); + void recalculateSize(); + + // similar to recalculateSize, but the size change is animated + void animateSizeChange(); + // animate the size change and the opacity of item + void fadeInItem(QGraphicsObject* item = nullptr, const char* slot = nullptr); + void fadeOutItem(QGraphicsObject* item = nullptr, const char* slot = "deleteLater()"); + void endAnimation(); + + void showActionBar(); + void hideActionBar(); + + virtual void startDrag(QPointF grabPos = QPointF()); + + void moveToNext(bool updateLayout = true); + void moveToPrevious(bool updateLayout = true); + + Q_SIGNALS: + void aboutToBeDeleted(); + + protected: + Worksheet* worksheet(); + WorksheetView* worksheetView(); + void contextMenuEvent(QGraphicsSceneContextMenuEvent*) override; + void keyPressEvent(QKeyEvent*) override; + void evaluateNext(EvaluationOption opt); + + void hoverEnterEvent(QGraphicsSceneHoverEvent*) override; + void hoverLeaveEvent(QGraphicsSceneHoverEvent*) override; + + void setSize(QSizeF); + + bool animationActive(); + void updateSizeAnimation(QSizeF); + + void invokeSlotOnObject(const char* slot, QObject* obj); + + virtual void addActionsToBar(ActionBar*); + + virtual bool wantToEvaluate() = 0; + virtual bool wantFocus(); + + QJsonObject jupyterMetadata() const; + void setJupyterMetadata(QJsonObject); + + virtual void recalculateControlGeometry(); + + WorksheetControlItem m_controlElement; + + protected Q_SLOTS: + virtual void remove(); + void deleteActionBar(); + void deleteActionBarAnimation(); + + private: + QSizeF m_size; + qreal m_entry_zone_x{0.}; + WorksheetEntry* m_prev{nullptr}; + WorksheetEntry* m_next{nullptr}; + Q_PROPERTY(QSizeF size READ size WRITE setSize) + AnimationData* m_animation{nullptr}; + ActionBar* m_actionBar{nullptr}; + QPropertyAnimation* m_actionBarAnimation{nullptr}; + bool m_aboutToBeRemoved{false}; + QJsonObject* m_jupyterMetadata{nullptr}; + bool m_isCellSelected{false}; +}; + +#endif // WORKSHEETENTRY_H diff --git a/src/worksheetimageitem.cpp b/src/worksheetimageitem.cpp new file mode 100644 index 0000000..1074d94 --- /dev/null +++ b/src/worksheetimageitem.cpp @@ -0,0 +1,150 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#include "worksheetimageitem.h" +#include "worksheet.h" + +#include +#include +#include +#include +#include +#include +#include + +WorksheetImageItem::WorksheetImageItem(QGraphicsObject* parent) + : QGraphicsObject(parent) +{ + setFlag(QGraphicsItem::ItemIsFocusable, true); + connect(this, SIGNAL(menuCreated(QMenu*,QPointF)), parent, + SLOT(populateMenu(QMenu*,QPointF)), Qt::DirectConnection); +} + +WorksheetImageItem::~WorksheetImageItem() +{ + if (worksheet()) + worksheet()->removeRequestedWidth(this); +} + +int WorksheetImageItem::type() const +{ + return Type; +} + +bool WorksheetImageItem::imageIsValid() +{ + return !m_pixmap.isNull(); +} + +qreal WorksheetImageItem::setGeometry(qreal x, qreal y, qreal w, bool centered) +{ + if (width() <= w && centered) { + setPos(x + w/2 - width()/2, y); + } else { + setPos(x, y); + } + worksheet()->setRequestedWidth(this, scenePos().x() + width()); + + return height(); +} + +qreal WorksheetImageItem::height() const +{ + return m_size.height(); +} + +qreal WorksheetImageItem::width() const +{ + return m_size.width(); +} + +QSizeF WorksheetImageItem::size() +{ + return m_size; +} + +void WorksheetImageItem::setSize(QSizeF size) +{ + m_size = size; + + qreal width = scenePos().x() + size.width(); + worksheet()->setRequestedWidth(this, width); +} + +QSize WorksheetImageItem::imageSize() +{ + return m_pixmap.size(); +} + +QRectF WorksheetImageItem::boundingRect() const +{ + return QRectF(QPointF(0, 0), m_size); +} + +#include + +void WorksheetImageItem::paint(QPainter *painter, + const QStyleOptionGraphicsItem *option, + QWidget *widget) +{ + Q_UNUSED(option); + Q_UNUSED(widget); + painter->drawPixmap(QRectF(QPointF(0,0), m_size), m_pixmap, + m_pixmap.rect()); + if (hasFocus()) + { + painter->setPen(Qt::DashLine); + painter->drawRect(0, 0, width(), height()); + } +} + +void WorksheetImageItem::setEps(const QUrl& url) +{ + const QImage img = worksheet()->renderer()->renderToImage(url, Cantor::Renderer::EPS, &m_size); + m_pixmap = QPixmap::fromImage(img.convertToFormat(QImage::Format_ARGB32)); +} + +void WorksheetImageItem::setImage(QImage img) +{ + m_pixmap = QPixmap::fromImage(img); + setSize(m_pixmap.size()); +} + +void WorksheetImageItem::setImage(QImage img, QSize displaySize) +{ + m_pixmap = QPixmap::fromImage(img); + setSize(displaySize); +} + +void WorksheetImageItem::setPixmap(QPixmap pixmap) +{ + m_pixmap = pixmap; +} + +QPixmap WorksheetImageItem::pixmap() const +{ + return m_pixmap; +} + +void WorksheetImageItem::populateMenu(QMenu* menu, QPointF pos) +{ + emit menuCreated(menu, mapToParent(pos)); +} + +void WorksheetImageItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +{ + QMenu *menu = worksheet()->createContextMenu(); + populateMenu(menu, event->pos()); + + menu->popup(event->screenPos()); +} + +Worksheet* WorksheetImageItem::worksheet() +{ + return qobject_cast(scene()); +} + + + diff --git a/src/worksheetimageitem.h b/src/worksheetimageitem.h new file mode 100644 index 0000000..5594953 --- /dev/null +++ b/src/worksheetimageitem.h @@ -0,0 +1,64 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#ifndef WORKSHEETIMAGEITEM_H +#define WORKSHEETIMAGEITEM_H + +#include +#include + +class Worksheet; +class QImage; +class QGraphicsSceneContextMenuEvent; +class QMenu; + +class WorksheetImageItem : public QGraphicsObject +{ + Q_OBJECT + public: + explicit WorksheetImageItem(QGraphicsObject* parent); + ~WorksheetImageItem() override; + + enum {Type = UserType + 101}; + + int type() const override; + + bool imageIsValid(); + + virtual qreal setGeometry(qreal x, qreal y, qreal w, bool centered=false); + + qreal height() const; + qreal width() const; + QSizeF size(); + void setSize(QSizeF size); + QSize imageSize(); + + QRectF boundingRect() const override; + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, + QWidget *widget = nullptr) override; + + void setEps(const QUrl &url); + void setImage(QImage img); + void setImage(QImage img, QSize displaySize); + void setPixmap(QPixmap pixmap); + QPixmap pixmap() const; + + virtual void populateMenu(QMenu* menu, QPointF pos); + Worksheet* worksheet(); + + Q_SIGNALS: + void sizeChanged(); + void menuCreated(QMenu*, QPointF); + + protected: + void contextMenuEvent(QGraphicsSceneContextMenuEvent*) override; + + private: + QPixmap m_pixmap; + QSizeF m_size; +}; + +#endif //WORKSHEETIMAGEITEM_H diff --git a/src/worksheettextitem.cpp b/src/worksheettextitem.cpp new file mode 100644 index 0000000..87dfb4a --- /dev/null +++ b/src/worksheettextitem.cpp @@ -0,0 +1,926 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#include "worksheettextitem.h" +#include "worksheet.h" +#include "worksheetentry.h" +#include "lib/renderer.h" +#include "worksheetcursor.h" +#include "worksheetview.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +WorksheetTextItem::WorksheetTextItem(WorksheetEntry* parent, Qt::TextInteractionFlags ti) + : QGraphicsTextItem(parent) +{ + setTextInteractionFlags(ti); + if (ti & Qt::TextEditable) { + setCursor(Qt::IBeamCursor); + connect(this, &WorksheetTextItem::sizeChanged, parent, &WorksheetEntry::recalculateSize); + } + + m_size = document()->size();; + setAcceptDrops(true); + setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); + + connect(this, &QGraphicsTextItem::linkHovered, [=](const QString& link) { + if (!link.isEmpty()) + QApplication::setOverrideCursor(QCursor(Qt::PointingHandCursor)); + else + QApplication::restoreOverrideCursor(); + }); + + connect(document(), &QTextDocument::contentsChanged, this, &WorksheetTextItem::testSize); + connect(document(), &QTextDocument::undoAvailable, this, &WorksheetTextItem::undoAvailable); + connect(document(), &QTextDocument::redoAvailable, this, &WorksheetTextItem::redoAvailable); + connect(this, &WorksheetTextItem::menuCreated, parent, &WorksheetEntry::populateMenu, Qt::DirectConnection); + connect(this, &WorksheetTextItem::deleteEntry, parent, &WorksheetEntry::startRemoving); + connect(this, &WorksheetTextItem::cursorPositionChanged, this, &WorksheetTextItem::updateRichTextActions); +} + +WorksheetTextItem::~WorksheetTextItem() +{ + if (worksheet() && this == worksheet()->lastFocusedTextItem()) + worksheet()->updateFocusedTextItem(nullptr); + + if (worksheet()) + worksheet()->removeRequestedWidth(this); +} + +int WorksheetTextItem::type() const +{ + return Type; +} + +/* +void WorksheetTextItem::setHeight() +{ + m_height = height(); +} +*/ + +void WorksheetTextItem::testSize() +{ + qreal h = document()->size().height(); + if (h != m_size.height()) { + emit sizeChanged(); + m_size.setHeight(h); + } + + qreal w = document()->size().width(); + if (w != m_size.width()) { + m_size.setWidth(w); + emit sizeChanged(); + + qreal newWidth = scenePos().x() + m_size.width() - 10; + worksheet()->setRequestedWidth(this, newWidth); + } +} + +qreal WorksheetTextItem::setGeometry(qreal x, qreal y, qreal w, bool centered) +{ + if (m_size.width() < w && centered) + setPos(x + w/2 - m_size.width()/2, y); + else + setPos(x,y); + + // Strange: if I use the same logic as for ImageItem (with scenePos.x() + width) + // Cantor always have scrollbar for a few pixels + // So I always subtract the few pixels + setTextWidth(w); + m_size = document()->size(); + + qreal newWidth = scenePos().x() + m_size.width() - 10; + worksheet()->setRequestedWidth(this, newWidth); + + return m_size.height(); +} + +void WorksheetTextItem::populateMenu(QMenu* menu, QPointF pos) +{ + auto* cut = KStandardAction::cut(this, &WorksheetTextItem::cut, menu); + auto* copy = KStandardAction::copy(this, &WorksheetTextItem::copy, menu); + auto* paste = KStandardAction::paste(this, &WorksheetTextItem::paste, menu); + if (!textCursor().hasSelection()) { + cut->setEnabled(false); + copy->setEnabled(false); + } + if (QApplication::clipboard()->text().isEmpty()) { + paste->setEnabled(false); + } + bool actionAdded = false; + if (isEditable()) { + menu->addAction(cut); + actionAdded = true; + } + if (!m_itemDragable && (flags() & Qt::TextSelectableByMouse)) { + menu->addAction(copy); + actionAdded = true; + } + if (isEditable()) { + menu->addAction(paste); + actionAdded = true; + } + if (actionAdded) + menu->addSeparator(); + + emit menuCreated(menu, mapToParent(pos)); +} + +QKeyEvent* WorksheetTextItem::eventForStandardAction(KStandardAction::StandardAction actionID) +{ + // there must be a better way to get the shortcut... + auto* action = KStandardAction::create(actionID, this, &WorksheetTextItem::copy, this); + QKeySequence keySeq = action->shortcut(); + // we do not support key sequences with multiple keys here + int code = keySeq[0]; + const int ModMask = Qt::ShiftModifier | Qt::ControlModifier | + Qt::AltModifier | Qt::MetaModifier; + const int KeyMask = ~ModMask; + QKeyEvent* event = new QKeyEvent(QEvent::KeyPress, code & KeyMask, + QFlags(code & ModMask)); + delete action; + return event; +} + +void WorksheetTextItem::cut() +{ + if (richTextEnabled()) { + QKeyEvent* event = eventForStandardAction(KStandardAction::Cut); + QApplication::sendEvent(worksheet(), event); + delete event; + } else { + copy(); + textCursor().removeSelectedText(); + } +} + +void WorksheetTextItem::paste() +{ + if (richTextEnabled()) { + QKeyEvent* event = eventForStandardAction(KStandardAction::Paste); + QApplication::sendEvent(worksheet(), event); + delete event; + } else { + textCursor().insertText(QApplication::clipboard()->text()); + } +} + +void WorksheetTextItem::copy() +{ + if (richTextEnabled()) { + QKeyEvent* event = eventForStandardAction(KStandardAction::Copy); + QApplication::sendEvent(worksheet(), event); + delete event; + } else { + auto cursor = textCursor(); + if (!cursor.hasSelection()) + cursor.select(QTextCursor::Document); + QString text = resolveImages(cursor); + text.replace(QChar::ParagraphSeparator, QLatin1Char('\n')); + text.replace(QChar::LineSeparator, QLatin1Char('\n')); + QApplication::clipboard()->setText(text); + } +} + +void WorksheetTextItem::undo() +{ + document()->undo(); +} + +void WorksheetTextItem::redo() +{ + document()->redo(); +} + +void WorksheetTextItem::clipboardChanged() +{ + if (isEditable()) + emit pasteAvailable(!QApplication::clipboard()->text().isEmpty()); +} + +void WorksheetTextItem::selectionChanged() +{ + emit copyAvailable(textCursor().hasSelection()); + if (isEditable()) + emit cutAvailable(textCursor().hasSelection()); +} + +QString WorksheetTextItem::resolveImages(const QTextCursor& cursor) +{ + int start = cursor.selectionStart(); + int end = cursor.selectionEnd(); + + const QString repl = QString(QChar::ObjectReplacementCharacter); + QString result; + QTextCursor cursor1 = textCursor(); + cursor1.setPosition(start); + QTextCursor cursor2 = document()->find(repl, cursor1); + + for (; !cursor2.isNull() && cursor2.selectionEnd() <= end; + cursor2 = document()->find(repl, cursor1)) { + cursor1.setPosition(cursor2.selectionStart(), QTextCursor::KeepAnchor); + result += cursor1.selectedText(); + QVariant var = cursor2.charFormat().property(Cantor::Renderer::Delimiter); + QString delim; + if (var.isValid()) + delim = var.value(); + else + delim = QLatin1String(""); + result += delim + cursor2.charFormat().property(Cantor::Renderer::Code).value() + delim; + cursor1.setPosition(cursor2.selectionEnd()); + } + + cursor1.setPosition(end, QTextCursor::KeepAnchor); + result += cursor1.selectedText(); + return result; +} + +void WorksheetTextItem::setCursorPosition(QPointF pos) +{ + QTextCursor cursor = cursorForPosition(pos); + setTextCursor(cursor); + emit cursorPositionChanged(cursor); + //setLocalCursorPosition(mapFromParent(pos)); +} + +QPointF WorksheetTextItem::cursorPosition() const +{ + return mapToParent(localCursorPosition()); +} + +void WorksheetTextItem::setLocalCursorPosition(QPointF pos) +{ + int p = document()->documentLayout()->hitTest(pos, Qt::FuzzyHit); + QTextCursor cursor = textCursor(); + cursor.setPosition(p); + setTextCursor(cursor); + emit cursorPositionChanged(cursor); +} + +QPointF WorksheetTextItem::localCursorPosition() const +{ + QTextCursor cursor = textCursor(); + QTextBlock block = cursor.block(); + int p = cursor.position() - block.position(); + QTextLine line = block.layout()->lineForTextPosition(p); + if (!line.isValid()) // can this happen? + return block.layout()->position(); + return QPointF(line.cursorToX(p), line.y() + line.height()); +} + +QRectF WorksheetTextItem::sceneCursorRect(QTextCursor cursor) const +{ + return mapRectToScene(cursorRect(cursor)); +} + +QRectF WorksheetTextItem::cursorRect(QTextCursor cursor) const +{ + if (cursor.isNull()) + cursor = textCursor(); + QTextCursor startCursor = cursor; + startCursor.setPosition(cursor.selectionStart()); + QTextBlock block = startCursor.block(); + if (!block.layout()) + return mapRectToScene(boundingRect()); + int p = startCursor.position() - block.position(); + QTextLine line = block.layout()->lineForTextPosition(p); + QRectF r1(line.cursorToX(p), line.y(), 1, line.height()+line.leading()); + + if (!cursor.hasSelection()) + return r1; + + QTextCursor endCursor = cursor; + endCursor.setPosition(cursor.selectionEnd()); + block = endCursor.block(); + p = endCursor.position() - block.position(); + line = block.layout()->lineForTextPosition(p); + QRectF r2(line.cursorToX(p), line.y(), 1, line.height()+line.leading()); + + if (r1.y() == r2.y()) + return r1.united(r2); + else + return QRectF(x(), qMin(r1.y(), r2.y()), boundingRect().width(), + qMax(r1.y() + r1.height(), r2.y() + r2.height())); +} + +QTextCursor WorksheetTextItem::cursorForPosition(QPointF pos) const +{ + QPointF lpos = mapFromParent(pos); + int p = document()->documentLayout()->hitTest(lpos, Qt::FuzzyHit); + QTextCursor cursor = textCursor(); + cursor.setPosition(p); + return cursor; +} + +bool WorksheetTextItem::isEditable() +{ + return textInteractionFlags() & Qt::TextEditable; +} + +void WorksheetTextItem::setBackgroundColor(const QColor& color) +{ + m_backgroundColor = color; +} + +const QColor& WorksheetTextItem::backgroundColor() const +{ + return m_backgroundColor; +} + +bool WorksheetTextItem::richTextEnabled() +{ + return m_richTextEnabled; +} + +void WorksheetTextItem::enableCompletion(bool b) +{ + m_completionEnabled = b; +} + +void WorksheetTextItem::activateCompletion(bool b) +{ + m_completionActive = b; +} + +void WorksheetTextItem::setItemDragable(bool b) +{ + m_itemDragable = b; +} + +void WorksheetTextItem::enableRichText(bool b) +{ + m_richTextEnabled = b; +} + +void WorksheetTextItem::setFocusAt(int pos, qreal xCoord) +{ + QTextCursor cursor = textCursor(); + if (pos == TopLeft) { + cursor.movePosition(QTextCursor::Start); + } else if (pos == BottomRight) { + cursor.movePosition(QTextCursor::End); + } else { + QTextLine line; + if (pos == TopCoord) { + line = document()->firstBlock().layout()->lineAt(0); + } else { + QTextLayout* layout = document()->lastBlock().layout(); + qDebug() << document()->blockCount() << "blocks"; + qDebug() << document()->lastBlock().lineCount() << "lines in last block"; + line = layout->lineAt(document()->lastBlock().lineCount()-1); + } + qreal x = mapFromScene(xCoord, 0).x(); + int p = line.xToCursor(x); + cursor.setPosition(p); + // Hack: The code for selecting the last line above does not work. + // This is a workaround + if (pos == BottomCoord) + while (cursor.movePosition(QTextCursor::Down)) + ; + } + setTextCursor(cursor); + emit cursorPositionChanged(cursor); + setFocus(); +} + +Cantor::Session* WorksheetTextItem::session() +{ + return worksheet()->session(); +} + +void WorksheetTextItem::keyPressEvent(QKeyEvent *event) +{ + switch (event->key()) { + case Qt::Key_Left: + if (event->modifiers() == Qt::NoModifier && textCursor().atStart()) { + emit moveToPrevious(BottomRight, 0); + qDebug()<<"Reached leftmost valid position"; + return; + } + break; + case Qt::Key_Right: + if (event->modifiers() == Qt::NoModifier && textCursor().atEnd()) { + emit moveToNext(TopLeft, 0); + qDebug()<<"Reached rightmost valid position"; + return; + } + break; + case Qt::Key_Up: + if (event->modifiers() == Qt::NoModifier && !textCursor().movePosition(QTextCursor::Up)) { + qreal x = mapToScene(localCursorPosition()).x(); + emit moveToPrevious(BottomCoord, x); + qDebug()<<"Reached topmost valid position" << localCursorPosition().x(); + return; + } + break; + case Qt::Key_Down: + if (event->modifiers() == Qt::NoModifier && !textCursor().movePosition(QTextCursor::Down)) { + qreal x = mapToScene(localCursorPosition()).x(); + emit moveToNext(TopCoord, x); + qDebug()<<"Reached bottommost valid position" << localCursorPosition().x(); + return; + } + break; + case Qt::Key_Enter: + case Qt::Key_Return: + if (event->modifiers() == Qt::NoModifier && m_completionActive) { + emit applyCompletion(); + return; + } + break; + case Qt::Key_Tab: + qDebug() << "Tab"; + break; + case Qt::Key_F2: + if(textCursor().hasSelection()) + { + QString keyword = textCursor().selectedText(); + emit worksheet()->requestDocumentation(keyword); + } + break; + default: + break; + } + + int p = textCursor().position(); + bool b = textCursor().hasSelection(); + QGraphicsTextItem::keyPressEvent(event); + + if (p != textCursor().position()) + emit cursorPositionChanged(textCursor()); + + if (b != textCursor().hasSelection()) + selectionChanged(); +} + +bool WorksheetTextItem::sceneEvent(QEvent *event) +{ + if (event->type() == QEvent::KeyPress) { + // QGraphicsTextItem's TabChangesFocus feature prevents calls to + // keyPressEvent for Tab, even when it's turned off. So we got to catch + // that here. + QKeyEvent* kev = static_cast(event); + if (kev->key() == Qt::Key_Tab && kev->modifiers() == Qt::NoModifier) { + emit tabPressed(); + return true; + } else if ((kev->key() == Qt::Key_Tab && + kev->modifiers() == Qt::ShiftModifier) || + kev->key() == Qt::Key_Backtab) { + emit backtabPressed(); + return true; + } + } else if (event->type() == QEvent::ShortcutOverride) { + QKeyEvent* kev = static_cast(event); + QKeySequence seq(kev->key() + kev->modifiers()); + if (worksheet()->isShortcut(seq)) { + qDebug() << "ShortcutOverride" << kev->key() << kev->modifiers(); + kev->ignore(); + return false; + } + } + return QGraphicsTextItem::sceneEvent(event); +} + +void WorksheetTextItem::focusInEvent(QFocusEvent *event) +{ + QGraphicsTextItem::focusInEvent(event); + //parentItem()->ensureVisible(QRectF(), 0, 0); + WorksheetEntry* entry = qobject_cast(parentObject()); + WorksheetCursor c(entry, this, textCursor()); + // No need make the text item visible + // if we just hide/show window, it it not necessary + if (event->reason() != Qt::ActiveWindowFocusReason) + worksheet()->makeVisible(c); + worksheet()->updateFocusedTextItem(this); + connect(QApplication::clipboard(), &QClipboard::dataChanged, this, + &WorksheetTextItem::clipboardChanged); + emit receivedFocus(this); + emit cursorPositionChanged(textCursor()); +} + +void WorksheetTextItem::focusOutEvent(QFocusEvent *event) +{ + QGraphicsTextItem::focusOutEvent(event); + emit cursorPositionChanged(QTextCursor()); +} + +void WorksheetTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + int p = textCursor().position(); + bool b = textCursor().hasSelection(); + + QGraphicsTextItem::mousePressEvent(event); + + if (isEditable() && event->button() == Qt::MiddleButton && + QApplication::clipboard()->supportsSelection() && + !event->isAccepted()) + event->accept(); + + if (m_itemDragable && event->button() == Qt::LeftButton) + event->accept(); + + if (p != textCursor().position()) + emit cursorPositionChanged(textCursor()); + if (b != textCursor().hasSelection()) + selectionChanged(); +} + +void WorksheetTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent* event) +{ + const QPointF buttonDownPos = event->buttonDownPos(Qt::LeftButton); + if (m_itemDragable && event->buttons() == Qt::LeftButton && + contains(buttonDownPos) && + (event->pos() - buttonDownPos).manhattanLength() >= QApplication::startDragDistance()) { + ungrabMouse(); + emit drag(mapToParent(buttonDownPos), mapToParent(event->pos())); + event->accept(); + } else { + bool b = textCursor().hasSelection(); + QGraphicsTextItem::mouseMoveEvent(event); + if (b != textCursor().hasSelection()) + selectionChanged(); + } +} + +void WorksheetTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + int p = textCursor().position(); + + // custom middle-click paste that does not copy rich text + if (isEditable() && event->button() == Qt::MiddleButton && + QApplication::clipboard()->supportsSelection() && + !richTextEnabled()) { + setLocalCursorPosition(mapFromScene(event->scenePos())); + const QString& text = QApplication::clipboard()->text(QClipboard::Selection); + textCursor().insertText(text); + } else { + QGraphicsTextItem::mouseReleaseEvent(event); + } + + if (p != textCursor().position()) + emit cursorPositionChanged(textCursor()); +} + +void WorksheetTextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) +{ + QTextCursor cursor = textCursor(); + const QChar repl = QChar::ObjectReplacementCharacter; + + if (m_eventBehaviour == DoubleClickEventBehaviour::ImageReplacement) + { + if (!cursor.hasSelection()) { + // We look at the current cursor and the next cursor for a + // ObjectReplacementCharacter + for (int i = 2; i; --i) { + if (document()->characterAt(cursor.position()-1) == repl) { + setTextCursor(cursor); + emit doubleClick(); + return; + } + cursor.movePosition(QTextCursor::NextCharacter); + } + } else if (cursor.selectedText().contains(repl)) { + emit doubleClick(); + return; + } + } + else if (m_eventBehaviour == DoubleClickEventBehaviour::Simple) + { + emit doubleClick(); + return; + } + + QGraphicsTextItem::mouseDoubleClickEvent(event); +} + +void WorksheetTextItem::dragEnterEvent(QGraphicsSceneDragDropEvent* event) +{ + if (isEditable() && event->mimeData()->hasFormat(QLatin1String("text/plain"))) { + if (event->proposedAction() & (Qt::CopyAction | Qt::MoveAction)) { + event->acceptProposedAction(); + } else if (event->possibleActions() & Qt::CopyAction) { + event->setDropAction(Qt::CopyAction); + event->accept(); + } else if (event->possibleActions() & Qt::MoveAction) { + event->setDropAction(Qt::MoveAction); + event->accept(); + } else { + event->ignore(); + } + } else { + event->ignore(); + } +} + +void WorksheetTextItem::dragMoveEvent(QGraphicsSceneDragDropEvent* event) +{ + if (isEditable() && event->mimeData()->hasFormat(QLatin1String("text/plain"))) + setLocalCursorPosition(mapFromScene(event->scenePos())); +} + +void WorksheetTextItem::dropEvent(QGraphicsSceneDragDropEvent* event) +{ + if (isEditable()) { + if (richTextEnabled() && event->mimeData()->hasFormat(QLatin1String("text/html"))) + textCursor().insertHtml(event->mimeData()->html()); + else + textCursor().insertText(event->mimeData()->text()); + event->accept(); + } +} + +void WorksheetTextItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +{ + QMenu *menu = worksheet()->createContextMenu(); + populateMenu(menu, event->pos()); + + menu->popup(event->screenPos()); +} + +void WorksheetTextItem::wheelEvent(QGraphicsSceneWheelEvent* event) +{ + //restore the cursor when scrolling with the mouse wheel since we + //might be using the pointer cursor set after an URL was hovered + QApplication::restoreOverrideCursor(); + QGraphicsItem::wheelEvent(event); +} + +void WorksheetTextItem::insertTab() +{ + QTextCursor cursor = textCursor(); + cursor.clearSelection(); + cursor.movePosition(QTextCursor::StartOfLine, QTextCursor::KeepAnchor); + QString sel = cursor.selectedText(); + bool spacesOnly = true; + qDebug() << sel; + for (QString::iterator it = sel.begin(); it != sel.end(); ++it) { + if (! it->isSpace()) { + spacesOnly = false; + break; + } + } + + cursor.setPosition(cursor.selectionEnd()); + if (spacesOnly) { + while (document()->characterAt(cursor.position()) == QLatin1Char(' ')) + cursor.movePosition(QTextCursor::NextCharacter); + } + + QTextLayout *layout = textCursor().block().layout(); + if (!layout) { + cursor.insertText(QLatin1String(" ")); + } else { + cursor.movePosition(QTextCursor::StartOfLine, QTextCursor::KeepAnchor); + int i = cursor.selectionEnd() - cursor.selectionStart(); + i = ((i+4) & (~3)) - i; + cursor.setPosition(cursor.selectionEnd()); + + QString insertBlankSpace = QLatin1String(" "); + cursor.insertText(insertBlankSpace.repeated(i)); + } + setTextCursor(cursor); + emit cursorPositionChanged(textCursor()); +} + +void WorksheetTextItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* o, QWidget* w) { + if (m_backgroundColor.isValid()) { + painter->setPen(QPen(Qt::NoPen)); + painter->setBrush(m_backgroundColor); + painter->drawRect(boundingRect()); + } + QGraphicsTextItem::paint(painter, o, w); +} + +double WorksheetTextItem::width() const +{ + return m_size.width(); +} + +double WorksheetTextItem::height() const +{ + return m_size.height(); +} + +Worksheet* WorksheetTextItem::worksheet() +{ + return qobject_cast(scene()); +} + +WorksheetView* WorksheetTextItem::worksheetView() +{ + return worksheet()->worksheetView(); +} + +void WorksheetTextItem::clearSelection() +{ + QTextCursor cursor = textCursor(); + cursor.clearSelection(); + setTextCursor(cursor); + selectionChanged(); +} + +bool WorksheetTextItem::isUndoAvailable() +{ + return document()->isUndoAvailable(); +} + +bool WorksheetTextItem::isRedoAvailable() +{ + return document()->isRedoAvailable(); +} + +bool WorksheetTextItem::isCutAvailable() +{ + return isEditable() && textCursor().hasSelection(); +} + +bool WorksheetTextItem::isCopyAvailable() +{ + return !m_itemDragable && textCursor().hasSelection(); +} + +bool WorksheetTextItem::isPasteAvailable() +{ + return isEditable() && !QApplication::clipboard()->text().isEmpty(); +} + +QTextCursor WorksheetTextItem::search(QString pattern, + QTextDocument::FindFlags qt_flags, + const WorksheetCursor& pos) +{ + if (pos.isValid() && pos.textItem() != this) + return QTextCursor(); + + QTextDocument* doc = document(); + QTextCursor cursor; + if (pos.isValid()) { + cursor = doc->find(pattern, pos.textCursor(), qt_flags); + } else { + cursor = textCursor(); + if (qt_flags & QTextDocument::FindBackward) + cursor.movePosition(QTextCursor::End); + else + cursor.movePosition(QTextCursor::Start); + cursor = doc->find(pattern, cursor, qt_flags); + } + + return cursor; +} + +// RichText + +void WorksheetTextItem::updateRichTextActions(QTextCursor cursor) +{ + if (cursor.isNull()) + return; + Worksheet::RichTextInfo info; + QTextCharFormat fmt = cursor.charFormat(); + info.bold = (fmt.fontWeight() == QFont::Bold); + info.italic = fmt.fontItalic(); + info.underline = fmt.fontUnderline(); + info.strikeOut = fmt.fontStrikeOut(); + info.font = fmt.fontFamily(); + info.fontSize = fmt.font().pointSize(); + + QTextBlockFormat bfmt = cursor.blockFormat(); + info.align = bfmt.alignment(); + + worksheet()->setRichTextInformation(info); +} + +void WorksheetTextItem::mergeFormatOnWordOrSelection(const QTextCharFormat &format) +{ + QTextCursor cursor = textCursor(); + QTextCursor wordStart(cursor); + QTextCursor wordEnd(cursor); + + wordStart.movePosition(QTextCursor::StartOfWord); + wordEnd.movePosition(QTextCursor::EndOfWord); + + //cursor.beginEditBlock(); + if (!cursor.hasSelection() && cursor.position() != wordStart.position() && cursor.position() != wordEnd.position()) + cursor.select(QTextCursor::WordUnderCursor); + cursor.mergeCharFormat(format); + //q->mergeCurrentCharFormat(format); + //cursor.endEditBlock(); + setTextCursor(cursor); +} + +void WorksheetTextItem::setTextForegroundColor() +{ + QTextCharFormat fmt = textCursor().charFormat(); + QColor color = fmt.foreground().color(); + + color = QColorDialog::getColor(color, worksheetView()); + if (!color.isValid()) + color = KColorScheme(QPalette::Active, KColorScheme::View).foreground().color(); + + QTextCharFormat newFmt; + newFmt.setForeground(color); + mergeFormatOnWordOrSelection(newFmt); +} + +void WorksheetTextItem::setTextBackgroundColor() +{ + QTextCharFormat fmt = textCursor().charFormat(); + QColor color = fmt.background().color(); + + color = QColorDialog::getColor(color, worksheetView()); + if (!color.isValid()) + color = KColorScheme(QPalette::Active, KColorScheme::View).background().color(); + + QTextCharFormat newFmt; + newFmt.setBackground(color); + mergeFormatOnWordOrSelection(newFmt); +} + +void WorksheetTextItem::setTextBold(bool b) +{ + QTextCharFormat fmt; + fmt.setFontWeight(b ? QFont::Bold : QFont::Normal); + mergeFormatOnWordOrSelection(fmt); +} + +void WorksheetTextItem::setTextItalic(bool b) +{ + QTextCharFormat fmt; + fmt.setFontItalic(b); + mergeFormatOnWordOrSelection(fmt); +} + +void WorksheetTextItem::setTextUnderline(bool b) +{ + QTextCharFormat fmt; + fmt.setFontUnderline(b); + mergeFormatOnWordOrSelection(fmt); +} + +void WorksheetTextItem::setTextStrikeOut(bool b) +{ + QTextCharFormat fmt; + fmt.setFontStrikeOut(b); + mergeFormatOnWordOrSelection(fmt); +} + +void WorksheetTextItem::setAlignment(Qt::Alignment a) +{ + QTextBlockFormat fmt; + fmt.setAlignment(a); + QTextCursor cursor = textCursor(); + cursor.mergeBlockFormat(fmt); + setTextCursor(cursor); +} + +void WorksheetTextItem::setFontFamily(const QString& font) +{ + if (!richTextEnabled()) + return; + QTextCharFormat fmt; + fmt.setFontFamily(font); + mergeFormatOnWordOrSelection(fmt); +} + +void WorksheetTextItem::setFontSize(int size) +{ + if (!richTextEnabled()) + return; + QTextCharFormat fmt; + fmt.setFontPointSize(size); + mergeFormatOnWordOrSelection(fmt); +} + +void WorksheetTextItem::allowEditing() +{ + setTextInteractionFlags(Qt::TextEditorInteraction); +} + +void WorksheetTextItem::denyEditing() +{ + setTextInteractionFlags(Qt::TextBrowserInteraction | Qt::TextSelectableByKeyboard); +} + +WorksheetTextItem::DoubleClickEventBehaviour WorksheetTextItem::doubleClickBehaviour() +{ + return m_eventBehaviour; +} + +void WorksheetTextItem::setDoubleClickBehaviour(WorksheetTextItem::DoubleClickEventBehaviour behaviour) +{ + m_eventBehaviour = behaviour; +} diff --git a/src/worksheettextitem.h b/src/worksheettextitem.h new file mode 100644 index 0000000..8d13049 --- /dev/null +++ b/src/worksheettextitem.h @@ -0,0 +1,170 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + + +#ifndef WORKSHEET_TEXT_ITEM_H +#define WORKSHEET_TEXT_ITEM_H + +#include +#include +#include + +#include +#include + +class Worksheet; +class WorksheetEntry; +class WorksheetView; +class WorksheetCursor; + +namespace Cantor { + class Session; +} + +class QTextCharFormat; + +class WorksheetTextItem : public QGraphicsTextItem +{ + Q_OBJECT + public: + enum DoubleClickEventBehaviour {Simple, ImageReplacement}; + + explicit WorksheetTextItem(WorksheetEntry* parent, + Qt::TextInteractionFlags ti = Qt::NoTextInteraction); + ~WorksheetTextItem() override; + + void setCursorPosition(QPointF); + QPointF cursorPosition() const; + QTextCursor cursorForPosition(QPointF) const; + QRectF sceneCursorRect(QTextCursor cursor = QTextCursor()) const; + QRectF cursorRect(QTextCursor cursor = QTextCursor()) const; + + enum {TopLeft, BottomRight, TopCoord, BottomCoord}; + enum {Type = UserType + 100}; + + int type() const override; + + void setFocusAt(int pos = TopLeft, qreal xCoord = 0); + + void enableCompletion(bool b); + void activateCompletion(bool b); + void setItemDragable(bool b); + void enableRichText(bool b); + + virtual void populateMenu(QMenu*, QPointF); + QString resolveImages(const QTextCursor&); + + bool isEditable(); + void allowEditing(); + void denyEditing(); + void setBackgroundColor(const QColor&); + const QColor& backgroundColor() const; + bool richTextEnabled(); + double width() const; + double height() const; + virtual qreal setGeometry(qreal x, qreal y, qreal w, bool centered=false); + + Worksheet* worksheet(); + WorksheetView* worksheetView(); + + void clearSelection(); + + bool isUndoAvailable(); + bool isRedoAvailable(); + bool isCutAvailable(); + bool isCopyAvailable(); + bool isPasteAvailable(); + + // richtext + void setTextForegroundColor(); + void setTextBackgroundColor(); + void setTextBold(bool); + void setTextItalic(bool); + void setTextUnderline(bool); + void setTextStrikeOut(bool); + void setAlignment(Qt::Alignment); + void setFontFamily(const QString&); + void setFontSize(int); + + QTextCursor search(QString pattern, + QTextDocument::FindFlags qt_flags, + const WorksheetCursor& pos); + + DoubleClickEventBehaviour doubleClickBehaviour(); + void setDoubleClickBehaviour(DoubleClickEventBehaviour); + + Q_SIGNALS: + void moveToPrevious(int pos, qreal xCoord); + void moveToNext(int pos, qreal xCoord); + void cursorPositionChanged(QTextCursor); + void receivedFocus(WorksheetTextItem*); + void tabPressed(); + void backtabPressed(); + void applyCompletion(); + void doubleClick(); + void execute(); + void deleteEntry(); + void sizeChanged(); + void menuCreated(QMenu*, QPointF); + void drag(const QPointF&, QPointF); + void undoAvailable(bool); + void redoAvailable(bool); + void cutAvailable(bool); + void copyAvailable(bool); + void pasteAvailable(bool); + + public Q_SLOTS: + void insertTab(); + void cut(); + void copy(); + void paste(); + void undo(); + void redo(); + void clipboardChanged(); + void selectionChanged(); + void testSize(); + + protected: + void keyPressEvent(QKeyEvent*) override; + void focusInEvent(QFocusEvent*) override; + void focusOutEvent(QFocusEvent*) override; + void mousePressEvent(QGraphicsSceneMouseEvent*) override; + void mouseReleaseEvent(QGraphicsSceneMouseEvent*) override; + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*) override; + void mouseMoveEvent(QGraphicsSceneMouseEvent*) override; + void contextMenuEvent(QGraphicsSceneContextMenuEvent*) override; + void dragEnterEvent(QGraphicsSceneDragDropEvent*) override; + //void dragLeaveEvent(QGraphicsSceneDragDropEvent*); + void dragMoveEvent(QGraphicsSceneDragDropEvent*) override; + void dropEvent(QGraphicsSceneDragDropEvent*) override; + bool sceneEvent(QEvent*) override; + void wheelEvent(QGraphicsSceneWheelEvent*) override; + void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override; + + private Q_SLOTS: + //void setHeight(); + void updateRichTextActions(QTextCursor cursor); + + private: + void setLocalCursorPosition(QPointF); + QPointF localCursorPosition() const; + + QKeyEvent* eventForStandardAction(KStandardAction::StandardAction); + Cantor::Session* session(); + + // richtext + void mergeFormatOnWordOrSelection(const QTextCharFormat&); + + private: + QSizeF m_size; + bool m_completionEnabled{false}; + bool m_completionActive{false}; + bool m_itemDragable{false}; + bool m_richTextEnabled{false}; + QColor m_backgroundColor; + DoubleClickEventBehaviour m_eventBehaviour{DoubleClickEventBehaviour::ImageReplacement}; +}; + +#endif // WORKSHEET_TEXT_ITEM_H diff --git a/src/worksheettoolbutton.cpp b/src/worksheettoolbutton.cpp new file mode 100644 index 0000000..99943e5 --- /dev/null +++ b/src/worksheettoolbutton.cpp @@ -0,0 +1,68 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#include "worksheettoolbutton.h" +#include +#include +#include + +WorksheetToolButton::WorksheetToolButton(QGraphicsItem* parent) + : QGraphicsObject(parent) +{ + m_size = QSize(16, 16); + setCursor(QCursor(Qt::ArrowCursor)); + m_scale = 0; +} + +void WorksheetToolButton::setIcon(const QIcon& icon) +{ + m_icon = icon; +} + +qreal WorksheetToolButton::width() +{ + return m_size.width(); +} + +qreal WorksheetToolButton::height() +{ + return m_size.height(); +} + +QRectF WorksheetToolButton::boundingRect() const +{ + return QRectF(0, 0, m_size.width(), m_size.height()); +} + +void WorksheetToolButton::setIconScale(qreal scale) +{ + m_scale = scale; + m_pixmap = m_icon.pixmap(m_size * m_scale); +} + +void WorksheetToolButton::paint(QPainter* painter, + const QStyleOptionGraphicsItem* option, + QWidget* widget) +{ + Q_UNUSED(option); + Q_UNUSED(widget); + if (m_scale == 0) + setIconScale(1); + QRectF rect(QPointF(0,0), m_size); + painter->drawPixmap(rect, m_pixmap, m_pixmap.rect()); +} + +void WorksheetToolButton::mousePressEvent(QGraphicsSceneMouseEvent* event) +{ + Q_UNUSED(event); + + emit pressed(); +} + +void WorksheetToolButton::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) +{ + if (boundingRect().contains(event->pos())) + emit clicked(); +} diff --git a/src/worksheettoolbutton.h b/src/worksheettoolbutton.h new file mode 100644 index 0000000..763bfcf --- /dev/null +++ b/src/worksheettoolbutton.h @@ -0,0 +1,45 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler +*/ + +#ifndef WORKSHEETTOOLBUTTON_H +#define WORKSHEETTOOLBUTTON_H + +#include +#include + +#include + +class WorksheetToolButton : public QGraphicsObject +{ + Q_OBJECT + public: + explicit WorksheetToolButton(QGraphicsItem* parent); + ~WorksheetToolButton() override = default; + + void setIcon(const QIcon& icon); + + qreal width(); + qreal height(); + QRectF boundingRect() const override; + void setIconScale(qreal scale); + void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, + QWidget* widget = nullptr) override; + + Q_SIGNALS: + void clicked(); + void pressed(); + + protected: + void mousePressEvent(QGraphicsSceneMouseEvent* event) override; + void mouseReleaseEvent(QGraphicsSceneMouseEvent* event) override; + + private: + QSize m_size; + QPixmap m_pixmap; + QIcon m_icon; + qreal m_scale; +}; + +#endif //WORKSHEETTOOLBUTTON_H diff --git a/src/worksheetview.cpp b/src/worksheetview.cpp new file mode 100644 index 0000000..43764f8 --- /dev/null +++ b/src/worksheetview.cpp @@ -0,0 +1,348 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler + SPDX-FileCopyrightText: 2018-2022 Alexander Semke +*/ + +#include "worksheetview.h" +#include "worksheet.h" + +#include +#include +#include +#include +#include +#include + +WorksheetView::WorksheetView(Worksheet* scene, QWidget* parent) : QGraphicsView(scene, parent), + m_worksheet(scene) +{ + connect(scene, SIGNAL(sceneRectChanged(QRectF)), + this, SLOT(sceneRectChanged(QRectF))); + setAlignment(Qt::AlignLeft | Qt::AlignTop); + //setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); +} + +void WorksheetView::makeVisible(const QRectF& sceneRect) +{ + const qreal w = viewport()->width(); + const qreal h = viewport()->height(); + + QRectF rect(m_scale*sceneRect.topLeft(), m_scale*sceneRect.size()); + + qreal x,y; + if (m_animation) { + x = m_hAnimation->endValue().toReal(); + y = m_vAnimation->endValue().toReal(); + + if (QRectF(x,y,w,h).contains(rect)) + return; + } + + if (horizontalScrollBar()) + x = horizontalScrollBar()->value(); + else + x = 0; + if (verticalScrollBar()) + y = verticalScrollBar()->value(); + else + y = 0; + + if (!m_animation && QRectF(x,y,w,h).contains(rect)) + return; + + qreal nx, ny; + if (y > rect.y() || rect.height() > h) + ny = rect.y(); + else + ny = rect.y() + rect.height() - h; + if (rect.x() + rect.width() <= w || x > rect.x()) + nx = 0; + else + nx = rect.x() + rect.width() - w; + + if (!m_worksheet->animationsEnabled()) { + if (horizontalScrollBar()) + horizontalScrollBar()->setValue(nx); + if (verticalScrollBar()) + verticalScrollBar()->setValue(ny); + return; + } + + if (!m_animation) + m_animation = new QParallelAnimationGroup(this); + + if (horizontalScrollBar()) { + if (!m_hAnimation) { + m_hAnimation = new QPropertyAnimation(horizontalScrollBar(), + "value", this); + m_hAnimation->setStartValue(horizontalScrollBar()->value()); + nx = qBound(qreal(0.0), nx, qreal(0.0+horizontalScrollBar()->maximum())); + m_hAnimation->setEndValue(nx); + m_hAnimation->setDuration(100); + m_animation->addAnimation(m_hAnimation); + } else { + qreal progress = static_cast(m_hAnimation->currentTime()) / + m_hAnimation->totalDuration(); + QEasingCurve curve = m_hAnimation->easingCurve(); + qreal value = curve.valueForProgress(progress); + qreal sx = 1/(1-value)*(m_hAnimation->currentValue().toReal() - + value * nx); + m_hAnimation->setStartValue(sx); + m_hAnimation->setEndValue(nx); + } + } else { + m_hAnimation = nullptr; + } + + if (verticalScrollBar()) { + if (!m_vAnimation) { + m_vAnimation = new QPropertyAnimation(verticalScrollBar(), + "value", this); + m_vAnimation->setStartValue(verticalScrollBar()->value()); + ny = qBound(qreal(0.0), ny, qreal(0.0+verticalScrollBar()->maximum())); + m_vAnimation->setEndValue(ny); + m_vAnimation->setDuration(100); + m_animation->addAnimation(m_vAnimation); + } else { + qreal progress = static_cast(m_vAnimation->currentTime()) / + m_vAnimation->totalDuration(); + QEasingCurve curve = m_vAnimation->easingCurve(); + qreal value = curve.valueForProgress(progress); + qreal sy = 1/(1-value)*(m_vAnimation->currentValue().toReal() - + value * ny); + m_vAnimation->setStartValue(sy); + m_vAnimation->setEndValue(ny); + } + } else { + m_vAnimation = nullptr; + } + + connect(m_animation, &QParallelAnimationGroup::finished, this, &WorksheetView::endAnimation); + m_animation->start(); +} + +void WorksheetView::scrollTo(int y) +{ + if (!verticalScrollBar()) + return; + + qreal dy = y - verticalScrollBar()->value(); + scrollBy(dy); +} + + +bool WorksheetView::isVisible(const QRectF& sceneRect) const +{ + const qreal w = viewport()->width(); + const qreal h = viewport()->height(); + + QRectF rect(m_scale*sceneRect.topLeft(), m_scale*sceneRect.size()); + + qreal x,y; + if (m_animation) { + x = m_hAnimation->endValue().toReal(); + y = m_vAnimation->endValue().toReal(); + } else { + if (horizontalScrollBar()) + x = horizontalScrollBar()->value(); + else + x = 0; + if (verticalScrollBar()) + y = verticalScrollBar()->value(); + else + y = 0; + } + + return QRectF(x,y,w,h).contains(rect); +} + +bool WorksheetView::isAtEnd() const +{ + bool atEnd = true; + if (verticalScrollBar()) + atEnd &= (verticalScrollBar()->value()==verticalScrollBar()->maximum()); + return atEnd; +} + +void WorksheetView::scrollToEnd() const +{ + if (verticalScrollBar()) + verticalScrollBar()->setValue(verticalScrollBar()->maximum()); +} + +void WorksheetView::scrollBy(int dy) +{ + if (!verticalScrollBar()) + return; + + int ny = verticalScrollBar()->value() + dy; + if (ny < 0) + ny = 0; + else if (ny > verticalScrollBar()->maximum()) + ny = verticalScrollBar()->maximum(); + + int x; + if (horizontalScrollBar()) + x = horizontalScrollBar()->value(); + else + x = 0; + + const qreal w = viewport()->width() / m_scale; + const qreal h = viewport()->height() / m_scale; + makeVisible(QRectF(x, ny, w, h)); +} + +void WorksheetView::endAnimation() +{ + if (!m_animation) + return; + + m_animation->deleteLater(); + m_hAnimation = nullptr; + m_vAnimation = nullptr; + m_animation = nullptr; +} + +QPoint WorksheetView::viewCursorPos() const +{ + return viewport()->mapFromGlobal(QCursor::pos()); +} + +QPointF WorksheetView::sceneCursorPos() const +{ + return mapToScene(viewCursorPos()); +} + +QRectF WorksheetView::viewRect() const +{ + const qreal w = viewport()->width() / m_scale; + const qreal h = viewport()->height() / m_scale; + qreal y = verticalScrollBar()->value(); + qreal x = horizontalScrollBar() ? horizontalScrollBar()->value() : 0; + return QRectF(x, y, w, h); +} + +void WorksheetView::resizeEvent(QResizeEvent* event) +{ + QGraphicsView::resizeEvent(event); + updateSceneSize(); +} + +void WorksheetView::focusInEvent(QFocusEvent* event) +{ + QGraphicsView::focusInEvent(event); + m_worksheet->resumeAnimations(); +} + +void WorksheetView::focusOutEvent(QFocusEvent* event) +{ + QGraphicsView::focusOutEvent(event); + if (!scene()->hasFocus()) + m_worksheet->stopAnimations(); +} + +void WorksheetView::wheelEvent(QWheelEvent* event) +{ + if ((QApplication::keyboardModifiers() & Qt::ControlModifier)) { + //https://wiki.qt.io/Smooth_Zoom_In_QGraphicsView + int numDegrees = event->delta() / 8; + int numSteps = numDegrees / 15; // see QWheelEvent documentation + zoom(numSteps); + } else + QGraphicsView::wheelEvent(event); +} + +void WorksheetView::zoom(int numSteps) +{ + m_numScheduledScalings += numSteps; + if (m_numScheduledScalings * numSteps < 0) // if user moved the wheel in another direction, we reset previously scheduled scalings + m_numScheduledScalings = numSteps; + + auto* anim = new QTimeLine(350, this); + anim->setUpdateInterval(20); + + connect(anim, &QTimeLine::valueChanged, this, &WorksheetView::scalingTime); + connect(anim, &QTimeLine::finished, this, &WorksheetView::animFinished); + anim->start(); +} + +void WorksheetView::scalingTime() +{ + qreal factor = 1.0 + qreal(m_numScheduledScalings) / 300.0; + m_scale *= factor; + updateSceneSize(); + scale(factor, factor); +} + +void WorksheetView::animFinished() +{ + if (m_numScheduledScalings > 0) + m_numScheduledScalings--; + else + m_numScheduledScalings++; + sender()->~QObject(); + emit scaleFactorChanged(m_scale); +} + +qreal WorksheetView::scaleFactor() const +{ + return m_scale; +} + +void WorksheetView::setScaleFactor(qreal zoom, bool emitSignal) +{ + scale(1/m_scale * zoom, 1/m_scale * zoom); + m_scale = zoom; + updateSceneSize(); + if (emitSignal) + emit scaleFactorChanged(m_scale); +} + +void WorksheetView::updateSceneSize() +{ + QSize s = viewport()->size(); + m_worksheet->setViewSize(s.width()/m_scale, s.height()/m_scale, m_scale); + sendViewRectChange(); +} + +void WorksheetView::sceneRectChanged(const QRectF& sceneRect) const +{ + Q_UNUSED(sceneRect); + if (verticalScrollBar()) + connect(verticalScrollBar(), SIGNAL(valueChanged(int)), + this, SLOT(sendViewRectChange()), Qt::UniqueConnection); + if (horizontalScrollBar()) + connect(horizontalScrollBar(), SIGNAL(valueChanged(int)), + this, SLOT(sendViewRectChange()), Qt::UniqueConnection); +} + +void WorksheetView::sendViewRectChange() const +{ + emit viewRectChanged(viewRect()); +} + +void WorksheetView::zoomIn() +{ + m_scale *= 1.1; + scale(1.1, 1.1); + updateSceneSize(); + emit scaleFactorChanged(m_scale); +} + +void WorksheetView::zoomOut() +{ + m_scale /= 1.1; + scale(1/1.1, 1/1.1); + updateSceneSize(); + emit scaleFactorChanged(m_scale); +} + +void WorksheetView::actualSize() +{ + scale (1/m_scale, 1/m_scale); + m_scale = 1.0; + updateSceneSize(); + emit scaleFactorChanged(m_scale); +} diff --git a/src/worksheetview.h b/src/worksheetview.h new file mode 100644 index 0000000..897578e --- /dev/null +++ b/src/worksheetview.h @@ -0,0 +1,67 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2012 Martin Kuettler + SPDX-FileCopyrightText: 2018-2022 Alexander Semke +*/ + +#ifndef WORKSHEETVIEW_H +#define WORKSHEETVIEW_H + +#include + +class QParallelAnimationGroup; +class QPropertyAnimation; + +class Worksheet; + +class WorksheetView : public QGraphicsView +{ + Q_OBJECT +public: + WorksheetView(Worksheet*, QWidget*); + + void makeVisible(const QRectF&); + bool isVisible(const QRectF&) const; + bool isAtEnd() const; + void scrollToEnd() const; + void scrollBy(int dy); + void scrollTo(int y); + + QPoint viewCursorPos() const; + QPointF sceneCursorPos() const; + QRectF viewRect() const; + qreal scaleFactor() const; + void setScaleFactor(qreal scale, bool emitSignal = true); + void updateSceneSize(); + +Q_SIGNALS: + void viewRectChanged(QRectF) const; + void scaleFactorChanged(double scale); + +public Q_SLOTS: + void zoomIn(); + void zoomOut(); + void actualSize(); + void endAnimation(); + void sceneRectChanged(const QRectF&) const; + void sendViewRectChange() const; + +private: + void resizeEvent(QResizeEvent*) override; + void focusInEvent(QFocusEvent*) override; + void focusOutEvent(QFocusEvent*) override; + void wheelEvent(QWheelEvent*) override; + + void zoom(int); + void scalingTime(); + void animFinished(); + + qreal m_scale = 1.; + int m_numScheduledScalings{0}; + QParallelAnimationGroup* m_animation{nullptr}; + QPropertyAnimation* m_hAnimation{nullptr}; + QPropertyAnimation* m_vAnimation{nullptr}; + Worksheet* m_worksheet; +}; + +#endif //WORKSHEETVIEW_H diff --git a/src/xslt/CMakeLists.txt b/src/xslt/CMakeLists.txt new file mode 100644 index 0000000..ecb63a5 --- /dev/null +++ b/src/xslt/CMakeLists.txt @@ -0,0 +1 @@ +install( FILES latex.xsl DESTINATION ${KDE_INSTALL_DATADIR}/cantor/xslt ) diff --git a/src/xslt/latex.xsl b/src/xslt/latex.xsl new file mode 100644 index 0000000..25e2bc1 --- /dev/null +++ b/src/xslt/latex.xsl @@ -0,0 +1,79 @@ + + + + + +\documentclass[a4paper,10pt,fleqn]{article} + +\usepackage{fullpage} +\usepackage{graphicx} +\usepackage[utf8]{inputenc} +\usepackage{amsmath,amssymb} + +\begin{document} + + +\end{document} + + + + + + + + +\begin{verbatim} + + \end{verbatim} + + + + + \newpage{} + + + + +\begin{center} +\includegraphics + +{ + +} \end{center} + + + + + + + + + +\begin{itemize} + +\end{itemize} + + + +\begin{enumerate} + +\end{enumerate} + + + + \item + + + + + + + + + + + + + + + diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt new file mode 100644 index 0000000..2868373 --- /dev/null +++ b/thirdparty/CMakeLists.txt @@ -0,0 +1,32 @@ +# This cmake file are managing embedded 3party Cantor dependencies + +# 3dparty patched Discount +# Embedded for a while +include(ExternalProject) +set (DISCOUNT_ONLY_LIBRARY ON) +set (DISCOUNT_MAKE_INSTALL OFF) +ExternalProject_Add( + discount_project + URL ${CMAKE_CURRENT_SOURCE_DIR}/discount-2.2.6-patched + SOURCE_SUBDIR cmake + CMAKE_ARGS -DDISCOUNT_ONLY_LIBRARY:BOOL=ON -DDISCOUNT_MAKE_INSTALL:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE_MAKEFILE} + CMAKE_CACHE_ARGS "-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true" + PREFIX ${CMAKE_CURRENT_BINARY_DIR} + INSTALL_COMMAND "" + BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/discount_project-build + BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/discount_project-build/libmarkdown${CMAKE_STATIC_LIBRARY_SUFFIX} +) + +ExternalProject_Get_Property(discount_project source_dir) +ExternalProject_Get_Property(discount_project binary_dir) + +add_library(Discount::Lib STATIC IMPORTED GLOBAL) +set_target_properties(Discount::Lib PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${source_dir} + IMPORTED_LOCATION ${binary_dir}/libmarkdown${CMAKE_STATIC_LIBRARY_SUFFIX} + POSITION_INDEPENDENT_CODE ON +) +add_dependencies(Discount::Lib discount_project-build) + +# preview.sty +install(FILES preview.sty DESTINATION ${KDE_INSTALL_DATADIR}/cantor/latex) diff --git a/thirdparty/README.md b/thirdparty/README.md new file mode 100644 index 0000000..16c5765 --- /dev/null +++ b/thirdparty/README.md @@ -0,0 +1,28 @@ +## 3rd party libraries + +This folder contains (patched) versions of libraries and files Cantor depends on. + + +## DISCOUNT + +DISCOUNT is a implementation of Markdown markup language ([link](https://github.com/Orc/discount)). + +The version included here provides two additional patches: + +* Better LaTeX support: `$` math delimiter and `mkd_e_latex` callback (https://github.com/Orc/discount/pull/214) + +* Better recognition of the mathematical expressions between $...$, $$...$$ + + +## preview.sty +This file provides the LaTeX style 'preview' ([link](https://www.ctan.org/tex-archive/macros/latex/contrib/preview)). + +The main purpose of the preview package is the extraction of selected +elements from a LaTeX source, like formulas or graphics, into separate +pages of a DVI file. A flexible and convenient interface allows it to +specify what commands and constructs should be extracted. This works +with DVI files postprocessed by either Dvips and Ghostscript or +dvipng, but it also works when you are using PDFTeX for generating PDF +files. + +This package is used for the rendering of mathematical LaTeX expressions embedded in Cantor's worksheet. diff --git a/thirdparty/discount-2.2.6-patched/COPYRIGHT b/thirdparty/discount-2.2.6-patched/COPYRIGHT new file mode 100644 index 0000000..cab1d3d --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/COPYRIGHT @@ -0,0 +1,30 @@ +->Copyright (C) 2007 David Loren Parsons. +All rights reserved.<- + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of works must retain the original copyright notice, + this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the original copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither my name (David L Parsons) nor the names of contributors to + this code may be used to endorse or promote products derived + from this work without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + diff --git a/thirdparty/discount-2.2.6-patched/CREDITS b/thirdparty/discount-2.2.6-patched/CREDITS new file mode 100644 index 0000000..a806a53 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/CREDITS @@ -0,0 +1,35 @@ +Discount is primarily my work, but it has only reached the point +where it is via contributions, critiques, and bug reports from a +host of other people, some of which are listed before. If your +name isn't on this list, please remind me + -david parsons (orc@pell.portland.or.us) + + +Josh Wood -- Plan9 support. +Mike Schiraldi -- Reddit style automatic links, MANY MANY MANY + bug reports about boundary conditions and + places where I didn't get it right. +Jjgod Jiang -- Table of contents support. +Petite Abeille -- Many bug reports about places where I didn't + get it right. +Tim Channon -- inspiration for the `mkd_xhtmlpage()` function +Christian Herenz-- Many bug reports regarding my implementation of + `[]()` and `![]()` +A.S.Bradbury -- Portability bug reports for 64 bit systems. +Joyent -- Loan of a solaris box so I could get discount + working under solaris. +Ryan Tomayko -- Portability requests (and the rdiscount ruby + binding.) +yidabu -- feedback on the documentation, bug reports + against utf-8 support. +Pierre Joye -- bug reports, php discount binding. +Masayoshi Sekimura- perl discount binding. +Jeremy Hinegardner- bug reports about list handling. +Andrew White -- bug reports about the format of generated urls. +Steve Huff -- bug reports about Makefile portability (for Fink) +Ignacio Burgue?o-- bug reports about `>%class%` +Henrik Nyh -- bug reports about embedded html handling. +John J. Foerch -- bug reports about incorrect `–` and `—` + translations. + + diff --git a/thirdparty/discount-2.2.6-patched/Csio.c b/thirdparty/discount-2.2.6-patched/Csio.c new file mode 100644 index 0000000..1b418e0 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/Csio.c @@ -0,0 +1,61 @@ +#include +#include +#include +#include "cstring.h" +#include "markdown.h" +#include "amalloc.h" + + +/* putc() into a cstring + */ +void +Csputc(int c, Cstring *iot) +{ + EXPAND(*iot) = c; +} + + +/* printf() into a cstring + */ +int +Csprintf(Cstring *iot, char *fmt, ...) +{ + va_list ptr; + int siz=100; + + do { + RESERVE(*iot, siz); + va_start(ptr, fmt); + siz = vsnprintf(T(*iot)+S(*iot), ALLOCATED(*iot)-S(*iot), fmt, ptr); + va_end(ptr); + } while ( siz > (ALLOCATED(*iot)-S(*iot)) ); + + S(*iot) += siz; + return siz; +} + + +/* write() into a cstring + */ +int +Cswrite(Cstring *iot, char *bfr, int size) +{ + RESERVE(*iot, size); + memcpy(T(*iot)+S(*iot), bfr, size); + S(*iot) += size; + return size; +} + + +/* reparse() into a cstring + */ +void +Csreparse(Cstring *iot, char *buf, int size, mkd_flag_t flags) +{ + MMIOT f; + ___mkd_initmmiot(&f, 0); + ___mkd_reparse(buf, size, flags, &f, 0); + ___mkd_emblock(&f); + SUFFIX(*iot, T(f.out), S(f.out)); + ___mkd_freemmiot(&f, 0); +} diff --git a/thirdparty/discount-2.2.6-patched/INSTALL b/thirdparty/discount-2.2.6-patched/INSTALL new file mode 100644 index 0000000..8e6c4dc --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/INSTALL @@ -0,0 +1,65 @@ + + HOW TO BUILD AND INSTALL DISCOUNT + +1) Unpacking the distribution + +The DISCOUNT sources are distributed in tarballs. After extracting from +the tarball, you should end up with all the source and build files in the +directory + discount-(version) + +2) Installing the distribution + +DISCOUNT uses configure.sh to set itself up for compilation. To run +configure, just do ``./configure.sh'' and it will check your system for +build dependencies and build makefiles for you. If configure.sh finishes +without complaint, you can then do a ``make'' to compile everything and a +``make install'' to install the binaries. + +Configure.sh has a few options that can be set: + +--src=DIR where the source lives (.) +--prefix=DIR where to install the final product (/usr/local) +--execdir=DIR where to put executables (prefix/bin) +--sbindir=DIR where to put static executables (prefix/sbin) +--confdir=DIR where to put configuration information (/etc) +--libdir=DIR where to put libraries (prefix/lib) +--libexecdir=DIR where to put private executables +--mandir=DIR where to put manpages +--with-amalloc Use my paranoid malloc library to catch memory leaks +--shared Build shared libraries +--debian-glitch When mangling email addresses, do them deterministically + so the Debian regression tester won't complain +--pkg-config Build & install a pkg-config(1) .pc file for + the discount library. +--h1-title Have theme & mkd2html use the first h1 in a document + as the title if there's no pandoc header or title + specified on the command line. +--cxx-binding Wrap mkdio.h with (conditional) 'extern "C"' for c++ + binding. + +3) Testing + +``make test'' runs discount against a collection of test cases. + + +4) Installing sample programs and manpages + +The standard ``make install'' rule just installs the binaries. If you +want to install the sample programs, they are installed with +``make install.samples''; to install manpages, ``make install.man''. +A shortcut to install everything is ``make install.everything'' + + +5) Assorted platform gotchas + + 1. On NetBSD (version 8 for certain) running configure.sh by + itself will result in logging output being mixed in with diagnostic + output on the screen instead of having it written to config.log. + If, instead, you do `ksh ./configure.sh`, it will be much less + garbled (the shell defaults all fds > stderr to close on exec, + so my redirecting stdout fails after the first subprocess.) + 2. On 9Front (and maybe every other extant plan9 variant) the + system mkfile sets the `T' flag in CFLAGS; there are several + places where I typedef voids to opaque structure pointers and + this makes the build die when it attempts to link anything. diff --git a/thirdparty/discount-2.2.6-patched/Makefile.in b/thirdparty/discount-2.2.6-patched/Makefile.in new file mode 100644 index 0000000..c7a10b6 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/Makefile.in @@ -0,0 +1,191 @@ +CC=@CC@ +CFLAGS=@CFLAGS@ +LDFLAGS=@LDFLAGS@ +AR=@AR@ +RANLIB=@RANLIB@ +INSTALL_PROGRAM=@INSTALL_PROGRAM@ +INSTALL_DIR=@INSTALL_DIR@ +INSTALL_DATA=@INSTALL_DATA@ + +BUILD=$(CC) -fPIC -I. $(CFLAGS) +LINK=$(CC) -fPIC -L. $(LDFLAGS) + +.c.o: + $(BUILD) -c -o $@ $< + + +BINDIR=@exedir@ +MANDIR=@mandir@ +LIBDIR=@libdir@ +INCDIR=@prefix@/include +@MK_PKGCONFIG@PKGDIR=$(LIBDIR)/pkgconfig + +PGMS=markdown +SAMPLE_PGMS=mkd2html makepage +@THEME@SAMPLE_PGMS+= theme +MKDLIB=libmarkdown +OBJS=mkdio.o markdown.o dumptree.o generate.o \ + resource.o docheader.o version.o toc.o css.o \ + xml.o Csio.o xmlpage.o basename.o emmatch.o \ + github_flavoured.o setup.o tags.o html5.o \ + @AMALLOC@ @H1TITLE@ flags.o +TESTFRAMEWORK=echo cols branch pandoc_headers + +# modules that markdown, makepage, mkd2html, &tc use +COMMON=pgm_options.o gethopt.o notspecial.o + +MAN3PAGES=mkd-callbacks.3 mkd-functions.3 markdown.3 mkd-line.3 + +all: $(PGMS) $(SAMPLE_PGMS) $(TESTFRAMEWORK) + +install: $(PGMS) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(INCDIR) $(DESTDIR)$(PKGDIR) + $(INSTALL_PROGRAM) $(PGMS) $(DESTDIR)$(BINDIR) + ./librarian.sh install libmarkdown VERSION $(DESTDIR)$(LIBDIR) + $(INSTALL_DATA) mkdio.h $(DESTDIR)$(INCDIR) + @MK_PKGCONFIG@$(INSTALL_DATA) $(MKDLIB).pc $(DESTDIR)$(PKGDIR) + +install.everything: install install.samples install.man + +install.samples: $(SAMPLE_PGMS) install $(DESTDIR)$(BINDIR) + $(INSTALL_DIR) $(DESTDIR)$(MANDIR)/man1 + for x in $(SAMPLE_PGMS); do \ + $(INSTALL_PROGRAM) $$x $(DESTDIR)$(BINDIR)/$(SAMPLE_PFX)$$x; \ + $(INSTALL_DATA) $$x.1 $(DESTDIR)$(MANDIR)/man1/$(SAMPLE_PFX)$$x.1; \ + done + +install.man: + $(INSTALL_DIR) $(DESTDIR)$(MANDIR)/man3 + $(INSTALL_DATA) $(MAN3PAGES) $(DESTDIR)$(MANDIR)/man3 + for x in mkd_line mkd_generateline; do \ + ( echo '.\"' ; echo ".so man3/mkd-line.3" ) > $(DESTDIR)$(MANDIR)/man3/$$x.3;\ + done + for x in mkd_in mkd_string; do \ + ( echo '.\"' ; echo ".so man3/markdown.3" ) > $(DESTDIR)$(MANDIR)/man3/$$x.3;\ + done + for x in mkd_compile mkd_css mkd_generatecss mkd_generatehtml mkd_cleanup mkd_doc_title mkd_doc_author mkd_doc_date; do \ + ( echo '.\"' ; echo ".so man3/mkd-functions.3" ) > $(DESTDIR)$(MANDIR)/man3/$$x.3; \ + done + $(INSTALL_DIR) $(DESTDIR)$(MANDIR)/man7 + $(INSTALL_DATA) markdown.7 mkd-extensions.7 $(DESTDIR)$(MANDIR)/man7 + $(INSTALL_DIR) $(DESTDIR)$(MANDIR)/man1 + $(INSTALL_DATA) markdown.1 $(DESTDIR)$(MANDIR)/man1 + +install.everything: install install.man + +$(DESTDIR)$(BINDIR): + $(INSTALL_DIR) $(DESTDIR)$(BINDIR) + +$(DESTDIR)$(INCDIR): + $(INSTALL_DIR) $(DESTDIR)$(INCDIR) + +$(DESTDIR)$(LIBDIR): + $(INSTALL_DIR) $(DESTDIR)$(LIBDIR) + +@MK_PKGCONFIG@$(DESTDIR)$(PKGDIR): +@MK_PKGCONFIG@ $(INSTALL_DIR) $(DESTDIR)$(PKGDIR) + +version.o: version.c VERSION branch + $(BUILD) -DBRANCH=`./branch` -DVERSION=\"`cat VERSION`\" -c version.c + +VERSION: + @true + +tags.o: tags.c cstring.h tags.h blocktags + +blocktags: mktags + ./mktags > blocktags + +mktags: mktags.o + $(LINK) -o mktags mktags.o + +# example programs +@THEME@theme: theme.o $(COMMON) $(MKDLIB) mkdio.h +@THEME@ $(LINK) -o theme theme.o $(COMMON) -lmarkdown @LIBS@ + + +mkd2html: mkd2html.o $(MKDLIB) mkdio.h gethopt.h $(COMMON) + $(LINK) -o mkd2html mkd2html.o $(COMMON) -lmarkdown @LIBS@ + +markdown: main.o $(COMMON) $(MKDLIB) + $(LINK) -o markdown main.o $(COMMON) -lmarkdown @LIBS@ + +makepage.o: makepage.c mkdio.h + $(BUILD) -c makepage.c +makepage: makepage.o $(COMMON) $(MKDLIB) + $(LINK) -o makepage makepage.o $(COMMON) -lmarkdown @LIBS@ + +pgm_options.o: pgm_options.c mkdio.h config.h + $(BUILD) -c pgm_options.c + +notspecial.o: notspecial.c + $(BUILD) -c notspecial.c + +gethopt.o: gethopt.c + $(BUILD) -c gethopt.c + +main.o: main.c mkdio.h config.h + $(BUILD) -c main.c + +$(MKDLIB): $(OBJS) + ./librarian.sh make $(MKDLIB) VERSION $(OBJS) + +verify: echo tools/checkbits.sh + @./echo -n "headers ... "; tools/checkbits.sh && echo "GOOD" + +test: $(PGMS) $(TESTFRAMEWORK) verify + @for x in $${TESTS:-tests/*.t}; do \ + @LD_LIBRARY_PATH@=`pwd` sh $$x || exit 1; \ + done + +pandoc_headers.o: tools/pandoc_headers.c config.h + $(BUILD) -c -o pandoc_headers.o tools/pandoc_headers.c +pandoc_headers: pandoc_headers.o + $(LINK) -o pandoc_headers pandoc_headers.o $(COMMON) -lmarkdown + +branch.o: tools/branch.c config.h + $(BUILD) -c -o branch.o tools/branch.c +branch: branch.o + $(LINK) -o branch branch.o + +cols.o: tools/cols.c config.h + $(BUILD) -c -o cols.o tools/cols.c +cols: cols.o + $(LINK) -o cols cols.o + +echo.o: tools/echo.c config.h + $(BUILD) -c -o echo.o tools/echo.c +echo: echo.o + $(LINK) -o echo echo.o + +clean: + rm -f $(PGMS) $(TESTFRAMEWORK) $(SAMPLE_PGMS) *.o + rm -f $(MKDLIB) `./librarian.sh files $(MKDLIB) VERSION` + +distclean spotless: clean + @DISTCLEAN@ @GENERATED_FILES@ @CONFIGURE_FILES@ ./mktags ./blocktags + +Csio.o: Csio.c cstring.h amalloc.h config.h markdown.h +amalloc.o: amalloc.c +basename.o: basename.c config.h cstring.h amalloc.h markdown.h +css.o: css.c config.h cstring.h amalloc.h markdown.h +docheader.o: docheader.c config.h cstring.h amalloc.h markdown.h +dumptree.o: dumptree.c markdown.h cstring.h amalloc.h config.h +emmatch.o: emmatch.c config.h cstring.h amalloc.h markdown.h +generate.o: generate.c config.h cstring.h amalloc.h markdown.h +main.o: main.c config.h amalloc.h +pgm_options.o: pgm_options.c pgm_options.h config.h amalloc.h +makepage.o: makepage.c +markdown.o: markdown.c config.h cstring.h amalloc.h markdown.h +mkd2html.o: mkd2html.c config.h mkdio.h cstring.h amalloc.h +mkdio.o: mkdio.c config.h cstring.h amalloc.h markdown.h +resource.o: resource.c config.h cstring.h amalloc.h markdown.h +theme.o: theme.c config.h mkdio.h cstring.h amalloc.h +toc.o: toc.c config.h cstring.h amalloc.h markdown.h +version.o: version.c config.h +xml.o: xml.c config.h cstring.h amalloc.h markdown.h +xmlpage.o: xmlpage.c config.h cstring.h amalloc.h markdown.h +setup.o: setup.c config.h cstring.h amalloc.h markdown.h +github_flavoured.o: github_flavoured.c config.h cstring.h amalloc.h markdown.h +gethopt.o: gethopt.c gethopt.h +h1title.o: h1title.c markdown.h +notspecial.o: notspecial.c config.h diff --git a/thirdparty/discount-2.2.6-patched/Plan9/README.md b/thirdparty/discount-2.2.6-patched/Plan9/README.md new file mode 100644 index 0000000..b0ec8e3 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/Plan9/README.md @@ -0,0 +1,33 @@ +# *Discount* Markdown compiler on Plan 9 + +## Build + % CONFIG='--with-tabstops=7' mk config + % mk test + % mk install + % markdown -V + markdown: discount X.Y.Z TAB=7 + +### Configuration +To select features and extensions, `--with-tabstops=7` may be replaced by zero or more of: + +* `--enable-pandoc-header`: Use pandoc-style header blocks +* `--enable-superscript`: `A^B` becomes AB +* `--enable-amalloc`: Enable memory allocation debugging +* `--with-tabstops=`*N*: Set tabstops to *N* characters (default 4) +* `--enable-alpha-list`: Enable `(a)/(b)/(c)` list markers +* `--enable-all-features`: Turn on all stable optional features + +## Notes +1. This is not a port from POSIX to native Plan 9 APIs. The supplied +`mkfile` merely drives Discount's own `configure.sh` through Plan 9's +*APE* environment (in *pcc*(1)) to build the Discount source, then +copies the result to locations appropriate for system-wide use on +Plan 9. + +2. There are a few other *mk*(1) targets: + * `install.libs`: Discount includes a C library and header. +Installation is optional. Plan 9 binaries are statically linked. + * `install.man`: Add manual pages for *markdown* in sections 1, 2, and 6. + * `install.progs`: Extra programs. *makepage* writes complete XHTML +documents, rather than fragments. *mkd2html* is similar, but produces +HTML. diff --git a/thirdparty/discount-2.2.6-patched/Plan9/markdown.1 b/thirdparty/discount-2.2.6-patched/Plan9/markdown.1 new file mode 100644 index 0000000..b38947f --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/Plan9/markdown.1 @@ -0,0 +1,169 @@ +.TH MARKDOWN 1 +.SH NAME +markdown \- convert Markdown text to HTML +.SH SYNOPSIS +.B markdown +[ +.B -dTV +] +[ +.BI -b " url-base +] +[ +.BI -F " bitmap +] +[ +.BI -f " flags +] +[ +.BI -o " ofile +] +[ +.BI -s " text +] +[ +.BI -t " text +] +[ +.I file +] +.SH DESCRIPTION +The +.I markdown +utility reads the +.IR Markdown (6)-formatted +.I file +(or standard input) and writes its +.SM HTML +fragment representation on standard output. +.PP +The options are: +.TF dfdoptions +.TP +.BI -b " url-base +Links in source begining with +.B / +will be prefixed with +.I url-base +in the output. +.TP +.B -d +Instead of printing an +.SM HTML +fragment, print a parse tree. +.TP +.BI -F " bitmap +Set translation flags. +.I Bitmap +is a bit map of the various configuration options described in +.IR markdown (2). +.TP +.BI -f " flags +Set or clear various translation +.IR flags , +described below. +.I Flags +are in a comma-delimited list, with an optional +.B + +(set) prefix on each flag. +.TP +.BI -o " ofile +Write the generated +.SM HTML +to +.IR ofile . +.TP +.BI -s " text +Use the +.IR markdown (2) +function to format the +.I text +on standard input. +.TP +.B -T +Under +.B -f +.BR toc , +print the table of contents as an unordered list before the usual +.SM HTML +output. +.TP +.BI -t " text +Use +.IR mkd_text +(in +.IR markdown (2)) +to format +.I text +instead of processing standard input with +.IR markdown . +.TP +.B -V +Show version number and configuration. If the version includes the string +.BR DL_TAG , +.I markdown +was configured with definition list support. If the version includes the string +.BR HEADER , +.I markdown +was configured to support pandoc header blocks. +.PD +.SS TRANSLATION FLAGS +The translation flags understood by +.B -f +are: +.TF \ noheader +.TP +.B noimage +Don't allow image tags. +.TP +.B nolinks +Don't allow links. +.TP +.B nohtml +Don't allow any embedded HTML. +.TP +.B cdata +Generate valid XML output. +.TP +.B noheader +Do not process pandoc headers. +.TP +.B notables +Do not process the syntax extension for tables. +.TP +.B tabstops +Use Markdown-standard 4-space tabstops. +.TP +.B strict +Disable superscript and relaxed emphasis. +.TP +.B relax +Enable superscript and relaxed emphasis (the default). +.TP +.B toc +Enable table of contents support, generated from headings (in +.IR markdown (6)) +in the source. +.TP +.B 1.0 +Revert to Markdown 1.0 compatibility. +.PD +.PP +For example, +.B -f nolinks,quot +tells +.I markdown +not to allow +.B +tags, and to expand double quotes. +.SH SOURCE +.B /sys/src/cmd/discount +.SH SEE ALSO +.IR markdown (2), +.IR markdown (6) +.PP +http://daringfireball.net/projects/markdown/, +``Markdown''. +.SH DIAGNOSTICS +.I Markdown +exits 0 on success and >0 if an error occurs. diff --git a/thirdparty/discount-2.2.6-patched/Plan9/markdown.2 b/thirdparty/discount-2.2.6-patched/Plan9/markdown.2 new file mode 100644 index 0000000..d5ee04c --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/Plan9/markdown.2 @@ -0,0 +1,332 @@ +.TH MARKDOWN 2 +.SH NAME +mkd_in, mkd_string, markdown, mkd_compile, mkd_css, mkd_generatecss, +mkd_document, mkd_generatehtml, mkd_xhtmlpage, mkd_toc, mkd_generatetoc, +mkd_cleanup, mkd_doc_title, mkd_doc_author, mkd_doc_date, mkd_line, +mkd_generateline \- convert Markdown text to HTML +.SH SYNOPSIS +.ta \w'MMIOT* 'u +.B #include +.PP +.B +MMIOT* mkd_in(FILE *input, int flags) +.PP +.B +MMIOT* mkd_string(char *buf, int size, int flags) +.PP +.B +int markdown(MMIOT *doc, FILE *output, int flags) +.PP +.B +int mkd_compile(MMIOT *document, int flags) +.PP +.B +int mkd_css(MMIOT *document, char **doc) +.PP +.B +int mkd_generatecss(MMIOT *document, FILE *output) +.PP +.B +int mkd_document(MMIOT *document, char **doc) +.PP +.B +int mkd_generatehtml(MMIOT *document, FILE *output) +.PP +.B +int mkd_xhtmlpage(MMIOT *document, int flags, FILE *output) +.PP +.B +int mkd_toc(MMIOT *document, char **doc) +.PP +.B +int mkd_generatetoc(MMIOT *document, FILE *output) +.PP +.B +void mkd_cleanup(MMIOT*); +.PP +.B +char* mkd_doc_title(MMIOT*) +.PP +.B +char* mkd_doc_author(MMIOT*) +.PP +.B +char* mkd_doc_date(MMIOT*) +.PP +.B +int mkd_line(char *string, int size, char **doc, int flags) +.PP +.B +int mkd_generateline(char *string, int size, FILE *output, int flags) +.PD +.PP +.SH DESCRIPTION +These functions convert +.IR Markdown (6) +text into +.SM HTML +markup. +.PP +.I Mkd_in +reads the text referenced by pointer to +.B FILE +.I input +and returns a pointer to an +.B MMIOT +structure of the form expected by +.I markdown +and the other converters. +.I Mkd_string +accepts one +.I string +and returns a pointer to +.BR MMIOT . +.PP +After such preparation, +.I markdown +converts +.I doc +and writes the result to +.IR output , +while +.I mkd_compile +transforms +.I document +in-place. +.PP +One or more of the following +.I flags +(combined with +.BR OR ) +control +.IR markdown 's +processing of +.IR doc : +.TF MKD_NOIMAGE +.TP +.B MKD_NOIMAGE +Do not process +.B ![] +and remove +.B +tags from the output. +.TP +.B MKD_NOLINKS +Do not process +.B [] +and remove +.B +tags from the output. +.TP +.B MKD_NOPANTS +Suppress Smartypants-style replacement of quotes, dashes, or ellipses. +.TP +.B MKD_STRICT +Disable superscript and relaxed emphasis processing. +.TP +.B MKD_TAGTEXT +Process as inside an +.SM HTML +tag: no +.BR , +no +.BR , +no +.SM HTML +or +.B [] +expansion. +.TP +.B MKD_NO_EXT +Don't process pseudo-protocols (in +.IR markdown (6)). +.TP +.B MKD_CDATA +Generate code for +.SM XML +.B ![CDATA[...]] +element. +.TP +.B MKD_NOHEADER +Don't process Pandoc-style headers. +.TP +.B MKD_TABSTOP +When reading documents, expand tabs to 4 spaces, overriding any compile-time configuration. +.TP +.B MKD_TOC +Label headings for use with the +.I mkd_generatetoc +and +.I mkd_toc +functions. +.TP +.B MKD_1_COMPAT +MarkdownTest_1.0 compatibility. Trim trailing spaces from first line of code blocks and disable implicit reference links (in +.IR markdown (6)). +.TP +.B MKD_AUTOLINK +Greedy +.SM URL +generation. When set, any +.SM URL +is converted to a hyperlink, even those not encased in +.BR <> . +.TP +.B MKD_SAFELINK +Don't make hyperlinks from +.B [][] +links that have unknown +.SM URL +protocol types. +.TP +.B MKD_NOTABLES +Do not process the syntax extension for tables (in +.IR markdown (6)). +.TP +.B MKD_EMBED +All of +.BR MKD_NOLINKS , +.BR MKD_NOIMAGE , +and +.BR MKD_TAGTEXT . +.PD +.PP +This implementation supports +Pandoc-style +headers and inline +.SM CSS +.B +at the end of the line or at the beginning of a subsequent line. +.IP +Style blocks apply to the entire document regardless of where they are defined. +.TP +Image Dimensions +Image specification has been extended with an argument describing image dimensions: +.BI = height x width. +For an image 400 pixels high and 300 wide, the new syntax is: +.IP +.EX + ![Alt text](/path/to/image.jpg =400x300 "Title") +.EE +.TP +Pseudo-Protocols +Pseudo-protocols that may replace the common +.B http: +or +.B mailto: +have been added to the link syntax described above. +.IP +.BR abbr : +Text following is used as the +.B title +attribute of an +.B abbr +tag wrapping the link text. So +.B [LT](abbr:Link Text) +gives +.B LT. +.IP +.BR id : +The link text is marked up and written to the output, wrapped with +.B +and +.BR . +.IP +.BR class : + The link text is marked up and written to the output, wrapped with +.B +and +.BR . +.IP +.BR raw : +Text following is written to the output with no further processing. +The link text is discarded. +.TP +Alphabetic Lists +If +.I markdown +was configured with +.BR --enable-alpha-list , +.IP +.EX +a. this +b. is +c. an alphabetic +d. list +.EE +.IP +yields an +.SM HTML +.B ol +ordered list. +.TP +Definition Lists +If configured with +.BR --enable-dl-tag , +markup for definition lists is enabled. A definition list item is defined as +.IP +.EX +=term= + definition +.EE +.TP +Tables +Tables are specified with a pipe +.RB ( | ) +and dash +.RB ( - ) +marking. The markdown text +.IP +.EX +header0|header1 +-------|------- + textA|textB + textC|textD +.EE +.IP +will produce an +.SM HTML +.B table +of two columns and three rows. +A header row is designated by ``underlining'' with dashes. +Declare a column's alignment by affixing a colon +.RB ( : ) +to the left or right end of the dashes underlining its header. +In the output, this +yields the corresponding value for the +.B align +attribute on each +.B td +cell in the column. +A colon at both ends of a column's header dashes indicates center alignment. +.TP +Relaxed Emphasis +The rules for emphasis are changed so that a single +.B _ +will not count as an emphasis character in the middle of a word. +This is useful for documenting some code where +.B _ +appears frequently, and would normally require a backslash escape. +.PD +.SH SEE ALSO +.IR markdown (1), +.IR markdown (2) +.PP +http://daringfireball.net/projects/markdown/syntax/, +``Markdown: Syntax''. +.PP +http://daringfireball.net/projects/smartypants/, +``Smarty Pants''. +.PP +http://michelf.com/projects/php-markdown/extra/#table, +``PHP Markdown Extra: Tables''. diff --git a/thirdparty/discount-2.2.6-patched/Plan9/mkfile b/thirdparty/discount-2.2.6-patched/Plan9/mkfile new file mode 100644 index 0000000..f22e41a --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/Plan9/mkfile @@ -0,0 +1,38 @@ +BIN=/$objtype/bin +CC='cc' +CFLAGS='-D_BSD_EXTENSION -D_C99_SNPRINTF_EXTENSION' + +markdown: + ape/psh -c 'cd .. && $CC mktags.c -o mktags && ./mktags > blocktags && make' + +none:V: markdown + +test: markdown + ape/psh -c 'cd ..&& make test' + +install: markdown + cp ../markdown $BIN/markdown + +install.progs: install + cp ../makepage $BIN/makepage + cp ../mkd2html $BIN/mkd2html + +install.libs: install + cp ../mkdio.h /sys/include/ape/mkdio.h + cp ../libmarkdown.a /$objtype/lib/ape/libmarkdown.a + +install.man: install + cp markdown.1 /sys/man/1/markdown + cp markdown.2 /sys/man/2/markdown + cp markdown.6 /sys/man/6/markdown + +installall:V: install.libs install.man install.progs + +config: + ape/psh -c 'cd .. && ./configure.sh $CONFIG' + +clean: + ape/psh -c 'cd .. && make clean' + +nuke: + ape/psh -c 'cd .. && make distclean' diff --git a/thirdparty/discount-2.2.6-patched/README b/thirdparty/discount-2.2.6-patched/README new file mode 100644 index 0000000..7bfbd04 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/README @@ -0,0 +1,16 @@ +DISCOUNT is a implementation of John Gruber & Aaron Swartz's + Markdown markup language. It implements, as far as I can tell, +all of the language as described in + +and passes the Markdown test suite at + + +DISCOUNT is free software written by David Parsons +; it is released under a BSD-style license +that allows you to do as you wish with it as long as you don't +attempt to claim it as your own work. + +Most of the programs included in the DISCOUNT distribution have +manual pages describing how they work. + +The file INSTALL describes how to build and install discount diff --git a/thirdparty/discount-2.2.6-patched/VERSION b/thirdparty/discount-2.2.6-patched/VERSION new file mode 100644 index 0000000..bda8fbe --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/VERSION @@ -0,0 +1 @@ +2.2.6 diff --git a/thirdparty/discount-2.2.6-patched/amalloc.c b/thirdparty/discount-2.2.6-patched/amalloc.c new file mode 100644 index 0000000..922db77 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/amalloc.c @@ -0,0 +1,136 @@ +/* + * debugging malloc()/realloc()/calloc()/free() that attempts + * to keep track of just what's been allocated today. + */ + +#include +#include +#include "config.h" + +#define MAGIC 0x1f2e3d4c + +struct alist { int magic, size, index; int *end; struct alist *next, *last; }; + +static struct alist list = { 0, 0, 0, 0 }; + +static int mallocs=0; +static int reallocs=0; +static int frees=0; + +static int index = 0; + +static void +die(char *msg, int index) +{ + fprintf(stderr, msg, index); + abort(); +} + + +void * +acalloc(int count, int size) +{ + struct alist *ret; + + if ( size > 1 ) { + count *= size; + size = 1; + } + + if ( ret = calloc(count + sizeof(struct alist) + sizeof(int), size) ) { + ret->magic = MAGIC; + ret->size = size * count; + ret->index = index ++; + ret->end = (int*)(count + (char*) (ret + 1)); + *(ret->end) = ~MAGIC; + if ( list.next ) { + ret->next = list.next; + ret->last = &list; + ret->next->last = ret; + list.next = ret; + } + else { + ret->last = ret->next = &list; + list.next = list.last = ret; + } + ++mallocs; + return ret+1; + } + return 0; +} + + +void* +amalloc(int size) +{ + return acalloc(size,1); +} + + +void +afree(void *ptr) +{ + struct alist *p2 = ((struct alist*)ptr)-1; + + if ( p2->magic == MAGIC ) { + if ( ! (p2->end && *(p2->end) == ~MAGIC) ) + die("goddam: corrupted memory block %d in free()!\n", p2->index); + p2->last->next = p2->next; + p2->next->last = p2->last; + ++frees; + free(p2); + } + else + free(ptr); +} + + +void * +arealloc(void *ptr, int size) +{ + struct alist *p2 = ((struct alist*)ptr)-1; + struct alist save; + + if ( p2->magic == MAGIC ) { + if ( ! (p2->end && *(p2->end) == ~MAGIC) ) + die("goddam: corrupted memory block %d in realloc()!\n", p2->index); + save.next = p2->next; + save.last = p2->last; + p2 = realloc(p2, sizeof(int) + sizeof(*p2) + size); + + if ( p2 ) { + p2->size = size; + p2->end = (int*)(size + (char*) (p2 + 1)); + *(p2->end) = ~MAGIC; + p2->next->last = p2; + p2->last->next = p2; + ++reallocs; + return p2+1; + } + else { + save.next->last = save.last; + save.last->next = save.next; + return 0; + } + } + return realloc(ptr, size); +} + + +void +adump() +{ + struct alist *p; + + + for ( p = list.next; p && (p != &list); p = p->next ) { + fprintf(stderr, "allocated: %d byte%s\n", p->size, (p->size==1) ? "" : "s"); + fprintf(stderr, " [%.*s]\n", p->size, (char*)(p+1)); + } + + if ( getenv("AMALLOC_STATISTICS") ) { + fprintf(stderr, "%d malloc%s\n", mallocs, (mallocs==1)?"":"s"); + fprintf(stderr, "%d realloc%s\n", reallocs, (reallocs==1)?"":"s"); + fprintf(stderr, "%d free%s\n", frees, (frees==1)?"":"s"); + } +} diff --git a/thirdparty/discount-2.2.6-patched/amalloc.h b/thirdparty/discount-2.2.6-patched/amalloc.h new file mode 100644 index 0000000..43ca985 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/amalloc.h @@ -0,0 +1,29 @@ +/* + * debugging malloc()/realloc()/calloc()/free() that attempts + * to keep track of just what's been allocated today. + */ +#ifndef AMALLOC_D +#define AMALLOC_D + +#include "config.h" + +#ifdef USE_AMALLOC + +extern void *amalloc(int); +extern void *acalloc(int,int); +extern void *arealloc(void*,int); +extern void afree(void*); +extern void adump(); + +#define malloc amalloc +#define calloc acalloc +#define realloc arealloc +#define free afree + +#else + +#define adump() (void)1 + +#endif + +#endif/*AMALLOC_D*/ diff --git a/thirdparty/discount-2.2.6-patched/basename.c b/thirdparty/discount-2.2.6-patched/basename.c new file mode 100644 index 0000000..237022a --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/basename.c @@ -0,0 +1,43 @@ +/* + * mkdio -- markdown front end input functions + * + * Copyright (C) 2007 David L Parsons. + * The redistribution terms are provided in the COPYRIGHT file that must + * be distributed with this source code. + */ +#include "config.h" +#include +#include +#include + +#include "mkdio.h" +#include "cstring.h" +#include "amalloc.h" + +static char * +e_basename(const char *string, const int size, void *context) +{ + char *ret; + char *base = (char*)context; + + if ( base && string && (*string == '/') && (ret=malloc(strlen(base)+size+2)) ) { + strcpy(ret, base); + strncat(ret, string, size); + return ret; + } + return 0; +} + +static void +e_free(char *string, void *context) +{ + if ( string ) free(string); +} + +void +mkd_basename(MMIOT *document, char *base) +{ + mkd_e_url(document, e_basename); + mkd_e_data(document, base); + mkd_e_free(document, e_free); +} diff --git a/thirdparty/discount-2.2.6-patched/cmake/CMakeLists.txt b/thirdparty/discount-2.2.6-patched/cmake/CMakeLists.txt new file mode 100644 index 0000000..15c8443 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/cmake/CMakeLists.txt @@ -0,0 +1,215 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(DISCOUNT C) + +get_filename_component(_ROOT "${CMAKE_CURRENT_LIST_DIR}" PATH) + +file(READ "${_ROOT}/VERSION" ${PROJECT_NAME}_VERSION) +string(STRIP "${${PROJECT_NAME}_VERSION}" ${PROJECT_NAME}_VERSION) + +set(${PROJECT_NAME}_WITH_TABSTOPS "4" CACHE STRING + "Set tabstops to N characters (default is 4)") +set(TABSTOP "${${PROJECT_NAME}_WITH_TABSTOPS}") + +set(${PROJECT_NAME}_MAKE_INSTALL ON CACHE BOOL + "Set to OFF to disable install rules (default is ON)") + +set(${PROJECT_NAME}_INSTALL_SAMPLES OFF CACHE BOOL + "Set to ON to install sample programs (default is OFF)") + +set(${PROJECT_NAME}_ONLY_LIBRARY OFF CACHE BOOL + "Set to ON to only build markdown library (default is OFF)") + +# Check headers +include(CheckIncludeFile) +check_include_file(libgen.h HAVE_LIBGEN_H) +check_include_file(pwd.h HAVE_PWD_H) +check_include_file(alloca.h HAVE_ALLOCA_H) +check_include_file(malloc.h HAVE_MALLOC_H) +check_include_file(sys/stat.h HAVE_STAT) + +# Types detection (from configure.inc: AC_SCALAR_TYPES ()) +include(CheckTypeSize) +check_type_size("unsigned long" SIZEOF_ULONG BUILTIN_TYPES_ONLY) +check_type_size("unsigned int" SIZEOF_UINT BUILTIN_TYPES_ONLY) +check_type_size("unsigned short" SIZEOF_USHORT BUILTIN_TYPES_ONLY) + +if(SIZEOF_ULONG EQUAL 4) + set(DWORD "unsigned long") +elseif(SIZEOF_UINT EQUAL 4) + set(DWORD "unsigned int") +else() + message(FATAL_ERROR "Could not detect DWORD type") +endif() + +if(SIZEOF_UINT EQUAL 2) + set(WORD "unsigned int") +elseif(SIZEOF_USHORT EQUAL 2) + set(WORD "unsigned short") +else() + message(FATAL_ERROR "Could not detect WORD type") +endif() + +set(BYTE "unsigned char") + +# Check symbols +include(CheckSymbolExists) +foreach(_symbol + bzero + strcasecmp _stricmp + strncasecmp _strnicmp) + string(TOUPPER ${_symbol} _SYMBOL) + check_symbol_exists(${_symbol} string.h HAVE_${_SYMBOL}) +endforeach() +check_symbol_exists(random stdlib.h HAVE_RANDOM) +check_symbol_exists(srandom stdlib.h HAVE_SRANDOM) +check_symbol_exists(getpwuid pwd.h HAVE_GETPWUID) +check_symbol_exists(basename libgen.h HAVE_BASENAME) +check_symbol_exists(fchdir unistd.h HAVE_FCHDIR) +if(HAVE_STAT) + check_symbol_exists(S_ISCHR sys/stat.h HAVE_S_ISCHR) + check_symbol_exists(S_ISFIFO sys/stat.h HAVE_S_ISFIFO) + check_symbol_exists(S_ISSOCK sys/stat.h HAVE_S_ISSOCK) +endif() + +if(NOT HAVE_BZERO) + set(DEFINE_BZERO "#define bzero(p, n) memset(p, 0, n)") +endif() + +if(NOT HAVE_STRCASECMP) + if(HAVE__STRICMP) + set(DEFINE_STRCASECMP "#define strcasecmp _stricmp") + else() + set(DEFINE_STRCASECMP "#error The symbol strcasecmp is not defined.") + endif() +endif() + +if(NOT HAVE_STRNCASECMP) + if(HAVE__STRNICMP) + set(DEFINE_STRNCASECMP "#define strncasecmp _strnicmp") + else() + set(DEFINE_STRNCASECMP "#error The symbol strncasecmp is not defined.") + endif() +endif() + +if(NOT HAVE_S_ISCHR OR NOT HAVE_S_ISFIFO OR NOT HAVE_S_ISSOCK) + set(HAVE_STAT "") +endif() + +configure_file(config.h.in + "${_ROOT}/config.h" + @ONLY) + +configure_file("${_ROOT}/version.c.in" + "${_ROOT}/version.c" + @ONLY) +set_property(SOURCE "${_ROOT}/version.c" APPEND PROPERTY COMPILE_DEFINITIONS + BRANCH="" + VERSION="${${PROJECT_NAME}_VERSION}") + +configure_file("${_ROOT}/mkdio.h.in" + "${_ROOT}/mkdio.h" + @ONLY) + +include_directories("${_ROOT}") + +add_executable(mktags + "${_ROOT}/mktags.c") + +add_custom_command(OUTPUT "${_ROOT}/blocktags" + COMMAND mktags > blocktags + WORKING_DIRECTORY "${_ROOT}") + +add_library(libmarkdown + "${_ROOT}/mkdio.c" + "${_ROOT}/markdown.c" + "${_ROOT}/dumptree.c" + "${_ROOT}/generate.c" + "${_ROOT}/resource.c" + "${_ROOT}/docheader.c" + "${_ROOT}/version.c" + "${_ROOT}/toc.c" + "${_ROOT}/css.c" + "${_ROOT}/xml.c" + "${_ROOT}/Csio.c" + "${_ROOT}/xmlpage.c" + "${_ROOT}/basename.c" + "${_ROOT}/emmatch.c" + "${_ROOT}/github_flavoured.c" + "${_ROOT}/setup.c" + "${_ROOT}/blocktags" "${_ROOT}/tags.c" + "${_ROOT}/html5.c" + "${_ROOT}/flags.c") + +if(NOT MSVC) + set_target_properties(libmarkdown PROPERTIES + OUTPUT_NAME markdown) +endif() + +if(NOT ${PROJECT_NAME}_ONLY_LIBRARY) + add_library(common OBJECT + "${_ROOT}/pgm_options.c" + "${_ROOT}/gethopt.c") + + add_executable(markdown + "${_ROOT}/main.c" + $) + + target_link_libraries(markdown PRIVATE libmarkdown) + + add_executable(mkd2html + "${_ROOT}/mkd2html.c" + $ + "${_ROOT}/notspecial.c") + + target_link_libraries(mkd2html PRIVATE libmarkdown) + + add_executable(makepage + "${_ROOT}/makepage.c" + $) + + target_link_libraries(makepage PRIVATE libmarkdown) +endif() + +if(${PROJECT_NAME}_MAKE_INSTALL) + string(TOLOWER ${PROJECT_NAME} _PACKAGE_NAME) + include(GNUInstallDirs) + if(NOT DEFINED CMAKE_INSTALL_CMAKEDIR) + set(CMAKE_INSTALL_CMAKEDIR + "${CMAKE_INSTALL_LIBDIR}/cmake/${_PACKAGE_NAME}" + CACHE STRING "CMake packages") + endif() + install(FILES "${_ROOT}/mkdio.h" + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") + target_include_directories(libmarkdown INTERFACE + $ + ) + set(_TARGETS libmarkdown markdown) + if(${PROJECT_NAME}_INSTALL_SAMPLES) + list(APPEND _TARGETS mkd2html makepage) + endif() + install(TARGETS ${_TARGETS} EXPORT ${_PACKAGE_NAME}-targets + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") + install(EXPORT ${_PACKAGE_NAME}-targets + NAMESPACE ${_PACKAGE_NAME}:: + DESTINATION "${CMAKE_INSTALL_CMAKEDIR}") + include(CMakePackageConfigHelpers) + write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/${_PACKAGE_NAME}-config-version.cmake" + VERSION ${${PROJECT_NAME}_VERSION} + COMPATIBILITY AnyNewerVersion + ) + configure_file("${CMAKE_CURRENT_LIST_DIR}/discount-config.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/${_PACKAGE_NAME}-config.cmake" + @ONLY) + install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/${_PACKAGE_NAME}-config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/${_PACKAGE_NAME}-config-version.cmake" + DESTINATION "${CMAKE_INSTALL_CMAKEDIR}") + unset(_TARGETS) + unset(_PACKAGE_NAME) +endif() + +unset(_ROOT) diff --git a/thirdparty/discount-2.2.6-patched/cmake/config.h.in b/thirdparty/discount-2.2.6-patched/cmake/config.h.in new file mode 100644 index 0000000..e630934 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/cmake/config.h.in @@ -0,0 +1,79 @@ +/* + * Pre-digested configuration header. + * Generated from cmake/config.h.in. + * Tested with MSVC, MinGW on Windows and with GCC on Linux. + * File prototype: msvc/config.h.vc. + */ + +#ifndef _CONFIG_D +#define _CONFIG_D 1 + +/* + * `discount` feature macros - we want them all! + */ +#ifndef WITH_ID_ANCHOR +#define WITH_ID_ANCHOR 1 +#endif +#ifndef WITH_FENCED_CODE +#define WITH_FENCED_CODE 1 +#endif +#ifndef WITH_GITHUB_TAGS +#define WITH_GITHUB_TAGS 1 +#endif +#ifndef USE_DISCOUNT_DL +#define USE_DISCOUNT_DL 1 +#endif +#ifndef USE_EXTRA_DL +#define USE_EXTRA_DL 1 +#endif + +#ifdef _MSC_VER + +/* + * The Visual C++ "C" compiler has a `__inline` keyword implemented + * in Visual Studio 2008 and later, see + * + */ +#if _MSC_VER >= 1500 /* VC 9.0, MSC_VER 15, Visual Studio 2008 */ +#define inline __inline +#else +#define inline +#endif /* _MSC_VER >= 1500 */ + +#endif /* _MSC_VER */ + +@DEFINE_BZERO@ +@DEFINE_STRCASECMP@ +@DEFINE_STRNCASECMP@ + +/* + * Beware of conflicts with , which typedef's these names. + */ +#ifndef WINVER +#define DWORD @DWORD@ +#define WORD @WORD@ +#define BYTE @BYTE@ +#endif + +#cmakedefine HAVE_PWD_H 1 +#cmakedefine HAVE_GETPWUID 1 + +#cmakedefine HAVE_LIBGEN_H 1 +#cmakedefine HAVE_BASENAME 1 + +#cmakedefine HAVE_RANDOM 1 +#cmakedefine HAVE_SRANDOM 1 + +#define INITRNG(x) srand((unsigned int)x) +#define COINTOSS() (rand()&1) + +#cmakedefine HAVE_FCHDIR 1 +#cmakedefine HAVE_ALLOCA_H 1 +#cmakedefine HAVE_MALLOC_H 1 +#cmakedefine HAVE_STAT 1 + +#define TABSTOP @TABSTOP@ + +#define DESTRUCTOR + +#endif /* _CONFIG_D */ diff --git a/thirdparty/discount-2.2.6-patched/cmake/discount-config.cmake.in b/thirdparty/discount-2.2.6-patched/cmake/discount-config.cmake.in new file mode 100644 index 0000000..3ead2cd --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/cmake/discount-config.cmake.in @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/@_PACKAGE_NAME@-targets.cmake") diff --git a/thirdparty/discount-2.2.6-patched/configure.inc b/thirdparty/discount-2.2.6-patched/configure.inc new file mode 100755 index 0000000..fd0c9ba --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/configure.inc @@ -0,0 +1,2014 @@ +# Copyright (c) 1999-2017 David Parsons. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. My name may not be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY DAVID PARSONS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DAVID +# PARSONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +# THE POSSIBILITY OF SUCH DAMAGE. +# + + +# +# this preamble code is executed when this file is sourced and it picks +# interesting things off the command line. +# +ac_default_path="/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin" + +ac_standard="--src=DIR where the source lives (.) +--prefix=DIR where to install the final product (/usr/local) +--execdir=DIR where to put executables (prefix/bin) +--sbindir=DIR where to put static executables (prefix/sbin) +--confdir=DIR where to put configuration information (/etc) +--libdir=DIR where to put libraries (prefix/lib) +--libexecdir=DIR where to put private executables +--mandir=DIR where to put manpages" + + +# remove files created by configure on abend +# +AC_EXIT() { + rm -f $__config_files + exit ${1:-1} +} + +__fail=AC_EXIT + + +if dirname B/A 2>/dev/null >/dev/null; then +__ac_dirname() { + dirname "$1" +} +else +__ac_dirname() { + echo "$1" | sed -e 's:/[^/]*$::' +} +fi + +__remove() { + if [ \( -x "$1" \) -a "$__MACOS_DSYM" ]; then + rm -rf "$1".dSYM + fi + rm -f "$@" +} + +ac_progname=$0 +ac_configure_command= +Q=\' +for x in "$@"; do + ac_configure_command="$ac_configure_command $Q$x$Q" +done +# ac_configure_command="$*" + +__d=`__ac_dirname "$ac_progname"` +if [ "$__d" = "$ac_progname" ]; then + AC_SRCDIR=`pwd` +else + AC_SRCDIR=`cd $__d;pwd` +fi + +__ac_dir() { + if test -d "$1"; then + (cd "$1";pwd) + else + echo "$1"; + fi +} + +# +# echo w/o newline +# +echononl() +{ + ${ac_echo:-echo} "${@}$ac_echo_nonl" +} + +# +# log something to the terminal and to a logfile. +# +LOG () { + echo "$@" + echo "$@" 1>&5 +} + +# +# log something to the terminal without a newline, and to a logfile with +# a newline +# +LOGN () { + echononl "$@" 1>&5 + echo "$@" +} + +# +# log something to the terminal +# +TLOG () { + echo "$@" 1>&5 +} + +# +# log something to the terminal, no newline +# +TLOGN () { + echononl "$@" 1>&5 +} + + +# +# AC_CONTINUE tells configure not to bomb if something fails, but to +# continue blithely along +# +AC_CONTINUE () { + __fail="return" +} + + +# +# generate a .o file from sources +# +__MAKEDOTO() { + AC_PROG_CC + + if $AC_CC -c -o ngc$$.o "$@" $LIBS 2>ngc$$.err; then + __remove ngc$$.o ngc$$.err + TLOG " (found)" + return 0 + fi + __remove ngc$$.o + TLOG " (not found)" + echo "test failed: command was $AC_CC -c -o ngc$$.o" "$@" $LIBS + echo "output:" + cat ngc$$.err + __remove ngc$$.err + echo "offending sources:" + for x in "$@"; do + echo "$x:" + cat $x + done + return 1 +} + + +# +# Emulate gnu autoconf's AC_CHECK_HEADERS() function +# +AC_CHECK_HEADERS () { + + AC_PROG_CPP + + for __hdr in "$@"; do + ( echo "/* AC_CHECK_HEADERS */" + echo "#include <${__hdr}>" ) > ngc$$.c + + LOGN "looking for header $__hdr" + + if $AC_CPP_FILTER ngc$$.c >/dev/null; then + AC_DEFINE 'HAVE_'`echo $__hdr | $AC_UPPERCASE | tr './' '_'` 1 + rc=0 + LOG " (found)" + else + rc=1 + LOG " (not found)" + fi + __remove ngc$$.c + done + # return code is only meaningful if one header is checked + return $rc +} + + +# +# emulate GNU autoconf's AC_CHECK_FUNCS function +# +AC_CHECK_FUNCS () { + AC_PROG_CC + + B=`echo "$1" | sed -e 's/(.*)//'` + + case "$B" in + "$1") F="$1()"; need_proto=1 ;; + *) F="$1" ; unset need_proto ;; + esac + + shift + __remove ngc$$.c + + while [ "$1" ]; do + echo "#include <$1>" >> ngc$$.c + shift + done + + if [ "$need_proto" ]; then + echo "void $F;" >> ngc$$.c + fi + + cat >> ngc$$.c << EOF +int main() +{ + + $F; +} +EOF + + LOGN "looking for the $B function" + + if $AC_CC $AC_CFLAGS $AC_LDFLAGS -o ngc$$ ngc$$.c $LIBS; then + AC_DEFINE `echo ${2:-HAVE_$B} | $AC_UPPERCASE` 1 + TLOG " (found)" + rc=0 + else + echo "offending command was:" + cat ngc$$.c + echo "$AC_CC $AC_CFLAGS $AC_LDFLAGS -o ngc$$ ngc$$.c $LIBS" + TLOG " (not found)" + rc=1 + fi + __remove ngc$$ ngc$$.c + return $rc +} + + +# +# check to see if some structure exists +# +# usage: AC_CHECK_STRUCT structure {include ...} +# +AC_CHECK_STRUCT () { + struct=$1 + shift + + __remove ngc$$.c + + for include in $*; do + echo "#include <$include>" >> ngc$$.c + done + + cat >> ngc$$.c << EOF +int main() +{ + struct $struct foo; +} +EOF + + LOGN "looking for struct $struct" + + if __MAKEDOTO ngc$$.c; then + AC_DEFINE HAVE_STRUCT_`echo ${struct} | $AC_UPPERCASE` + rc=0 + else + rc=1 + fi + __remove ngc$$.c + return $rc +} + + +# +# check to see if some type exists +# +# usage: AC_CHECK_TYPE type {include ...} +# +AC_CHECK_TYPE () { + type=$1 + shift + + __remove ngc$$.c + + for include in $*; do + echo "#include <$include>" >> ngc$$.c + done + + cat >> ngc$$.c << EOF +int main() +{ + $type foo; +} +EOF + + LOGN "looking for $type type" + + if __MAKEDOTO ngc$$.c; then + AC_DEFINE HAVE_`echo ${type} | $AC_UPPERCASE` + rc=0 + else + rc=1 + fi + __remove ngc$$.c + return $rc +} + + +# +# check to see if some structure contains a field +# +# usage: AC_CHECK_FIELD structure field {include ...} +# +AC_CHECK_FIELD () { + + struct=$1 + field=$2 + shift 2 + + __remove ngc$$.c + + for include in $*;do + echo "#include <$include>" >> ngc$$.c + done + + cat >> ngc$$.c << EOF +int main() +{ + struct $struct foo; + + foo.$field; +} +EOF + + LOGN "checking that struct $struct has a $field field" + + if __MAKEDOTO ngc$$.c; then + # HAVE_STRUCT_ is for Gnu configure compatability + AC_DEFINE HAVE_STRUCT_`echo ${struct}_$field | $AC_UPPERCASE` + rc=0 + else + rc=1 + fi + __remove ngc$$.c + return $rc +} + + +# +# check that the C compiler works +# +AC_PROG_CC () { + test "$AC_CC" && return 0 + + cat > ngc$$.c << \EOF +extern void say(void*); +int main() +{ + say("hello, sailor"); +} +EOF + cat > ngf$$.c << \EOF +#include +void say(char* message) +{ + puts(message); +} +EOF + + TLOGN "checking the C compiler" + + unset AC_CFLAGS AC_LDFLAGS __MACOS_DSYM + + if [ "$CC" ] ; then + AC_CC="$CC" + elif [ "$WITH_PATH" ]; then + AC_CC=`acLookFor cc` + elif [ "`acLookFor cc`" ]; then + # don't specify the full path if the user is looking in their $PATH + # for a C compiler. + AC_CC=cc + fi + + # finally check for POSIX c89 + test "$AC_CC" || AC_CC=`acLookFor c89` + + if [ ! "$AC_CC" ]; then + TLOG " (no C compiler found)" + $__fail 1 + fi + echo "checking out the C compiler" + + $AC_CC -o ngc$$ ngc$$.c ngf$$.c + status=$? + echo "compile status = $status" + + TLOGN " ($AC_CC)" + + if [ $status -eq 0 ]; then + if $AC_CC -x c /dev/null -dM -E 2>&1 | grep '__clang__' >/dev/null; then + TLOG " yuck, you're using clang" + IS_CLANG=T + IS_BROKEN_CC=T + elif $AC_CC -v 2>&1 | grep 'gcc version' >/dev/null; then + TLOG " oh ick, it looks like gcc" + IS_GCC=T + IS_BROKEN_CC=T + else + TLOG " ok" + fi + + # check that the CFLAGS and LDFLAGS aren't bogus + + unset AC_CFLAGS AC_LDFLAGS + + if [ "$CFLAGS" ]; then + test "$CFLAGS" && echo "validating CFLAGS=${CFLAGS}" + if $AC_CC $CFLAGS -c -o ngc$$.o ngc$$.c ; then + AC_CFLAGS=${CFLAGS:-"-g"} + test "$CFLAGS" && TLOG "CFLAGS=\"${CFLAGS}\" are okay" + elif [ "$CFLAGS" ]; then + TLOG "ignoring bogus CFLAGS=\"${CFLAGS}\"" + fi + else + AC_CFLAGS=-g + fi + if [ "$LDFLAGS" ]; then + test "$LDFLAGS" && echo "validating LDFLAGS=${LDFLAGS}" + if $AC_CC $CFLAGS $LDFLAGS -o ngc$$ ngc$$.c ngf$$.c; then + AC_LDFLAGS=${LDFLAGS:-"-g"} + test "$LDFLAGS" && TLOG "LDFLAGS=\"${LDFLAGS}\" are okay" + elif [ "$LDFLAGS" ]; then + TLOG "ignoring bogus LDFLAGS=\"${LDFLAGS}\"" + fi + else + AC_LDFLAGS=${CFLAGS:-"-g"} + fi + + # macos-specific(?) test for .dSYM resource directories + $AC_CC $AC_CFLAGS $AC_LDFLAGS -o ngc$$ ngc$$.c ngf$$.c + ls -dl ngc$$* + test -d ngc$$.dSYM && __MACOS_DSYM=1 + + else + AC_FAIL " does not compile code properly" + fi + + __remove ngc$$ ngc$$.c ngc$$.o ngf$$.o ngf$$.c + + return $status +} + + +# +# acLookFor actually looks for a program, without setting anything. +# +acLookFor () { + path=${AC_PATH:-$ac_default_path} + case "X$1" in + X-[rx]) __mode=$1 + shift + ;; + *) __mode=-x + ;; + esac + oldifs="$IFS" + for program in $*; do + case "$program" in + /*) if [ $__mode $program -a -f $program ]; then + echo $program + break 2 + fi ;; + *) + IFS=":" + for x in $path; do + if [ $__mode $x/$program -a -f $x/$program ]; then + echo $x/$program + break 3 + fi + done ;; + esac + done + IFS="$oldifs" + unset __mode +} + + +# +# check that a program exists and set its path +# +MF_PATH_INCLUDE () { + SYM=$1; shift + + case X$1 in + X-[rx]) __mode=$1 + shift + ;; + *) unset __mode + ;; + esac + + TLOGN "looking for $1" + + DEST=`acLookFor $__mode $*` + + __sym=`echo "$SYM" | $AC_UPPERCASE` + if [ "$DEST" ]; then + TLOG " ($DEST)" + echo "$1 is $DEST" + AC_MAK $SYM + AC_DEFINE PATH_$__sym \""$DEST"\" + AC_SUB $__sym "$DEST" + eval CF_$SYM=$DEST + return 0 + else + #AC_SUB $__sym '' + echo "$1 is not found" + TLOG " (not found)" + return 1 + fi +} + +# +# AC_INIT starts the ball rolling +# +# After AC_INIT, fd's 1 and 2 point to config.log +# and fd 5 points to what used to be fd 1 +# +AC_INIT () { + __config_files="config.cmd config.sub config.h config.mak" + rm -f $__config_files + __cwd=`pwd` + exec 5>&1 1>"$__cwd"/config.log 2>&1 + AC_CONFIGURE_FOR=__AC_`echo $1 | sed -e 's/\..$//' | $AC_UPPERCASE | tr ' ' '_'`_D + + # check to see whether to use echo -n or echo ...\c + # + echo -n hello > $$ + echo world >> $$ + if grep "helloworld" $$ >/dev/null; then + ac_echo="echo -n" + echo "[echo -n] works" + else + ac_echo="echo" + echo 'hello\c' > $$ + echo 'world' >> $$ + if grep "helloworld" $$ >/dev/null; then + ac_echo_nonl='\c' + echo "[echo ...\\c] works" + fi + fi + rm -f $$ + + LOG "Configuring for [$1]" + _MK_LIBRARIAN=Y + + cat > "$__cwd"/config.h << EOF +/* + * configuration for $1${2:+" ($2)"}, generated `date` + * by ${LOGNAME:-`whoami`}@`hostname` + */ +#ifndef $AC_CONFIGURE_FOR +#define $AC_CONFIGURE_FOR 1 + + +EOF + + unset __share + if [ -d $AC_PREFIX/share/man ]; then + for t in 1 2 3 4 5 6 7 8 9; do + if [ -d $AC_PREFIX/share/man/man$t ]; then + __share=/share + elif [ -d $AC_PREFIX/share/man/cat$t ]; then + __share=/share + fi + done + else + __share= + fi + + if [ -d $AC_PREFIX/libexec ]; then + __libexec=libexec + else + __libexec=lib + fi + + + AC_PREFIX=${AC_PREFIX:-/usr/local} + AC_EXECDIR=${AC_EXECDIR:-$AC_PREFIX/bin} + AC_SBINDIR=${AC_SBINDIR:-$AC_PREFIX/sbin} + AC_LIBDIR=${AC_LIBDIR:-$AC_PREFIX/lib} + AC_MANDIR=${AC_MANDIR:-$AC_PREFIX$__share/man} + AC_LIBEXEC=${AC_LIBEXEC:-$AC_PREFIX/$__libexec} + AC_CONFDIR=${AC_CONFDIR:-/etc} + + AC_PATH=${WITH_PATH:-$PATH} + AC_PROG_CPP + AC_PROG_INSTALL + + ac_os=`uname -s` + _os=`echo $ac_os | $AC_UPPERCASE | sed -e 's/[^A-Z0-9_].*$//'` + AC_DEFINE OS_$_os 1 + eval OS_${_os}=1 + unset _os +} + + +# +# AC_LIBRARY checks to see if a given library exists and contains the +# given function. +# usage: AC_LIBRARY function library [alternate ...] +# +AC_LIBRARY() { + local SRC=$1 + shift + + # first see if the function can be found in any of the + # current libraries + LOGN "Looking for the ${SRC} function" + if AC_QUIET AC_CHECK_FUNCS $SRC; then + AC_DEFINE HAVE_LIB`echo $1 | sed -e 's/-l//' | $AC_UPPERCASE` + LOG "(found)" + return 0 + fi + + # then search through the supplied list of libraries + local __libs="$LIBS" + for x in "$@"; do + LIBS="$__libs $x" + if AC_QUIET AC_CHECK_FUNCS $SRC; then + AC_DEFINE HAVE_LIB`echo $1 | sed -e 's/-l//' | $AC_UPPERCASE` + LOG " (in $x)" + return 0 + fi + done + LOG " (not found)" + LIBS="$__libs" # reset LIBS if we couldn't find anything + return 1 +} + + +# +# AC_PROG_LEX checks to see if LEX exists, and if it's lex or flex. +# +AC_PROG_LEX() { + TLOGN "looking for lex " + + DEST=`acLookFor lex` + if [ "$DEST" ]; then + AC_MAK LEX + AC_DEFINE PATH_LEX \"$DEST\" + AC_SUB 'LEX' "$DEST" + echo "lex is $DEST" + else + DEST=`acLookFor flex` + if [ "$DEST" ]; then + AC_MAK FLEX + AC_DEFINE 'LEX' \"$DEST\" + AC_SUB 'LEX', "$DEST" + echo "lex is $DEST" + else + AC_SUB LEX '' + echo "neither lex or flex found" + TLOG " (not found)" + return 1 + fi + fi + TLOG "($DEST)" + + if AC_LIBRARY yywrap -ll -lfl; then + return 0 + else + TLOG "(no lex library found)" + return 1 + fi +} + + +# +# AC_PROG_YACC checks to see if YACC exists, and if it's bison or +# not. +# +AC_PROG_YACC () { + + TLOGN "looking for yacc " + + DEST=`acLookFor yacc` + if [ "$DEST" ]; then + AC_MAK YACC + AC_DEFINE PATH_YACC \"$DEST\" + AC_SUB 'YACC' "$DEST" + TLOG "($DEST)" + echo "yacc is $DEST" + else + DEST=`acLookFor bison` + if [ "$DEST" ]; then + AC_MAK BISON + AC_DEFINE 'YACC' \"$DEST\" + AC_SUB 'YACC' "$DEST -y" + echo "yacc is $DEST -y" + TLOG "($DEST -y)" + else + AC_SUB 'YACC' '' + echo "neither yacc or bison found" + TLOG " (not found)" + return 1 + fi + fi + return 0 +} + + +# +# AC_PROG looks for a program +# +AC_PROG () { + PN=`basename $1 | $AC_UPPERCASE | tr -dc $AC_UPPER_PAT` + + if set | grep -v PROG_$PN >/dev/null; then + TLOGN "looking for $1" + + __pgm=`eval echo \\$$PN` + if [ "$__pgm" ]; then + TLOGN " (defined as $__pgm)" + DEST=`acLookFor $__pgm` + else + DEST=`acLookFor $1` + fi + + if [ "$DEST" ]; then + eval PROG_$PN="$DEST" + AC_SUB $PN $DEST + TLOG " ($DEST)" + return 0 + fi + AC_SUB $PN true + TLOG " (not found)" + return 1 + fi +} + + +# +# AC_PROG_LN_S checks to see if ln exists, and, if so, if ln -s works +# +AC_PROG_LN_S () { + test "$PROG_FIND" || AC_PROG_FIND + + test "$PROG_LN_S" && return 0 + + TLOGN "looking for \"ln -s\"" + DEST=`acLookFor ln` + + if [ "$DEST" ]; then + rm -f /tmp/b$$ + $DEST -s /tmp/a$$ /tmp/b$$ + if [ "`$PROG_FIND /tmp/b$$ -type l -print`" ]; then + TLOG " ($DEST)" + echo "$DEST exists, and ln -s works" + PROG_LN_S="$DEST -s" + AC_SUB 'LN_S' "$DEST -s" + rm -f /tmp/b$$ + else + AC_SUB 'LN_S' '' + TLOG " ($DEST exists, but -s does not seem to work)" + echo "$DEST exists, but ln -s doesn't seem to work" + rm -f /tmp/b$$ + return 1 + fi + else + AC_SUB 'LN_S' '' + echo "ln not found" + TLOG " (not found)" + return 1 + fi +} + + +# +# AC_PROG_FIND looks for the find program and sets the FIND environment +# variable +# +AC_PROG_FIND () { + if test -z "$PROG_FIND"; then + MF_PATH_INCLUDE FIND find + rc=$? + PROG_FIND=$CF_FIND + return $rc + fi + return 0 +} + + +# +# AC_PROG_AWK looks for the awk program and sets the AWK environment +# variable +# +AC_PROG_AWK () { + if test -z "$AC_AWK_PROG"; then + MF_PATH_INCLUDE AWK awk + rc=$? + AC_AWK_PROG=$DEST + return $rc + fi + return 0 +} + + +# +# AC_PROG_SED looks for the sed program and sets the SED environment +# variable +# +AC_PROG_SED () { + if test -z "$AC_SED_PROG"; then + MF_PATH_INCLUDE SED sed + rc=$? + AC_SED_PROG=$DEST + return $rc + fi + return 0 +} + + +# +# AC_HEADER_SYS_WAIT looks for sys/wait.h +# +AC_HEADER_SYS_WAIT () { + AC_CHECK_HEADERS sys/wait.h || return 1 +} + +# +# AC_TYPE_PID_T checks to see if the pid_t type exists +# +AC_TYPE_PID_T () { + + AC_CHECK_TYPE pid_t sys/types.h + return $? +} + + +# +# check for the existence of __attribute__((__noreturn__)) +# +AC_CHECK_NORETURN() { + AC_PROG_CC + AC_CHECK_ATTRIBUTE noreturn +} + +AC_CHECK_ATTRIBUTE() { + local __what=`echo $1 | tr 'a-z' 'A-Z'` + + echo "extern int thing __attribute__((__"$1"__));" > ngc$$.c + + TLOGN "Checking __attribute__((__${1}__)) " + if $AC_CC -c ngc$$.c; then + TLOG "(yes)" + AC_DEFINE $__what ' __attribute__((__'$1'__))' + else + TLOG "(no)" + AC_DEFINE $__what '/**/' + fi + rm -f ngc$$.o ngc$$.c +} + + +# +# AC_C_CONST checks to see if the compiler supports the const keyword +# +AC_C_CONST () { + cat > ngc$$.c << EOF +const char me=1; +EOF + LOGN "checking for \"const\" keyword" + + if __MAKEDOTO ngc$$.c; then + rc=0 + else + AC_DEFINE 'const' '/**/' + rc=1 + fi + __remove ngc$$.c + return $rc +} + + +# +# AC_C_VOLATILE checks to see if the compiler supports the volatile keyword +# +AC_C_VOLATILE () { + echo 'f() { volatile char me=1; }' > ngc$$.c + LOGN "checking for \"volatile\" keyword" + + if __MAKEDOTO ngc$$.c; then + rc=0 + else + AC_DEFINE 'volatile' '/**/' + rc=1 + fi + __remove ngc$$.c + return $rc +} + + +# +# AC_C_INLINE checks to see if compiler supports the inline keyword +# +AC_C_INLINE() { + echo 'inline int foo() { return 1; }' > ngc$$.c + LOGN 'Checking for "inline" keyword' + if __MAKEDOTO ngc$$.c; then + rc=0 + else + AC_DEFINE inline '/**/' + rc=1 + fi + __remove ngc$$.c + return $rc +} + + +# +# AC_WHATIS tries to print out the value of a macro +# +AC_WHATIS() { + MODE=$1 # what it should be (string,int,char) + shift + MACRO=$1 # the macro name + shift + + case "$MODE" in + string) + __fmt='%s' ;; + int) + __fmt='%d' ;; + char) + __fmt='%c' ;; + *) LOG "AC_WHATIS $MODE $MACRO -- mode isn't string, int, or char" + return 1 ;; + esac + + ( echo '#include ' + + for x in "$@"; do + echo "#include <${x}>" + done + + echo "main() { printf(\"${MACRO}=\\\"${__fmt}\\\"\\n\", ${MACRO}); }" ) > _ngc$$.c + + if $AC_CC $AC_CFLAGS -o _ngc$$ _ngc$$.c; then + ./_ngc$$ + rc=0 + else + rc=1 + fi + rm -f _ngc$$ _ngc$$.c + return $rc +} + + +# +# AC_SCALAR_TYPES checks to see if the compiler can generate 2 and 4 byte ints. +# +AC_SCALAR_TYPES () { + + rc=1 + LOGN "defining WORD & DWORD scalar types" + +# if AC_QUIET AC_CHECK_HEADERS WinDef.h; then +# # windows machine; BYTE, WORD, DWORD already +# # defined +# echo "#include " >> "$__cwd"/config.h +# TLOG " (defined in WinDef.h)" +# return 0 +# fi + + # try first to define them with the (allegedly) standard + # unsigned scalar types + # + unset __i; + if AC_QUIET AC_CHECK_HEADERS inttypes.h; then + __i=inttypes.h + elif AC_QUIET AC_CHECK_HEADERS stdint.h; then + __i=stdint.h + fi + if AC_QUIET AC_CHECK_TYPE uint32_t $__i && \ + AC_QUIET AC_CHECK_TYPE uint16_t $__i && \ + AC_QUIET AC_CHECK_TYPE uint8_t $__i; then + + while [ $# -gt 0 ]; do + case "$1" in + sub) ( if [ -z "$__i" ] ; then + echo "s:@SCALAR_HEADER_INCLUDE@::g" + else + echo "s:@SCALAR_HEADER_INCLUDE@:#include <$__i>:g" + fi + echo "s:@DWORD@:uint32_t:g" + echo "s:@WORD@:uint16_t:g" + echo "s:@BYTE@:uint8_t:g" ) >> "$__cwd"/config.sub + ;; + *) ( echo "#define DWORD uint32_t" + echo "#define WORD uint16_t" + echo "#define BYTE uint8_t" ) >> "$__cwd"/config.h + ;; + esac + shift + done + TLOG " (using standard types ${__i:+in <$__i>})" + return 0 + fi + + # and if that fails do a brute-force program that does sizeof()ication + # to figure things out + # + cat > ngc$$.c << EOF +#include +#include + +int pound_define = 1; + +void +say(char *w, char *v) +{ + printf(pound_define ? "#define %s %s\n" + : "s:@%s@:%s:g\n", w, v); +} + +int +main(argc, argv) +char **argv; +{ + unsigned long v_long; + unsigned int v_int; + unsigned short v_short; + + if ( argc > 1 && strcmp(argv[1], "sub") == 0 ) + pound_define = 0; + + if (sizeof v_long == 4) + say("DWORD", "unsigned long"); + else if (sizeof v_int == 4) + say("DWORD", "unsigned int"); + else + return 1; + + if (sizeof v_int == 2) + say("WORD", "unsigned int"); + else if (sizeof v_short == 2) + say("WORD", "unsigned short"); + else + return 2; + + say("BYTE", "unsigned char"); + fprintf(stderr, "OK!"); + return 0; +} +EOF + + if $AC_CC ngc$$.c -o ngc$$; then + if [ $# -gt 0 ]; then + while [ "$1" ]; do + case "$1" in + sub)if ./ngc$$ sub >> "$__cwd"/config.sub; then + echo "s:@SCALAR_HEADER_INCLUDE@::g" >> "$__cwd"/config.sub + rc=0 + fi;; + *) if ./ngc$$ >> "$__cwd"/config.h; then + rc=0 + fi ;; + esac + shift + done + elif ./ngc$$ >> "$__cwd"/config.h; then + rc=0 + fi + if [ "$rc" != 0 ]; then + if ./ngc$$ >> "$__cwd"/config.h; then + rc=0 + fi + fi + fi + __remove ngc$$ ngc$$.c + case "$rc" in + 0) TLOG "" ;; + *) AC_FAIL " ** FAILED **" ;; + esac + return $rc +} + + +# +# AC_OUTPUT generates makefiles from makefile.in's +# +AC_OUTPUT () { + + cd "$__cwd" + AC_SUB 'LIBS' "$LIBS" + + if test "$__MACOS_DSYM"; then + # deal with extra OSX droppings, if they exist + AC_SUB 'DISTCLEAN' 'rm -fr' + AC_SUB 'GENERATED_FILES' "*.dSYM $*" + else + AC_SUB 'DISTCLEAN' 'rm -f' + AC_SUB 'GENERATED_FILES' "$*" + fi + + AC_SUB 'CC' "$AC_CC" + AC_SUB 'CFLAGS' "$AC_CFLAGS" + AC_SUB 'LDFLAGS' "$AC_LDFLAGS" + AC_SUB 'CPPFLAGS' "$CPPFLAGS" + AC_SUB 'srcdir' "$AC_SRCDIR" + AC_SUB 'prefix' "$AC_PREFIX" + AC_SUB 'exedir' "$AC_EXECDIR" + AC_SUB 'bindir' "$AC_EXECDIR" + AC_SUB 'sbindir' "$AC_SBINDIR" + AC_SUB 'libdir' "$AC_LIBDIR" + AC_SUB 'libexec' "$AC_LIBEXEC" + AC_SUB 'confdir' "$AC_CONFDIR" + AC_SUB 'mandir' "$AC_MANDIR" + + if [ "$_MK_LIBRARIAN" ] && echo "$__config_files" | grep -v librarian.sh >/dev/null; then + # write a librarian that works with static libraries + if AC_PROG_LN_S ; then + __dolink=$PROG_LN_S + elif AC_PROG ln; then + __dolink=$PROG_LN + elif AC_PROG cp; then + __dolink=$PROG_CP + else + __dolink=: + fi + AC_PROG ar + AC_PROG ranlib + AC_SUB LD_LIBRARY_PATH HERE + __config_files="$__config_files librarian.sh" + cat > librarian.sh << EOF +#! /bin/sh +# +# Build static libraries, hiding (some) ickiness from the makefile + +ACTION=\$1; shift +LIBRARY=\$1; shift +VERSION=\$1; shift + +case "\$ACTION" in +make) # first strip out any libraries that might + # be passed in on the object line + objs= + for x in "\$@"; do + case "\$x" in + -*) ;; + *) objs="\$objs \$x" ;; + esac + done + ${PROG_AR} crv \$LIBRARY.a \$objs + ${PROG_RANLIB} \$LIBRARY.a + rm -f \$LIBRARY + ${__dolink} \$LIBRARY.a \$LIBRARY + ;; +files) echo "\${LIBRARY}.a" + ;; +install)$PROG_INSTALL -m 644 \${LIBRARY}.a \$1 + ;; +esac +EOF + chmod +x librarian.sh + fi + + AC_SUB 'CONFIGURE_FILES' "$__config_files config.log" + + if [ -r config.sub ]; then + test "$AC_SED_PROG" || AC_PROG_SED + test "$AC_SED_PROG" || return 1 + + echo >> config.h + echo "#endif/* ${AC_CONFIGURE_FOR} */" >> config.h + + rm -f config.cmd + Q=\' + cat - > config.cmd << EOF +#! /bin/sh +${CC:+CC=${Q}${CC}${Q}} ${CFLAGS:+CFLAGS=${Q}${CFLAGS}${Q}} ${LDFLAGS:+LDFLAGS=${Q}${LDFLAGS}${Q}} $ac_progname $ac_configure_command +EOF + chmod +x config.cmd + + __d=$AC_SRCDIR + for makefile in $*;do + if test -r "$__d/${makefile}.in"; then + LOG "generating $makefile" + ./config.md `__ac_dirname ./$makefile` 2>/dev/null + $AC_SED_PROG -f config.sub < "$__d/${makefile}.in" > $makefile + __config_files="$__config_files $makefile" + else + LOG "WARNING: ${makefile}.in does not exist!" + fi + done + unset __d + + else + echo + fi +} + +# +# AC_CHECK_FLOCK checks to see if flock() exists and if the LOCK_NB argument +# works properly. +# +AC_CHECK_FLOCK() { + + AC_CHECK_HEADERS sys/types.h sys/file.h fcntl.h + + cat << EOF > ngc$$.c +#include +#include +#include +#include + +int main() +{ + int x = open("ngc$$.c", O_RDWR, 0666); + int y = open("ngc$$.c", O_RDWR, 0666); + + alarm(1); + if (flock(x, LOCK_EX) != 0) + exit(1); + if (flock(y, LOCK_EX|LOCK_NB) == 0) + exit(1); + exit(0); +} +EOF + + LOGN "checking flock() sanity" + HAS_FLOCK=0 + if $AC_CC -o ngc$$ ngc$$.c ; then + if ./ngc$$ ; then + LOG " (good)" + HAS_FLOCK=1 + AC_DEFINE HAS_FLOCK + else + LOG " (bad)" + fi + else + LOG " (not found)" + fi + + __remove ngc$$ ngc$$.c + + case "$HAS_FLOCK" in + 0) return 1 ;; + *) return 0 ;; + esac +} + + +# +# AC_CHECK_RESOLVER finds out whether the berkeley resolver is +# present on this system. +# +AC_CHECK_RESOLVER () { + AC_PROG_CC + + TLOGN "looking for the Berkeley resolver library" + + __ACR_rc=0 + + cat > ngc$$.c << EOF +#include +#include +#include +#include + +int main() +{ + char bfr[256]; + + res_init(); + res_query("hello", C_IN, T_A, bfr, sizeof bfr); +} +EOF + + if $AC_CC -o ngc$$ ngc$$.c; then + TLOG " (found)" + elif $AC_CC -o ngc$$ ngc$$.c -lresolv; then + TLOG " (yes, with -lresolv)" + LIBS="$LIBS -lresolv" + elif $AC_CC -DBIND_8_COMPAT -o ngc$$ ngc$$.c; then + TLOG " (yes, with BIND_8_COMPAT)" + AC_DEFINE BIND_8_COMPAT 1 + elif $AC_CC -DBIND_8_COMPAT -o ngc$$ ngc$$.c -lresolv; then + TLOG " (yes, with BIND_8_COMPAT & -lresolv)" + LIBS="$LIBS -lresolv" + AC_DEFINE BIND_8_COMPAT 1 + else + TLOG " (not found)" + __ACR_rc=1 + fi + __remove ngc$$ ngc$$.c + return $__ACR_rc +} + + +# +# AC_CHECK_ALLOCA looks for alloca +# +AC_CHECK_ALLOCA () { + + AC_PROG_CC + AC_CHECK_HEADERS stdlib.h + + cat - > ngc$$.c << EOF +#if T +# include +#else +# include +#endif +int main() +{ + alloca(10); +} +EOF + + LOGN "looking for the alloca function" + if $AC_CC -DT ngc$$.c -o ngc$$; then + AC_DEFINE 'HAVE_ALLOCA_H' 1 + status=0 + TLOG " (found in alloca.h)" + elif $AC_CC ngc$$.c -o ngc$$; then + TLOG " (found)" + status=0 + else + TLOG " (not found)" + status=1 + fi + __remove ngc$$ ngc$$.c + return $status + +} + + +# +# AC_CHECK_BASENAME looks for a copy of basename that does NOT use +# a local static buffer to hold results in. +# +AC_CHECK_BASENAME() { + TLOGN "looking for a reentrant basename " + + cat > ngc$$.c << EOF +#include + +extern char *basename(char*); + +int main() +{ + char *a = basename("/a/test"); + char *b = basename("/a/nother"); + + return (strcmp(a,b) != 0) ? 0 : 1; + +} +EOF + + if $AC_CC -o ngc$$ ngc$$.c $LIBS; then + if ./ngc$$; then + TLOG "(found)" + AC_DEFINE 'HAVE_BASENAME' 1 + AC_CHECK_HEADERS libgen.h + else + TLOG "(broken)" + fi + else + TLOG "(not found)" + fi + __remove ngc$$ ngc$$.c +} + +# +# AC_COMPILER_PIC checks for the compiler option to produce position independent +# code. At the moment we assume gcc semantics. +# +AC_COMPILER_PIC () { + AC_PROG_CC + + LOGN "checking for C compiler option to produce PIC " + echo "int some_variable = 0;" > ngc$$.c + + if $AC_CC -c -fPIC -o ngc$$ ngc$$.c $LIBS; then + AC_CFLAGS="$AC_CFLAGS -fPIC" + LOG "(-fPIC)" + __rc=0 + else + LOG "(none)" + __rc=1 + fi + __remove ngc$$ ngc$$.c + return $__rc +} + + +# generate a macosX librarian +# +__AC_MACOS_LIBRARIAN() { + AC_SUB LD_LIBRARY_PATH DYLD_LIBRARY_PATH + __config_files="$__config_files librarian.sh" + cat > librarian.sh << EOF +#! /bin/sh +# +# Build MacOS shared libraries, hiding (some) ickiness from the makefile + +ACTION=\$1; shift +LIBRARY=\$1; shift + +eval \`awk -F. '{ printf "MAJOR=%d\n", \$1; + printf "VERSION=%d.%d.%d\n", \$1, \$2, \$3; }' \$1\` +shift + +LIBNAME=\$LIBRARY.dylib +FULLNAME=\$LIBNAME + +case "\$ACTION" in +make) FLAGS="$AC_CFLAGS -dynamiclib" + VFLAGS="-current_version \$VERSION -compatibility_version \$MAJOR" + + rm -f \$LIBRARY + if $AC_CC \$FLAGS \$VFLAGS -o \$FULLNAME "\$@"; then + $PROG_LN_S \$FULLNAME \$LIBRARY + fi + ;; +files) echo "\$FULLNAME" + ;; +install)$PROG_INSTALL -c \$FULLNAME "\$1" + ;; +esac +EOF + chmod +x librarian.sh +} + + +# Generate an ELF librarian (for Linux, freebsd) +# +__AC_ELF_LIBRARIAN() { + AC_SUB LD_LIBRARY_PATH LD_LIBRARY_PATH + # -Wl option probably works, but be paranoid anyway + _VFLAGS="$AC_PICFLAG -shared -Wl,-soname,ngc$$.so.1" + if $AC_CC $_VFLAGS -o ngc$$.so ngc$$.c; then + USE_SONAME=T + fi + LDCONFIG=`AC_PATH=/sbin:/usr/sbin:/usr/local/sbin acLookFor ldconfig` + + if [ "$LDCONFIG" ]; then + case `uname -s 2>/dev/null | $AC_UPPERCASE` in + *BSD) # *BSD ldconfig, when passed a directory, blows away the + # ld.so hints file and replaces it with one that's just + # the files in the library. It needs a `-m` flag to + # tell it to merge the new entries with the old + LDCONFIG="$LDCONFIG -m" ;; + esac + fi + + __config_files="$__config_files librarian.sh" + cat > librarian.sh << EOF +#! /bin/sh +# +# Build ELF shared libraries, hiding (some) ickiness from the makefile + +ACTION=\$1; shift +LIBRARY=\$1; shift + +eval \`awk -F. '{ printf "MAJOR=%d\n", \$1; + printf "VERSION=%d.%d.%d\n", \$1, \$2, \$3; }' \$1\` +shift + +LIBNAME=\$LIBRARY.so +FULLNAME=\$LIBNAME.\$VERSION + +case "\$ACTION" in +make) FLAGS="$AC_CFLAGS -shared" + unset VFLAGS + test "$USE_SONAME" && VFLAGS="-Wl,-soname,\$LIBNAME.\$MAJOR" + + rm -f \$LIBRARY \$LIBNAME \$LIBNAME.\$MAJOR + if $AC_CC \$FLAGS \$VFLAGS -o \$FULLNAME "\$@"; then + $PROG_LN_S \$FULLNAME \$LIBRARY + $PROG_LN_S \$FULLNAME \$LIBNAME + $PROG_LN_S \$FULLNAME \$LIBNAME.\$MAJOR + fi + ;; +files) echo "\$FULLNAME" "\$LIBNAME" "\$LIBNAME.\$MAJOR" + ;; +install)$PROG_INSTALL -c \$FULLNAME "\$1" + $PROG_LN_S -f \$FULLNAME \$1/\$LIBNAME.\$MAJOR + $PROG_LN_S -f \$FULLNAME \$1/\$LIBNAME +EOF + test "$LDCONFIG" && echo ' '$LDCONFIG '"$1"' >> librarian.sh + cat >> librarian.sh << EOF + ;; +esac +EOF + chmod +x librarian.sh +} + + +# +# AC_CC_SHLIBS checks if the C compiler can produce shared libraries +# and if it can writes a librarian that handles those libraries for us. +# +AC_CC_SHLIBS () { + AC_PROG_CC || AC_FAIL "Need a C compiler to build shared libraries" + AC_PROG_LN_S || AC_FAIL "Need to be able to make symbolic links for shared libraries" + AC_PROG_INSTALL || AC_FAIL "Need an install program to install shared libraries" + + LOGN "checking whether the C compiler can build shared libraries " + + echo "int some_variable = 0;" > ngc$$.c + + _MK_LIBRARIAN= + if uname -a | grep Darwin >/dev/null; then + # Claims to be macos? + if $AC_CC $AC_PICFLAG -dynamiclib -o ngc$$.so ngc$$.c; then + __AC_MACOS_LIBRARIAN + + LOG "(yes; macos dylib)" + __rc=0 + else + LOG "(no)" + __rc=1 + fi + elif $AC_CC $AC_PICFLAG -shared -o ngc$$.so ngc$$.c; then + __AC_ELF_LIBRARIAN + LOG "(yes; -shared)" + __rc=0 + else + _MK_LIBRARIAN=Y + LOG "(no)" + __rc=1 + fi + + __remove ngc$$.so ngc$$.c + + return $__rc +} + + +# +# AC_PROG_INSTALL finds the install program and guesses whether it's a +# Berkeley or GNU install program +# +AC_PROG_INSTALL () { + + if [ $PROG_INSTALL ]; then return; fi + + DEST=`acLookFor install` + + LOGN "looking for install" + unset IS_BSD + if [ "$DEST" ]; then + # BSD install or GNU install? Let's find out... + touch /tmp/a$$ + + $DEST /tmp/a$$ /tmp/b$$ + + if test -r /tmp/a$$; then + LOG " ($DEST)" + else + IS_BSD=1 + LOG " ($DEST) bsd install" + fi + rm -f /tmp/a$$ /tmp/b$$ + else + DEST=`acLookFor ginstall` + if [ "$DEST" ]; then + LOG " ($DEST)" + else + DEST="false" + LOG " (not found)" + fi + fi + + if [ "$IS_BSD" ]; then + PROG_INSTALL="$DEST -c" + else + PROG_INSTALL="$DEST" + fi + + # see if we can strip binaries + echo 'main() { puts("hello, sailor!"); }' > ngc$$.c + if $AC_CC -o ngc$$ ngc$$.c; then + if $PROG_INSTALL -s -m 444 ngc$$ inst$$; then + _strip="-s" + else + unset _strip + LOG "(install -s does not appear to work?)" + fi + rm -f inst$$ + fi + rm -f ngc$$ ngc$$.c + + AC_SUB 'INSTALL' "$PROG_INSTALL" + AC_SUB 'INSTALL_PROGRAM' "$PROG_INSTALL $_strip -m 755" + AC_SUB 'INSTALL_DATA' "$PROG_INSTALL -m 444" + + # finally build a little directory installer + # if mkdir -p works, use that, otherwise use install -d, + # otherwise build a script to do it by hand. + # in every case, test to see if the directory exists before + # making it. + + if mkdir -p $$a/b; then + # I like this method best. + __mkdir="mkdir -p" + rmdir $$a/b + rmdir $$a + elif $PROG_INSTALL -d $$a/b; then + __mkdir="$PROG_INSTALL -d" + rmdir $$a/b + rmdir $$a + fi + + __config_files="$__config_files config.md" + AC_SUB 'INSTALL_DIR' "$__cwd/config.md" + echo "#! /bin/sh" > ""$__cwd"/config.md" + echo "# script generated" `date` "by configure.sh" >> ""$__cwd"/config.md" + echo >> ""$__cwd"/config.md" + if [ "$__mkdir" ]; then + echo "test -d \"\$1\" || $__mkdir \"\$1\"" >> ""$__cwd"/config.md" + echo "exit $?" >> ""$__cwd"/config.md" + else + cat - >> ""$__cwd"/config.md" << \EOD +pieces=`IFS=/; for x in $1; do echo $x; done` +dir= +for x in $pieces; do + dir="$dir$x" + mkdir $dir || exit 1 + dir="$dir/" +done +exit 0 +EOD + fi + chmod +x "$__cwd"/config.md +} + +# +# acCheckCPP is a local that runs a C preprocessor with a given set of +# compiler options +# +acCheckCPP () { + cat > ngc$$.c << EOF +#define FOO BAR + +FOO +EOF + + good= + use_cflags= + if $1 $2 $AC_CFLAGS ngc$$.c > ngc$$.o; then + good=1 + use_cflags=1 + elif $1 $2 ngc$$.c > ngc$$.o; then + good=1 + fi + + if [ "$good" ]; then + if grep -v '#define' ngc$$.o | grep -s BAR >/dev/null; then + echo "CPP=[$1], CPP_PIPE=[$2${use_cflags:+ $AC_CFLAGS}]" + AC_SUB 'CPP' "$1" + AC_CPP_FILTER="$1 $2${use_cflags:+ $AC_CFLAGS}" + rm ngc$$.c ngc$$.o + return 0 + fi + fi + rm ngc$$.c ngc$$.o + return 1 +} + +# +# AC_PROG_CPP checks for cpp, then checks to see which CPPFLAGS are needed +# to run it as a filter. +# +AC_PROG_CPP () { + test "$AC_CPP_FILTER" && return + + AC_PROG_CC + + if [ "$AC_CPP_PROG" ]; then + DEST=$AC_CPP_PROG + else + __ac_path="$AC_PATH" + AC_PATH="/lib:/usr/lib:${__ac_path:-$ac_default_path}" + DEST=`acLookFor cpp` + AC_PATH="$__ac_path" + fi + + unset fail + LOGN "Looking for cpp" + + if acCheckCPP "$AC_CC" -E; then + TLOG " (using \$CC -E as a cpp pipeline)" + return 0 + fi + + if [ "$DEST" ]; then + TLOGN " ($DEST)" + acCheckCPP $DEST "$CPPFLAGS" || \ + acCheckCPP $DEST -traditional-cpp -E || \ + acCheckCPP $DEST -E || \ + acCheckCPP $DEST -traditional-cpp -pipe || \ + acCheckCPP $DEST -pipe || fail=1 + + if [ "$fail" ]; then + AC_FAIL " (can't run cpp as a pipeline)" + else + TLOG " ok" + return 0 + fi + fi + AC_FAIL " (not found)" +} + +# +# AC_FAIL spits out an error message, then __fail's +AC_FAIL() { + LOG "$*" + $__fail 1 +} + +# +# __ac_config_sed; a C program to do escaping for AC_SUB +__ac_config_sed() { + + + test -x config.sed && return + + echo "generating config.sed" + + AC_PROG_CC + +cat > ngc$$.c << \EOF +#include + +int +main(argc, argv) +int argc; +char **argv; +{ + char *p; + + if (argc != 3) + return 1; + + printf("s;@%s@;", argv[1]); + + for (p=argv[2]; *p; ++p) { + if ( *p == ';' ) + putchar('\\'); + putchar(*p); + } + + puts(";g"); + return 0; +} +EOF + + if $AC_CC -o config.sed ngc$$.c; then + rm -f ngc$$.c + __config_files="$__config_files config.sed" + else + rm -f ngc$$.c + AC_FAIL "Cannot generate config.sed helper program" + fi +} + +# +# AC_SUB writes a substitution into config.sub +AC_SUB() { + + _target="$1" + shift + + echo "target=$_target, rest=$*" + + __ac_config_sed + ./config.sed "$_target" "$*" >> "$__cwd"/config.sub +} +# +# AC_TEXT writes arbitrary text into config.h +AC_TEXT() { + echo "$@" >> "$__cwd"/config.h +} + +# +# AC_MAK writes a define into config.mak +AC_MAK() { + echo "HAVE_$1 = 1" >> "$__cwd"/config.mak +} + +# +# AC_DEFINE adds a #define to config.h +AC_DEFINE() { + echo "#define $1 ${2:-1}" >> "$__cwd"/config.h +} + +# +# AC_INCLUDE adds a #include to config.h +AC_INCLUDE() { + echo "#include \"$1\"" >> "$__cwd"/config.h +} + +# +# AC_CONFIG adds a configuration setting to all the config files +AC_CONFIG() { + AC_DEFINE "PATH_$1" \""$2"\" + AC_MAK "$1" + AC_SUB "$1" "$2" +} + +# +# AC_QUIET does something quietly +AC_QUIET() { + eval $* 5>/dev/null +} + + +AC_TR=`acLookFor tr` +if [ "$AC_TR" ]; then + # try posix-style tr + ABC=`echo abc | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` + if [ "$ABC" = "ABC" ]; then + AC_UPPERCASE="$AC_TR abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ" + AC_UPPER_PAT="ABCDEFGHIJKLMNOPQRSTUVWXYZ" + else + ABC=`echo abc | tr a-z A-Z` + if [ "$ABC" = "ABC" ]; then + AC_UPPERCASE="$AC_TR a-z A-Z" + AC_UPPER_PAT="A-Z" + else + ABC=`echo abc | tr '[a-z]' '[A-Z]'` + if [ "$ABC" = "ABC" ]; then + AC_UPPERCASE="$AC_TR '[a-z]' '[A-Z]'" + AC_UPPER_PAT="'[A-Z]'" + else + AC_FAIL "$AC_TR cannot translate lowercase to uppercase" + return 0 + fi + fi + fi +else + AC_FAIL "configure requires a functional version of tr" +fi + +while [ $# -gt 0 ]; do + unset matched + + case X"$1" in + X--src|X--srcdir) + AC_SRCDIR=`__ac_dir "$2"` + _set_srcdir=1 + shift 2;; + + X--src=*|X--srcdir=*) + __d=`echo "$1" | sed -e 's/^[^=]*=//'` + AC_SRCDIR=`__ac_dir "$__d"` + _set_srcdir=1 + shift 1 ;; + + X--prefix) + AC_PREFIX=`__ac_dir "$2"` + _set_prefix=1 + shift 2;; + + X--prefix=*) + __d=`echo "$1"| sed -e 's/^[^=]*=//'` + AC_PREFIX=`__ac_dir "$__d"` + _set_prefix=1 + shift 1;; + + X--confdir) + AC_CONFDIR=`__ac_dir "$2"` + _set_confdir=1 + shift 2;; + + X--confdir=*) + __d=`echo "$1" | sed -e 's/^[^=]*=//'` + AC_CONFDIR=`__ac_dir "$__d"` + _set_confdir=1 + shift 1;; + + X--libexec|X--libexecdir) + AC_LIBEXEC=`__ac_dir "$2"` + _set_libexec=1 + shift 2;; + + X--libexec=*|X--libexecdir=*) + __d=`echo "$1" | sed -e 's/^[^=]*=//'` + AC_LIBEXEC=`__ac_dir "$__d"` + _set_libexec=1 + shift 1;; + + X--lib|X--libdir) + AC_LIBDIR=`__ac_dir "$2"` + _set_libdir=1 + shift 2;; + + X--lib=*|X--libdir=*) + __d=`echo "$1" | sed -e 's/^[^=]*=//'` + AC_LIBDIR=`__ac_dir "$__d"` + _set_libdir=1 + shift 1;; + + X--exec|X--execdir) + AC_EXECDIR=`__ac_dir "$2"` + _set_execdir=1 + shift 2;; + + X--exec=*|X--execdir=*) + __d=`echo "$1" | sed -e 's/^[^=]*=//'` + AC_EXECDIR=`__ac_dir "$__d"` + _set_execdir=1 + shift 1;; + + X--sbin|X--sbindir) + AC_SBINDIR=`__ac_dir "$2"` + _set_sbindir=1 + shift 2;; + + X--sbin=*|X--sbindir=*) + __d=`echo "$1" | sed -e 's/^[^=]*=//'` + AC_SBINDIR=`__ac_dir "$__d"` + _set_sbindir=1 + shift 1;; + + X--man|X--mandir) + AC_MANDIR=`__ac_dir "$2"` + _set_mandir=1 + shift 2;; + + X--man=*|X--mandir=*) + __d=`echo "$1" | sed -e 's/^[^=]*=//'` + AC_MANDIR=`__ac_dir "$__d"` + _set_mandir=1 + shift 1;; + + X--use-*=*) + _var=`echo "$1"| sed -n 's/^--use-\([A-Za-z][-A-Za-z0-9_]*\)=.*$/\1/p'` + if [ "$_var" ]; then + _val=`echo "$1" | sed -e 's/^--use-[^=]*=\(.*\)$/\1/'` + _v=`echo $_var | $AC_UPPERCASE | tr '-' '_'` + case X"$_val" in + X[Yy][Ee][Ss]|X[Tt][Rr][Uu][Ee]) eval USE_${_v}=T ;; + X[Nn][Oo]|X[Ff][Aa][Ll][Ss][Ee]) eval unset USE_${_v} ;; + *) echo "Bad value for --use-$_var ; must be yes or no" + exit 1 ;; + esac + else + echo "Bad option $1. Use --help to show options" 1>&2 + exit 1 + fi + shift 1 ;; + + X--use-*) + _var=`echo "$1"|sed -n 's/^--use-\([A-Za-z][-A-Za-z0-9_]*\)$/\1/p'` + _v=`echo $_var | $AC_UPPERCASE | tr '-' '_'` + eval USE_${_v}=T + shift 1;; + + X--with-*=*) + _var=`echo "$1"| sed -n 's/^--with-\([A-Za-z][-A-Za-z0-9_]*\)=.*$/\1/p'` + if [ "$_var" ]; then + _val=`echo "$1" | sed -e 's/^--with-[^=]*=\(.*\)$/\1/'` + _v=`echo $_var | $AC_UPPERCASE | tr '-' '_'` + eval WITH_${_v}=\"$_val\" + else + echo "Bad option $1. Use --help to show options" 1>&2 + exit 1 + fi + shift 1 ;; + + X--with-*) + _var=`echo "$1" | sed -n 's/^--with-\([A-Za-z][A-Za-z0-9_-]*\)$/\1/p'` + if [ "$_var" ]; then + _v=`echo $_var | $AC_UPPERCASE | tr '-' '_'` + eval WITH_${_v}=1 + else + echo "Bad option $1. Use --help to show options" 1>&2 + exit 1 + fi + shift 1 ;; + + X--help) + echo "$ac_standard" + test "$ac_help" && echo "$ac_help" + exit 0;; + + *) if [ "$LOCAL_AC_OPTIONS" ]; then + eval "$LOCAL_AC_OPTIONS" + else + ac_error=T + fi + if [ "$ac_error" ]; then + echo "Bad option $1. Use --help to show options" 1>&2 + exit 1 + fi ;; + esac +done + diff --git a/thirdparty/discount-2.2.6-patched/configure.sh b/thirdparty/discount-2.2.6-patched/configure.sh new file mode 100755 index 0000000..da9fa14 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/configure.sh @@ -0,0 +1,264 @@ +#! /bin/sh + +# local options: ac_help is the help message that describes them +# and LOCAL_AC_OPTIONS is the script that interprets them. LOCAL_AC_OPTIONS +# is a script that's processed with eval, so you need to be very careful to +# make certain that what you quote is what you want to quote. + +# load in the configuration file +# +ac_help='--enable-amalloc Enable memory allocation debugging +--with-tabstops=N Set tabstops to N characters (default is 4) +--shared Build shared libraries (default is static) +--pkg-config Install pkg-config(1) glue files +--cxx-binding Install header files with c++ wrappers +--github-checkbox[=input] Enable github-style checkboxes in lists + (if =input, use , otherwise + use html ballot entities)' + +LOCAL_AC_OPTIONS=' +set=`locals $*`; +if [ "$set" ]; then + eval $set + shift 1 +else + ac_error=T; +fi' + +locals() { + K=`echo $1 | $AC_UPPERCASE` + case "$K" in + --SHARED) + echo TRY_SHARED=T + ;; + --ENABLE-*) enable=`echo $K | sed -e 's/--ENABLE-//' | tr '-' '_'` + echo WITH_${enable}=T ;; + --DEBIAN-GLITCH) + echo DEBIAN_GLITCH=T + ;; + --H1-TITLE) + echo H1TITLE=T + ;; + --PKG-CONFIG) + echo PKGCONFIG=T + ;; + --CXX-BINDING) + echo CXX_BINDING=T + ;; + --GITHUB-CHECKBOX) + echo GITHUB_CHECKBOX=T + ;; + --GITHUB-CHECKBOX=INPUT) + echo GITHUB_CHECKBOX=T + echo GITHUB_CHECKBOX_AS_INPUT=T + ;; + esac +} + +VERSION=`cat VERSION` +TARGET=markdown +. ./configure.inc + +# if there's a makefile here, it's likely that it's a discount +# makefile and there's bits of an old configuration here. So +# blow everything away before we start the configuration. + +test -f Makefile && make spotless 2>/dev/null >/dev/null + +AC_INIT $TARGET +AC_SUB 'PACKAGE_NAME' lib$TARGET +AC_SUB 'PACKAGE_VERSION' $VERSION + +for banned_with in dl fenced-code id-anchor github-tags urlencoded-anchor; do + banned_with_variable_ref=\$WITH_`echo "$banned_with" | $AC_UPPERCASE | tr - _` + if [ "`eval echo "$banned_with_variable_ref"`" ]; then + LOG "Setting theme default --with-$banned_with." + fi +done + +# theme wants the old behavior of --with-(foo) +# +case "`echo "$WITH_DL" | $AC_UPPERCASE`" in + EXTRA) THEME_CF="MKD_DLEXTRA|MKD_NODLDISCOUNT";; + BOTH) THEME_CF="MKD_DLEXTRA";; +esac +test "$WITH_FENCED_CODE" && THEME_CF="${THEME_CF:+$THEME_CF|}MKD_FENCEDCODE" + +AC_DEFINE THEME_CF "$THEME_CF" + + +test "$DEBIAN_GLITCH" && AC_DEFINE 'DEBIAN_GLITCH' 1 + +AC_PROG_CC +AC_QUIET AC_PROG git && AC_DEFINE 'HAS_GIT' '1' +AC_CHECK_ATTRIBUTE destructor + +test "$TRY_SHARED" && AC_COMPILER_PIC && AC_CC_SHLIBS + +if [ "IS_BROKEN_CC" ]; then + case "$AC_CC $AC_CFLAGS" in + *-pedantic*) ;; + *) # hack around deficiencies in gcc and clang + # + AC_DEFINE 'while(x)' 'while( (x) != 0 )' + AC_DEFINE 'if(x)' 'if( (x) != 0 )' + + if [ "$IS_CLANG" ]; then + AC_CC="$AC_CC -Wno-implicit-int" + elif [ "$IS_GCC" ]; then + AC_CC="$AC_CC -Wno-return-type -Wno-implicit-int" + fi ;; + esac +fi + +AC_PROG ar || AC_FAIL "$TARGET requires ar" +AC_PROG ranlib + +# should we create a .pc for pkg-config & GNU automake +# +if [ "$PKGCONFIG" ]; then + AC_SUB MK_PKGCONFIG '' +elif AC_PROG pkg-config || AC_PROG automake ; then + PKGCONFIG=true + AC_SUB MK_PKGCONFIG '' +else + AC_SUB MK_PKGCONFIG '#' +fi + +AC_C_VOLATILE +AC_C_CONST +AC_C_INLINE +AC_SCALAR_TYPES sub hdr +AC_CHECK_BASENAME +AC_CHECK_ALLOCA + +AC_CHECK_HEADERS sys/types.h pwd.h && AC_CHECK_FUNCS getpwuid +if AC_CHECK_HEADERS sys/stat.h && AC_CHECK_FUNCS stat; then + +# need to check some of the S_ISxxx stat macros, because they may not +# exist (for notspecial.c) + +cat > ngc$$.c << EOF +#include + +main(argc, argv) +char **argv; +{ + struct stat info; + + if ( stat(argv[0], &info) != 0 ) + return 1; + + return MACRO(info.st_mode); +} +EOF + LOGN "special file macros in sys/stat.h:" + _none="none" + for x in ISSOCK ISCHR ISFIFO; do + if $AC_CC -DMACRO=S_$x -o ngc$$.o ngc$$.c; then + LOGN " S_${x}" + AC_DEFINE "HAS_${x}" '1' + unset _none + fi + done + LOG "${_none}." + __remove ngc$$.o ngc$$.c +fi + +if AC_CHECK_FUNCS srandom; then + AC_DEFINE 'INITRNG(x)' 'srandom((unsigned int)x)' +elif AC_CHECK_FUNCS srand; then + AC_DEFINE 'INITRNG(x)' 'srand((unsigned int)x)' +else + AC_DEFINE 'INITRNG(x)' '(void)1' +fi + +AC_CHECK_FUNCS 'memset((char*)0,0,0)' 'string.h' || \ + AC_CHECK_FUNCS 'memset((char*)0,0,0)' || \ + AC_FAIL "$TARGET requires memset" + +if AC_CHECK_FUNCS random; then + AC_DEFINE 'COINTOSS()' '(random()&1)' +elif AC_CHECK_FUNCS rand; then + AC_DEFINE 'COINTOSS()' '(rand()&1)' +else + AC_DEFINE 'COINTOSS()' '1' +fi + +if AC_CHECK_FUNCS strcasecmp; then + : +elif AC_CHECK_FUNCS stricmp; then + AC_DEFINE strcasecmp stricmp +else + AC_FAIL "$TARGET requires either strcasecmp() or stricmp()" +fi + +if AC_CHECK_FUNCS strncasecmp; then + : +elif AC_CHECK_FUNCS strnicmp; then + AC_DEFINE strncasecmp strnicmp +else + AC_FAIL "$TARGET requires either strncasecmp() or strnicmp()" +fi + +if AC_CHECK_FUNCS fchdir || AC_CHECK_FUNCS getcwd ; then + AC_SUB 'THEME' '' +else + AC_SUB 'THEME' '#' +fi + +if [ -z "$WITH_TABSTOPS" ]; then + TABSTOP=4 +elif [ "$WITH_TABSTOPS" -eq 1 ]; then + TABSTOP=8 +else + TABSTOP=$WITH_TABSTOPS +fi +AC_DEFINE 'TABSTOP' $TABSTOP +AC_SUB 'TABSTOP' $TABSTOP + + +if [ "$WITH_AMALLOC" ]; then + AC_DEFINE 'USE_AMALLOC' 1 + AC_SUB 'AMALLOC' 'amalloc.o' +else + AC_SUB 'AMALLOC' '' +fi + +if [ "$H1TITLE" ]; then + AC_SUB 'H1TITLE' h1title.o + AC_DEFINE USE_H1TITLE 1 +else + AC_SUB 'H1TITLE' '' +fi + +if [ "$GITHUB_CHECKBOX" ]; then + AC_DEFINE 'GITHUB_CHECKBOX' '1' + test "$GITHUB_CHECKBOX_AS_INPUT" && AC_DEFINE 'CHECKBOX_AS_INPUT' '1' +fi + + +[ "$OS_FREEBSD" -o "$OS_DRAGONFLY" ] || AC_CHECK_HEADERS malloc.h + +[ "$WITH_PANDOC_HEADER" ] && AC_DEFINE 'PANDOC_HEADER' '1' + +GENERATE="Makefile version.c mkdio.h" + +if [ "$PKGCONFIG" ]; then + GENERATE="$GENERATE libmarkdown.pc" +fi + +AC_OUTPUT $GENERATE + +if [ "$CXX_BINDING" ]; then + LOG "applying c++ glue to mkdio.h" + mv mkdio.h mkdio.h$$ + ( echo '#ifdef __cplusplus' + echo 'extern "C" {' + echo '#endif' + cat mkdio.h$$ + echo '#ifdef __cplusplus' + echo '}' + echo '#endif' ) > mkdio.h + rm mkdio.h$$ +fi diff --git a/thirdparty/discount-2.2.6-patched/css.c b/thirdparty/discount-2.2.6-patched/css.c new file mode 100644 index 0000000..fd9ede9 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/css.c @@ -0,0 +1,85 @@ +/* markdown: a C implementation of John Gruber's Markdown markup language. + * + * Copyright (C) 2009 David L Parsons. + * The redistribution terms are provided in the COPYRIGHT file that must + * be distributed with this source code. + */ +#include +#include +#include +#include +#include +#include + +#include "config.h" + +#include "cstring.h" +#include "markdown.h" +#include "amalloc.h" + + +/* + * dump out stylesheet sections. + */ +static void +stylesheets(Paragraph *p, Cstring *f) +{ + Line* q; + + for ( ; p ; p = p->next ) { + if ( p->typ == STYLE ) { + for ( q = p->text; q ; q = q->next ) { + Cswrite(f, T(q->text), S(q->text)); + Csputc('\n', f); + } + } + if ( p->down ) + stylesheets(p->down, f); + } +} + + +/* dump any embedded styles to a string + */ +int +mkd_css(Document *d, char **res) +{ + Cstring f; + int size; + + if ( res && d && d->compiled ) { + *res = 0; + CREATE(f); + RESERVE(f, 100); + stylesheets(d->code, &f); + + if ( (size = S(f)) > 0 ) { + /* null-terminate, then strdup() into a free()able memory + * chunk + */ + EXPAND(f) = 0; + *res = strdup(T(f)); + } + DELETE(f); + return size; + } + return EOF; +} + + +/* dump any embedded styles to a file + */ +int +mkd_generatecss(Document *d, FILE *f) +{ + char *res; + int written; + int size = mkd_css(d, &res); + + written = (size > 0) ? fwrite(res,1,size,f) : 0; + + if ( res ) + free(res); + + return (written == size) ? size : EOF; +} diff --git a/thirdparty/discount-2.2.6-patched/cstring.h b/thirdparty/discount-2.2.6-patched/cstring.h new file mode 100644 index 0000000..f0b7410 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/cstring.h @@ -0,0 +1,76 @@ +/* two template types: STRING(t) which defines a pascal-style string + * of element (t) [STRING(char) is the closest to the pascal string], + * and ANCHOR(t) which defines a baseplate that a linked list can be + * built up from. [The linked list /must/ contain a ->next pointer + * for linking the list together with.] + */ +#ifndef _CSTRING_D +#define _CSTRING_D + +#include +#include + +#ifndef __WITHOUT_AMALLOC +# include "amalloc.h" +#endif + +/* expandable Pascal-style string. + */ +#define STRING(type) struct { type *text; int size, alloc; } + +#define CREATE(x) ( (T(x) = (void*)0), (S(x) = (x).alloc = 0) ) +#define EXPAND(x) (S(x)++)[(S(x) < (x).alloc) \ + ? (T(x)) \ + : (T(x) = T(x) ? realloc(T(x), sizeof T(x)[0] * ((x).alloc += 100)) \ + : malloc(sizeof T(x)[0] * ((x).alloc += 100)) )] + +#define DELETE(x) ALLOCATED(x) ? (free(T(x)), S(x) = (x).alloc = 0) \ + : ( S(x) = 0 ) +#define CLIP(t,i,sz) \ + S(t) -= ( ((i) >= 0) && ((sz) > 0) && (((i)+(sz)) <= S(t)) ) ? \ + (memmove(&T(t)[i], &T(t)[i+sz], (S(t)-(i+sz)+1)*sizeof(T(t)[0])), \ + (sz)) : 0 + +#define RESERVE(x, sz) T(x) = ((x).alloc > S(x) + (sz) \ + ? T(x) \ + : T(x) \ + ? realloc(T(x), sizeof T(x)[0] * ((x).alloc = 100+(sz)+S(x))) \ + : malloc(sizeof T(x)[0] * ((x).alloc = 100+(sz)+S(x)))) +#define SUFFIX(t,p,sz) \ + memcpy(((S(t) += (sz)) - (sz)) + \ + (T(t) = T(t) ? realloc(T(t), sizeof T(t)[0] * ((t).alloc += sz)) \ + : malloc(sizeof T(t)[0] * ((t).alloc += sz))), \ + (p), sizeof(T(t)[0])*(sz)) + +#define PREFIX(t,p,sz) \ + RESERVE( (t), (sz) ); \ + if ( S(t) ) { memmove(T(t)+(sz), T(t), S(t)); } \ + memcpy( T(t), (p), (sz) ); \ + S(t) += (sz) + +/* reference-style links (and images) are stored in an array + */ +#define T(x) (x).text +#define S(x) (x).size +#define ALLOCATED(x) (x).alloc + +/* abstract anchor type that defines a list base + * with a function that attaches an element to + * the end of the list. + * + * the list base field is named .text so that the T() + * macro will work with it. + */ +#define ANCHOR(t) struct { t *text, *end; } +#define E(t) ((t).end) + +#define ATTACH(t, p) ( T(t) ? ( (E(t)->next = (p)), (E(t) = (p)) ) \ + : ( (T(t) = E(t) = (p)) ) ) + +typedef STRING(char) Cstring; + +extern void Csputc(int, Cstring *); +extern int Csprintf(Cstring *, char *, ...); +extern int Cswrite(Cstring *, char *, int); + +#endif/*_CSTRING_D*/ diff --git a/thirdparty/discount-2.2.6-patched/docheader.c b/thirdparty/discount-2.2.6-patched/docheader.c new file mode 100644 index 0000000..2bde634 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/docheader.c @@ -0,0 +1,54 @@ +/* + * docheader -- get values from the document header + * + * Copyright (C) 2007 David L Parsons. + * The redistribution terms are provided in the COPYRIGHT file that must + * be distributed with this source code. + */ +#include "config.h" +#include +#include +#include + +#include "cstring.h" +#include "markdown.h" +#include "amalloc.h" + +static char * +onlyifset(Line *l) +{ + char *ret; + + if ( l->dle < 0 || l->dle >= S(l->text) ) + return 0; + + ret = T(l->text) + l->dle; + + return ret[0] ? ret : 0; +} + +char * +mkd_doc_title(Document *doc) +{ + if ( doc && doc->title ) + return onlyifset(doc->title); + return 0; +} + + +char * +mkd_doc_author(Document *doc) +{ + if ( doc && doc->author ) + return onlyifset(doc->author); + return 0; +} + + +char * +mkd_doc_date(Document *doc) +{ + if ( doc && doc->date ) + return onlyifset(doc->date); + return 0; +} diff --git a/thirdparty/discount-2.2.6-patched/dumptree.c b/thirdparty/discount-2.2.6-patched/dumptree.c new file mode 100644 index 0000000..e3fbaf3 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/dumptree.c @@ -0,0 +1,160 @@ +/* markdown: a C implementation of John Gruber's Markdown markup language. + * + * Copyright (C) 2007 David L Parsons. + * The redistribution terms are provided in the COPYRIGHT file that must + * be distributed with this source code. + */ +#include +#include "markdown.h" +#include "cstring.h" +#include "amalloc.h" + +struct frame { + int indent; + char c; +}; + +typedef STRING(struct frame) Stack; + +static char * +Pptype(int typ) +{ + switch (typ) { + case WHITESPACE: return "whitespace"; + case CODE : return "code"; + case QUOTE : return "quote"; + case MARKUP : return "markup"; + case HTML : return "html"; + case DL : return "dl"; + case UL : return "ul"; + case OL : return "ol"; + case LISTITEM : return "item"; + case HDR : return "header"; + case HR : return "hr"; + case TABLE : return "table"; + case SOURCE : return "source"; + case STYLE : return "style"; + default : return "mystery node!"; + } +} + +static void +pushpfx(int indent, char c, Stack *sp) +{ + struct frame *q = &EXPAND(*sp); + + q->indent = indent; + q->c = c; +} + + +static void +poppfx(Stack *sp) +{ + S(*sp)--; +} + + +static void +changepfx(Stack *sp, char c) +{ + char ch; + + if ( !S(*sp) ) return; + + ch = T(*sp)[S(*sp)-1].c; + + if ( ch == '+' || ch == '|' ) + T(*sp)[S(*sp)-1].c = c; +} + + +static void +printpfx(Stack *sp, FILE *f) +{ + int i; + char c; + + if ( !S(*sp) ) return; + + c = T(*sp)[S(*sp)-1].c; + + if ( c == '+' || c == '-' ) { + fprintf(f, "--%c", c); + T(*sp)[S(*sp)-1].c = (c == '-') ? ' ' : '|'; + } + else + for ( i=0; i < S(*sp); i++ ) { + if ( i ) + fprintf(f, " "); + fprintf(f, "%*s%c", T(*sp)[i].indent + 2, " ", T(*sp)[i].c); + if ( T(*sp)[i].c == '`' ) + T(*sp)[i].c = ' '; + } + fprintf(f, "--"); +} + + +static void +dumptree(Paragraph *pp, Stack *sp, FILE *f) +{ + int count; + Line *p; + int d; + static char *Begin[] = { 0, "P", "center" }; + + while ( pp ) { + if ( !pp->next ) + changepfx(sp, '`'); + printpfx(sp, f); + + if ( pp->typ == HDR ) + d += fprintf(f, "[h%d", pp->hnumber); + else + d = fprintf(f, "[%s", Pptype(pp->typ)); + if ( pp->ident ) + d += fprintf(f, " %s", pp->ident); + +#ifdef GITHUB_CHECKBOX + if ( pp->flags ) + d += fprintf(f, " %x", pp->flags); +#endif + + if ( pp->align > 1 ) + d += fprintf(f, ", <%s>", Begin[pp->align]); + + for (count=0, p=pp->text; p; ++count, (p = p->next) ) + ; + + if ( count ) + d += fprintf(f, ", %d line%s", count, (count==1)?"":"s"); + + d += fprintf(f, "]"); + + if ( pp->down ) { + pushpfx(d, pp->down->next ? '+' : '-', sp); + dumptree(pp->down, sp, f); + poppfx(sp); + } + else fputc('\n', f); + pp = pp->next; + } +} + + +int +mkd_dump(Document *doc, FILE *out, mkd_flag_t flags, char *title) +{ + Stack stack; + + if (mkd_compile(doc, flags) ) { + + CREATE(stack); + pushpfx(fprintf(out, "%s", title), doc->code->next ? '+' : '-', &stack); + dumptree(doc->code, &stack, out); + DELETE(stack); + + return 0; + } + return -1; +} diff --git a/thirdparty/discount-2.2.6-patched/emmatch.c b/thirdparty/discount-2.2.6-patched/emmatch.c new file mode 100644 index 0000000..daea939 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/emmatch.c @@ -0,0 +1,188 @@ +/* markdown: a C implementation of John Gruber's Markdown markup language. + * + * Copyright (C) 2010 David L Parsons. + * The redistribution terms are provided in the COPYRIGHT file that must + * be distributed with this source code. + */ +#include +#include +#include +#include +#include +#include + +#include "config.h" + +#include "cstring.h" +#include "markdown.h" +#include "amalloc.h" + + +/* emmatch: the emphasis mangler that's run after a block + * of html has been generated. + * + * It should create MarkdownTest_1.0 (and _1.0.3) + * compatible emphasis for non-pathological cases + * and it should fail in a standards-compliant way + * when someone attempts to feed it junk. + * + * Emmatching is done after the input has been + * processed into a STRING (f->Q) of text and + * emphasis blocks. After ___mkd_emblock() finishes, + * it truncates f->Q and leaves the rendered paragraph + * if f->out. + */ + + +/* empair() -- find the NEAREST matching emphasis token (or + * subtoken of a 3+ long emphasis token. + */ +static int +empair(MMIOT *f, int first, int last, int match) +{ + + int i; + block *begin, *p; + + begin = &T(f->Q)[first]; + + for (i=first+1; i <= last; i++) { + p = &T(f->Q)[i]; + + if ( (p->b_type != bTEXT) && (p->b_count <= 0) ) + continue; /* break? */ + + if ( p->b_type == begin->b_type ) { + if ( p->b_count == match ) /* exact match */ + return i; + + if ( p->b_count > 2 ) /* fuzzy match */ + return i; + } + } + return 0; +} /* empair */ + + +/* emfill() -- if an emphasis token has leftover stars or underscores, + * convert them back into character and append them to b_text. + */ +static void +emfill(block *p) +{ + int j; + + if ( p->b_type == bTEXT ) + return; + + for (j=0; j < p->b_count; j++) + EXPAND(p->b_text) = p->b_char; + p->b_count = 0; +} /* emfill */ + + +static void +emclose(MMIOT *f, int first, int last) +{ + int j; + + for (j=first+1; jQ)[j]); +} + + +static struct emtags { + char open[10]; + char close[10]; + int size; +} emtags[] = { { "" , "", 5 }, { "", "", 9 } }; + + +static void emblock(MMIOT*,int,int); + + +/* emmatch() -- match emphasis for a single emphasis token. + */ +static void +emmatch(MMIOT *f, int first, int last) +{ + block *start = &T(f->Q)[first]; + int e, e2, match; + + switch (start->b_count) { + case 2: if ( e = empair(f,first,last,match=2) ) + break; + case 1: e = empair(f,first,last,match=1); + break; + case 0: return; + default: + e = empair(f,first,last,1); + e2= empair(f,first,last,2); + + if ( e2 >= e ) { + e = e2; + match = 2; + } + else + match = 1; + break; + } + + if ( e ) { + /* if we found emphasis to match, match it, recursively call + * emblock to match emphasis inside the new html block, add + * the emphasis markers for the block, then (tail) recursively + * call ourself to match any remaining emphasis on this token. + */ + block *end = &T(f->Q)[e]; + + end->b_count -= match; + start->b_count -= match; + + emblock(f, first, e); + + PREFIX(start->b_text, emtags[match-1].open, emtags[match-1].size-1); + SUFFIX(end->b_post, emtags[match-1].close, emtags[match-1].size); + + emmatch(f, first, last); + } +} /* emmatch */ + + +/* emblock() -- walk a blocklist, attempting to match emphasis + */ +static void +emblock(MMIOT *f, int first, int last) +{ + int i; + + for ( i = first; i <= last; i++ ) + if ( T(f->Q)[i].b_type != bTEXT ) + emmatch(f, i, last); + emclose(f, first, last); +} /* emblock */ + + +/* ___mkd_emblock() -- emblock a string of blocks, then concatenate the + * resulting text onto f->out. + */ +void +___mkd_emblock(MMIOT *f) +{ + int i; + block *p; + + emblock(f, 0, S(f->Q)-1); + + for (i=0; i < S(f->Q); i++) { + p = &T(f->Q)[i]; + emfill(p); + + if ( S(p->b_post) ) { SUFFIX(f->out, T(p->b_post), S(p->b_post)); + DELETE(p->b_post); } + if ( S(p->b_text) ) { SUFFIX(f->out, T(p->b_text), S(p->b_text)); + DELETE(p->b_text); } + } + + S(f->Q) = 0; +} /* ___mkd_emblock */ diff --git a/thirdparty/discount-2.2.6-patched/flags.c b/thirdparty/discount-2.2.6-patched/flags.c new file mode 100644 index 0000000..78ff3dc --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/flags.c @@ -0,0 +1,93 @@ +#include +#include "markdown.h" + +struct flagnames { + mkd_flag_t flag; + char *name; +}; + +static struct flagnames flagnames[] = { + { MKD_NOLINKS, "!LINKS" }, + { MKD_NOIMAGE, "!IMAGE" }, + { MKD_NOPANTS, "!PANTS" }, + { MKD_NOHTML, "!HTML" }, + { MKD_STRICT, "STRICT" }, + { MKD_TAGTEXT, "TAGTEXT" }, + { MKD_NO_EXT, "!EXT" }, + { MKD_CDATA, "CDATA" }, + { MKD_NOSUPERSCRIPT, "!SUPERSCRIPT" }, + { MKD_NORELAXED, "!RELAXED" }, + { MKD_NOTABLES, "!TABLES" }, + { MKD_NOSTRIKETHROUGH,"!STRIKETHROUGH" }, + { MKD_TOC, "TOC" }, + { MKD_1_COMPAT, "MKD_1_COMPAT" }, + { MKD_AUTOLINK, "AUTOLINK" }, + { MKD_SAFELINK, "SAFELINK" }, + { MKD_NOHEADER, "!HEADER" }, + { MKD_TABSTOP, "TABSTOP" }, + { MKD_NODIVQUOTE, "!DIVQUOTE" }, + { MKD_NOALPHALIST, "!ALPHALIST" }, + { MKD_NODLIST, "!DLIST" }, + { MKD_EXTRA_FOOTNOTE, "FOOTNOTE" }, + { MKD_NOSTYLE, "!STYLE" }, + { MKD_NODLDISCOUNT, "!DLDISCOUNT" }, + { MKD_DLEXTRA, "DLEXTRA" }, + { MKD_FENCEDCODE, "FENCEDCODE" }, + { MKD_IDANCHOR, "IDANCHOR" }, + { MKD_GITHUBTAGS, "GITHUBTAGS" }, + { MKD_URLENCODEDANCHOR, "URLENCODEDANCHOR" }, + { MKD_LATEX, "LATEX" }, + { MKD_EXPLICITLIST, "EXPLICITLIST" }, +}; +#define NR(x) (sizeof x/sizeof x[0]) + + +void +mkd_flags_are(FILE *f, mkd_flag_t flags, int htmlplease) +{ + int i; + int not, set, even=1; + char *name; + + if ( htmlplease ) + fprintf(f, "\n"); + for (i=0; i < NR(flagnames); i++) { + set = flags & flagnames[i].flag; + name = flagnames[i].name; + if ( not = (*name == '!') ) { + ++name; + set = !set; + } + + if ( htmlplease ) { + if ( even ) fprintf(f, " "); + fprintf(f, ""); + if ( !even ) fprintf(f, "\n"); + } + even = !even; + } + if ( htmlplease ) { + if ( even ) fprintf(f, "\n"); + fprintf(f, "
        "); + } + else + fputc(' ', f); + + if ( !set ) + fprintf(f, htmlplease ? "" : "!"); + + fprintf(f, "%s", name); + + if ( htmlplease ) { + if ( !set ) + fprintf(f, ""); + fprintf(f, "
        \n"); + } +} + +void +mkd_mmiot_flags(FILE *f, MMIOT *m, int htmlplease) +{ + if ( m ) + mkd_flags_are(f, m->flags, htmlplease); +} diff --git a/thirdparty/discount-2.2.6-patched/generate.c b/thirdparty/discount-2.2.6-patched/generate.c new file mode 100644 index 0000000..adfa7ab --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/generate.c @@ -0,0 +1,2107 @@ +/* markdown: a C implementation of John Gruber's Markdown markup language. + * + * Copyright (C) 2007 David L Parsons. + * The redistribution terms are provided in the COPYRIGHT file that must + * be distributed with this source code. + */ +#include +#include +#include +#include +#include +#include + +#include "config.h" + +#include "cstring.h" +#include "markdown.h" +#include "amalloc.h" + +typedef int (*stfu)(const void*,const void*); +typedef void (*spanhandler)(MMIOT*,int); + +/* forward declarations */ +static void text(MMIOT *f); +static Paragraph *display(Paragraph*, MMIOT*); + +/* externals from markdown.c */ +int __mkd_footsort(Footnote *, Footnote *); + +/* + * push text into the generator input buffer + */ +static void +push(char *bfr, int size, MMIOT *f) +{ + while ( size-- > 0 ) + EXPAND(f->in) = *bfr++; +} + + +/* + * push a character into the generator input buffer + */ +static void +pushc(char c, MMIOT *f) +{ + EXPAND(f->in) = c; +} + + +/* look characters ahead of the cursor. + */ +static inline int +peek(MMIOT *f, int i) +{ + + i += (f->isp-1); + + return (i >= 0) && (i < S(f->in)) ? (unsigned char)T(f->in)[i] : EOF; +} + + +/* pull a byte from the input buffer + */ +static inline unsigned int +pull(MMIOT *f) +{ + return ( f->isp < S(f->in) ) ? (unsigned char)T(f->in)[f->isp++] : EOF; +} + + +/* return a pointer to the current position in the input buffer. + */ +static inline char* +cursor(MMIOT *f) +{ + return T(f->in) + f->isp; +} + + +static inline int +isthisspace(MMIOT *f, int i) +{ + int c = peek(f, i); + + if ( c == EOF ) + return 1; + if ( c & 0x80 ) + return 0; + return isspace(c) || (c < ' '); +} + + +static inline int +isthisalnum(MMIOT *f, int i) +{ + int c = peek(f, i); + + return (c != EOF) && isalnum(c); +} + + +static inline int +isthisnonword(MMIOT *f, int i) +{ + return isthisspace(f, i) || ispunct(peek(f,i)); +} + + +/* return/set the current cursor position + * (when setting the current cursor position we also need to flush the + * last character written cache) + */ +#define mmiotseek(f,x) ((f->isp = x), (f->last = 0)) +#define mmiottell(f) (f->isp) + + +/* move n characters forward ( or -n characters backward) in the input buffer. + */ +static void +shift(MMIOT *f, int i) +{ + if (f->isp + i >= 0 ) + f->isp += i; +} + + +/* Qchar() + */ +static void +Qchar(int c, MMIOT *f) +{ + block *cur; + + if ( S(f->Q) == 0 ) { + cur = &EXPAND(f->Q); + memset(cur, 0, sizeof *cur); + cur->b_type = bTEXT; + } + else + cur = &T(f->Q)[S(f->Q)-1]; + + EXPAND(cur->b_text) = c; +} + + +/* Qstring() + */ +static void +Qstring(char *s, MMIOT *f) +{ + while (*s) + Qchar(*s++, f); +} + + +/* Qwrite() + */ +static void +Qwrite(char *s, int size, MMIOT *f) +{ + while (size-- > 0) + Qchar(*s++, f); +} + + +/* Qprintf() + */ +static void +Qprintf(MMIOT *f, char *fmt, ...) +{ + char bfr[80]; + va_list ptr; + + va_start(ptr,fmt); + vsnprintf(bfr, sizeof bfr, fmt, ptr); + va_end(ptr); + Qstring(bfr, f); +} + + +/* Qanchor() prints out a suitable-for-id-tag version of a string + */ +static void +Qanchor(struct line *p, MMIOT *f) +{ + mkd_string_to_anchor(T(p->text), S(p->text), + (mkd_sta_function_t)Qchar, f, 1, f); +} + + +/* Qem() + */ +static void +Qem(MMIOT *f, char c, int count) +{ + block *p = &EXPAND(f->Q); + + memset(p, 0, sizeof *p); + p->b_type = (c == '*') ? bSTAR : bUNDER; + p->b_char = c; + p->b_count = count; + + memset(&EXPAND(f->Q), 0, sizeof(block)); +} + + +/* generate html from a markup fragment + */ +void +___mkd_reparse(char *bfr, int size, mkd_flag_t flags, MMIOT *f, char *esc) +{ + MMIOT sub; + struct escaped e; + + ___mkd_initmmiot(&sub, f->footnotes); + + sub.flags = f->flags | flags; + sub.cb = f->cb; + sub.ref_prefix = f->ref_prefix; + + if ( esc ) { + sub.esc = &e; + e.up = f->esc; + e.text = esc; + } + else + sub.esc = f->esc; + + push(bfr, size, &sub); + pushc(0, &sub); + S(sub.in)--; + + text(&sub); + ___mkd_emblock(&sub); + + Qwrite(T(sub.out), S(sub.out), f); + /* inherit the last character printed from the reparsed + * text; this way superscripts can work when they're + * applied to something embedded in a link + */ + f->last = sub.last; + + ___mkd_freemmiot(&sub, f->footnotes); +} + + +/* + * check the escape list for special cases + */ +static int +escaped(MMIOT *f, char c) +{ + struct escaped *thing = f->esc; + + while ( thing ) { + if ( strchr(thing->text, c) ) + return 1; + thing = thing->up; + } + return 0; +} + + +/* + * write out a url, escaping problematic characters + */ +static void +puturl(char *s, int size, MMIOT *f, int display) +{ + unsigned char c; + + while ( size-- > 0 ) { + c = *s++; + + if ( c == '\\' && size-- > 0 ) { + c = *s++; + + if ( !( ispunct(c) || isspace(c) ) ) + Qchar('\\', f); + } + + if ( c == '&' ) + Qstring("&", f); + else if ( c == '<' ) + Qstring("<", f); + else if ( c == '"' ) + Qstring("%22", f); + else if ( isalnum(c) || ispunct(c) || (display && isspace(c)) ) + Qchar(c, f); + else if ( c == MKD_EOLN ) /* untokenize hard return */ + Qstring(" ", f); + else + Qprintf(f, "%%%02X", c); + } +} + + +/* advance forward until the next character is not whitespace + */ +static int +eatspace(MMIOT *f) +{ + int c; + + for ( ; ((c=peek(f, 1)) != EOF) && isspace(c); pull(f) ) + ; + return c; +} + + +/* (match (a (nested (parenthetical (string.))))) + */ +static int +parenthetical(int in, int out, MMIOT *f) +{ + int size, indent, c; + + for ( indent=1,size=0; indent; size++ ) { + if ( (c = pull(f)) == EOF ) + return EOF; + else if ( (c == '\\') && (peek(f,1) == out || peek(f,1) == in) ) { + ++size; + pull(f); + } + else if ( c == in ) + ++indent; + else if ( c == out ) + --indent; + } + return size ? (size-1) : 0; +} + + +/* extract a []-delimited label from the input stream. + */ +static int +linkylabel(MMIOT *f, Cstring *res) +{ + char *ptr = cursor(f); + int size; + + if ( (size = parenthetical('[',']',f)) != EOF ) { + T(*res) = ptr; + S(*res) = size; + return 1; + } + return 0; +} + + +/* see if the quote-prefixed linky segment is actually a title. + */ +static int +linkytitle(MMIOT *f, char quote, Footnote *ref) +{ + int whence = mmiottell(f); + char *title = cursor(f); + char *e; + register int c; + + while ( (c = pull(f)) != EOF ) { + e = cursor(f); + if ( c == quote ) { + if ( (c = eatspace(f)) == ')' ) { + T(ref->title) = 1+title; + S(ref->title) = (e-title)-2; + return 1; + } + } + } + mmiotseek(f, whence); + return 0; +} + + +/* extract a =HHHxWWW size from the input stream + */ +static int +linkysize(MMIOT *f, Footnote *ref) +{ + int height=0, width=0; + int whence = mmiottell(f); + int c; + + if ( isspace(peek(f,0)) ) { + pull(f); /* eat '=' */ + + for ( c = pull(f); isdigit(c); c = pull(f)) + width = (width * 10) + (c - '0'); + + if ( c == 'x' ) { + for ( c = pull(f); isdigit(c); c = pull(f)) + height = (height*10) + (c - '0'); + + if ( isspace(c) ) + c = eatspace(f); + + if ( (c == ')') || ((c == '\'' || c == '"') && linkytitle(f, c, ref)) ) { + ref->height = height; + ref->width = width; + return 1; + } + } + } + mmiotseek(f, whence); + return 0; +} + + +/* extract a <...>-encased url from the input stream. + * (markdown 1.0.2b8 compatibility; older versions + * of markdown treated the < and > as syntactic + * sugar that didn't have to be there. 1.0.2b8 + * requires a closing >, and then falls into the + * title or closing ) + */ +static int +linkybroket(MMIOT *f, int image, Footnote *p) +{ + int c; + int good = 0; + + T(p->link) = cursor(f); + for ( S(p->link)=0; (c = pull(f)) != '>'; ++S(p->link) ) { + /* pull in all input until a '>' is found, or die trying. + */ + if ( c == EOF ) + return 0; + else if ( (c == '\\') && ispunct(peek(f,2)) ) { + ++S(p->link); + pull(f); + } + } + + c = eatspace(f); + + /* next nonspace needs to be a title, a size, or ) + */ + if ( ( c == '\'' || c == '"' ) && linkytitle(f,c,p) ) + good=1; + else if ( image && (c == '=') && linkysize(f,p) ) + good=1; + else + good=( c == ')' ); + + if ( good ) { + if ( peek(f, 1) == ')' ) + pull(f); + + ___mkd_tidy(&p->link); + } + + return good; +} /* linkybroket */ + + +/* extract a (-prefixed url from the input stream. + * the label is either of the format ``, where I + * extract until I find a >, or it is of the format + * `text`, where I extract until I reach a ')', a quote, + * or (if image) a '=' + */ +static int +linkyurl(MMIOT *f, int image, Footnote *p) +{ + int c; + int mayneedtotrim=0; + + if ( (c = eatspace(f)) == EOF ) + return 0; + + if ( c == '<' ) { + pull(f); + if ( !is_flag_set(f->flags, MKD_1_COMPAT) ) + return linkybroket(f,image,p); + mayneedtotrim=1; + } + + T(p->link) = cursor(f); + for ( S(p->link)=0; (c = peek(f,1)) != ')'; ++S(p->link) ) { + if ( c == EOF ) + return 0; + else if ( (c == '"' || c == '\'') && linkytitle(f, c, p) ) + break; + else if ( image && (c == '=') && linkysize(f, p) ) + break; + else if ( (c == '\\') && ispunct(peek(f,2)) ) { + ++S(p->link); + pull(f); + } + pull(f); + } + if ( peek(f, 1) == ')' ) + pull(f); + + ___mkd_tidy(&p->link); + + if ( mayneedtotrim && (T(p->link)[S(p->link)-1] == '>') ) + --S(p->link); + + return 1; +} + + + +/* prefixes for + */ +static struct _protocol { + char *name; + int nlen; +} protocol[] = { +#define _aprotocol(x) { x, (sizeof x)-1 } + _aprotocol( "https:" ), + _aprotocol( "http:" ), + _aprotocol( "news:" ), + _aprotocol( "ftp:" ), +#undef _aprotocol +}; +#define NRPROTOCOLS (sizeof protocol / sizeof protocol[0]) + + +static int +isautoprefix(char *text, int size) +{ + int i; + struct _protocol *p; + + for (i=0, p=protocol; i < NRPROTOCOLS; i++, p++) + if ( (size >= p->nlen) && strncasecmp(text, p->name, p->nlen) == 0 ) + return 1; + return 0; +} + + +/* + * all the tag types that linkylinky can produce are + * defined by this structure. + */ +typedef struct linkytype { + char *pat; + int szpat; + char *link_pfx; /* tag prefix and link pointer (eg: "" */ + char *text_sfx; /* text suffix (eg: "" */ + int flags; /* reparse flags */ + int kind; /* tag is url or something else? */ +#define IS_URL 0x01 +} linkytype; + +static linkytype imaget = { 0, 0, "\"",", MKD_NOIMAGE|MKD_TAGTEXT, IS_URL }; +static linkytype linkt = { 0, 0, "", "", MKD_NOLINKS, IS_URL }; + +/* + * pseudo-protocols for [][]; + * + * id: generates tag + * class: generates tag + * raw: just dump the link without any processing + */ +static linkytype specials[] = { + { "id:", 3, "", "", 0, 0 }, + { "raw:", 4, 0, 0, 0, 0, 0, MKD_NOHTML, 0 }, + { "lang:", 5, "", "", 0, 0 }, + { "abbr:", 5, "", "", 0, 0 }, + { "class:", 6, "", "", 0, 0 }, +} ; + +#define NR(x) (sizeof x / sizeof x[0]) + +/* see if t contains one of our pseudo-protocols. + */ +static linkytype * +pseudo(Cstring t) +{ + int i; + linkytype *r; + + for ( i=0, r=specials; i < NR(specials); i++,r++ ) { + if ( (S(t) > r->szpat) && (strncasecmp(T(t), r->pat, r->szpat) == 0) ) + return r; + } + return 0; +} + + +/* print out the start of an `img' or `a' tag, applying callbacks as needed. + */ +static void +printlinkyref(MMIOT *f, linkytype *tag, char *link, int size) +{ + char *edit; + + if ( is_flag_set(f->flags, IS_LABEL) ) + return; + + Qstring(tag->link_pfx, f); + + if ( tag->kind & IS_URL ) { + if ( f->cb && f->cb->e_url && (edit = (*f->cb->e_url)(link, size, f->cb->e_data)) ) { + puturl(edit, strlen(edit), f, 0); + if ( f->cb->e_free ) (*f->cb->e_free)(edit, f->cb->e_data); + } + else + puturl(link + tag->szpat, size - tag->szpat, f, 0); + } + else + ___mkd_reparse(link + tag->szpat, size - tag->szpat, MKD_TAGTEXT, f, 0); + + Qstring(tag->link_sfx, f); + + if ( f->cb && f->cb->e_flags && (edit = (*f->cb->e_flags)(link, size, f->cb->e_data)) ) { + Qchar(' ', f); + Qstring(edit, f); + if ( f->cb->e_free ) (*f->cb->e_free)(edit, f->cb->e_data); + } +} /* printlinkyref */ + + +/* helper function for php markdown extra footnotes; allow the user to + * define a prefix tag instead of just `fn` + */ +static char * +p_or_nothing(p) +MMIOT *p; +{ + return p->ref_prefix ? p->ref_prefix : "fn"; +} + + +/* php markdown extra/daring fireball style print footnotes + */ +static int +extra_linky(MMIOT *f, Cstring text, Footnote *ref) +{ + if ( ref->flags & REFERENCED ) + return 0; + + if ( f->flags & IS_LABEL ) + ___mkd_reparse(T(text), S(text), linkt.flags, f, 0); + else { + ref->flags |= REFERENCED; + ref->refnumber = ++ f->footnotes->reference; + Qprintf(f, "%d", + p_or_nothing(f), ref->refnumber, + p_or_nothing(f), ref->refnumber, ref->refnumber); + } + return 1; +} /* extra_linky */ + + + +/* check a url (or url fragment to see that it begins with a known good + * protocol (or no protocol at all) + */ +static int +safelink(Cstring link) +{ + char *p, *colon; + + if ( T(link) == 0 ) /* no link; safe */ + return 1; + + p = T(link); + if ( (colon = memchr(p, ':', S(link))) == 0 ) + return 1; /* no protocol specified: safe */ + + if ( !isalpha(*p) ) /* protocol/method is [alpha][alnum or '+.-'] */ + return 1; + while ( ++p < colon ) + if ( !(isalnum(*p) || *p == '.' || *p == '+' || *p == '-') ) + return 1; + + return isautoprefix(T(link), S(link)); +} + + +/* print out a linky (or fail if it's Not Allowed) + */ +static int +linkyformat(MMIOT *f, Cstring text, int image, Footnote *ref) +{ + linkytype *tag; + + + if ( image ) + tag = &imaget; + else if ( tag = pseudo(ref->link) ) { + if ( is_flag_set(f->flags, MKD_NO_EXT) || is_flag_set(f->flags, MKD_SAFELINK) ) + return 0; + } + else if ( is_flag_set(f->flags, MKD_SAFELINK) && !safelink(ref->link) ) + /* if MKD_SAFELINK, only accept links that are local or + * a well-known protocol + */ + return 0; + else + tag = &linkt; + + if ( f->flags & tag->flags ) + return 0; + + if ( is_flag_set(f->flags, IS_LABEL) ) + ___mkd_reparse(T(text), S(text), tag->flags, f, 0); + else if ( tag->link_pfx ) { + printlinkyref(f, tag, T(ref->link), S(ref->link)); + + if ( tag->WxH ) { + if ( ref->height ) Qprintf(f," height=\"%d\"", ref->height); + if ( ref->width ) Qprintf(f, " width=\"%d\"", ref->width); + } + + if ( S(ref->title) ) { + Qstring(" title=\"", f); + ___mkd_reparse(T(ref->title), S(ref->title), MKD_TAGTEXT, f, 0); + Qchar('"', f); + } + + Qstring(tag->text_pfx, f); + ___mkd_reparse(T(text), S(text), tag->flags, f, 0); + Qstring(tag->text_sfx, f); + } + else + Qwrite(T(ref->link) + tag->szpat, S(ref->link) - tag->szpat, f); + + return 1; +} /* linkyformat */ + + +/* + * process embedded links and images + */ +static int +linkylinky(int image, MMIOT *f) +{ + int start = mmiottell(f); + Cstring name; + Footnote key, *ref; + + int status = 0; + int extra_footnote = 0; + + CREATE(name); + memset(&key, 0, sizeof key); + + if ( linkylabel(f, &name) ) { + if ( peek(f,1) == '(' ) { + pull(f); + if ( linkyurl(f, image, &key) ) + status = linkyformat(f, name, image, &key); + } + else { + int goodlink, implicit_mark = mmiottell(f); + + if ( isspace(peek(f,1)) ) + pull(f); + + if ( peek(f,1) == '[' ) { + pull(f); /* consume leading '[' */ + goodlink = linkylabel(f, &key.tag); + } + else { + /* new markdown implicit name syntax doesn't + * require a second [] + */ + mmiotseek(f, implicit_mark); + goodlink = !is_flag_set(f->flags, MKD_1_COMPAT); + + if ( is_flag_set(f->flags, MKD_EXTRA_FOOTNOTE) && (!image) && S(name) && T(name)[0] == '^' ) + extra_footnote = 1; + } + + if ( goodlink ) { + if ( !S(key.tag) ) { + DELETE(key.tag); + T(key.tag) = T(name); + S(key.tag) = S(name); + } + + if ( ref = bsearch(&key, T(f->footnotes->note), + S(f->footnotes->note), + sizeof key, (stfu)__mkd_footsort) ) { + if ( extra_footnote ) + status = extra_linky(f,name,ref); + else + status = linkyformat(f, name, image, ref); + } + } + } + } + + DELETE(name); + ___mkd_freefootnote(&key); + + if ( status == 0 ) + mmiotseek(f, start); + + return status; +} + + +/* write a character to output, doing text escapes ( & -> &, + * > -> > < -> < ) + */ +static void +cputc(int c, MMIOT *f) +{ + switch (c) { + case '&': Qstring("&", f); break; + case '>': Qstring(">", f); break; + case '<': Qstring("<", f); break; + default : Qchar(c, f); break; + } +} + + +/* + * convert an email address to a string of nonsense + */ +static void +mangle(char *s, int len, MMIOT *f) +{ + while ( len-- > 0 ) { +#if DEBIAN_GLITCH + Qprintf(f, "&#%02d;", *((unsigned char*)(s++)) ); +#else + Qstring("&#", f); + Qprintf(f, COINTOSS() ? "x%02x;" : "%02d;", *((unsigned char*)(s++)) ); +#endif + } +} + + +/* nrticks() -- count up a row of tick marks + */ +static int +nrticks(int offset, int tickchar, MMIOT *f) +{ + int tick = 0; + + while ( peek(f, offset+tick) == tickchar ) tick++; + + return tick; +} /* nrticks */ + + +/* matchticks() -- match a certain # of ticks, and if that fails + * match the largest subset of those ticks. + * + * if a subset was matched, return the # of ticks + * that were matched. + */ +static int +matchticks(MMIOT *f, int tickchar, int ticks, int *endticks) +{ + int size, count, c; + int subsize=0, subtick=0; + + *endticks = ticks; + for (size = 0; (c=peek(f,size+ticks)) != EOF; size ++) { + if ( (c == tickchar) && ( count = nrticks(size+ticks,tickchar,f)) ) { + if ( count == ticks ) + return size; + else if ( count ) { + if ( (count > subtick) && (count < ticks) ) { + subsize = size; + subtick = count; + } + size += count; + } + } + } + if ( subsize ) { + *endticks = subtick; + return subsize; + } + return 0; +} /* matchticks */ + + +/* code() -- write a string out as code. The only characters that have + * special meaning in a code block are * `<' and `&' , which + * are /always/ expanded to < and & + */ +static void +code(MMIOT *f, char *s, int length) +{ + int i,c; + + for ( i=0; i < length; i++ ) + if ( (c = s[i]) == MKD_EOLN) /* expand back to 2 spaces */ + Qstring(" ", f); + else if ( c == '\\' && (i < length-1) && escaped(f, s[i+1]) ) + cputc(s[++i], f); + else + cputc(c, f); +} /* code */ + +/* delspan() -- write out a chunk of text, blocking with ... + */ +static void +delspan(MMIOT *f, int size) +{ + Qstring("", f); + ___mkd_reparse(cursor(f)-1, size, 0, f, 0); + Qstring("", f); +} + + +/* codespan() -- write out a chunk of text as code, trimming one + * space off the front and/or back as appropriate. + */ +static void +codespan(MMIOT *f, int size) +{ + int i=0; + + if ( size > 1 && peek(f, size-1) == ' ' ) --size; + if ( peek(f,i) == ' ' ) ++i, --size; + + Qstring("", f); + code(f, cursor(f)+(i-1), size); + Qstring("", f); +} /* codespan */ + + +/* before letting a tag through, validate against + * MKD_NOLINKS and MKD_NOIMAGE + */ +static int +forbidden_tag(MMIOT *f) +{ + int c = toupper(peek(f, 1)); + + if ( is_flag_set(f->flags, MKD_NOHTML) ) + return 1; + + if ( c == 'A' && is_flag_set(f->flags, MKD_NOLINKS) && !isthisalnum(f,2) ) + return 1; + if ( c == 'I' && is_flag_set(f->flags, MKD_NOIMAGE) + && strncasecmp(cursor(f)+1, "MG", 2) == 0 + && !isthisalnum(f,4) ) + return 1; + return 0; +} + + +/* Check a string to see if it looks like a mail address + * "looks like a mail address" means alphanumeric + some + * specials, then a `@`, then alphanumeric + some specials, + * but with a `.` + */ +static int +maybe_address(char *p, int size) +{ + int ok = 0; + + for ( ;size && (isalnum(*p) || strchr("._-+*", *p)); ++p, --size) + ; + + if ( ! (size && *p == '@') ) + return 0; + + --size, ++p; + + if ( size && *p == '.' ) return 0; + + for ( ;size && (isalnum(*p) || strchr("._-+", *p)); ++p, --size ) + if ( *p == '.' && size > 1 ) ok = 1; + + return size ? 0 : ok; +} + + +/* The size-length token at cursor(f) is either a mailto:, an + * implicit mailto:, one of the approved url protocols, or just + * plain old text. If it's a mailto: or an approved protocol, + * linkify it, otherwise say "no" + */ +static int +process_possible_link(MMIOT *f, int size) +{ + int address= 0; + int mailto = 0; + char *text = cursor(f); + + if ( is_flag_set(f->flags, MKD_NOLINKS) ) return 0; + + if ( (size > 7) && strncasecmp(text, "mailto:", 7) == 0 ) { + /* if it says it's a mailto, it's a mailto -- who am + * I to second-guess the user? + */ + address = 1; + mailto = 7; /* 7 is the length of "mailto:"; we need this */ + } + else + address = maybe_address(text, size); + + if ( address ) { + Qstring("", f); + mangle(text+mailto, size-mailto, f); + Qstring("", f); + return 1; + } + else if ( isautoprefix(text, size) ) { + printlinkyref(f, &linkt, text, size); + Qchar('>', f); + puturl(text,size,f, 1); + Qstring("", f); + return 1; + } + return 0; +} /* process_possible_link */ + + +/* a < may be just a regular character, the start of an embedded html + * tag, or the start of an . If it's an automatic + * link, we also need to know if it's an email address because if it + * is we need to mangle it in our futile attempt to cut down on the + * spaminess of the rendered page. + */ +static int +maybe_tag_or_link(MMIOT *f) +{ + int c, size; + int maybetag = 1; + + if ( is_flag_set(f->flags, MKD_TAGTEXT) ) + return 0; + + for ( size=0; (c = peek(f, size+1)) != '>'; size++) { + if ( c == EOF ) + return 0; + else if ( c == '\\' ) { + maybetag=0; + if ( peek(f, size+2) != EOF ) + size++; + } + else if ( isspace(c) ) + break; + else if ( ! (c == '/' + || (is_flag_set(f->flags, MKD_GITHUBTAGS) && (c == '-' || c == '_')) + || isalnum(c) ) ) + maybetag=0; + } + + if ( size ) { + if ( maybetag || (size >= 3 && strncmp(cursor(f), "!--", 3) == 0) ) { + + /* It is not a html tag unless we find the closing '>' in + * the same block. + */ + while ( (c = peek(f, size+1)) != '>' ) + if ( c == EOF ) + return 0; + else + size++; + + if ( forbidden_tag(f) ) + return 0; + + Qchar('<', f); + while ( ((c = peek(f, 1)) != EOF) && (c != '>') ) + Qchar(pull(f), f); + return 1; + } + else if ( !isspace(c) && process_possible_link(f, size) ) { + shift(f, size+1); + return 1; + } + } + + return 0; +} + + +/* autolinking means that all inline html is . A + * autolink url is alphanumerics, slashes, periods, underscores, + * the at sign, colon, and the % character. + */ +static int +maybe_autolink(MMIOT *f) +{ + register int c; + int size; + + /* greedily scan forward for the end of a legitimate link. + */ + for ( size=0; (c=peek(f, size+1)) != EOF; size++ ) { + if ( c == '\\' ) { + if ( peek(f, size+2) != EOF ) + ++size; + } + else if ( c & 0x80 ) /* HACK: ignore utf-8 extended characters */ + continue; + else if ( isspace(c) || strchr("'\"()[]{}<>`", c) || c == MKD_EOLN ) + break; + } + + if ( (size > 1) && process_possible_link(f, size) ) { + shift(f, size); + return 1; + } + return 0; +} + + +/* smartyquote code that's common for single and double quotes + */ +static int +smartyquote(int *flags, char typeofquote, MMIOT *f) +{ + int bit = (typeofquote == 's') ? 0x01 : 0x02; + + if ( bit & (*flags) ) { + if ( isthisnonword(f,1) ) { + Qprintf(f, "&r%cquo;", typeofquote); + (*flags) &= ~bit; + return 1; + } + } + else if ( isthisnonword(f,-1) && peek(f,1) != EOF ) { + Qprintf(f, "&l%cquo;", typeofquote); + (*flags) |= bit; + return 1; + } + return 0; +} + + +static int +islike(MMIOT *f, char *s) +{ + int len; + int i; + + if ( s[0] == '|' ) { + if ( !isthisnonword(f, -1) ) + return 0; + ++s; + } + + if ( !(len = strlen(s)) ) + return 0; + + if ( s[len-1] == '|' ) { + if ( !isthisnonword(f,len-1) ) + return 0; + len--; + } + + for (i=1; i < len; i++) + if (tolower(peek(f,i)) != s[i]) + return 0; + return 1; +} + + +static struct smarties { + char c0; + char *pat; + char *entity; + int shift; +} smarties[] = { + { '\'', "'s|", "rsquo", 0 }, + { '\'', "'t|", "rsquo", 0 }, + { '\'', "'re|", "rsquo", 0 }, + { '\'', "'ll|", "rsquo", 0 }, + { '\'', "'ve|", "rsquo", 0 }, + { '\'', "'m|", "rsquo", 0 }, + { '\'', "'d|", "rsquo", 0 }, + { '-', "---", "mdash", 2 }, + { '-', "--", "ndash", 1 }, + { '.', "...", "hellip", 2 }, + { '.', ". . .", "hellip", 4 }, + { '(', "(c)", "copy", 2 }, + { '(', "(r)", "reg", 2 }, + { '(', "(tm)", "trade", 3 }, + { '3', "|3/4|", "frac34", 2 }, + { '3', "|3/4ths|", "frac34", 2 }, + { '1', "|1/2|", "frac12", 2 }, + { '1', "|1/4|", "frac14", 2 }, + { '1', "|1/4th|", "frac14", 2 }, + { '&', "�", 0, 3 }, +} ; +#define NRSMART ( sizeof smarties / sizeof smarties[0] ) + + +/* Smarty-pants-style chrome for quotes, -, ellipses, and (r)(c)(tm) + */ +static int +smartypants(int c, int *flags, MMIOT *f) +{ + int i; + + if ( is_flag_set(f->flags, MKD_NOPANTS) + || is_flag_set(f->flags, MKD_TAGTEXT) + || is_flag_set(f->flags, IS_LABEL) ) + return 0; + + for ( i=0; i < NRSMART; i++) + if ( (c == smarties[i].c0) && islike(f, smarties[i].pat) ) { + if ( smarties[i].entity ) + Qprintf(f, "&%s;", smarties[i].entity); + shift(f, smarties[i].shift); + return 1; + } + + switch (c) { + case '<' : return 0; + case '\'': if ( smartyquote(flags, 's', f) ) return 1; + break; + + case '"': if ( smartyquote(flags, 'd', f) ) return 1; + break; + + case '`': if ( peek(f, 1) == '`' ) { + int j = 2; + + while ( (c=peek(f,j)) != EOF ) { + if ( c == '\\' ) + j += 2; + else if ( c == '`' ) + break; + else if ( c == '\'' && peek(f, j+1) == '\'' ) { + Qstring("“", f); + ___mkd_reparse(cursor(f)+1, j-2, 0, f, 0); + Qstring("”", f); + shift(f,j+1); + return 1; + } + else ++j; + } + + } + break; + } + return 0; +} /* smartypants */ + + +/* process latex with arbitrary 2-character ( $$ .. $$, \[ .. \], \( .. \) + * delimiters + */ +static int +mathhandler(MMIOT *f, int e1, int e2) +{ + int i = 0; + + while(peek(f, ++i) != EOF) { + if (peek(f, i) == e1 && peek(f, i+1) == e2) { + cputc(peek(f,-1), f); + cputc(peek(f, 0), f); + cputc(6, f); + EXPAND(f->latex) = peek(f,-1); + EXPAND(f->latex) = peek(f,0); + EXPAND(f->latex) = 6; + while ( i-- > -1 ) { + char c = pull(f); + EXPAND(f->latex) = c; + cputc(c, f); + } + EXPAND(f->latex) = 31; + return 1; + } + } + return 0; +} + +/* + * process latex with arbitrary custom delimiters + */ +static int +mathhandlerExtended(MMIOT *f, char* begin, char* end) +{ + int beginLength = strlen(begin); + int endLength = strlen(end); + + for (int i = 0; i < beginLength; i++) + if (peek(f, i) != begin[i]) + return 0; + + int i = beginLength; + while(peek(f, ++i) != EOF) { + int matchEnd = 1; + for (int j = 0; j < endLength; j++) + if (peek(f, i + j) != end[j]) + matchEnd = 0; + + if (matchEnd == 1) { + i += endLength; + + cputc(6, f); + EXPAND(f->latex) = '\\'; + EXPAND(f->latex) = 6; + + while ( --i > 0 ) + { + char c = pull(f); + EXPAND(f->latex) = c; + cputc(c, f); + } + + EXPAND(f->latex) = 31; + return 1; + } + } + return 0; +} + + +/* process a body of text encased in some sort of tick marks. If it + * works, generate the output and return 1, otherwise just return 0 and + * let the caller figure it out. + */ +static int +tickhandler(MMIOT *f, int tickchar, int minticks, int allow_space, spanhandler spanner) +{ + int endticks, size; + int tick = nrticks(0, tickchar, f); + + if ( !allow_space && isspace(peek(f,tick)) ) + return 0; + + if ( (tick >= minticks) && (size = matchticks(f,tickchar,tick,&endticks)) ) { + if ( endticks < tick ) { + size += (tick - endticks); + tick = endticks; + } + + shift(f, tick); + (*spanner)(f,size); + shift(f, size+tick-1); + return 1; + } + return 0; +} + +#define tag_text(f) is_flag_set(f->flags, MKD_TAGTEXT) + + +static void +text(MMIOT *f) +{ + int c, j; + int rep; + int smartyflags = 0; + + while (1) { + if ( is_flag_set(f->flags, MKD_AUTOLINK) && isalpha(peek(f,1)) && !tag_text(f) ) + maybe_autolink(f); + + c = pull(f); + + if (c == EOF) + break; + + if ( smartypants(c, &smartyflags, f) ) + continue; + switch (c) { + case 0: break; + + case MKD_EOLN: + Qstring(tag_text(f) ? " " : "
        ", f); + break; + + case '>': if ( tag_text(f) ) + Qstring(">", f); + else + Qchar(c, f); + break; + + case '"': if ( tag_text(f) ) + Qstring(""", f); + else + Qchar(c, f); + break; + + case '!': if ( peek(f,1) == '[' ) { + pull(f); + if ( tag_text(f) || !linkylinky(1, f) ) + Qstring("![", f); + } + else + Qchar(c, f); + break; + + case '[': if ( tag_text(f) || !linkylinky(0, f) ) + Qchar(c, f); + break; + /* A^B -> AB */ + case '^': if ( is_flag_set(f->flags, MKD_NOSUPERSCRIPT) + || is_flag_set(f->flags, MKD_STRICT) + || is_flag_set(f->flags, MKD_TAGTEXT) + || (f->last == 0) + || ((ispunct(f->last) || isspace(f->last)) + && f->last != ')') + || isthisspace(f,1) ) + Qchar(c,f); + else { + char *sup = cursor(f); + int len = 0; + + if ( peek(f,1) == '(' ) { + int here = mmiottell(f); + pull(f); + + if ( (len = parenthetical('(',')',f)) <= 0 ) { + mmiotseek(f,here); + Qchar(c, f); + break; + } + sup++; + } + else { + while ( isthisalnum(f,1+len) ) + ++len; + if ( !len ) { + Qchar(c,f); + break; + } + shift(f,len); + } + Qstring("",f); + ___mkd_reparse(sup, len, 0, f, "()"); + Qstring("", f); + } + break; + case '_': + /* Underscores don't count if they're in the middle of a word */ + if ( !(is_flag_set(f->flags, MKD_NORELAXED) || is_flag_set(f->flags, MKD_STRICT)) + && isthisalnum(f,-1) && isthisalnum(f,1) ) { + Qchar(c, f); + break; + } + case '*': + /* Underscores & stars don't count if they're out in the middle + * of whitespace */ + if ( isthisspace(f,-1) && isthisspace(f,1) ) { + Qchar(c, f); + break; + } + /* else fall into the regular old emphasis case */ + if ( tag_text(f) ) + Qchar(c, f); + else { + for (rep = 1; peek(f,1) == c; pull(f) ) + ++rep; + Qem(f,c,rep); + } + break; + + case '~': if ( is_flag_set(f->flags, MKD_NOSTRIKETHROUGH) + || is_flag_set(f->flags, MKD_STRICT) + || is_flag_set(f->flags, MKD_TAGTEXT) + || ! tickhandler(f,c,2,0, delspan) ) + Qchar(c, f); + break; + + case '`': if ( tag_text(f) || !tickhandler(f,c,1,1,codespan) ) + Qchar(c, f); + break; + + case '\\': switch ( c = pull(f) ) { + case '&': Qstring("&", f); + break; + case '<': c = peek(f,1); + if ( (c == EOF) || isspace(c) ) + Qstring("<", f); + else { + /* Markdown.pl does not escape <[nonwhite] + * sequences */ + Qchar('\\', f); + shift(f, -1); + } + + break; + case '^': if ( is_flag_set(f->flags, MKD_STRICT) + || is_flag_set(f->flags, MKD_NOSUPERSCRIPT) ) { + Qchar('\\', f); + shift(f,-1); + break; + } + Qchar(c, f); + break; + + case ':': case '|': + if ( is_flag_set(f->flags, MKD_NOTABLES) ) { + Qchar('\\', f); + shift(f,-1); + break; + } + Qchar(c, f); + break; + + case EOF: Qchar('\\', f); + break; + + case '[': + case '(': + Qchar(c, f); + break; + + case '$': if ( is_flag_set(f->flags, MKD_LATEX) ) { + Qchar(c, f); + break; + } + + default: + if ( escaped(f,c) || + strchr(">#.-+{}]![*_\\()`", c) ) + Qchar(c, f); + else { + Qchar('\\', f); + shift(f, -1); + if ( is_flag_set(f->flags, MKD_LATEX) ) { + mathhandlerExtended(f, "\\begin{equation}", "\\end{equation}") + || mathhandlerExtended(f, "\\begin{equation*}", "\\end{equation*}") + || mathhandlerExtended(f, "\\begin{align}", "\\end{align}") + || mathhandlerExtended(f, "\\begin{align*}", "\\end{align*}") + || mathhandlerExtended(f, "\\begin{bmatrix}", "\\end{bmatrix}") + || mathhandlerExtended(f, "\\begin{cases}", "\\end{cases}"); + } + } + break; + } + break; + + case '<': if ( !maybe_tag_or_link(f) ) + Qstring("<", f); + break; + + case '&': j = (peek(f,1) == '#' ) ? 2 : 1; + while ( isthisalnum(f,j) ) + ++j; + + if ( peek(f,j) != ';' ) + Qstring("&", f); + else + Qchar(c, f); + break; + + case '$': if ( is_flag_set(f->flags, MKD_LATEX) ) { + if (peek(f, 1) == '$' ) { + pull(f); + if ( mathhandler(f, '$', '$') ) + break; + Qchar('$', f); + } + else { + int c2; + int i = 1; + + while ( ((c2=peek(f,i)) != '$') && (c2 != EOF) ) + i++; + if ( c2 != EOF ) { + Qchar('$', f); + cputc(6, f); + EXPAND(f->latex) = '$'; + EXPAND(f->latex) = 6; + while (i-- > 0 ) { + char sym = pull(f); + EXPAND(f->latex) = sym; + Qchar(sym, f); + } + EXPAND(f->latex) = 31; + break; + } + } + } + /* fall through to default */ + + default: f->last = c; + Qchar(c, f); + break; + } + } + /* truncate the input string after we've finished processing it */ + S(f->in) = f->isp = 0; +} /* text */ + + +/* print a header block + */ +static void +printheader(Paragraph *pp, MMIOT *f) +{ + if ( is_flag_set(f->flags, MKD_IDANCHOR) ) { + Qprintf(f, "hnumber); + if ( is_flag_set(f->flags, MKD_TOC) ) { + Qstring(" id=\"", f); + Qanchor(pp->text, f); + Qchar('"', f); + } + Qchar('>', f); + } else { + if ( is_flag_set(f->flags, MKD_TOC) ) { + Qstring("
        text, f); + Qstring("\">\n", f); + } + Qprintf(f, "", pp->hnumber); + } + push(T(pp->text->text), S(pp->text->text), f); + text(f); + Qprintf(f, "", pp->hnumber); +} + + +enum e_alignments { a_NONE, a_CENTER, a_LEFT, a_RIGHT }; + +static char* alignments[] = { "", " style=\"text-align:center;\"", + " style=\"text-align:left;\"", + " style=\"text-align:right;\"" }; + +typedef STRING(int) Istring; + +static int +splat(Line *p, char *block, Istring align, int force, MMIOT *f) +{ + int first, + idx = p->dle, + colno = 0; + + + ___mkd_tidy(&p->text); + if ( T(p->text)[S(p->text)-1] == '|' ) + --S(p->text); + + Qstring("\n", f); + while ( idx < S(p->text) ) { + first = idx; + if ( force && (colno >= S(align)-1) ) + idx = S(p->text); + else + while ( (idx < S(p->text)) && (T(p->text)[idx] != '|') ) { + if ( T(p->text)[idx] == '\\' ) + ++idx; + ++idx; + } + + Qprintf(f, "<%s%s>", + block, + alignments[ (colno < S(align)) ? T(align)[colno] : a_NONE ]); + ___mkd_reparse(T(p->text)+first, idx-first, 0, f, "|"); + Qprintf(f, "\n", block); + idx++; + colno++; + } + if ( force ) + while (colno < S(align) ) { + Qprintf(f, "<%s>\n", block, block); + ++colno; + } + Qstring("\n", f); + return colno; +} + + +static int +printtable(Paragraph *pp, MMIOT *f) +{ + /* header, dashes, then lines of content */ + + Line *hdr, *dash, *body; + Istring align; + int hcols,start; + char *p; + enum e_alignments it; + + hdr = pp->text; + dash= hdr->next; + body= dash->next; + + if ( T(hdr->text)[hdr->dle] == '|' ) { + /* trim leading pipe off all lines + */ + Line *r; + for ( r = pp->text; r; r = r->next ) + r->dle ++; + } + + /* figure out cell alignments */ + + CREATE(align); + + for (p=T(dash->text), start=dash->dle; start < S(dash->text); ) { + char first, last; + int end; + + last=first=0; + for (end=start ; (end < S(dash->text)) && p[end] != '|'; ++ end ) { + if ( p[end] == '\\' ) + ++ end; + else if ( !isspace(p[end]) ) { + if ( !first) first = p[end]; + last = p[end]; + } + } + it = ( first == ':' ) ? (( last == ':') ? a_CENTER : a_LEFT) + : (( last == ':') ? a_RIGHT : a_NONE ); + + EXPAND(align) = it; + start = 1+end; + } + + Qstring("\n", f); + Qstring("\n", f); + hcols = splat(hdr, "th", align, 0, f); + Qstring("\n", f); + + if ( hcols < S(align) ) + S(align) = hcols; + else + while ( hcols > S(align) ) + EXPAND(align) = a_NONE; + + Qstring("\n", f); + for ( ; body; body = body->next) + splat(body, "td", align, 1, f); + Qstring("\n", f); + Qstring("
        \n", f); + + DELETE(align); + return 1; +} + + +static int +printblock(Paragraph *pp, MMIOT *f) +{ + static char *Begin[] = { "", "

        ", "

        " }; + static char *End[] = { "", "

        ","

        " }; + Line *t = pp->text; + int align = pp->align; + + while (t) { + if ( S(t->text) ) { + if ( t->next && S(t->text) > 2 + && T(t->text)[S(t->text)-2] == ' ' + && T(t->text)[S(t->text)-1] == ' ' ) { + push(T(t->text), S(t->text)-2, f); + pushc(MKD_EOLN, f); + pushc('\n', f); + } + else { + ___mkd_tidy(&t->text); + push(T(t->text), S(t->text), f); + if ( t->next ) + pushc('\n', f); + } + } + t = t->next; + } + Qstring(Begin[align], f); + text(f); + Qstring(End[align], f); + return 1; +} + + +static void +printcode(Line *t, char *lang, MMIOT *f) +{ + int blanks; + + if ( f->cb->e_codefmt ) { + /* external code block formatter; copy the text into a buffer, + * call the formatter to style it, then dump that styled text + * directly to the queue + */ + char *text; + char *fmt; + int size, copy_p; + Line *p; + + for (size=0, p = t; p; p = p->next ) + size += 1+S(p->text); + + text = malloc(1+size); + + for ( copy_p = 0; t ; t = t->next ) { + memcpy(text+copy_p, T(t->text), S(t->text)); + copy_p += S(t->text); + text[copy_p++] = '\n'; + } + text[copy_p] = 0; + + fmt = (*(f->cb->e_codefmt))(text, copy_p, (lang && lang[0]) ? lang : 0); + free(text); + + if ( fmt ) { + Qwrite(fmt, strlen(fmt), f); + if ( f->cb->e_free ) + (*(f->cb->e_free))(fmt, f->cb->e_data); + return; + } + /* otherwise the external formatter failed and we need to + * fall back to the traditional codeblock format + */ + } + + Qstring("
        ", f);
        +    for ( blanks = 0; t ; t = t->next ) {
        +	if ( S(t->text) > t->dle ) {
        +	    while ( blanks ) {
        +		Qchar('\n', f);
        +		--blanks;
        +	    }
        +	    code(f, T(t->text), S(t->text));
        +	    Qchar('\n', f);
        +	}
        +	else blanks++;
        +    }
        +    Qstring("
        ", f); +} + + +static void +printhtml(Line *t, MMIOT *f) +{ + int blanks; + + for ( blanks=0; t ; t = t->next ) + if ( S(t->text) ) { + for ( ; blanks; --blanks ) + Qchar('\n', f); + + Qwrite(T(t->text), S(t->text), f); + Qchar('\n', f); + } + else + blanks++; +} + + +static void +htmlify_paragraphs(Paragraph *p, MMIOT *f) +{ + ___mkd_emblock(f); + + while (( p = display(p, f) )) { + ___mkd_emblock(f); + Qstring("\n\n", f); + } +} + + +#ifdef GITHUB_CHECKBOX +static void +li_htmlify(Paragraph *p, char *arguments, mkd_flag_t flags, MMIOT *f) +{ + ___mkd_emblock(f); + + Qprintf(f, ""); +#if CHECKBOX_AS_INPUT + if ( flags & GITHUB_CHECK ) { + Qprintf(f, ""); + } +#else + if ( flags & GITHUB_CHECK ) + Qprintf(f, flags & IS_CHECKED ? "☑" : "☐"); +#endif + + htmlify_paragraphs(p, f); + + Qprintf(f, ""); + ___mkd_emblock(f); +} +#endif + + +static void +htmlify(Paragraph *p, char *block, char *arguments, MMIOT *f) +{ + ___mkd_emblock(f); + if ( block ) + Qprintf(f, arguments ? "<%s %s>" : "<%s>", block, arguments); + + htmlify_paragraphs(p, f); + + if ( block ) + Qprintf(f, "", block); + ___mkd_emblock(f); +} + + +static void +definitionlist(Paragraph *p, MMIOT *f) +{ + Line *tag; + + if ( p ) { + Qstring("
        \n", f); + + for ( ; p ; p = p->next) { + for ( tag = p->text; tag; tag = tag->next ) { + Qstring("
        ", f); + ___mkd_reparse(T(tag->text), S(tag->text), 0, f, 0); + Qstring("
        \n", f); + } + + htmlify(p->down, "dd", p->ident, f); + Qchar('\n', f); + } + + Qstring("
        ", f); + } +} + + +static void +listdisplay(int typ, Paragraph *p, MMIOT* f) +{ + if ( p ) { + Qprintf(f, "<%cl", (typ==UL)?'u':'o'); + if ( typ == AL ) + Qprintf(f, " type=\"a\""); + Qprintf(f, ">\n"); + + for ( ; p ; p = p->next ) { +#ifdef GITHUB_CHECKBOX + li_htmlify(p->down, p->ident, p->flags, f); +#else + htmlify(p->down, "li", p->ident, f); +#endif + Qchar('\n', f); + } + + Qprintf(f, "\n", (typ==UL)?'u':'o'); + } +} + + +/* dump out a Paragraph in the desired manner + */ +static Paragraph* +display(Paragraph *p, MMIOT *f) +{ + if ( !p ) return 0; + + switch ( p->typ ) { + case STYLE: + case WHITESPACE: + break; + + case HTML: + printhtml(p->text, f); + break; + + case CODE: + printcode(p->text, p->lang, f); + break; + + case QUOTE: + htmlify(p->down, p->ident ? "div" : "blockquote", p->ident, f); + break; + + case UL: + case OL: + case AL: + listdisplay(p->typ, p->down, f); + break; + + case DL: + definitionlist(p->down, f); + break; + + case HR: + Qstring("
        ", f); + break; + + case HDR: + printheader(p, f); + break; + + case TABLE: + printtable(p, f); + break; + + case SOURCE: + htmlify(p->down, 0, 0, f); + break; + + default: + printblock(p, f); + break; + } + return p->next; +} + + +/* dump out a list of footnotes + */ +static void +mkd_extra_footnotes(MMIOT *m) +{ + int j, i; + Footnote *t; + + if ( m->footnotes->reference == 0 ) + return; + + Csprintf(&m->out, "\n
        \n
        \n
          \n"); + + for ( i=1; i <= m->footnotes->reference; i++ ) { + for ( j=0; j < S(m->footnotes->note); j++ ) { + t = &T(m->footnotes->note)[j]; + if ( (t->refnumber == i) && (t->flags & REFERENCED) ) { + Csprintf(&m->out, "
        1. \n", + p_or_nothing(m), t->refnumber); + htmlify(t->text, 0, 0, m); + Csprintf(&m->out, "", + p_or_nothing(m), t->refnumber); + Csprintf(&m->out, "
        2. \n"); + } + } + } + Csprintf(&m->out, "
        \n
        \n"); +} + + +/* return a pointer to the compiled markdown + * document. + */ +int +mkd_document(Document *p, char **res) +{ + int size; + + if ( p && p->compiled ) { + if ( ! p->html ) { + htmlify(p->code, 0, 0, p->ctx); + if ( is_flag_set(p->ctx->flags, MKD_EXTRA_FOOTNOTE) ) + mkd_extra_footnotes(p->ctx); + p->html = 1; + size = S(p->ctx->out); + + if ( (size == 0) || T(p->ctx->out)[size-1] ) { + /* Add a null byte at the end of the generated html, + * but pretend it doesn't exist. + */ + EXPAND(p->ctx->out) = 0; + --S(p->ctx->out); + } + } + + *res = T(p->ctx->out); + return S(p->ctx->out); + } + return EOF; +} + +/* Return list of founded latex textes (only textes, without positions) separeted by ASCII unit separator (code - 31) + * Ugly, but works + */ +int +mkd_latextext(Document *p, char **res) +{ + int size; + + if ( p && p->compiled ) { + if ( ! p->html ) { + htmlify(p->code, 0, 0, p->ctx); + if ( is_flag_set(p->ctx->flags, MKD_EXTRA_FOOTNOTE) ) + mkd_extra_footnotes(p->ctx); + p->html = 1; + size = S(p->ctx->latex); + + if ( (size == 0) || T(p->ctx->latex)[size-1] ) { + /* Add a null byte at the end of the generated html, + * but pretend it doesn't exist. + */ + EXPAND(p->ctx->latex) = 0; + --S(p->ctx->latex); + } + } + + *res = T(p->ctx->latex); + return S(p->ctx->latex); + } + return EOF; +} diff --git a/thirdparty/discount-2.2.6-patched/gethopt.3 b/thirdparty/discount-2.2.6-patched/gethopt.3 new file mode 100644 index 0000000..0aed09e --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/gethopt.3 @@ -0,0 +1,196 @@ +.\" Copyright (c) 1988, 1991 Regents of the University of California. +.\" Copyright (c) 2017 David Loren Parsons. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.Dd Jan 23, 2017 +.Dt GETHOPT 3 +.Os Mastodon +.Sh NAME +.Nm gethopt +.Nd get option letter or word from argv +.Sh SYNOPSIS +.Fd #include "gethopt.h" + +.Bd -literal -compact +struct h_opt { + int option; + char *optword; + char optchar; + int opthasarg; + char *optdesc; +} ; +.Ed +.Ft char* +.Fn hoptarg "struct h_context* argctx" +.Ft int +.Fn hoptind "struct h_context* argctx" +.Ft int +.Fn hopterr "struct h_context* argctx" "int flag" +.Ft char +.Fn hoptopt "struct h_context* argctx" +.Ft void +.Fn hoptset "struct h_context* argctx" "int argc" "char** argv" +.Ft struct h_opt* +.Fn gethopt "struct h_context* argctx" "struct h_opt* optarray" "int nropts" + +.Sh DESCRIPTION +The +.Fn gethopt +function gets +the next +.Em known +option word or character from +.Fa argctx . +An option is +.Em known +if it has been specified in the array of accepted options +.Fa optarray . +.Pp +The option array +.Fa optarray +contains records with either an option word, character, or both, +a flag saying the option needs an argument, a short description +of the option, and an +.Va option +key (which is there for the convenience of the calling program; +.Fn gethopt +does not use it in any way.). +It does not matter to +.Fn getopt +if a following argument has leading white space. +.Pp +On return from +.Fn gethopt , +.Fn hoptarg +returns an option argument, if it is anticipated, +and the variable +.Fn hoptind +contains the index to the next +.Fa argv +argument for a subsequent call +to +.Fn gethopt . +.Pp +.Fn +gethopt +uses a (semi) opaque data blob to hold the current state, which +must be initialized by the +.Fn hoptset +function. +.Pp +The +.Fn gethopt +function +returns +.Dv HOPTERR +if a non-recognized +option is encountered, +and NULL when it reaches the end of the options on the command line.. +.Pp +The interpretation of options in the argument list may be cancelled +by +.Ql - +(single dash) or +.Ql -- +(double dash) which causes +.Fn getopt +to signal the end of argument processing and return an +.Dv NULL . +When all options have been processed (i.e., up to the first non-option +argument), +.Fn gethopt +returns +.Dv NULL . +.Sh DIAGNOSTICS +If the +.Fn gethopt +function encounters a character not found in +.Va optarray +or detects +a missing option argument +it returns +.Dv HOPTERR +(and writes an error message to the +.Em stderr +if +.Fn hopterr +is used to turn error reporting on.) +.Sh EXAMPLE +.Bd -literal -compact +struct h_opt opts[] = { + { 0, "css", 0, 1, "css file" }, + { 1, "header", 0, 1, "header file" }, + { 2, 0, 'a', 0, "option a (no arg)" }, + { 3, 0, 'b', 1, "option B (with arg)" }, + { 4, "help", '?', 0, "help message" }, +} ; + +#define NROPT (sizeof opts/sizeof opts[0]) + + +int +main(argc, argv) +char **argv; +{ + struct h_opt *ret; + struct h_context ctx; + + hoptset(&ctx, argc, argv); + hopterr(&ctx, 1); + + while (( ret = gethopt(&ctx, opts, NROPT) )) { + + if ( ret != HOPTERR ) { + if ( ret->optword ) + printf("%s", ret->optword); + else + printf("%c", ret->optchar); + + if ( ret->opthasarg ) { + if ( hoptarg(&ctx) ) + printf(" = %s", hoptarg(&ctx)); + else + printf(" with no argument?"); + } + puts(ret->optdesc ? ret->optdesc : ""); + } + } + + argc -= hoptind(&ctx); + argv += hoptind(&ctx); + +.Ed +.Sh HISTORY +The +.Fn gethopt +function was a quick hack to replace manually parsing full-word arguments +in +.Va discount . diff --git a/thirdparty/discount-2.2.6-patched/gethopt.c b/thirdparty/discount-2.2.6-patched/gethopt.c new file mode 100644 index 0000000..4c6e4ce --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/gethopt.c @@ -0,0 +1,286 @@ +/* + * gehopt; options processing with both single-character and whole-word + * options both introduced with - + */ + +#include +#include + +#include "gethopt.h" + + +void +hoptset(ctx, argc, argv) +struct h_context *ctx; +int argc; +char **argv; +{ + memset(ctx, 0, sizeof *ctx); + ctx->argc = argc; + ctx->argv = argv; + ctx->optind = 1; +} + + +char * +hoptarg(ctx) +struct h_context *ctx; +{ + return ctx->optarg; +} + +int +hoptind(ctx) +struct h_context *ctx; +{ + return ctx->optind; +} + +char +hoptopt(ctx) +struct h_context *ctx; +{ + return ctx->optopt; +} + + +int +hopterr(ctx,val) +struct h_context *ctx; +{ + int old = ctx->opterr; + + ctx->opterr = !!val; + return old; +} + + +struct h_opt * +gethopt(ctx, opts, nropts) +struct h_context *ctx; +struct h_opt *opts; +int nropts; +{ + int i; + int dashes; + + + if ( (ctx == 0) || ctx->optend || (ctx->optind >= ctx->argc) ) + return 0; + + ctx->optarg = 0; + ctx->optopt = 0; + + if ( ctx->optchar == 0) { + /* check for leading - + */ + if ( ctx->argv[ctx->optind][0] != '-' ) { + /* out of arguments */ + ctx->optend = 1; + return 0; + } + + if ( ctx->argv[ctx->optind][1] == 0 + || strcmp(ctx->argv[ctx->optind], "--") == 0 ) { + /* option list finishes with - or -- token + */ + ctx->optend = 1; + ctx->optind++; + return 0; + } + + dashes = 1; + if ( ctx->argv[ctx->optind][dashes] == '-' ) { + /* support GNU-style long option double-dash prefix + * (if gethopt is passed an unknown option with a double-dash + * prefix, it won't match a word and then the second dash + * will be scanned as if it was a regular old single-character + * option.) + */ + dashes = 2; + } + + for ( i=0; i < nropts; i++ ) { + if ( ! opts[i].optword ) + continue; + + if (strcmp(opts[i].optword, dashes+(ctx->argv[ctx->optind]) ) == 0 ) { + if ( opts[i].opthasarg ) { + if ( ctx->argc > ctx->optind ) { + ctx->optarg = ctx->argv[ctx->optind+1]; + ctx->optind += 2; + } + else { + /* word argument with required arg at end of + *command line + */ + if ( ctx->opterr ) + fprintf(stderr, + "%s: option requires an argument -- %s\n", + ctx->argv[0], opts[i].optword); + ctx->optind ++; + return HOPTERR; + } + } + else { + ctx->optind ++; + } + return &opts[i]; + } + } + ctx->optchar = 1; + } + + ctx->optopt = ctx->argv[ctx->optind][ctx->optchar++]; + + if ( !ctx->optopt ) { + /* fell off the end of this argument */ + ctx->optind ++; + ctx->optchar = 0; + return gethopt(ctx, opts, nropts); + } + + for ( i=0; ioptopt ) { + /* found a single-char option! + */ + if ( opts[i].opthasarg ) { + if ( ctx->argv[ctx->optind][ctx->optchar] ) { + /* argument immediately follows this options (-Oc) + */ + ctx->optarg = &ctx->argv[ctx->optind][ctx->optchar]; + ctx->optind ++; + ctx->optchar = 0; + } + else if ( ctx->optind < ctx->argc-1 ) { + /* argument is next arg (-O c) + */ + ctx->optarg = &ctx->argv[ctx->optind+1][0]; + ctx->optind += 2; + ctx->optchar = 0; + } + else { + /* end of arg string (-O); set optarg to null, return + * (should it opterr on me?) + */ + ctx->optarg = 0; + ctx->optind ++; + ctx->optchar = 0; + if ( ctx->opterr ) + fprintf(stderr, + "%s: option requires an argument -- %c\n", + ctx->argv[0], opts[i].optchar); + return HOPTERR; + } + } + else { + if ( !ctx->argv[ctx->optind][ctx->optchar] ) { + ctx->optind ++; + ctx->optchar = 0; + } + } + return &opts[i]; + } + } + if ( ctx->opterr ) + fprintf(stderr, "%s: illegal option -- %c\n", ctx->argv[0], ctx->optopt); + return HOPTERR; +} + + +void +hoptusage(char *pgm, struct h_opt opts[], int nropts, char *arguments) +{ + int i; + int optcount; + + fprintf(stderr, "usage: %s", pgm); + + /* print out the options that don't have flags first */ + + for ( optcount=i=0; i < nropts; i++ ) { + if ( opts[i].optchar && !opts[i].opthasarg) { + if (optcount == 0 ) + fputs(" [-", stderr); + fputc(opts[i].optchar, stderr); + optcount++; + } + } + if ( optcount ) + fputc(']', stderr); + + /* print out the options WITH flags */ + for ( i = 0; i < nropts; i++ ) + if ( opts[i].optchar && opts[i].opthasarg) + fprintf(stderr, " [-%c %s]", opts[i].optchar, opts[i].opthasarg); + + /* print out the long options */ + for ( i = 0; i < nropts; i++ ) + if ( opts[i].optword ) { + fprintf(stderr, " [-%s", opts[i].optword); + if ( opts[i].opthasarg ) + fprintf(stderr, " %s", opts[i].opthasarg); + fputc(']', stderr); + } + + /* print out the arguments string, if any */ + + if ( arguments ) + fprintf(stderr, " %s", arguments); + + /* and we're done */ + fputc('\n', stderr); +} + + +#if DEBUG +struct h_opt opts[] = { + { 0, "css", 0, 1, "css file" }, + { 1, "header", 0, 1, "header file" }, + { 2, 0, 'a', 0, "option a (no arg)" }, + { 3, 0, 'b', 1, "option B (with arg)" }, + { 4, "help", '?', 0, "help message" }, +} ; + +#define NROPT (sizeof opts/sizeof opts[0]) + + +int +main(argc, argv) +char **argv; +{ + struct h_opt *ret; + struct h_context ctx; + int i; + + + hoptset(&ctx, argc, argv); + hopterr(&ctx, 1); + + while (( ret = gethopt(&ctx, opts, NROPT) )) { + + if ( ret != HOPTERR ) { + if ( ret->optword ) + printf("%s", ret->optword); + else + printf("%c", ret->optchar); + + if ( ret->opthasarg ) { + if ( hoptarg(&ctx) ) + printf(" with argument \"%s\"", hoptarg(&ctx)); + else + printf(" with no argument?"); + } + printf(" (%s)\n", ret->optdesc); + } + } + + argc -= hoptind(&ctx); + argv += hoptind(&ctx); + + for ( i=0; i < argc; i++ ) + printf("%d: %s\n", i, argv[i]); + return 0; +} + +#endif /*DEBUG*/ diff --git a/thirdparty/discount-2.2.6-patched/gethopt.h b/thirdparty/discount-2.2.6-patched/gethopt.h new file mode 100644 index 0000000..65817b1 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/gethopt.h @@ -0,0 +1,43 @@ +/* + * gethopt; options processing with both single-character and whole-work + * options both introduced with - + */ + +#ifndef __GETHOPT_D +#define __GETHOPT_D + +#include +#include + + +struct h_opt { + int option; + char *optword; + char optchar; + char *opthasarg; + char *optdesc; +} ; + +#define HOPTERR ((struct h_opt*)-1) + +struct h_context { + char **argv; + int argc; + int optchar; + int optind; + char *optarg; + char optopt; + int opterr:1; + int optend:1; +} ; + +extern char *hoptarg(struct h_context *); +extern int hoptind(struct h_context *); +extern char hoptopt(struct h_context *); +extern void hoptset(struct h_context *, int, char **); +extern int hopterr(struct h_context *, int); +extern struct h_opt *gethopt(struct h_context *, struct h_opt*, int); + +extern void hoptusage(char *, struct h_opt*, int, char *); + +#endif/*__GETHOPT_D*/ diff --git a/thirdparty/discount-2.2.6-patched/github_flavoured.c b/thirdparty/discount-2.2.6-patched/github_flavoured.c new file mode 100644 index 0000000..019f783 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/github_flavoured.c @@ -0,0 +1,101 @@ + +/* + * github_flavoured -- implement the obnoxious "returns are hard newlines" + * feature in github flavoured markdown. + * + * Copyright (C) 2012 David L Parsons. + * The redistribution terms are provided in the COPYRIGHT file that must + * be distributed with this source code. + */ +#include "config.h" +#include +#include +#include + +#include "cstring.h" +#include "markdown.h" +#include "amalloc.h" + +/* build a Document from any old input. + */ +typedef int (*getc_func)(void*); + +Document * +gfm_populate(getc_func getc, void* ctx, int flags) +{ + Cstring line; + Document *a = __mkd_new_Document(); + int c; + int pandoc = 0; + + if ( !a ) return 0; + + a->tabstop = is_flag_set(flags, MKD_TABSTOP) ? 4 : TABSTOP; + + CREATE(line); + + while ( (c = (*getc)(ctx)) != EOF ) { + if ( c == '\n' ) { + if ( pandoc != EOF && pandoc < 3 ) { + if ( S(line) && (T(line)[0] == '%') ) + pandoc++; + else + pandoc = EOF; + } + + if (pandoc == EOF) { + EXPAND(line) = ' '; + EXPAND(line) = ' '; + } + __mkd_enqueue(a, &line); + S(line) = 0; + } + else if ( isprint(c) || isspace(c) || (c & 0x80) ) + EXPAND(line) = c; + } + + if ( S(line) ) + __mkd_enqueue(a, &line); + + DELETE(line); + + if ( (pandoc == 3) && !(is_flag_set(flags, MKD_NOHEADER) + || is_flag_set(flags, MKD_STRICT)) ) { + /* the first three lines started with %, so we have a header. + * clip the first three lines out of content and hang them + * off header. + */ + Line *headers = T(a->content); + + a->title = headers; __mkd_trim_line(a->title, 1); + a->author= headers->next; __mkd_trim_line(a->author, 1); + a->date = headers->next->next; __mkd_trim_line(a->date, 1); + + T(a->content) = headers->next->next->next; + } + + return a; +} + + +/* convert a block of text into a linked list + */ +Document * +gfm_string(const char *buf, int len, mkd_flag_t flags) +{ + struct string_stream about; + + about.data = buf; + about.size = len; + + return gfm_populate((getc_func)__mkd_io_strget, &about, flags & INPUT_MASK); +} + + +/* convert a file into a linked list + */ +Document * +gfm_in(FILE *f, mkd_flag_t flags) +{ + return gfm_populate((getc_func)fgetc, f, flags & INPUT_MASK); +} diff --git a/thirdparty/discount-2.2.6-patched/h1title.c b/thirdparty/discount-2.2.6-patched/h1title.c new file mode 100644 index 0000000..89fd9d2 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/h1title.c @@ -0,0 +1,36 @@ +#include +#include "markdown.h" + +static Paragraph * +mkd_h1(Paragraph *p) +{ + Paragraph *found; + + while ( p ) { + if ( p->typ == HDR && p->hnumber == 1 ) + return p; + if ( p->down && (found = mkd_h1(p->down)) ) + return found; + p = p->next; + } + return 0; +} + +char * +mkd_h1_title(Document *doc, int flags) +{ + Paragraph *title; + + if (doc && (title = mkd_h1(doc->code)) ) { + char *generated; + int size; + + /* assert that a H1 header is one line long, so that's + * the only thing needed + */ + size = mkd_line(T(title->text->text), + S(title->text->text), &generated, flags|MKD_TAGTEXT); + if ( size ) return generated; + } + return 0; +} diff --git a/thirdparty/discount-2.2.6-patched/html5.c b/thirdparty/discount-2.2.6-patched/html5.c new file mode 100644 index 0000000..870589c --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/html5.c @@ -0,0 +1,21 @@ +/* block-level tags for passing html5 blocks through the blender + */ +#include "tags.h" + +void +mkd_with_html5_tags() +{ + static int populated = 0; + + if ( populated ) return; + populated = 1; + + mkd_define_tag("ASIDE", 0); + mkd_define_tag("FOOTER", 0); + mkd_define_tag("HEADER", 0); + mkd_define_tag("NAV", 0); + mkd_define_tag("SECTION", 0); + mkd_define_tag("ARTICLE", 0); + + mkd_sort_tags(); +} diff --git a/thirdparty/discount-2.2.6-patched/libmarkdown.pc.in b/thirdparty/discount-2.2.6-patched/libmarkdown.pc.in new file mode 100644 index 0000000..1d1082e --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/libmarkdown.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@prefix@ +libdir=@libdir@ +includedir=@prefix@/include + +Name: @PACKAGE_NAME@ +Version: @PACKAGE_VERSION@ +Description: C implementation of John Gruber's Markdown markup language + +Libs: -L${libdir} -lmarkdown @LIBS@ +Cflags: -I${includedir} diff --git a/thirdparty/discount-2.2.6-patched/main.c b/thirdparty/discount-2.2.6-patched/main.c new file mode 100644 index 0000000..65985f2 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/main.c @@ -0,0 +1,338 @@ +/* + * markdown: convert a single markdown document into html + */ +/* + * Copyright (C) 2007 David L Parsons. + * The redistribution terms are provided in the COPYRIGHT file that must + * be distributed with this source code. + */ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "config.h" +#include "amalloc.h" +#include "pgm_options.h" +#include "tags.h" +#include "gethopt.h" + +#if HAVE_LIBGEN_H +#include +#endif + +#ifndef HAVE_BASENAME +#include + +char* +basename(char *p) +{ + char *ret = strrchr(p, '/'); + + return ret ? (1+ret) : p; +} +#endif + + +char *pgm = "markdown"; + +char * +e_flags(const char *text, const int size, void *context) +{ + return (char*)context; +} + + +void +complain(char *fmt, ...) +{ + va_list ptr; + + fprintf(stderr, "%s: ", pgm); + va_start(ptr, fmt); + vfprintf(stderr, fmt, ptr); + va_end(ptr); + fputc('\n', stderr); + fflush(stderr); +} + + +char * +anchor_format(char *input, void *ctx) +{ + int i, j, size; + char* ret; + + if ( !input ) + return NULL; + + size = strlen(input); + + ret = malloc(1+size); + + if ( !ret ) + return NULL; + + + while ( size && isspace(input[size-1]) ) + --size; + + for ( j=i=0; i < size; i++ ) { + if (isalnum(input[i]) || strchr("-_+", input[i]) ) + ret[j++] = input[i]; + else if ( input[i] == ' ' ) + ret[j++] = '-'; + } + ret[j++] = 0; + + return ret; +} + +void +free_it(char *object, void *ctx) +{ + if ( object ) + free(object); +} + +char * +external_codefmt(char *src, int len, char *lang) +{ + int extra = 0; + int i, x; + char *res; + + if ( lang == 0 ) + lang = "generic_code"; + + for ( i=0; i < len; i++) { + if ( src[i] == '&' ) + extra += 5; + else if ( src[i] == '<' || src[i] == '>' ) + extra += 4; + } + + /* 80 characters for the format wrappers */ + if ( (res = malloc(len+extra+80+strlen(lang))) ==0 ) + /* out of memory? drat! */ + return 0; + + sprintf(res, "
        \n", lang);
        +    x = strlen(res);
        +    for ( i=0; i < len; i++ ) {
        +	switch (src[i]) {
        +	case '&':   strcpy(&src[x], "&");
        +		    x += 5 /*strlen(&)*/ ;
        +		    break;
        +	case '<':   strcpy(&src[x], "<");
        +		    x += 4 /*strlen(<)*/ ;
        +		    break;
        +	case '>':   strcpy(&src[x], ">");
        +		    x += 4 /*strlen(>)*/ ;
        +		    break;
        +	default:    res[x++] = src[i];
        +		    break;
        +	}
        +    }
        +    strcpy(&res[x], "
        \n"); + return res; +} + + +struct h_opt opts[] = { + { 0, "html5", '5', 0, "recognise html5 block elements" }, + { 0, "base", 'b', "url-base", "URL prefix" }, + { 0, "debug", 'd', 0, "debugging" }, + { 0, "version",'V', 0, "show version info" }, + { 0, 0, 'E', "flags", "url flags" }, + { 0, 0, 'F', "bitmap", "set/show hex flags" }, + { 0, 0, 'f', "{+-}flags", "set/show named flags" }, + { 0, 0, 'G', 0, "github flavoured markdown" }, + { 0, 0, 'n', 0, "don't write generated html" }, + { 0, 0, 's', "text", "format `text`" }, + { 0, "style", 'S', 0, "output +at the end of the line or a +.Em +at the beginning of a subsequent line. +.Pp +Be warned that style blocks work like footnote links -- no matter +where you define them they are valid for the entire document. +.Ss alpha lists +Alphabetic lists (like regular numeric lists, but with alphabetic +items) are supported. So: +.nf + a. this + b. is + c. an alphabetic + d. list +.fi +will produce: +.nf +
          +
        1. this
        2. +
        3. is
        4. +
        5. an alphabetic
        6. +
        7. list
        8. +
        +.fi +.Ss tables +.Ar "PHP Markdown Extra" +tables are supported; input of the form +.nf + header|header + ------|------ + text | text +.fi +will produce: +.nf + + + + + + + + + + + + + +
        headerheader
        texttext
        +.fi +The dashed line can also contain +.Em : +characters for formatting; if a +.Em : +is at the start of a column, it tells +.Nm discount +to align the cell contents to the left; if it's at the end, it +aligns right, and if there's one at the start and at the +end, it centers. +.Ss strikethrough +A strikethrough syntax is supported in much the same way that +.Ar ` +is used to define a section of code. If you enclose text with +two or more tildes, such as +.Em ~~erased text~~ +it will be written as +.Em "erased text" . +Like code sections, you may use as many +.Ar ~ +as you want, but there must be as many starting tildes as closing +tildes. +.Ss markdown extra-style footnotes +.Ar "PHP Markdown Extra" +footnotes are supported. If a footnote link begins with a +.Ar ^ , +the first use of that footnote will generate a link down to the +bottom of the rendered document, which will contain a numbered footnote +with a link back to where the footnote was called. +.Sh AUTHOR +David Parsons +.%T http://www.pell.portland.or.us/~orc/ +.Sh SEE ALSO +.Xr markdown 1 , +.Xr markdown 3 , +.Xr mkd-callbacks 3 , +.Xr mkd-functions 3 , +.Xr mkd-line 3 . +.Pp +.%T http://daringfireball.net/projects/markdown +.Pp +.%T http://michelf.com/projects/php-markdown diff --git a/thirdparty/discount-2.2.6-patched/mkd-functions.3 b/thirdparty/discount-2.2.6-patched/mkd-functions.3 new file mode 100644 index 0000000..d4bc9eb --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/mkd-functions.3 @@ -0,0 +1,186 @@ +.\" +.Dd January 18, 2008 +.Dt MKD_FUNCTIONS 3 +.Os Mastodon +.Sh NAME +.Nm mkd_functions +.Nd access and process Markdown documents. +.Sh LIBRARY +Markdown +.Pq libmarkdown , -lmarkdown +.Sh SYNOPSIS +.Fd #include +.Ft int +.Fn mkd_compile "MMIOT *document" "int flags" +.Ft int +.Fn mkd_css "MMIOT *document" "char **doc" +.Ft int +.Fn mkd_generatecss "MMIOT *document" "FILE *output" +.Ft int +.Fn mkd_document "MMIOT *document" "char **doc" +.Ft int +.Fn mkd_generatehtml "MMIOT *document" "FILE *output" +.Ft int +.Fn mkd_xhtmlpage "MMIOT *document" "int flags" "FILE *output" +.Ft int +.Fn mkd_toc "MMIOT *document" "char **doc" +.Ft void +.Fn mkd_generatetoc "MMIOT *document" "FILE *output" +.Ft void +.Fn mkd_cleanup "MMIOT*" +.Ft char* +.Fn mkd_doc_title "MMIOT*" +.Ft char* +.Fn mkd_doc_author "MMIOT*" +.Ft char* +.Fn mkd_doc_date "MMIOT*" +.Sh DESCRIPTION +.Pp +The +.Nm markdown +format supported in this implementation includes +Pandoc-style header and inline +.Ar \ +blocks, and the standard +.Xr markdown 3 +functions do not provide access to +the data provided by either of those extensions. +These functions give you access to that data, plus +they provide a finer-grained way of converting +.Em Markdown +documents into HTML. +.Pp +Given a +.Ar MMIOT* +generated by +.Fn mkd_in +or +.Fn mkd_string , +.Fn mkd_compile +compiles the document into +.Em \ , +.Em Pandoc , +and +.Em html +sections. +.Pp +Once compiled, the document can be examined and written +by the +.Fn mkd_css , +.Fn mkd_document , +.Fn mkd_generatecss , +.Fn mkd_generatehtml , +.Fn mkd_generatetoc , +.Fn mkd_toc , +.Fn mkd_xhtmlpage , +.Fn mkd_doc_title , +.Fn mkd_doc_author , +and +.Fn mkd_doc_date +functions. +.Pp +.Fn mkd_css +allocates a string and populates it with any \ sections +provided in the document, +.Fn mkd_generatecss +writes any \ sections to the output, +.Fn mkd_document +points +.Ar text +to the text of the document and returns the +size of the document, +.Fn mkd_generatehtml +writes the rest of the document to the output, +and +.Fn mkd_doc_title , +.Fn mkd_doc_author , +.Fn mkd_doc_date +are used to read the contents of a Pandoc header, +if any. +.Pp +.Fn mkd_xhtmlpage +writes a xhtml page containing the document. The regular set of +flags can be passed. +.Pp +.Fn mkd_toc +writes a document outline, in the form of a collection of nested +lists with links to each header in the document, into a string +allocated with +.Fn malloc , +and returns the size. +.Pp +.Fn mkd_generatetoc +is like +.Fn mkd_toc , +except that it writes the document outline to the given +.Pa FILE* +argument. +.Pp +.Fn mkd_cleanup +deletes a +.Ar MMIOT* +after processing is done. +.Pp +.Fn mkd_compile +accepts the same flags that +.Fn markdown +and +.Fn mkd_string +do; +.Bl -tag -width MKD_NOSTRIKETHROUGH -compact +.It Ar MKD_NOIMAGE +Do not process `![]' and +remove +.Em \ +tags from the output. +.It Ar MKD_NOLINKS +Do not process `[]' and remove +.Em \ +tags from the output. +.It Ar MKD_NOPANTS +Do not do Smartypants-style mangling of quotes, dashes, or ellipses. +.It Ar MKD_TAGTEXT +Process the input as if you were inside a html tag. This means that +no html tags will be generated, and +.Fn mkd_compile +will attempt to escape anything that might terribly confuse a +web browser. +.It Ar MKD_NO_EXT +Do not process any markdown pseudo-protocols when +handing +.Ar [][] +links. +.It Ar MKD_NOHEADER +Do not attempt to parse any Pandoc-style headers. +.It Ar MKD_TOC +Label all headers for use with the +.Fn mkd_generatetoc +function. +.It Ar MKD_1_COMPAT +MarkdownTest_1.0 compatibility flag; trim trailing spaces from the +first line of code blocks and disable implicit reference links. +.It Ar MKD_NOSTRIKETHROUGH +Disable strikethrough support. +.El +.Sh RETURN VALUES +The function +.Fn mkd_compile +returns 1 in the case of success, or 0 if the document is already compiled. +The function +.Fn mkd_generatecss +returns the number of bytes written in the case of success, or EOF if an error +occurred. +The function +.Fn mkd_generatehtml +returns 0 on success, \-1 on failure. +.Sh SEE ALSO +.Xr markdown 1 , +.Xr markdown 3 , +.Xr mkd-line 3 , +.Xr markdown 7 , +.Xr mkd-extensions 7 , +.Xr mmap 2 . +.Pp +http://daringfireball.net/projects/markdown/syntax +.Sh BUGS +Error handling is minimal at best. diff --git a/thirdparty/discount-2.2.6-patched/mkd-line.3 b/thirdparty/discount-2.2.6-patched/mkd-line.3 new file mode 100644 index 0000000..7a35446 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/mkd-line.3 @@ -0,0 +1,41 @@ +.\" +.Dd January 18, 2008 +.Dt MKD_LINE 3 +.Os Mastodon +.Sh NAME +.Nm mkd_line +.Nd do Markdown translation of small items +.Sh LIBRARY +Markdown +.Pq libmarkdown , -lmarkdown +.Sh SYNOPSIS +.Fd #include +.Ft int +.Fn mkd_line "char *string" "int size" "char **doc" "int flags" +.Ft int +.Fn mkd_generateline "char *string" "int size" "FILE *output" "int flags" +.Sh DESCRIPTION +.Pp +Occasionally one might want to do markdown translations on fragments of +data, like the title of an weblog article, a date, or a simple signature +line. +.Nm mkd_line +and +.Nm mkd_generateline +allow you to do markdown translations on small blocks of text. +.Nm mkd_line +allocates a buffer, then writes the translated text into that buffer, +and +.Nm mkd_generateline +writes the output to the specified +.Ar FILE* . +.Sh SEE ALSO +.Xr markdown 1 , +.Xr markdown 3 , +.Xr markdown 7 , +.Xr mkd-extensions 7 , +.Xr mmap 2 . +.Pp +http://daringfireball.net/projects/markdown/syntax +.Sh BUGS +Error handling is minimal at best. diff --git a/thirdparty/discount-2.2.6-patched/mkd2html.1 b/thirdparty/discount-2.2.6-patched/mkd2html.1 new file mode 100644 index 0000000..3094b20 --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/mkd2html.1 @@ -0,0 +1,52 @@ +.\" %A% +.\" +.Dd January 10, 2010 +.Dt MKD2HTML 1 +.Os MASTODON +.Sh NAME +.Nm mkd2html +.Nd markdown to html converter +.Sh SYNOPSIS +.Nm +.Op Fl css Pa file +.Op Fl header Pa string +.Op Fl footer Pa string +.Op Pa file +.Sh DESCRIPTION +.Nm +utility parses a +.Xr markdown 7 Ns -formatted +.Pa textfile +.Pq or stdin if not specified, +and generates a web page. It +reads +.Ar file +or +.Ar file.text + and writes the result in +.Ar file.html +.Pq where file is the passed argument. +.Pp +.Nm +is part of discount. +.Sh OPTIONS +.Bl -tag -width "-header string" +.It Fl css Ar file +Specifies a CSS file. +.It Fl header Ar string +Specifies a line to add to the
        tag. +.It Fl footer Ar string +Specifies a line to add before the <\/body> tag. +.El +.Sh RETURN VALUES +The +.Nm +utility exits 0 on success, and >0 if an error occurs. +.Sh SEE ALSO +.Xr markdown 1 , +.Xr markdown 3 , +.Xr markdown 7 , +.Xr mkd-extensions 7 . +.Sh AUTHOR +.An David Parsons +.Pq Li orc@pell.portland.or.us diff --git a/thirdparty/discount-2.2.6-patched/mkd2html.c b/thirdparty/discount-2.2.6-patched/mkd2html.c new file mode 100644 index 0000000..cbe2b7a --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/mkd2html.c @@ -0,0 +1,236 @@ +/* + * mkd2html: parse a markdown input file and generate a web page. + * + * usage: mkd2html [options] filename + * or mkd2html [options] < markdown > html + * + * options + * -css css-file + * -header line-to-add-to-
        + * -footer line-to-add-before- + * + * example: + * + * mkd2html -css /~orc/pages.css syntax + * ( read syntax OR syntax.text, write syntax.html ) + */ +/* + * Copyright (C) 2007 David L Parsons. + * The redistribution terms are provided in the COPYRIGHT file that must + * be distributed with this source code. + */ +#include "config.h" + +#include +#include +#include +#ifdef HAVE_BASENAME +# ifdef HAVE_LIBGEN_H +# include +# else +# include +# endif +#endif +#include + +#include "mkdio.h" +#include "cstring.h" +#include "amalloc.h" + +#include "gethopt.h" + +char *pgm = "mkd2html"; + +extern int notspecial(char *filename); + +#ifndef HAVE_BASENAME +char * +basename(char *path) +{ + char *p; + + if ( p = strrchr(path, '/') ) + return 1+p; + return path; +} +#endif + +void +fail(char *why, ...) +{ + va_list ptr; + + va_start(ptr,why); + fprintf(stderr, "%s: ", pgm); + vfprintf(stderr, why, ptr); + fputc('\n', stderr); + va_end(ptr); + exit(1); +} + + +enum { GFM, ADD_CSS, ADD_HEADER, ADD_FOOTER }; + +struct h_opt opts[] = { + { GFM, "gfm",'G', 0, "Github style markdown" }, + { ADD_CSS, "css", 0, "url", "Additional css for this page" }, + { ADD_HEADER, "header", 0, "header", "Additonal headers for this page" }, + { ADD_FOOTER, "footer", 0, "footer", "Additional footers for this page" }, +}; +#define NROPTS (sizeof opts/sizeof opts[0]) + +#if USE_H1TITLE +extern char* mkd_h1_title(MMIOT *); +#endif + + +int +main(argc, argv) +char **argv; +{ + char *h; + char *source = 0, *dest = 0; + MMIOT *mmiot; + int i; + int gfm = 0; + FILE *input, *output; + STRING(char*) css, headers, footers; + struct h_opt *res; + struct h_context flags; + + + CREATE(css); + CREATE(headers); + CREATE(footers); + pgm = basename(argv[0]); + + hoptset(&flags, argc, argv); + hopterr(&flags, 1); + while ( res = gethopt(&flags, opts, NROPTS) ) { + if ( res == HOPTERR ) { + hoptusage(pgm, opts, NROPTS, "source [dest]"); + exit(1); + } + + switch ( res->option ) { + case ADD_CSS: + EXPAND(css) = hoptarg(&flags); + break; + case ADD_HEADER: + EXPAND(headers) = hoptarg(&flags); + break; + case ADD_FOOTER: + EXPAND(footers) = hoptarg(&flags); + break; + case GFM: + gfm = 1; + break; + default: + fprintf(stderr, "unknown option?\n"); + break; + } + } + + argc -= hoptind(&flags); + argv += hoptind(&flags); + + switch ( argc ) { + char *p, *dot; + case 0: + input = stdin; + output = stdout; + break; + + case 1: + case 2: + dest = malloc(strlen(argv[argc-1]) + 6); + source = malloc(strlen(argv[0]) + 6); + + if ( !(source && dest) ) + fail("out of memory allocating name buffers"); + + strcpy(source, argv[0]); + strcpy(dest, argv[argc-1]); + if (( p = strrchr(source, '/') )) + p = source; + else + ++p; + + if ( (input = fopen(source, "r")) == 0 ) { + strcat(source, ".text"); + if ( (input = fopen(source, "r")) == 0 ) + fail("can't open either %s or %s", argv[0], source); + } + + if ( notspecial(dest) ) { + if (( dot = strrchr(dest, '.') )) + *dot = 0; + strcat(dest, ".html"); + } + + if ( (output = fopen(dest, "w")) == 0 ) + fail("can't write to %s", dest); + break; + + default: + hoptusage(pgm, opts, NROPTS, "source [dest]"); + exit(1); + } + + mmiot = gfm ? gfm_in(input, 0) : mkd_in(input, 0); + + if ( mmiot == 0 ) + fail("can't read %s", source ? source : "stdin"); + + if ( !mkd_compile(mmiot, 0) ) + fail("couldn't compile input"); + + + h = mkd_doc_title(mmiot); +#if USE_H1TITLE + if ( ! h ) + h = mkd_h1_title(mmiot); +#endif + + /* print a header */ + + fprintf(output, + "\n" + "\n" + "\n" + " \n", markdown_version); + + fprintf(output," \n"); + + for ( i=0; i < S(css); i++ ) + fprintf(output, " \n", T(css)[i]); + + fprintf(output," "); + if ( h ) + mkd_generateline(h, strlen(h), output, 0); + /* xhtml requires a <title> in the header, even if it doesn't + * contain anything + */ + fprintf(output, "\n"); + + for ( i=0; i < S(headers); i++ ) + fprintf(output, " %s\n", T(headers)[i]); + fprintf(output, "\n" + "\n"); + + /* print the compiled body */ + + mkd_generatehtml(mmiot, output); + + for ( i=0; i < S(footers); i++ ) + fprintf(output, "%s\n", T(footers)[i]); + + fprintf(output, "\n" + "\n"); + + mkd_cleanup(mmiot); + exit(0); +} diff --git a/thirdparty/discount-2.2.6-patched/mkdio.c b/thirdparty/discount-2.2.6-patched/mkdio.c new file mode 100644 index 0000000..78e18fe --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/mkdio.c @@ -0,0 +1,457 @@ +/* + * mkdio -- markdown front end input functions + * + * Copyright (C) 2007 David L Parsons. + * The redistribution terms are provided in the COPYRIGHT file that must + * be distributed with this source code. + */ +#include "config.h" +#include +#include +#include + +#include "cstring.h" +#include "markdown.h" +#include "amalloc.h" + +typedef ANCHOR(Line) LineAnchor; + + +/* create a new blank Document + */ +Document* +__mkd_new_Document() +{ + Document *ret = calloc(sizeof(Document), 1); + + if ( ret ) { + if ( ret->ctx = calloc(sizeof(MMIOT), 1) ) { + ret->magic = VALID_DOCUMENT; + return ret; + } + free(ret); + } + return 0; +} + + +/* add a line to the markdown input chain, expanding tabs and + * noting the presence of special characters as we go. + */ +void +__mkd_enqueue(Document* a, Cstring *line) +{ + Line *p = calloc(sizeof *p, 1); + unsigned char c; + int xp = 0; + int size = S(*line); + unsigned char *str = (unsigned char*)T(*line); + + CREATE(p->text); + ATTACH(a->content, p); + + while ( size-- ) { + if ( (c = *str++) == '\t' ) { + /* expand tabs into ->tabstop spaces. We use ->tabstop + * because the ENTIRE FREAKING COMPUTER WORLD uses editors + * that don't do ^T/^D, but instead use tabs for indentation, + * and, of course, set their tabs down to 4 spaces + */ + do { + EXPAND(p->text) = ' '; + } while ( ++xp % a->tabstop ); + } + else if ( c >= ' ' ) { + if ( c == '|' ) + p->flags |= PIPECHAR; + EXPAND(p->text) = c; + ++xp; + } + } + EXPAND(p->text) = 0; + S(p->text)--; + p->dle = mkd_firstnonblank(p); +} + + +/* trim leading characters from a line, then adjust the dle. + */ +void +__mkd_trim_line(Line *p, int clip) +{ + if ( clip >= S(p->text) ) { + S(p->text) = p->dle = 0; + T(p->text)[0] = 0; + } + else if ( clip > 0 ) { + CLIP(p->text, 0, clip); + p->dle = mkd_firstnonblank(p); + } +} + + +/* build a Document from any old input. + */ +typedef int (*getc_func)(void*); + +Document * +populate(getc_func getc, void* ctx, mkd_flag_t flags) +{ + Cstring line; + Document *a = __mkd_new_Document(); + int c; + int pandoc = 0; + + if ( !a ) return 0; + + a->tabstop = is_flag_set(flags, MKD_TABSTOP) ? 4 : TABSTOP; + + CREATE(line); + + while ( (c = (*getc)(ctx)) != EOF ) { + if ( c == '\n' ) { + if ( pandoc != EOF && pandoc < 3 ) { + if ( S(line) && (T(line)[0] == '%') ) + pandoc++; + else + pandoc = EOF; + } + __mkd_enqueue(a, &line); + S(line) = 0; + } + else if ( isprint(c) || isspace(c) || (c & 0x80) ) + EXPAND(line) = c; + } + + if ( S(line) ) + __mkd_enqueue(a, &line); + + DELETE(line); + + if ( (pandoc == 3) && !(is_flag_set(flags, MKD_NOHEADER) || is_flag_set(flags, MKD_STRICT)) ) { + /* the first three lines started with %, so we have a header. + * clip the first three lines out of content and hang them + * off header. + */ + Line *headers = T(a->content); + + a->title = headers; __mkd_trim_line(a->title, 1); + a->author= headers->next; __mkd_trim_line(a->author, 1); + a->date = headers->next->next; __mkd_trim_line(a->date, 1); + + T(a->content) = headers->next->next->next; + } + + return a; +} + + +/* convert a file into a linked list + */ +Document * +mkd_in(FILE *f, mkd_flag_t flags) +{ + return populate((getc_func)fgetc, f, flags & INPUT_MASK); +} + + +/* return a single character out of a buffer + */ +int +__mkd_io_strget(struct string_stream *in) +{ + if ( !in->size ) return EOF; + + --(in->size); + + return *(in->data)++; +} + + +/* convert a block of text into a linked list + */ +Document * +mkd_string(const char *buf, int len, mkd_flag_t flags) +{ + struct string_stream about; + + about.data = buf; + about.size = len; + + return populate((getc_func)__mkd_io_strget, &about, flags & INPUT_MASK); +} + + +/* write the html to a file (xmlified if necessary) + */ +int +mkd_generatehtml(Document *p, FILE *output) +{ + char *doc; + int szdoc; + + DO_OR_DIE( szdoc = mkd_document(p,&doc) ); + if ( is_flag_set(p->ctx->flags, MKD_CDATA) ) + DO_OR_DIE( mkd_generatexml(doc, szdoc, output) ); + else if ( fwrite(doc, szdoc, 1, output) != 1 ) + return EOF; + DO_OR_DIE( putc('\n', output) ); + return 0; +} + + +/* convert some markdown text to html + */ +int +markdown(Document *document, FILE *out, mkd_flag_t flags) +{ + if ( mkd_compile(document, flags) ) { + mkd_generatehtml(document, out); + mkd_cleanup(document); + return 0; + } + return -1; +} + + +/* anchor_format a string, returning the formatted string in malloc()ed space + * MKD_URLENCODEDANCHOR is now perverted to being a html5 anchor + * + * !labelformat: print all characters + * labelformat && h4anchor: prefix nonalpha label with L, + * expand all nonalnum, _, ':', '.' to hex + * except space which maps to - + * labelformat && !h4anchor:expand space to -, other isspace() & '%' to hex + */ +static char * +mkd_anchor_format(char *s, int len, int labelformat, mkd_flag_t flags) +{ + char *res; + unsigned char c; + int i, needed, out = 0; + int h4anchor = !is_flag_set(flags, MKD_URLENCODEDANCHOR); + static const unsigned char hexchars[] = "0123456789abcdef"; + + needed = labelformat ? (4*len) : len; + + if ( (res = malloc(needed)) == NULL ) + return NULL; + + if ( h4anchor && labelformat && !isalpha(s[0]) ) + res[out++] = 'L'; + + + for ( i=0; i < len ; i++ ) { + c = s[i]; + if ( labelformat ) { + if ( h4anchor + ? (isalnum(c) || (c == '_') || (c == ':') || (c == '.' ) ) + : !(isspace(c) || c == '%') ) + res[out++] = c; + else if ( c == ' ' ) + res[out++] = '-'; + else { + res[out++] = h4anchor ? '-' : '%'; + res[out++] = hexchars[c >> 4 & 0xf]; + res[out++] = hexchars[c & 0xf]; + if ( h4anchor ) + res[out++] = '-'; + } + } + else + res[out++] = c; + } + + res[out++] = 0; + return res; +} /* mkd_anchor_format */ + + +/* write out a Cstring, mangled into a form suitable for `cb->e_anchor ) + res = (*(f->cb->e_anchor))(line, size, f->cb->e_data); + else + res = mkd_anchor_format(line, size, labelformat, f->flags); + + free(line); + + if ( !res ) + return; + + for ( i=0; res[i]; i++ ) + (*outchar)(res[i], out); + + if ( f->cb->e_anchor ) { + if ( f->cb->e_free ) + (*(f->cb->e_free))(res, f->cb->e_data); + } + else + free(res); +} + + +/* ___mkd_reparse() a line + */ +static void +mkd_parse_line(char *bfr, int size, MMIOT *f, mkd_flag_t flags) +{ + ___mkd_initmmiot(f, 0); + f->flags = flags & USER_FLAGS; + ___mkd_reparse(bfr, size, 0, f, 0); + ___mkd_emblock(f); +} + + +/* ___mkd_reparse() a line, returning it in malloc()ed memory + */ +int +mkd_line(char *bfr, int size, char **res, mkd_flag_t flags) +{ + MMIOT f; + int len; + + mkd_parse_line(bfr, size, &f, flags); + + if ( len = S(f.out) ) { + EXPAND(f.out) = 0; + /* strdup() doesn't use amalloc(), so in an amalloc()ed + * build this copies the string safely out of our memory + * paranoia arena. In a non-amalloc world, it's a spurious + * memory allocation, but it avoids unintentional hilarity + * with amalloc() + */ + *res = strdup(T(f.out)); + } + else { + *res = 0; + len = EOF; + } + ___mkd_freemmiot(&f, 0); + return len; +} + + +/* ___mkd_reparse() a line, writing it to a FILE + */ +int +mkd_generateline(char *bfr, int size, FILE *output, mkd_flag_t flags) +{ + MMIOT f; + int status; + + mkd_parse_line(bfr, size, &f, flags); + if ( is_flag_set(flags, MKD_CDATA) ) + status = mkd_generatexml(T(f.out), S(f.out), output) != EOF; + else + status = fwrite(T(f.out), S(f.out), 1, output) == S(f.out); + + ___mkd_freemmiot(&f, 0); + return status ? 0 : EOF; +} + + +/* set the url display callback + */ +void +mkd_e_url(Document *f, mkd_callback_t edit) +{ + if ( f ) { + if ( f->cb.e_url != edit ) + f->dirty = 1; + f->cb.e_url = edit; + } +} + + +/* set the url options callback + */ +void +mkd_e_flags(Document *f, mkd_callback_t edit) +{ + if ( f ) { + if ( f->cb.e_flags != edit ) + f->dirty = 1; + f->cb.e_flags = edit; + } +} + + +/* set the anchor formatter + */ +void +mkd_e_anchor(Document *f, mkd_callback_t format) +{ + if ( f ) { + if ( f->cb.e_anchor != format ) + f->dirty = 1; + f->cb.e_anchor = format; + } +} + + +/* set the url display/options deallocator + */ +void +mkd_e_free(Document *f, mkd_free_t dealloc) +{ + if ( f ) { + if ( f->cb.e_free != dealloc ) + f->dirty = 1; + f->cb.e_free = dealloc; + } +} + + +/* set the url display/options context data field + */ +void +mkd_e_data(Document *f, void *data) +{ + if ( f ) { + if ( f->cb.e_data != data ) + f->dirty = 1; + f->cb.e_data = data; + } +} + + +/* set the code block display callback + */ +void +mkd_e_code_format(Document *f, mkd_callback_t codefmt) +{ + if ( f && (f->cb.e_codefmt != codefmt) ) { + f->dirty = 1; + f->cb.e_codefmt = codefmt; + } +} + + +/* set the href prefix for markdown extra style footnotes + */ +void +mkd_ref_prefix(Document *f, char *data) +{ + if ( f ) { + if ( f->ref_prefix != data ) + f->dirty = 1; + f->ref_prefix = data; + } +} diff --git a/thirdparty/discount-2.2.6-patched/mkdio.h.in b/thirdparty/discount-2.2.6-patched/mkdio.h.in new file mode 100644 index 0000000..efed17f --- /dev/null +++ b/thirdparty/discount-2.2.6-patched/mkdio.h.in @@ -0,0 +1,127 @@ +#ifndef _MKDIO_D +#define _MKDIO_D + +#include + +@SCALAR_HEADER_INCLUDE@ + +typedef void MMIOT; + +typedef @DWORD@ mkd_flag_t; + +/* line builder for markdown() + */ +MMIOT *mkd_in(FILE*,mkd_flag_t); /* assemble input from a file */ +MMIOT *mkd_string(const char*,int,mkd_flag_t); /* assemble input from a buffer */ + +/* line builder for github flavoured markdown + */ +MMIOT *gfm_in(FILE*,mkd_flag_t); /* assemble input from a file */ +MMIOT *gfm_string(const char*,int,mkd_flag_t); /* assemble input from a buffer */ + +void mkd_basename(MMIOT*,char*); + +void mkd_initialize(); +void mkd_with_html5_tags(); +void mkd_shlib_destructor(); + +/* compilation, debugging, cleanup + */ +int mkd_compile(MMIOT*, mkd_flag_t); +void mkd_cleanup(MMIOT*); + +/* markup functions + */ +int mkd_dump(MMIOT*, FILE*, mkd_flag_t, char*); +int markdown(MMIOT*, FILE*, mkd_flag_t); +int mkd_line(char *, int, char **, mkd_flag_t); +int mkd_xhtmlpage(MMIOT*,mkd_flag_t,FILE*); + +/* header block access + */ +char* mkd_doc_title(MMIOT*); +char* mkd_doc_author(MMIOT*); +char* mkd_doc_date(MMIOT*); + +/* compiled data access + */ +int mkd_document(MMIOT*, char**); +int mkd_toc(MMIOT*, char**); +int mkd_css(MMIOT*, char **); +int mkd_xml(char *, int, char **); +int mkd_latextext(MMIOT*, char **); + +/* write-to-file functions + */ +int mkd_generatehtml(MMIOT*,FILE*); +int mkd_generatetoc(MMIOT*,FILE*); +int mkd_generatexml(char *, int,FILE*); +int mkd_generatecss(MMIOT*,FILE*); +#define mkd_style mkd_generatecss +int mkd_generateline(char *, int, FILE*, mkd_flag_t); +#define mkd_text mkd_generateline + +/* url generator callbacks + */ +typedef char * (*mkd_callback_t)(const char*, const int, void*); +typedef void (*mkd_free_t)(char*, void*); + +void mkd_e_url(void *, mkd_callback_t); +void mkd_e_flags(void *, mkd_callback_t); +void mkd_e_anchor(void *, mkd_callback_t); +void mkd_e_code_format(void*, mkd_callback_t); +void mkd_e_free(void *, mkd_free_t ); +void mkd_e_data(void *, void *); + +/* version#. + */ +extern char markdown_version[]; +void mkd_mmiot_flags(FILE *, MMIOT *, int); +void mkd_flags_are(FILE*, mkd_flag_t, int); + +void mkd_ref_prefix(MMIOT*, char*); + + +/* special flags for markdown() and mkd_text() + */ +#define MKD_NOLINKS 0x00000001 /* don't do link processing, block tags */ +#define MKD_NOIMAGE 0x00000002 /* don't do image processing, block */ +#define MKD_NOPANTS 0x00000004 /* don't run smartypants() */ +#define MKD_NOHTML 0x00000008 /* don't allow raw html through AT ALL */ +#define MKD_STRICT 0x00000010 /* disable SUPERSCRIPT, RELAXED_EMPHASIS */ +#define MKD_TAGTEXT 0x00000020 /* process text inside an html tag; no + * , no , no html or [] expansion */ +#define MKD_NO_EXT 0x00000040 /* don't allow pseudo-protocols */ +#define MKD_NOEXT MKD_NO_EXT /* ^^^ (aliased for user convenience) */ +#define MKD_CDATA 0x00000080 /* generate code for xml ![CDATA[...]] */ +#define MKD_NOSUPERSCRIPT 0x00000100 /* no A^B */ +#define MKD_NORELAXED 0x00000200 /* emphasis happens /everywhere/ */ +#define MKD_NOTABLES 0x00000400 /* disallow tables */ +#define MKD_NOSTRIKETHROUGH 0x00000800 /* forbid ~~strikethrough~~ */ +#define MKD_TOC 0x00001000 /* do table-of-contents processing */ +#define MKD_1_COMPAT 0x00002000 /* compatibility with MarkdownTest_1.0 */ +#define MKD_AUTOLINK 0x00004000 /* make http://foo.com link even without <>s */ +#define MKD_SAFELINK 0x00008000 /* paranoid check for link protocol */ +#define MKD_NOHEADER 0x00010000 /* don't process header blocks */ +#define MKD_TABSTOP 0x00020000 /* expand tabs to 4 spaces */ +#define MKD_NODIVQUOTE 0x00040000 /* forbid >%class% blocks */ +#define MKD_NOALPHALIST 0x00080000 /* forbid alphabetic lists */ +#define MKD_NODLIST 0x00100000 /* forbid definition lists */ +#define MKD_EXTRA_FOOTNOTE 0x00200000 /* enable markdown extra-style footnotes */ +#define MKD_NOSTYLE 0x00400000 /* don't extract ' '' + +ASK='' + +try 'multiple lines' "$ASK" '' + +try 'unclosed' '

    `(t;VAKq#hg>#( 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 T|Fa$aZLEO@0Py?}-j@D9yXSWR literal 0 HcmV?d00001 diff --git a/examples/octave/octave_examples_3d_plots.cws b/examples/octave/octave_examples_3d_plots.cws new file mode 100644 index 0000000000000000000000000000000000000000..4484169cf38f97e875a8645b54e9d27f4c226407 GIT binary patch literal 2208067 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%0DR)ZMb8PbpFf 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ℑ6BIxhz4 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